From b6586c6620ef489493a63e2541a13efb4cf8ca92 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Tue, 13 Jun 2017 01:00:55 +0200 Subject: [PATCH] tls-psk: show a "done" button after connection is established --- .../keychain/ui/MainActivity.java | 2 +- .../transfer/presenter/TransferPresenter.java | 11 +++++ .../ui/transfer/view/TransferFragment.java | 46 ++++++++++++++++++- .../src/main/res/menu/transfer_menu.xml | 9 +++- 4 files changed, 65 insertions(+), 3 deletions(-) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java index b77390e6e..0fa63c4b4 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/MainActivity.java @@ -216,7 +216,7 @@ public class MainActivity extends BaseSecurityTokenActivity implements FabContai } - private void onKeysSelected() { + public void onKeysSelected() { mToolbar.setTitle(R.string.app_name); mDrawer.setSelection(ID_KEYS, false); Fragment frag = new KeyListFragment(); diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java index 23a711433..9f4592c61 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/presenter/TransferPresenter.java @@ -127,6 +127,10 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks CryptoOperationHelper createCryptoOperationHelper(Callback callback); void addFakeBackStackItem(String tag); + + void finishFragmentOrActivity(); } } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java index 5f7662b33..9b0e6c9be 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/transfer/view/TransferFragment.java @@ -33,11 +33,15 @@ import android.os.Parcelable; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager.OnBackStackChangedListener; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView.Adapter; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; @@ -50,6 +54,7 @@ import com.google.zxing.client.android.Intents; import org.sufficientlysecure.keychain.R; import org.sufficientlysecure.keychain.operations.results.ImportKeyResult; import org.sufficientlysecure.keychain.operations.results.OperationResult; +import org.sufficientlysecure.keychain.ui.MainActivity; import org.sufficientlysecure.keychain.ui.QrCodeCaptureActivity; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper; import org.sufficientlysecure.keychain.ui.base.CryptoOperationHelper.Callback; @@ -97,7 +102,7 @@ public class TransferFragment extends Fragment implements TransferMvpView { } } }; - + private boolean showDoneIcon; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { @@ -126,6 +131,8 @@ public class TransferFragment extends Fragment implements TransferMvpView { presenter = new TransferPresenter(getContext(), getLoaderManager(), LOADER_ID, this); + setHasOptionsMenu(true); + return view; } @@ -173,6 +180,22 @@ public class TransferFragment extends Fragment implements TransferMvpView { presenter.onUiStop(); } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + if (showDoneIcon) { + inflater.inflate(R.menu.transfer_menu, menu); + } + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + if (item.getItemId() == R.id.menu_done) { + presenter.onUiClickDone(); + return true; + } + return false; + } + @Override public void showNotOnWifi() { vTransferAnimator.setDisplayedChild(VIEW_NO_WIFI); @@ -236,6 +259,15 @@ public class TransferFragment extends Fragment implements TransferMvpView { startActivityForResult(intent, REQUEST_CODE_SCAN); } + @Override + public void setShowDoneIcon(boolean showDoneIcon) { + this.showDoneIcon = showDoneIcon; + FragmentActivity activity = getActivity(); + if (activity != null) { + activity.invalidateOptionsMenu(); + } + } + @Override public void setSecretKeyAdapter(Adapter adapter) { vTransferKeyList.setAdapter(adapter); @@ -314,6 +346,18 @@ public class TransferFragment extends Fragment implements TransferMvpView { }); } + @Override + public void finishFragmentOrActivity() { + FragmentActivity activity = getActivity(); + if (activity != null) { + if (activity instanceof MainActivity) { + ((MainActivity) activity).onKeysSelected(); + } else { + activity.finish(); + } + } + } + @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (currentCryptoOperationHelper != null && diff --git a/OpenKeychain/src/main/res/menu/transfer_menu.xml b/OpenKeychain/src/main/res/menu/transfer_menu.xml index fe187c0cf..88e03da3f 100644 --- a/OpenKeychain/src/main/res/menu/transfer_menu.xml +++ b/OpenKeychain/src/main/res/menu/transfer_menu.xml @@ -1,4 +1,11 @@ - + + + \ No newline at end of file