change wording of export dialog, remove "export secret" checkbox

This commit is contained in:
Vincent Breitmoser
2015-07-08 17:25:07 +02:00
parent e0cb891a1f
commit 20cebc2788
17 changed files with 53 additions and 72 deletions

View File

@@ -39,7 +39,6 @@ public class BackupFragment extends Fragment {
// This ids for multiple key export.
private ArrayList<Long> mIdsForRepeatAskPassphrase;
private ArrayList<Long> mIdsForExport;
// This index for remembering the number of master key.
private int mIndex;

View File

@@ -95,7 +95,7 @@ public class ViewKeyActivity extends BaseNfcActivity implements
public static final String EXTRA_NFC_FINGERPRINTS = "nfc_fingerprints";
static final int REQUEST_QR_FINGERPRINT = 1;
static final int REQUEST_EXPORT = 2;
static final int REQUEST_BACKUP = 2;
static final int REQUEST_CERTIFY = 3;
public static final String EXTRA_DISPLAY_RESULT = "display_result";
@@ -325,7 +325,7 @@ public class ViewKeyActivity extends BaseNfcActivity implements
return true;
}
case R.id.menu_key_view_export_file: {
startPassphraseActivity(REQUEST_EXPORT);
startPassphraseActivity(REQUEST_BACKUP);
return true;
}
case R.id.menu_key_view_delete: {
@@ -413,23 +413,9 @@ public class ViewKeyActivity extends BaseNfcActivity implements
startActivityForResult(intent, requestCode);
}
private void exportToFile(Uri dataUri, ProviderHelper providerHelper) {
try {
Uri baseUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri);
HashMap<String, Object> data = providerHelper.getGenericData(
baseUri,
new String[]{KeychainContract.Keys.MASTER_KEY_ID, KeychainContract.KeyRings.HAS_SECRET},
new int[]{ProviderHelper.FIELD_TYPE_INTEGER, ProviderHelper.FIELD_TYPE_INTEGER});
new ExportHelper(this).showExportKeysDialog(
new long[]{(Long) data.get(KeychainContract.KeyRings.MASTER_KEY_ID)},
Constants.Path.APP_DIR_FILE, ((Long) data.get(KeychainContract.KeyRings.HAS_SECRET) != 0)
);
} catch (ProviderHelper.NotFoundException e) {
Notify.create(this, R.string.error_key_not_found, Notify.Style.ERROR).show();
Log.e(Constants.TAG, "Key not found", e);
}
private void backupToFile() {
new ExportHelper(this).showExportKeysDialog(
mMasterKeyId, Constants.Path.APP_DIR_FILE, true);
}
private void deleteKey() {
@@ -489,8 +475,8 @@ public class ViewKeyActivity extends BaseNfcActivity implements
return;
}
case REQUEST_EXPORT: {
exportToFile(mDataUri, mProviderHelper);
case REQUEST_BACKUP: {
backupToFile();
return;
}

View File

@@ -22,7 +22,6 @@ import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import android.app.Activity;
import android.app.ActivityOptions;
@@ -84,6 +83,7 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements
private Uri mDataUri;
private byte[] mFingerprint;
private long mMasterKeyId;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup superContainer, Bundle savedInstanceState) {
@@ -135,7 +135,7 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements
vKeySafeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
exportToFile(mDataUri, new ProviderHelper(getActivity()));
exportToFile();
}
});
vKeyClipboardButton.setOnClickListener(new View.OnClickListener() {
@@ -173,23 +173,9 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements
return root;
}
private void exportToFile(Uri dataUri, ProviderHelper providerHelper) {
try {
Uri baseUri = KeychainContract.KeyRings.buildUnifiedKeyRingUri(dataUri);
HashMap<String, Object> data = providerHelper.getGenericData(
baseUri,
new String[]{KeychainContract.Keys.MASTER_KEY_ID, KeychainContract.KeyRings.HAS_SECRET},
new int[]{ProviderHelper.FIELD_TYPE_INTEGER, ProviderHelper.FIELD_TYPE_INTEGER});
new ExportHelper(getActivity()).showExportKeysDialog(
new long[]{(Long) data.get(KeychainContract.KeyRings.MASTER_KEY_ID)},
Constants.Path.APP_DIR_FILE, ((Long) data.get(KeychainContract.KeyRings.HAS_SECRET) != 0)
);
} catch (ProviderHelper.NotFoundException e) {
Notify.create(getActivity(), R.string.error_key_not_found, Notify.Style.ERROR).show();
Log.e(Constants.TAG, "Key not found", e);
}
private void exportToFile() {
new ExportHelper(getActivity()).showExportKeysDialog(
mMasterKeyId, Constants.Path.APP_DIR_FILE, false);
}
private void startSafeSlinger(Uri dataUri) {
@@ -383,6 +369,7 @@ public class ViewKeyAdvShareFragment extends LoaderFragment implements
/** Load QR Code asynchronously and with a fade in animation */
private void setFingerprint(byte[] fingerprintBlob) {
mFingerprint = fingerprintBlob;
mMasterKeyId = KeyFormattingUtils.getKeyIdFromFingerprint(fingerprintBlob);
final String fingerprint = KeyFormattingUtils.convertFingerprintToHex(fingerprintBlob);
mFingerprintView.setText(KeyFormattingUtils.colorizeFingerprint(fingerprint));

View File

@@ -17,6 +17,9 @@
package org.sufficientlysecure.keychain.util;
import java.io.File;
import android.support.v4.app.FragmentActivity;
import org.sufficientlysecure.keychain.Constants;
@@ -25,15 +28,12 @@ import org.sufficientlysecure.keychain.operations.results.ExportResult;
import org.sufficientlysecure.keychain.service.ExportKeyringParcel;
import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper;
import java.io.File;
public class ExportHelper
implements CryptoOperationHelper.Callback <ExportKeyringParcel, ExportResult> {
protected File mExportFile;
FragmentActivity mActivity;
private CryptoOperationHelper<ExportKeyringParcel, ExportResult> mExportOpHelper;
private boolean mExportSecret;
private long[] mMasterKeyIds;
@@ -42,15 +42,13 @@ public class ExportHelper
this.mActivity = activity;
}
/**
* Show dialog where to export keys
*/
public void showExportKeysDialog(final long[] masterKeyIds, final File exportFile,
final boolean showSecretCheckbox) {
/** Show dialog where to export keys */
public void showExportKeysDialog(final Long masterKeyId, final File exportFile,
final boolean exportSecret) {
mExportFile = exportFile;
String title;
if (masterKeyIds == null) {
if (masterKeyId == null) {
// export all keys
title = mActivity.getString(R.string.title_export_keys);
} else {
@@ -58,17 +56,24 @@ public class ExportHelper
title = mActivity.getString(R.string.title_export_key);
}
String message = mActivity.getString(R.string.specify_file_to_export_to);
String checkMsg = showSecretCheckbox ?
mActivity.getString(R.string.also_export_secret_keys) : null;
String message;
if (exportSecret) {
message = mActivity.getString(masterKeyId == null
? R.string.specify_backup_dest_secret
: R.string.specify_backup_dest_secret_single);
} else {
message = mActivity.getString(masterKeyId == null
? R.string.specify_backup_dest
: R.string.specify_backup_dest_single);
}
FileHelper.saveFile(new FileHelper.FileDialogCallback() {
@Override
public void onFileSelected(File file, boolean checked) {
mExportFile = file;
exportKeys(masterKeyIds, checked);
exportKeys(masterKeyId == null ? null : new long[] { masterKeyId }, exportSecret);
}
}, mActivity.getSupportFragmentManager(), title, message, exportFile, checkMsg);
}, mActivity.getSupportFragmentManager(), title, message, exportFile, null);
}
// TODO: If ExportHelper requires pending data (see CryptoOPerationHelper), activities using
@@ -82,8 +87,9 @@ public class ExportHelper
mExportSecret = exportSecret;
mMasterKeyIds = masterKeyIds; // if masterKeyIds is null it means export all
mExportOpHelper = new CryptoOperationHelper(mActivity, this, R.string.progress_exporting);
mExportOpHelper.cryptoOperation();
CryptoOperationHelper<ExportKeyringParcel, ExportResult> exportOpHelper =
new CryptoOperationHelper<>(mActivity, this, R.string.progress_exporting);
exportOpHelper.cryptoOperation();
}
@Override