From 56a75774d071ff1486196f51473a3f3bb7b06a89 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Wed, 27 May 2015 22:55:36 +0200 Subject: correctly preserve state in EncryptFilesFragment --- .../keychain/ui/EncryptFilesFragment.java | 43 ++++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java') 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 713c03fc2..801f51b04 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/EncryptFilesFragment.java @@ -72,19 +72,23 @@ import java.util.Set; public class EncryptFilesFragment extends CryptoOperationFragment { + public static final String ARG_DELETE_AFTER_ENCRYPT = "delete_after_encrypt"; + public static final String ARG_ENCRYPT_FILENAMES = "encrypt_filenames"; + public static final String ARG_USE_COMPRESSION = "use_compression"; public static final String ARG_USE_ASCII_ARMOR = "use_ascii_armor"; public static final String ARG_URIS = "uris"; private static final int REQUEST_CODE_INPUT = 0x00007003; private static final int REQUEST_CODE_OUTPUT = 0x00007007; - private boolean mUseArmor = false; - private boolean mUseCompression = true; - private boolean mDeleteAfterEncrypt = false; - private boolean mShareAfterEncrypt = false; - private boolean mEncryptFilenames = true; + private boolean mUseArmor; + private boolean mUseCompression; + private boolean mDeleteAfterEncrypt; + private boolean mEncryptFilenames; private boolean mHiddenRecipients = false; + private boolean mShareAfterEncrypt; + private ArrayList mOutputUris = new ArrayList<>(); private RecyclerView mSelectedFiles; @@ -136,19 +140,39 @@ public class EncryptFilesFragment extends CryptoOperationFragment { } }); - ArrayList inputUris = getArguments().getParcelableArrayList(ARG_URIS); + Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState; + + ArrayList inputUris = args.getParcelableArrayList(ARG_URIS); if (inputUris != null) { mFilesAdapter.addAll(inputUris); } - mUseArmor = getArguments().getBoolean(ARG_USE_ASCII_ARMOR); mSelectedFiles.setAdapter(mFilesAdapter); return view; } + @Override + public void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + + outState.putBoolean(ARG_DELETE_AFTER_ENCRYPT, mDeleteAfterEncrypt); + outState.putBoolean(ARG_USE_ASCII_ARMOR, mUseArmor); + outState.putBoolean(ARG_USE_COMPRESSION, mUseCompression); + outState.putBoolean(ARG_ENCRYPT_FILENAMES, mEncryptFilenames); + + outState.putParcelableArrayList(ARG_URIS, mFilesAdapter.getAsArrayList()); + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + + Bundle args = savedInstanceState == null ? getArguments() : savedInstanceState; + mDeleteAfterEncrypt = args.getBoolean(ARG_DELETE_AFTER_ENCRYPT, false); + mUseArmor = args.getBoolean(ARG_USE_ASCII_ARMOR, false); + mUseCompression = args.getBoolean(ARG_USE_COMPRESSION, true); + mEncryptFilenames = args.getBoolean(ARG_ENCRYPT_FILENAMES, true); + setHasOptionsMenu(true); } @@ -246,6 +270,11 @@ public class EncryptFilesFragment extends CryptoOperationFragment { public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.encrypt_file_fragment, menu); + + menu.findItem(R.id.check_delete_after_encrypt).setChecked(mDeleteAfterEncrypt); + menu.findItem(R.id.check_use_armor).setChecked(mUseArmor); + menu.findItem(R.id.check_enable_compression).setChecked(mUseCompression); + menu.findItem(R.id.check_encrypt_filenames).setChecked(mEncryptFilenames); } @Override -- cgit v1.2.3