diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivityInterface.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivityInterface.java index baf445293..037366164 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivityInterface.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptActivityInterface.java @@ -29,6 +29,7 @@ public interface EncryptActivityInterface { public boolean isUseArmor(); public boolean isUseCompression(); + public boolean isEncryptFilenames(); public long getSignatureKey(); public long[] getEncryptionKeys(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java index fa7717726..8277e2ccc 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesActivity.java @@ -70,6 +70,7 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi private boolean mUseCompression = true; private boolean mDeleteAfterEncrypt = false; private boolean mShareAfterEncrypt = false; + private boolean mEncryptFilenames = true; private ArrayList mInputUris; private ArrayList mOutputUris; private String mMessage = ""; @@ -88,6 +89,11 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi return mUseCompression; } + @Override + public boolean isEncryptFilenames() { + return mEncryptFilenames; + } + @Override public long getSignatureKey() { return mSigningKeyId; @@ -371,6 +377,12 @@ public class EncryptFilesActivity extends EncryptActivity implements EncryptActi notifyUpdate(); break; } + case R.id.encrypt_filenames: { + mEncryptFilenames = item.isChecked(); + notifyUpdate(); + break; + } + default: { return super.onOptionsItemSelected(item); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java index 48737d223..6ea6ecec1 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java @@ -137,17 +137,17 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt throw new IllegalStateException(); } Uri inputUri = mEncryptInterface.getInputUris().get(0); + String targetName = + (mEncryptInterface.isEncryptFilenames() ? "1" : FileHelper.getFilename(getActivity(), inputUri)) + + (mEncryptInterface.isUseArmor() ? ".asc" : ".gpg"); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { File file = new File(inputUri.getPath()); File parentDir = file.exists() ? file.getParentFile() : Constants.Path.APP_DIR; - String targetName = FileHelper.getFilename(getActivity(), inputUri) + - (mEncryptInterface.isUseArmor() ? ".asc" : ".gpg"); File targetFile = new File(parentDir, targetName); FileHelper.saveFile(this, getString(R.string.title_encrypt_to_file), getString(R.string.specify_file_to_encrypt_to), targetFile, REQUEST_CODE_OUTPUT); } else { - FileHelper.saveDocument(this, "*/*", FileHelper.getFilename(getActivity(), inputUri) + - (mEncryptInterface.isUseArmor() ? ".asc" : ".gpg"), REQUEST_CODE_OUTPUT); + FileHelper.saveDocument(this, "*/*", targetName, REQUEST_CODE_OUTPUT); } } @@ -158,10 +158,13 @@ public class EncryptFilesFragment extends Fragment implements EncryptActivityInt } if (share) { mEncryptInterface.getOutputUris().clear(); + int filenameCounter = 1; for (Uri uri : mEncryptInterface.getInputUris()) { - String targetName = FileHelper.getFilename(getActivity(), uri) + - (mEncryptInterface.isUseArmor() ? ".asc" : ".gpg"); + String targetName = + (mEncryptInterface.isEncryptFilenames() ? String.valueOf(filenameCounter) : FileHelper.getFilename(getActivity(), uri)) + + (mEncryptInterface.isUseArmor() ? ".asc" : ".gpg"); mEncryptInterface.getOutputUris().add(TemporaryStorageProvider.createFile(getActivity(), targetName)); + filenameCounter++; } mEncryptInterface.startEncrypt(true); } else { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java index d3dfd73df..e8c8bd5b5 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptTextActivity.java @@ -82,6 +82,11 @@ public class EncryptTextActivity extends EncryptActivity implements EncryptActiv return true; } + @Override + public boolean isEncryptFilenames() { + return false; + } + @Override public boolean isUseCompression() { return mUseCompression; diff --git a/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml b/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml index f4aeb76c9..1dd9896bc 100644 --- a/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml +++ b/OpenKeychain/src/main/res/menu/encrypt_file_activity.xml @@ -18,17 +18,27 @@ android:id="@+id/check_use_symmetric" android:title="@string/label_symmetric" android:checkable="true" /> - + + + + + + + \ No newline at end of file diff --git a/OpenKeychain/src/main/res/menu/encrypt_text_activity.xml b/OpenKeychain/src/main/res/menu/encrypt_text_activity.xml index bb9f4058a..408b70822 100644 --- a/OpenKeychain/src/main/res/menu/encrypt_text_activity.xml +++ b/OpenKeychain/src/main/res/menu/encrypt_text_activity.xml @@ -18,6 +18,7 @@ android:id="@+id/check_use_symmetric" android:title="@string/label_symmetric" android:checkable="true" /> + "Uses default PIN (123456) to access YubiKeys over NFC" "Signed by:" "Encrypt to:" - "Delete file after encryption" + "Delete files after encryption" "Delete after decryption" "Encryption algorithm" "Hash algorithm" @@ -167,6 +167,7 @@ "(First keyserver listed is preferred)" "preferred" "Enable compression" + "Encrypt filenames" "<no name>" "<none>"