Advanced screen: edited key saved

This commit is contained in:
Dominik Schürmann
2015-12-28 15:38:16 +01:00
parent 1dea4ef19f
commit 9887e8b42a
2 changed files with 99 additions and 2 deletions

View File

@@ -18,6 +18,7 @@
package org.sufficientlysecure.keychain.ui;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
@@ -41,12 +42,14 @@ import android.widget.ViewAnimator;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.pgp.CanonicalizedSecretKey.SecretKeyType;
import org.sufficientlysecure.keychain.provider.KeychainContract;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel.SubkeyChange;
import org.sufficientlysecure.keychain.ui.adapter.SubkeysAdapter;
import org.sufficientlysecure.keychain.ui.adapter.SubkeysAddedAdapter;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.dialog.AddSubkeyDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditSubkeyDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditSubkeyExpiryDialogFragment;
@@ -71,6 +74,8 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements
private SubkeysAdapter mSubkeysAdapter;
private SubkeysAddedAdapter mSubkeysAddedAdapter;
private CryptoOperationHelper<SaveKeyringParcel, EditKeyResult> mEditKeyHelper;
private Uri mDataUriSubkeys;
private long mMasterKeyId;
@@ -135,6 +140,15 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements
loadData(dataUri);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mEditKeyHelper != null) {
mEditKeyHelper.handleActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
private void loadData(Uri dataUri) {
mDataUriSubkeys = KeychainContract.Keys.buildKeysUri(dataUri);
@@ -220,7 +234,7 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
mode.finish();
editKey(mode);
return true;
}
@@ -390,4 +404,39 @@ public class ViewKeyAdvSubkeysFragment extends LoaderFragment implements
});
}
private void editKey(final ActionMode mode) {
CryptoOperationHelper.Callback<SaveKeyringParcel, EditKeyResult> editKeyCallback
= new CryptoOperationHelper.Callback<SaveKeyringParcel, EditKeyResult>() {
@Override
public SaveKeyringParcel createOperationInput() {
return mEditModeSaveKeyringParcel;
}
@Override
public void onCryptoOperationSuccess(EditKeyResult result) {
mode.finish();
result.createNotify(getActivity()).show();
}
@Override
public void onCryptoOperationCancelled() {
}
@Override
public void onCryptoOperationError(EditKeyResult result) {
}
@Override
public boolean onCryptoSetProgress(String msg, int progress, int max) {
return false;
}
};
mEditKeyHelper = new CryptoOperationHelper<>(1, this, editKeyCallback, R.string.progress_saving);
mEditKeyHelper.cryptoOperation();
}
}

View File

@@ -19,6 +19,7 @@
package org.sufficientlysecure.keychain.ui;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
@@ -42,10 +43,12 @@ import android.widget.ViewAnimator;
import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.compatibility.DialogFragmentWorkaround;
import org.sufficientlysecure.keychain.operations.results.EditKeyResult;
import org.sufficientlysecure.keychain.provider.KeychainContract.UserPackets;
import org.sufficientlysecure.keychain.service.SaveKeyringParcel;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAdapter;
import org.sufficientlysecure.keychain.ui.adapter.UserIdsAddedAdapter;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import org.sufficientlysecure.keychain.ui.dialog.AddUserIdDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.EditUserIdDialogFragment;
import org.sufficientlysecure.keychain.ui.dialog.SetPassphraseDialogFragment;
@@ -70,6 +73,8 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
private UserIdsAdapter mUserIdsAdapter;
private UserIdsAddedAdapter mUserIdsAddedAdapter;
private CryptoOperationHelper<SaveKeyringParcel, EditKeyResult> mEditKeyHelper;
private Uri mDataUri;
private long mMasterKeyId;
@@ -228,6 +233,15 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
loadData(dataUri);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (mEditKeyHelper != null) {
mEditKeyHelper.handleActivityResult(requestCode, resultCode, data);
}
super.onActivityResult(requestCode, resultCode, data);
}
private void loadData(Uri dataUri) {
mDataUri = dataUri;
@@ -325,7 +339,7 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
mode.finish();
editKey(mode);
return true;
}
@@ -340,4 +354,38 @@ public class ViewKeyAdvUserIdsFragment extends LoaderFragment implements
});
}
private void editKey(final ActionMode mode) {
CryptoOperationHelper.Callback<SaveKeyringParcel, EditKeyResult> editKeyCallback
= new CryptoOperationHelper.Callback<SaveKeyringParcel, EditKeyResult>() {
@Override
public SaveKeyringParcel createOperationInput() {
return mEditModeSaveKeyringParcel;
}
@Override
public void onCryptoOperationSuccess(EditKeyResult result) {
mode.finish();
result.createNotify(getActivity()).show();
}
@Override
public void onCryptoOperationCancelled() {
}
@Override
public void onCryptoOperationError(EditKeyResult result) {
}
@Override
public boolean onCryptoSetProgress(String msg, int progress, int max) {
return false;
}
};
mEditKeyHelper = new CryptoOperationHelper<>(1, this, editKeyCallback, R.string.progress_saving);
mEditKeyHelper.cryptoOperation();
}
}