aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java109
1 files changed, 80 insertions, 29 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
index 641e6e17e..e20d5e888 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EditKeyFragment.java
@@ -17,6 +17,7 @@
package org.sufficientlysecure.keychain.ui;
+import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.database.Cursor;
@@ -71,6 +72,7 @@ public class EditKeyFragment extends LoaderFragment implements
LoaderManager.LoaderCallbacks<Cursor> {
public static final String ARG_DATA_URI = "uri";
+ public static final String ARG_SAVE_KEYRING_PARCEL = "save_keyring_parcel";
private ListView mUserIdsList;
private ListView mSubkeysList;
@@ -112,6 +114,17 @@ public class EditKeyFragment extends LoaderFragment implements
return frag;
}
+ public static EditKeyFragment newInstance(SaveKeyringParcel saveKeyringParcel) {
+ EditKeyFragment frag = new EditKeyFragment();
+
+ Bundle args = new Bundle();
+ args.putParcelable(ARG_SAVE_KEYRING_PARCEL, saveKeyringParcel);
+
+ frag.setArguments(args);
+
+ return frag;
+ }
+
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
View root = super.onCreateView(inflater, superContainer, savedInstanceState);
@@ -138,29 +151,54 @@ public class EditKeyFragment extends LoaderFragment implements
new OnClickListener() {
@Override
public void onClick(View v) {
- // Save
- save(mCurrentPassphrase);
+ // if we are working on an Uri, save directly
+ if (mDataUri == null) {
+ returnKeyringParcel();
+ } else {
+ saveInDatabase(mCurrentPassphrase);
+ }
}
}, R.string.menu_key_edit_cancel, R.drawable.ic_action_cancel,
new OnClickListener() {
@Override
public void onClick(View v) {
- // Cancel
+ // cancel
+ getActivity().setResult(Activity.RESULT_CANCELED);
getActivity().finish();
}
}
);
Uri dataUri = getArguments().getParcelable(ARG_DATA_URI);
- if (dataUri == null) {
- Log.e(Constants.TAG, "Data missing. Should be Uri of key!");
+ SaveKeyringParcel saveKeyringParcel = getArguments().getParcelable(ARG_SAVE_KEYRING_PARCEL);
+ if (dataUri == null && saveKeyringParcel == null) {
+ Log.e(Constants.TAG, "Either a key Uri or ARG_SAVE_KEYRING_PARCEL is required!");
getActivity().finish();
return;
}
- loadData(dataUri);
+ initView();
+ if (dataUri != null) {
+ loadData(dataUri);
+ } else {
+ loadSaveKeyringParcel(saveKeyringParcel);
+ }
}
+ private void loadSaveKeyringParcel(SaveKeyringParcel saveKeyringParcel) {
+ mSaveKeyringParcel = saveKeyringParcel;
+ mPrimaryUserId = saveKeyringParcel.mChangePrimaryUserId;
+ mCurrentPassphrase = saveKeyringParcel.mNewPassphrase;
+
+ mUserIdsAddedAdapter = new UserIdsAddedAdapter(getActivity(), mSaveKeyringParcel.mAddUserIds);
+ mUserIdsAddedList.setAdapter(mUserIdsAddedAdapter);
+
+ mSubkeysAddedAdapter = new SubkeysAddedAdapter(getActivity(), mSaveKeyringParcel.mAddSubKeys);
+ mSubkeysAddedList.setAdapter(mSubkeysAddedAdapter);
+
+ // show directly
+ setContentShown(true);
+ }
private void loadData(Uri dataUri) {
mDataUri = dataUri;
@@ -228,6 +266,21 @@ public class EditKeyFragment extends LoaderFragment implements
getLoaderManager().initLoader(LOADER_ID_SUBKEYS, null, EditKeyFragment.this);
}
+ mUserIdsAdapter = new UserIdsAdapter(getActivity(), null, 0, mSaveKeyringParcel);
+ mUserIdsList.setAdapter(mUserIdsAdapter);
+
+ // TODO: SaveParcel from savedInstance?!
+ mUserIdsAddedAdapter = new UserIdsAddedAdapter(getActivity(), mSaveKeyringParcel.mAddUserIds);
+ mUserIdsAddedList.setAdapter(mUserIdsAddedAdapter);
+
+ mSubkeysAdapter = new SubkeysAdapter(getActivity(), null, 0, mSaveKeyringParcel);
+ mSubkeysList.setAdapter(mSubkeysAdapter);
+
+ mSubkeysAddedAdapter = new SubkeysAddedAdapter(getActivity(), mSaveKeyringParcel.mAddSubKeys);
+ mSubkeysAddedList.setAdapter(mSubkeysAddedAdapter);
+ }
+
+ private void initView() {
mChangePassphrase.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -249,33 +302,19 @@ public class EditKeyFragment extends LoaderFragment implements
}
});
- mUserIdsAdapter = new UserIdsAdapter(getActivity(), null, 0, mSaveKeyringParcel);
- mUserIdsList.setAdapter(mUserIdsAdapter);
-
- mUserIdsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ mSubkeysList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- editUserId(position);
+ editSubkey(position);
}
});
- // TODO: SaveParcel from savedInstance?!
- mUserIdsAddedAdapter = new UserIdsAddedAdapter(getActivity(), mSaveKeyringParcel.mAddUserIds);
- mUserIdsAddedList.setAdapter(mUserIdsAddedAdapter);
-
- mSubkeysAdapter = new SubkeysAdapter(getActivity(), null, 0, mSaveKeyringParcel);
- mSubkeysList.setAdapter(mSubkeysAdapter);
-
- mSubkeysList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ mUserIdsList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- editSubkey(position);
+ editUserId(position);
}
});
-
- mSubkeysAddedAdapter = new SubkeysAddedAdapter(getActivity(), mSaveKeyringParcel.mAddSubKeys);
- mSubkeysAddedList.setAdapter(mSubkeysAddedAdapter);
-
}
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
@@ -505,8 +544,12 @@ public class EditKeyFragment extends LoaderFragment implements
}
private void addSubkey() {
- boolean willBeMasterKey = mSubkeysAdapter.getCount() == 0
- && mSubkeysAddedAdapter.getCount() == 0;
+ boolean willBeMasterKey;
+ if (mSubkeysAdapter != null) {
+ willBeMasterKey = mSubkeysAdapter.getCount() == 0 && mSubkeysAddedAdapter.getCount() == 0;
+ } else {
+ willBeMasterKey = mSubkeysAddedAdapter.getCount() == 0;
+ }
AddSubkeyDialogFragment addSubkeyDialogFragment =
AddSubkeyDialogFragment.newInstance(willBeMasterKey);
@@ -522,7 +565,14 @@ public class EditKeyFragment extends LoaderFragment implements
addSubkeyDialogFragment.show(getActivity().getSupportFragmentManager(), "addSubkeyDialog");
}
- private void save(String passphrase) {
+ private void returnKeyringParcel() {
+ Intent returnIntent = new Intent();
+ returnIntent.putExtra(EditKeyActivity.EXTRA_SAVE_KEYRING_PARCEL, mSaveKeyringParcel);
+ getActivity().setResult(Activity.RESULT_OK, returnIntent);
+ getActivity().finish();
+ }
+
+ private void saveInDatabase(String passphrase) {
Log.d(Constants.TAG, "mSaveKeyringParcel:\n" + mSaveKeyringParcel.toString());
KeychainIntentServiceHandler saveHandler = new KeychainIntentServiceHandler(
@@ -582,10 +632,11 @@ public class EditKeyFragment extends LoaderFragment implements
// start service with intent
getActivity().startService(intent);
-
}
- /** Closes this activity, returning a result parcel with a single error log entry. */
+ /**
+ * Closes this activity, returning a result parcel with a single error log entry.
+ */
void finishWithError(LogType reason) {
// Prepare an intent with an EXTRA_RESULT