tls-psk: show a "done" button after connection is established

This commit is contained in:
Vincent Breitmoser 2017-06-13 01:00:55 +02:00
parent c04e716a27
commit b6586c6620
4 changed files with 65 additions and 3 deletions

View file

@ -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();

View file

@ -127,6 +127,10 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
view.scanQrCode();
}
public void onUiClickDone() {
view.finishFragmentOrActivity();
}
public void onUiQrCodeScanned(String qrCodeContent) {
connectionStartConnect(qrCodeContent);
}
@ -145,6 +149,7 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
secretKeyAdapter.focusItem(masterKeyId);
connectionSend(armoredSecretKey, Long.toString(masterKeyId));
} catch (IOException | NotFoundException | PgpGeneralException e) {
// TODO
e.printStackTrace();
}
}
@ -215,6 +220,7 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
receivedKeyAdapter.clear();
view.showConnectionEstablished(otherName);
view.setShowDoneIcon(true);
view.addFakeBackStackItem(BACKSTACK_TAG_TRANSFER);
}
@ -322,6 +328,7 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
keyTransferServerInteractor.startServer(this);
view.showWaitingForConnection();
view.setShowDoneIcon(false);
}
private boolean isWifiConnected() {
@ -389,6 +396,8 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
void showErrorConnectionError(String errorMessage);
void showResultNotification(ImportKeyResult result);
void setShowDoneIcon(boolean showDoneIcon);
void setSecretKeyAdapter(Adapter adapter);
void setShowSecretKeyEmptyView(boolean isEmpty);
void setReceivedKeyAdapter(Adapter secretKeyAdapter);
@ -396,5 +405,7 @@ public class TransferPresenter implements KeyTransferCallback, LoaderCallbacks<L
<T extends Parcelable, S extends OperationResult> CryptoOperationHelper<T,S> createCryptoOperationHelper(Callback<T, S> callback);
void addFakeBackStackItem(String tag);
void finishFragmentOrActivity();
}
}

View file

@ -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 &&

View file

@ -1,4 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:title="Done"
android:id="@+id/menu_done"
app:showAsAction="ifRoom"
/>
</menu>