aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/DrawerActivity.java10
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EditKeyActivity.java19
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyActivity.java208
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicActivity.java58
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretActivity.java16
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java20
6 files changed, 80 insertions, 251 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/DrawerActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/DrawerActivity.java
index db6a3a155..2190388b0 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/DrawerActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/DrawerActivity.java
@@ -71,9 +71,6 @@ public class DrawerActivity extends SherlockFragmentActivity {
// set a custom shadow that overlays the main content when the drawer
// opens
mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
- // set up the drawer's list view with items and click listener
- // mDrawerList
- // .setAdapter(new ArrayAdapter<String>(this, R.layout.drawer_list_item, mItemsText));
NavItem mItemIconTexts[] = new NavItem[] {
new NavItem("fa-user", getString(R.string.nav_contacts)),
@@ -90,13 +87,6 @@ public class DrawerActivity extends SherlockFragmentActivity {
mDrawerList.setOnItemClickListener(new DrawerItemClickListener());
- // <com.beardedhen.androidbootstrap.FontAwesomeText
- // android:layout_width="wrap_content"
- // android:layout_height="wrap_content"
- // android:layout_margin="10dp"
- // android:textSize="32sp"
- // fontawesometext:fa_icon="fa-github" />
-
// enable ActionBar app icon to behave as action to toggle nav drawer
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EditKeyActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
index 569a16c41..b79200ba1 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
@@ -27,6 +27,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.helper.ActionBarHelper;
+import org.sufficientlysecure.keychain.helper.ExportHelper;
import org.sufficientlysecure.keychain.pgp.PgpConversionHelper;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
@@ -61,11 +62,12 @@ import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import android.widget.Toast;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.beardedhen.androidbootstrap.BootstrapButton;
-public class EditKeyActivity extends KeyActivity {
+public class EditKeyActivity extends SherlockFragmentActivity {
// Actions for internal use only:
public static final String ACTION_CREATE_KEY = Constants.INTENT_PREFIX + "CREATE_KEY";
@@ -100,10 +102,14 @@ public class EditKeyActivity extends KeyActivity {
Vector<Integer> mKeysUsages;
boolean masterCanSign = true;
+ ExportHelper mExportHelper;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mExportHelper = new ExportHelper(this);
+
mUserIds = new Vector<String>();
mKeys = new Vector<PGPSecretKey>();
mKeysUsages = new Vector<Integer>();
@@ -322,7 +328,7 @@ public class EditKeyActivity extends KeyActivity {
cancelClicked();
return true;
case R.id.menu_key_edit_export_file:
- showExportKeysDialog(mDataUri, Id.type.secret_key, Constants.path.APP_DIR
+ mExportHelper.showExportKeysDialog(mDataUri, Id.type.secret_key, Constants.path.APP_DIR
+ "/secexport.asc");
return true;
case R.id.menu_key_edit_delete: {
@@ -337,7 +343,7 @@ public class EditKeyActivity extends KeyActivity {
}
};
- deleteKey(mDataUri, Id.type.secret_key, returnHandler);
+ mExportHelper.deleteKey(mDataUri, Id.type.secret_key, returnHandler);
return true;
}
}
@@ -656,4 +662,11 @@ public class EditKeyActivity extends KeyActivity {
mChangePassPhrase.setText(isPassphraseSet() ? getString(R.string.btn_change_passphrase)
: getString(R.string.btn_set_passphrase));
}
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (!mExportHelper.handleActivityResult(requestCode, resultCode, data)) {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyActivity.java
deleted file mode 100644
index 91481d2b4..000000000
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyActivity.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright (C) 2013-2014 Dominik Schürmann <dominik@dominikschuermann.de>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-package org.sufficientlysecure.keychain.ui;
-
-import org.sufficientlysecure.keychain.Constants;
-import org.sufficientlysecure.keychain.Id;
-import org.sufficientlysecure.keychain.R;
-import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
-import org.sufficientlysecure.keychain.provider.ProviderHelper;
-import org.sufficientlysecure.keychain.service.KeychainIntentService;
-import org.sufficientlysecure.keychain.service.KeychainIntentServiceHandler;
-import org.sufficientlysecure.keychain.ui.dialog.DeleteKeyDialogFragment;
-import org.sufficientlysecure.keychain.ui.dialog.FileDialogFragment;
-import org.sufficientlysecure.keychain.util.Log;
-
-import android.app.ProgressDialog;
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.Message;
-import android.os.Messenger;
-import android.widget.Toast;
-
-/**
- * This implements export key method and delete key method. Used in lists and key view and key edit.
- *
- * TODO: get key type by looking at dataUri!
- *
- */
-public class KeyActivity extends DrawerActivity {
- protected FileDialogFragment mFileDialog;
- protected String mExportFilename;
-
- protected void deleteKey(Uri dataUri, final int keyType, Handler deleteHandler) {
- long keyRingRowId = Long.valueOf(dataUri.getLastPathSegment());
-
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(deleteHandler);
-
- DeleteKeyDialogFragment deleteKeyDialog = DeleteKeyDialogFragment.newInstance(messenger,
- new long[] { keyRingRowId }, keyType);
-
- deleteKeyDialog.show(getSupportFragmentManager(), "deleteKeyDialog");
- }
-
- /**
- * Show dialog where to export keys
- *
- * @param keyRingMasterKeyId
- * if -1 export all keys
- */
- public void showExportKeysDialog(final Uri dataUri, final int keyType,
- final String exportFilename) {
- mExportFilename = exportFilename;
-
- // Message is received after file is selected
- Handler returnHandler = new Handler() {
- @Override
- public void handleMessage(Message message) {
- if (message.what == FileDialogFragment.MESSAGE_OKAY) {
- Bundle data = message.getData();
- mExportFilename = data.getString(FileDialogFragment.MESSAGE_DATA_FILENAME);
-
- long keyRingRowId = Long.valueOf(dataUri.getLastPathSegment());
-
- // TODO?
- long keyRingMasterKeyId = ProviderHelper.getSecretMasterKeyId(KeyActivity.this,
- keyRingRowId);
-
- exportKeys(keyRingMasterKeyId, keyType);
- }
- }
- };
-
- // Create a new Messenger for the communication back
- final Messenger messenger = new Messenger(returnHandler);
-
- DialogFragmentWorkaround.INTERFACE.runnableRunDelayed(new Runnable() {
- public void run() {
- String title = null;
- if (dataUri != null) {
- // single key export
- title = getString(R.string.title_export_key);
- } else {
- title = getString(R.string.title_export_keys);
- }
-
- String message = null;
- if (keyType == Id.type.public_key) {
- message = getString(R.string.specify_file_to_export_to);
- } else {
- message = getString(R.string.specify_file_to_export_secret_keys_to);
- }
-
- mFileDialog = FileDialogFragment.newInstance(messenger, title, message,
- exportFilename, null, Id.request.filename);
-
- mFileDialog.show(getSupportFragmentManager(), "fileDialog");
- }
- });
- }
-
- /**
- * Export keys
- *
- * @param keyRingMasterKeyId
- * if -1 export all keys
- */
- public void exportKeys(long keyRingMasterKeyId, int keyType) {
- Log.d(Constants.TAG, "exportKeys started");
-
- // Send all information needed to service to export key in other thread
- Intent intent = new Intent(this, KeychainIntentService.class);
-
- intent.setAction(KeychainIntentService.ACTION_EXPORT_KEYRING);
-
- // fill values for this action
- Bundle data = new Bundle();
-
- data.putString(KeychainIntentService.EXPORT_FILENAME, mExportFilename);
- data.putInt(KeychainIntentService.EXPORT_KEY_TYPE, keyType);
-
- if (keyRingMasterKeyId == -1) {
- data.putBoolean(KeychainIntentService.EXPORT_ALL, true);
- } else {
- data.putLong(KeychainIntentService.EXPORT_KEY_RING_MASTER_KEY_ID, keyRingMasterKeyId);
- }
-
- intent.putExtra(KeychainIntentService.EXTRA_DATA, data);
-
- // Message is received after exporting is done in ApgService
- KeychainIntentServiceHandler exportHandler = new KeychainIntentServiceHandler(this,
- R.string.progress_exporting, ProgressDialog.STYLE_HORIZONTAL) {
- public void handleMessage(Message message) {
- // handle messages by standard ApgHandler first
- super.handleMessage(message);
-
- if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
- // get returned data bundle
- Bundle returnData = message.getData();
-
- int exported = returnData.getInt(KeychainIntentService.RESULT_EXPORT);
- String toastMessage;
- if (exported == 1) {
- toastMessage = getString(R.string.key_exported);
- } else if (exported > 0) {
- toastMessage = getString(R.string.keys_exported, exported);
- } else {
- toastMessage = getString(R.string.no_keys_exported);
- }
- Toast.makeText(KeyActivity.this, toastMessage, Toast.LENGTH_SHORT).show();
-
- }
- };
- };
-
- // Create a new Messenger for the communication back
- Messenger messenger = new Messenger(exportHandler);
- intent.putExtra(KeychainIntentService.EXTRA_MESSENGER, messenger);
-
- // show progress dialog
- exportHandler.showProgressDialog(this);
-
- // start service with intent
- startService(intent);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode) {
- case Id.request.filename: {
- if (resultCode == RESULT_OK && data != null) {
- try {
- String path = data.getData().getPath();
- Log.d(Constants.TAG, "path=" + path);
-
- // set filename used in export/import dialogs
- mFileDialog.setFilename(path);
- } catch (NullPointerException e) {
- Log.e(Constants.TAG, "Nullpointer while retrieving path!", e);
- }
- }
- return;
- }
-
- default: {
- break;
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicActivity.java
index cb04ddf0d..204939610 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListPublicActivity.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.helper.ExportHelper;
import android.content.Intent;
import android.os.Bundle;
@@ -27,12 +28,16 @@ import android.os.Bundle;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
-public class KeyListPublicActivity extends KeyActivity {
+public class KeyListPublicActivity extends DrawerActivity {
+
+ ExportHelper mExportHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mExportHelper = new ExportHelper(this);
+
setContentView(R.layout.key_list_public_activity);
// now setup navigation drawer in DrawerActivity...
@@ -55,7 +60,7 @@ public class KeyListPublicActivity extends KeyActivity {
return true;
case R.id.menu_key_list_public_export:
- showExportKeysDialog(null, Id.type.public_key, Constants.path.APP_DIR
+ mExportHelper.showExportKeysDialog(null, Id.type.public_key, Constants.path.APP_DIR
+ "/pubexport.asc");
return true;
@@ -64,27 +69,30 @@ public class KeyListPublicActivity extends KeyActivity {
}
}
- // @Override
- // protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // switch (requestCode) {
- // case Id.request.look_up_key_id: {
- // if (resultCode == RESULT_CANCELED || data == null
- // || data.getStringExtra(KeyServerQueryActivity.RESULT_EXTRA_TEXT) == null) {
- // return;
- // }
- //
- // Intent intent = new Intent(this, KeyListPublicActivity.class);
- // intent.setAction(KeyListPublicActivity.ACTION_IMPORT);
- // intent.putExtra(KeyListPublicActivity.EXTRA_TEXT,
- // data.getStringExtra(KeyListActivity.EXTRA_TEXT));
- // handleActions(intent);
- // break;
- // }
- //
- // default: {
- // super.onActivityResult(requestCode, resultCode, data);
- // break;
- // }
- // }
- // }
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (!mExportHelper.handleActivityResult(requestCode, resultCode, data)) {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ // switch (requestCode) {
+ // case Id.request.look_up_key_id: {
+ // if (resultCode == RESULT_CANCELED || data == null
+ // || data.getStringExtra(KeyServerQueryActivity.RESULT_EXTRA_TEXT) == null) {
+ // return;
+ // }
+ //
+ // Intent intent = new Intent(this, KeyListPublicActivity.class);
+ // intent.setAction(KeyListPublicActivity.ACTION_IMPORT);
+ // intent.putExtra(KeyListPublicActivity.EXTRA_TEXT,
+ // data.getStringExtra(KeyListActivity.EXTRA_TEXT));
+ // handleActions(intent);
+ // break;
+ // }
+ //
+ // default: {
+ // super.onActivityResult(requestCode, resultCode, data);
+ // break;
+ // }
+ // }
+ }
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretActivity.java
index 747055a47..34a053d25 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyListSecretActivity.java
@@ -20,6 +20,7 @@ package org.sufficientlysecure.keychain.ui;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.helper.ExportHelper;
import android.content.Intent;
import android.os.Bundle;
@@ -27,12 +28,16 @@ import android.os.Bundle;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
-public class KeyListSecretActivity extends KeyActivity {
+public class KeyListSecretActivity extends DrawerActivity {
+
+ ExportHelper mExportHelper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mExportHelper = new ExportHelper(this);
+
setContentView(R.layout.key_list_secret_activity);
// now setup navigation drawer in DrawerActivity...
@@ -58,7 +63,7 @@ public class KeyListSecretActivity extends KeyActivity {
return true;
case R.id.menu_key_list_secret_export:
- showExportKeysDialog(null, Id.type.secret_key, Constants.path.APP_DIR
+ mExportHelper.showExportKeysDialog(null, Id.type.secret_key, Constants.path.APP_DIR
+ "/secexport.asc");
return true;
@@ -86,4 +91,11 @@ public class KeyListSecretActivity extends KeyActivity {
startActivityForResult(intent, 0);
}
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (!mExportHelper.handleActivityResult(requestCode, resultCode, data)) {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
index fb04bb1f8..0e1e20cce 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/KeyViewActivity.java
@@ -29,6 +29,7 @@ import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Id;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.ClipboardReflection;
+import org.sufficientlysecure.keychain.helper.ExportHelper;
import org.sufficientlysecure.keychain.pgp.PgpKeyHelper;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.ui.dialog.DeleteKeyDialogFragment;
@@ -55,13 +56,17 @@ import android.view.View.OnClickListener;
import android.widget.TextView;
import android.widget.Toast;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.beardedhen.androidbootstrap.BootstrapButton;
@SuppressLint("NewApi")
-public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCallback,
+public class KeyViewActivity extends SherlockFragmentActivity implements CreateNdefMessageCallback,
OnNdefPushCompleteCallback {
+
+ ExportHelper mExportHelper;
+
private Uri mDataUri;
private PGPPublicKey mPublicKey;
@@ -81,6 +86,8 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ mExportHelper = new ExportHelper(this);
+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
@@ -125,7 +132,7 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
uploadToKeyserver(mDataUri);
return true;
case R.id.menu_key_view_export_file:
- showExportKeysDialog(mDataUri, Id.type.public_key, Constants.path.APP_DIR
+ mExportHelper.showExportKeysDialog(mDataUri, Id.type.public_key, Constants.path.APP_DIR
+ "/pubexport.asc");
return true;
case R.id.menu_key_view_share_default:
@@ -152,7 +159,7 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
}
};
- deleteKey(mDataUri, Id.type.public_key, returnHandler);
+ mExportHelper.deleteKey(mDataUri, Id.type.public_key, returnHandler);
return true;
}
}
@@ -373,4 +380,11 @@ public class KeyViewActivity extends KeyActivity implements CreateNdefMessageCal
}
};
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (!mExportHelper.handleActivityResult(requestCode, resultCode, data)) {
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
}