diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/LoaderState.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/LoaderState.java index 4f03826c6..098a2677d 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/LoaderState.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/keyimport/processing/LoaderState.java @@ -2,6 +2,12 @@ package org.sufficientlysecure.keychain.keyimport.processing; public interface LoaderState { + /** + * Basic mode includes ability to import all keys retrieved from the selected source + * This doesn't make sense for all sources (for example keyservers..) + * + * @return if currently selected source supports basic mode + */ boolean isBasicModeSupported(); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java index a2fbb3e00..e7fa411c2 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysActivity.java @@ -311,12 +311,21 @@ public class ImportKeysActivity extends BaseActivity implements ImportKeysListen super.onActivityResult(requestCode, resultCode, data); } + @Override + public void onBackPressed() { + FragmentManager fM = getSupportFragmentManager(); + ImportKeysListFragment listFragment = + (ImportKeysListFragment) fM.findFragmentByTag(TAG_FRAG_LIST); + + if ((listFragment == null) || listFragment.onBackPressed()) { + super.onBackPressed(); + } + } + @Override public void loadKeys(LoaderState loaderState) { FragmentManager fM = getSupportFragmentManager(); - ImportKeysListFragment listFragment = (ImportKeysListFragment) fM.findFragmentByTag(TAG_FRAG_LIST); - - listFragment.loadState(loaderState); + ((ImportKeysListFragment) fM.findFragmentByTag(TAG_FRAG_LIST)).loadState(loaderState); } @Override diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java index 08c2116c6..c04a729cf 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ImportKeysListFragment.java @@ -210,6 +210,21 @@ public class ImportKeysListFragment extends Fragment implements } } + /** + * User may want to go back to single card view if he's now in full key list + * Check if we are in full key list and if this import operation supports basic mode + * + * @return true if activity's back pressed can be performed + */ + public boolean onBackPressed() { + boolean advanced = mBinding.getAdvanced(); + if (advanced && mLoaderState.isBasicModeSupported()) { + mBinding.setAdvanced(false); + return false; + } + return true; + } + public void loadState(LoaderState loaderState) { mLoaderState = loaderState; @@ -263,8 +278,7 @@ public class ImportKeysListFragment extends Fragment implements @Override public void onLoadFinished( Loader>> loader, - AsyncTaskResultWrapper> data - ) { + AsyncTaskResultWrapper> data) { mAdapter.setData(data.getResult()); int size = mAdapter.getItemCount(); @@ -329,8 +343,6 @@ public class ImportKeysListFragment extends Fragment implements getKeyResult.createNotify(mActivity).show(); } break; - default: - break; } }