aboutsummaryrefslogtreecommitdiffstats
path: root/OpenPGP-Keychain
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2014-04-01 17:08:56 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2014-04-01 17:08:56 +0200
commitecca54d4d5df452fccbdd092a4671ef04cad8157 (patch)
tree99206da8c01e6494c7076de61dd29e4bf8ac25f5 /OpenPGP-Keychain
parentddfb7e10e866379bf56ea9ad983fb2ca32c1dee5 (diff)
downloadopen-keychain-ecca54d4d5df452fccbdd092a4671ef04cad8157.tar.gz
open-keychain-ecca54d4d5df452fccbdd092a4671ef04cad8157.tar.bz2
open-keychain-ecca54d4d5df452fccbdd092a4671ef04cad8157.zip
Automatically select newly created key in api accounts
Diffstat (limited to 'OpenPGP-Keychain')
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java29
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java1
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java8
-rw-r--r--OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java27
4 files changed, 47 insertions, 18 deletions
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
index 0931e6e31..eec54b4cc 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/remote/ui/AccountSettingsFragment.java
@@ -17,7 +17,9 @@
package org.sufficientlysecure.keychain.remote.ui;
+import android.app.Activity;
import android.content.Intent;
+import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
@@ -31,6 +33,7 @@ import android.widget.TextView;
import com.beardedhen.androidbootstrap.BootstrapButton;
import org.sufficientlysecure.keychain.R;
+import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.remote.AccountSettings;
import org.sufficientlysecure.keychain.ui.EditKeyActivity;
import org.sufficientlysecure.keychain.ui.SelectSecretKeyLayoutFragment;
@@ -40,6 +43,8 @@ import org.sufficientlysecure.keychain.util.AlgorithmNames;
public class AccountSettingsFragment extends Fragment implements
SelectSecretKeyLayoutFragment.SelectSecretKeyCallback {
+ private static final int REQUEST_CODE_CREATE_KEY = 0x00008884;
+
// model
private AccountSettings mAccSettings;
@@ -64,7 +69,8 @@ public class AccountSettingsFragment extends Fragment implements
this.mAccSettings = accountSettings;
mAccNameView.setText(accountSettings.getAccountName());
- mSelectKeyFragment.selectKey(accountSettings.getKeyId());
+ Uri keyUri = KeychainContract.KeyRings.buildSecretKeyRingsByMasterKeyIdUri(String.valueOf(accountSettings.getKeyId()));
+ mSelectKeyFragment.selectKey(keyUri);
mEncryptionAlgorithm.setSelection(mEncryptionAdapter.getPosition(accountSettings
.getEncryptionAlgorithm()));
mHashAlgorithm.setSelection(mHashAdapter.getPosition(accountSettings.getHashAlgorithm()));
@@ -162,7 +168,26 @@ public class AccountSettingsFragment extends Fragment implements
intent.putExtra(EditKeyActivity.EXTRA_GENERATE_DEFAULT_KEYS, true);
// set default user id to account name TODO: not working currently in EditKey
intent.putExtra(EditKeyActivity.EXTRA_USER_IDS, mAccSettings.getAccountName());
- startActivityForResult(intent, 0);
+ startActivityForResult(intent, REQUEST_CODE_CREATE_KEY);
+ }
+
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case REQUEST_CODE_CREATE_KEY: {
+ if (resultCode == Activity.RESULT_OK) {
+ // select newly created key
+ Uri newKeyUri = data.getData();
+ mSelectKeyFragment.selectKey(newKeyUri);
+ }
+ break;
+ }
+
+ default:
+ super.onActivityResult(requestCode, resultCode, data);
+
+ break;
+ }
}
/**
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
index f82e5e619..110f06634 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/service/KeychainIntentService.java
@@ -36,6 +36,7 @@ import org.sufficientlysecure.keychain.helper.Preferences;
import org.sufficientlysecure.keychain.pgp.*;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralException;
import org.sufficientlysecure.keychain.pgp.exception.PgpGeneralMsgIdException;
+import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.provider.KeychainContract.DataStream;
import org.sufficientlysecure.keychain.provider.ProviderHelper;
import org.sufficientlysecure.keychain.ui.adapter.ImportKeysListEntry;
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
index 9df84065f..a17cfaafc 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyActivity.java
@@ -621,7 +621,15 @@ public class EditKeyActivity extends ActionBarActivity implements EditorListener
if (message.arg1 == KeychainIntentServiceHandler.MESSAGE_OKAY) {
Intent data = new Intent();
+
+ // TODO: remove, now using uri!
data.putExtra(RESULT_EXTRA_MASTER_KEY_ID, getMasterKeyId());
+
+ // return uri pointing to new created key
+ Uri uri = KeychainContract.KeyRings.buildPublicKeyRingsByKeyIdUri(
+ String.valueOf(getMasterKeyId()));
+ data.setData(uri);
+
ArrayList<String> userIds = null;
try {
userIds = getUserIds(mUserIdsView);
diff --git a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
index cbc0f4c5c..d0abe0f6f 100644
--- a/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
+++ b/OpenPGP-Keychain/src/main/java/org/sufficientlysecure/keychain/ui/SelectSecretKeyLayoutFragment.java
@@ -40,6 +40,8 @@ import org.sufficientlysecure.keychain.provider.KeychainContract;
public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {
+ private static final int REQUEST_CODE_SELECT_KEY = 0x00008882;
+
private TextView mKeyUserId;
private TextView mKeyUserIdRest;
private TextView mKeyMasterKeyIdHex;
@@ -51,14 +53,10 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
private SelectSecretKeyCallback mCallback;
- private static final int REQUEST_CODE_SELECT_KEY = 8882;
-
- private static final int LOADER_ID = 0;
-
- //The Projection we will retrieve, Master Key ID is for convenience sake,
- //to avoid having to pass the Key Around
- final String[] PROJECTION = new String[]{KeychainContract.UserIds.USER_ID
- , KeychainContract.KeyRings.MASTER_KEY_ID};
+ final String[] PROJECTION = new String[]{
+ KeychainContract.UserIds.USER_ID,
+ KeychainContract.KeyRings.MASTER_KEY_ID
+ };
final int INDEX_USER_ID = 0;
final int INDEX_MASTER_KEY_ID = 1;
@@ -82,7 +80,6 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
}
public void setSelectedKeyData(String userName, String email, String masterKeyHex) {
-
mNoKeySelected.setVisibility(View.GONE);
mKeyUserId.setText(userName);
@@ -124,11 +121,9 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
return view;
}
- //For AppSettingsFragment
- public void selectKey(long masterKeyId) {
- Uri buildUri = KeychainContract.KeyRings.buildSecretKeyRingsByMasterKeyIdUri(String.valueOf(masterKeyId));
- mReceivedUri = buildUri;
- getActivity().getSupportLoaderManager().restartLoader(LOADER_ID, null, this);
+ public void selectKey(Uri keyUri) {
+ mReceivedUri = keyUri;
+ getActivity().getSupportLoaderManager().restartLoader(0, null, this);
}
private void startSelectKeyActivity() {
@@ -188,13 +183,13 @@ public class SelectSecretKeyLayoutFragment extends Fragment implements LoaderMan
// Secret Key Fragment.Intent contains the passed Uri
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
- switch (requestCode & 0xFFFF) {
+ switch (requestCode) {
case REQUEST_CODE_SELECT_KEY: {
if (resultCode == Activity.RESULT_OK) {
mReceivedUri = data.getData();
//Must be restartLoader() or the data will not be updated on selecting a new key
- getActivity().getSupportLoaderManager().restartLoader(LOADER_ID, null, this);
+ getActivity().getSupportLoaderManager().restartLoader(0, null, this);
mKeyUserId.setError(null);