aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain/src
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2013-09-08 16:08:36 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2013-09-08 16:08:36 +0200
commit6fdae001cc5ee742cceaeea82c75f0e314a3449f (patch)
treec95c7fc90a1f542d97afb1d69a13dd8688a6d01e /OpenPGP-Keychain/src
parenta890ba5e4f33e5ac5c58d96a7ea04030fd763a0e (diff)
downloadopen-keychain-6fdae001cc5ee742cceaeea82c75f0e314a3449f.tar.gz
open-keychain-6fdae001cc5ee742cceaeea82c75f0e314a3449f.tar.bz2
open-keychain-6fdae001cc5ee742cceaeea82c75f0e314a3449f.zip
Make select fragments more reusable
Diffstat (limited to 'OpenPGP-Keychain/src')
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoService.java13
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java19
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyActivity.java34
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java39
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java25
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java31
6 files changed, 124 insertions, 37 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoService.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoService.java
index cc75ae02a..962412055 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoService.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoService.java
@@ -22,27 +22,24 @@ import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;
-import java.util.prefs.Preferences;
import org.openintents.crypto.CryptoError;
import org.openintents.crypto.CryptoSignatureResult;
+import org.openintents.crypto.ICryptoCallback;
+import org.openintents.crypto.ICryptoService;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.Id;
-import org.sufficientlysecure.keychain.helper.PgpMain;
-import org.sufficientlysecure.keychain.util.InputData;
-import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.helper.PgpMain;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
-import org.sufficientlysecure.keychain.remote_api.IServiceActivityCallback;
import org.sufficientlysecure.keychain.service.KeychainIntentService;
import org.sufficientlysecure.keychain.service.PassphraseCacheService;
+import org.sufficientlysecure.keychain.util.InputData;
+import org.sufficientlysecure.keychain.util.Log;
import org.sufficientlysecure.keychain.util.PausableThreadPoolExecutor;
-import org.openintents.crypto.ICryptoCallback;
-import org.openintents.crypto.ICryptoService;
import android.app.Service;
import android.content.Context;
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
index 38f7489ed..63e3a5290 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/CryptoServiceActivity.java
@@ -171,6 +171,7 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
@Override
public void onClick(View v) {
// Disallow
+
try {
mServiceCallback.onRegistered(false, packageName);
} catch (RemoteException e) {
@@ -210,9 +211,23 @@ public class CryptoServiceActivity extends SherlockFragmentActivity {
showPassphraseDialog(secretKeyId);
} else if (ACTION_SELECT_PUB_KEYS.equals(action)) {
- long secretKeyId = extras.getLong(EXTRA_SECRET_KEY_ID);
- showPassphraseDialog(secretKeyId);
+ // Inflate a "Done"/"Cancel" custom action bar view
+ ActionBarHelper.setDoneCancelView(getSupportActionBar(), R.string.btn_okay,
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // ok
+
+ }
+ }, R.string.btn_doNotSave, new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ // cancel
+
+ }
+ });
+
} else {
Log.e(Constants.TAG, "Wrong action!");
finish();
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyActivity.java
index f7874b5c4..509d6d7eb 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyActivity.java
@@ -66,8 +66,26 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
- mSelectFragment = (SelectPublicKeyFragment) getSupportFragmentManager().findFragmentById(
- R.id.select_public_key_fragment);
+ handleIntent(getIntent());
+
+ // Check that the activity is using the layout version with
+ // the fragment_container FrameLayout
+ if (findViewById(R.id.select_public_key_fragment_container) != null) {
+
+ // However, if we're being restored from a previous state,
+ // then we don't need to do anything and should return or else
+ // we could end up with overlapping fragments.
+ if (savedInstanceState != null) {
+ return;
+ }
+
+ // Create an instance of the fragment
+ mSelectFragment = SelectPublicKeyFragment.newInstance(selectedMasterKeyIds);
+
+ // Add the fragment to the 'fragment_container' FrameLayout
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.select_public_key_fragment_container, mSelectFragment).commit();
+ }
// TODO: reimplement!
// mFilterLayout = findViewById(R.id.layout_filter);
@@ -80,7 +98,6 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
// }
// });
- handleIntent(getIntent());
}
@Override
@@ -90,7 +107,7 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
}
private void handleIntent(Intent intent) {
- // TODO: reimplement!
+ // TODO: reimplement search!
// String searchString = null;
// if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
@@ -111,15 +128,6 @@ public class SelectPublicKeyActivity extends SherlockFragmentActivity {
selectedMasterKeyIds = intent.getLongArrayExtra(EXTRA_SELECTED_MASTER_KEY_IDS);
}
- /**
- * returns preselected key ids, this is used in the fragment
- *
- * @return
- */
- public long[] getSelectedMasterKeyIds() {
- return selectedMasterKeyIds;
- }
-
private void cancelClicked() {
setResult(RESULT_CANCELED, null);
finish();
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
index b9c42a17c..64a9e6eb1 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectPublicKeyFragment.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2012-2013 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -21,33 +21,57 @@ import java.util.Date;
import java.util.Vector;
import org.sufficientlysecure.keychain.Id;
+import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.ListFragmentWorkaround;
-import org.sufficientlysecure.keychain.provider.KeychainDatabase;
import org.sufficientlysecure.keychain.provider.KeychainContract.KeyRings;
import org.sufficientlysecure.keychain.provider.KeychainContract.Keys;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserIds;
+import org.sufficientlysecure.keychain.provider.KeychainDatabase;
import org.sufficientlysecure.keychain.provider.KeychainDatabase.Tables;
import org.sufficientlysecure.keychain.ui.widget.SelectKeyCursorAdapter;
-import org.sufficientlysecure.keychain.R;
+import android.app.Activity;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.net.Uri;
import android.os.Bundle;
+import android.support.v4.app.LoaderManager;
import android.support.v4.content.CursorLoader;
import android.support.v4.content.Loader;
-import android.support.v4.app.LoaderManager;
import android.widget.ListView;
public class SelectPublicKeyFragment extends ListFragmentWorkaround implements
LoaderManager.LoaderCallbacks<Cursor> {
- private SelectPublicKeyActivity mActivity;
+ private Activity mActivity;
private SelectKeyCursorAdapter mAdapter;
private ListView mListView;
private long mSelectedMasterKeyIds[];
+ private static final String ARG_PRESELECTED_KEY_IDS = "preselected_key_ids";
+
+ /**
+ * Creates new instance of this fragment
+ */
+ public static SelectPublicKeyFragment newInstance(long[] preselectedKeyIds) {
+ SelectPublicKeyFragment frag = new SelectPublicKeyFragment();
+ Bundle args = new Bundle();
+
+ args.putLongArray(ARG_PRESELECTED_KEY_IDS, preselectedKeyIds);
+
+ frag.setArguments(args);
+
+ return frag;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mSelectedMasterKeyIds = getArguments().getLongArray(ARG_PRESELECTED_KEY_IDS);
+ }
+
/**
* Define Adapter and Loader on create of Activity
*/
@@ -55,12 +79,9 @@ public class SelectPublicKeyFragment extends ListFragmentWorkaround implements
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- mActivity = (SelectPublicKeyActivity) getSherlockActivity();
+ mActivity = getSherlockActivity();
mListView = getListView();
- // get selected master key ids, which are given to activity by intent
- mSelectedMasterKeyIds = mActivity.getSelectedMasterKeyIds();
-
mListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// Give some text to display if there is no data. In a real
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
index 10acd38d9..624495925 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyActivity.java
@@ -38,7 +38,9 @@ public class SelectSecretKeyActivity extends SherlockFragmentActivity {
public static final String RESULT_EXTRA_MASTER_KEY_ID = "masterKeyId";
public static final String RESULT_EXTRA_USER_ID = "userId";
- public static boolean filterCertify = false;
+
+ private boolean mFilterCertify = false;
+ private SelectSecretKeyFragment mSelectFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -64,9 +66,28 @@ public class SelectSecretKeyActivity extends SherlockFragmentActivity {
// }
// });
- filterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
+ mFilterCertify = getIntent().getBooleanExtra(EXTRA_FILTER_CERTIFY, false);
handleIntent(getIntent());
+
+ // Check that the activity is using the layout version with
+ // the fragment_container FrameLayout
+ if (findViewById(R.id.select_secret_key_fragment_container) != null) {
+
+ // However, if we're being restored from a previous state,
+ // then we don't need to do anything and should return or else
+ // we could end up with overlapping fragments.
+ if (savedInstanceState != null) {
+ return;
+ }
+
+ // Create an instance of the fragment
+ mSelectFragment = SelectSecretKeyFragment.newInstance(mFilterCertify);
+
+ // Add the fragment to the 'fragment_container' FrameLayout
+ getSupportFragmentManager().beginTransaction()
+ .add(R.id.select_secret_key_fragment_container, mSelectFragment).commit();
+ }
}
/**
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
index 74393fa91..17539fe72 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/ui/SelectSecretKeyFragment.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
+ * Copyright (C) 2012-2013 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -47,6 +47,31 @@ public class SelectSecretKeyFragment extends SherlockListFragment implements
private SelectSecretKeyActivity mActivity;
private SelectKeyCursorAdapter mAdapter;
private ListView mListView;
+
+ private boolean mFilterCertify;
+
+ private static final String ARG_FILTER_CERTIFY = "filter_certify";
+
+ /**
+ * Creates new instance of this fragment
+ */
+ public static SelectSecretKeyFragment newInstance(boolean filterCertify) {
+ SelectSecretKeyFragment frag = new SelectSecretKeyFragment();
+ Bundle args = new Bundle();
+
+ args.putBoolean(ARG_FILTER_CERTIFY, filterCertify);
+
+ frag.setArguments(args);
+
+ return frag;
+ }
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mFilterCertify = getArguments().getBoolean(ARG_FILTER_CERTIFY);
+ }
/**
* Define Adapter and Loader on create of Activity
@@ -92,8 +117,8 @@ public class SelectSecretKeyFragment extends SherlockListFragment implements
Uri baseUri = KeyRings.buildSecretKeyRingsUri();
String CapFilter = null;
- if (((SelectSecretKeyActivity)getActivity()).filterCertify == true) {
- CapFilter = "(cert>0)";
+ if (mFilterCertify) {
+ CapFilter = "(cert > 0)";
}
// These are the rows that we will retrieve.