Use buttons for encrypt decrypt instead of actionbar

This commit is contained in:
Dominik Schürmann 2014-02-02 17:34:43 +01:00
parent 91f083796c
commit a14c5de22e
6 changed files with 157 additions and 187 deletions

View File

@ -120,8 +120,7 @@
android:name=".ui.SelectPublicKeyActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:label="@string/title_select_recipients"
android:launchMode="singleTop"
android:uiOptions="splitActionBarWhenNarrow">
android:launchMode="singleTop">
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.SEARCH" /> -->
@ -151,7 +150,6 @@
android:name=".ui.EncryptActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:label="@string/title_encrypt"
android:uiOptions="splitActionBarWhenNarrow"
android:windowSoftInputMode="stateHidden">
<!-- Keychain's own Actions -->
@ -175,7 +173,6 @@
android:name=".ui.DecryptActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:label="@string/title_decrypt"
android:uiOptions="splitActionBarWhenNarrow"
android:windowSoftInputMode="stateHidden">
<!-- Keychain's own Actions -->
@ -250,7 +247,6 @@
android:name=".ui.PreferencesKeyServerActivity"
android:configChanges="orientation|screenSize|keyboardHidden|keyboard"
android:label="@string/title_key_server_preference"
android:uiOptions="splitActionBarWhenNarrow"
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".ui.SignKeyActivity"

View File

@ -55,10 +55,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.support.v4.view.MenuCompat;
import android.support.v4.view.MenuItemCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
@ -99,11 +95,6 @@ public class DecryptActivity extends DrawerActivity {
private ImageView mSourcePrevious = null;
private ImageView mSourceNext = null;
private boolean mDecryptEnabled = true;
private String mDecryptString = "";
private boolean mReplyEnabled = true;
private String mReplyString = "";
private int mDecryptTarget;
private EditText mFilename = null;
@ -126,40 +117,7 @@ public class DecryptActivity extends DrawerActivity {
private boolean mDecryptImmediately = false;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mDecryptEnabled) {
MenuItem item = menu.add(1, Id.menu.option.decrypt, 0, mDecryptString);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
}
if (mReplyEnabled) {
MenuItem item = menu.add(1, Id.menu.option.reply, 1, mReplyString);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Id.menu.option.decrypt: {
decryptClicked();
return true;
}
case Id.menu.option.reply: {
replyClicked();
return true;
}
default: {
return super.onOptionsItemSelected(item);
}
}
}
private BootstrapButton mDecryptButton;
private void initView() {
mSource = (ViewFlipper) findViewById(R.id.source);
@ -225,6 +183,14 @@ public class DecryptActivity extends DrawerActivity {
while (mSource.getCurrentView().getId() != R.id.sourceMessage) {
mSource.showNext();
}
mDecryptButton = (BootstrapButton) findViewById(R.id.action_decrypt);
mDecryptButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
decryptClicked();
}
});
}
@Override
@ -280,11 +246,6 @@ public class DecryptActivity extends DrawerActivity {
}
});
mReplyEnabled = false;
// build new actionbar
supportInvalidateOptionsMenu();
if (mReturnResult) {
mSourcePrevious.setClickable(false);
mSourcePrevious.setEnabled(false);
@ -371,10 +332,6 @@ public class DecryptActivity extends DrawerActivity {
// replace non breakable spaces
textData = textData.replaceAll("\\xa0", " ");
mMessage.setText(textData);
mDecryptString = getString(R.string.btn_verify);
// build new action bar
supportInvalidateOptionsMenu();
} else {
Log.d(Constants.TAG, "Nothing matched!");
}
@ -420,19 +377,13 @@ public class DecryptActivity extends DrawerActivity {
switch (mSource.getCurrentView().getId()) {
case R.id.sourceFile: {
mSourceLabel.setText(R.string.label_file);
mDecryptString = getString(R.string.btn_decrypt);
// build new action bar
supportInvalidateOptionsMenu();
mDecryptButton.setText(getString(R.string.btn_decrypt));
break;
}
case R.id.sourceMessage: {
mSourceLabel.setText(R.string.label_message);
mDecryptString = getString(R.string.btn_decrypt);
// build new action bar
supportInvalidateOptionsMenu();
mDecryptButton.setText(getString(R.string.btn_decrypt));
break;
}
@ -722,10 +673,6 @@ public class DecryptActivity extends DrawerActivity {
mSignatureKeyId = 0;
mSignatureLayout.setVisibility(View.GONE);
mReplyEnabled = false;
// build new action bar
supportInvalidateOptionsMenu();
Toast.makeText(DecryptActivity.this, R.string.decryption_successful,
Toast.LENGTH_SHORT).show();
@ -743,10 +690,7 @@ public class DecryptActivity extends DrawerActivity {
.getString(KeychainIntentService.RESULT_DECRYPTED_STRING);
mMessage.setText(decryptedMessage);
mMessage.setHorizontallyScrolling(false);
mReplyEnabled = false;
// build new action bar
supportInvalidateOptionsMenu();
break;
case Id.target.file:

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2012-2014 Dominik Schürmann <dominik@dominikschuermann.de>
* Copyright (C) 2010 Thialfihar <thi@thialfihar.org>
*
* Licensed under the Apache License, Version 2.0 (the "License");
@ -43,7 +43,6 @@ import org.sufficientlysecure.keychain.ui.dialog.PassphraseDialogFragment;
import org.sufficientlysecure.keychain.util.Choice;
import org.sufficientlysecure.keychain.util.Log;
import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.net.Uri;
@ -51,9 +50,6 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Messenger;
import android.support.v4.view.MenuItemCompat;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.AnimationUtils;
@ -88,11 +84,6 @@ public class EncryptActivity extends DrawerActivity {
private EditText mMessage = null;
private BootstrapButton mSelectKeysButton = null;
private boolean mEncryptEnabled = false;
private String mEncryptString = "";
private boolean mEncryptToClipboardEnabled = false;
private String mEncryptToClipboardString = "";
private CheckBox mSign = null;
private TextView mMainUserId = null;
private TextView mMainUserIdRest = null;
@ -130,42 +121,9 @@ public class EncryptActivity extends DrawerActivity {
private FileDialogFragment mFileDialog;
/**
* ActionBar menu is created based on class variables to change it at runtime
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mEncryptToClipboardEnabled) {
MenuItem item = menu.add(1, Id.menu.option.encrypt_to_clipboard, 0, mEncryptToClipboardString);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
}
if (mEncryptEnabled) {
MenuItem item = menu.add(1, Id.menu.option.encrypt, 1, mEncryptString);
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case Id.menu.option.encrypt_to_clipboard:
encryptToClipboardClicked();
return true;
case Id.menu.option.encrypt:
encryptClicked();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private BootstrapButton mEncryptShare;
private BootstrapButton mEncryptClipboard;
private BootstrapButton mEncryptFile;
@Override
public void onCreate(Bundle savedInstanceState) {
@ -366,58 +324,40 @@ public class EncryptActivity extends DrawerActivity {
updateActionBarButtons();
}
/**
* Set ActionBar buttons based on parameters
*
* @param encryptEnabled
* @param encryptStringRes
* @param encryptToClipboardEnabled
* @param encryptToClipboardStringRes
*/
@SuppressLint("NewApi")
private void setActionbarButtons(boolean encryptEnabled, int encryptStringRes,
boolean encryptToClipboardEnabled, int encryptToClipboardStringRes) {
mEncryptEnabled = encryptEnabled;
if (encryptEnabled) {
mEncryptString = getString(encryptStringRes);
}
mEncryptToClipboardEnabled = encryptToClipboardEnabled;
if (encryptToClipboardEnabled) {
mEncryptToClipboardString = getString(encryptToClipboardStringRes);
}
// build new action bar based on these class variables
supportInvalidateOptionsMenu();
}
/**
* Update ActionBar buttons based on current selection in view
*/
private void updateActionBarButtons() {
switch (mSource.getCurrentView().getId()) {
case R.id.sourceFile: {
setActionbarButtons(true, R.string.btn_encrypt_file, false, 0);
mEncryptShare.setVisibility(View.GONE);
mEncryptClipboard.setVisibility(View.GONE);
mEncryptFile.setVisibility(View.VISIBLE);
break;
}
case R.id.sourceMessage: {
mSourceLabel.setText(R.string.label_message);
mEncryptShare.setVisibility(View.VISIBLE);
mEncryptClipboard.setVisibility(View.VISIBLE);
mEncryptFile.setVisibility(View.GONE);
if (mMode.getCurrentView().getId() == R.id.modeSymmetric) {
setActionbarButtons(true, R.string.btn_encrypt_and_send, true,
R.string.btn_encrypt_to_clipboard);
mEncryptShare.setEnabled(true);
mEncryptClipboard.setEnabled(true);
} else {
if (mEncryptionKeyIds == null || mEncryptionKeyIds.length == 0) {
if (mSecretKeyId == 0) {
setActionbarButtons(false, 0, false, 0);
mEncryptShare.setEnabled(false);
mEncryptClipboard.setEnabled(false);
} else {
setActionbarButtons(true, R.string.btn_sign_and_send, true,
R.string.btn_sign_to_clipboard);
mEncryptShare.setEnabled(true);
mEncryptClipboard.setEnabled(true);
}
} else {
setActionbarButtons(true, R.string.btn_encrypt_and_send, true,
R.string.btn_encrypt_to_clipboard);
mEncryptShare.setEnabled(true);
mEncryptClipboard.setEnabled(true);
}
}
break;
@ -889,6 +829,28 @@ public class EncryptActivity extends DrawerActivity {
}
}
});
mEncryptClipboard = (BootstrapButton) findViewById(R.id.action_encrypt_clipboard);
mEncryptClipboard.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
encryptToClipboardClicked();
}
});
mEncryptShare = (BootstrapButton) findViewById(R.id.action_encrypt_share);
mEncryptShare.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
encryptClicked();
}
});
mEncryptFile = (BootstrapButton) findViewById(R.id.action_encrypt_file);
mEncryptFile.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
encryptClicked();
}
});
}
private void updateView() {

View File

@ -3,25 +3,25 @@
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
android:orientation="vertical" >
android:orientation="vertical">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
android:paddingRight="10dp">
<LinearLayout
android:id="@+id/signature"
@ -31,11 +31,11 @@
android:orientation="horizontal"
android:padding="4dp"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
android:paddingRight="10dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
android:layout_height="wrap_content">
<ImageView
android:id="@+id/ic_signature"
@ -54,7 +54,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="5dip" >
android:paddingLeft="5dip">
<TextView
android:id="@+id/mainUserId"
@ -77,7 +77,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<ImageView
android:id="@+id/sourcePrevious"
@ -106,14 +106,14 @@
android:id="@+id/source"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
android:layout_weight="1">
<LinearLayout
android:id="@+id/sourceMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp" >
android:padding="4dp">
<EditText
android:id="@+id/message"
@ -129,12 +129,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp" >
android:padding="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<EditText
android:id="@+id/filename"
@ -157,7 +157,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<CheckBox
android:id="@+id/deleteAfterDecryption"
@ -168,6 +168,29 @@
</LinearLayout>
</LinearLayout>
</ViewFlipper>
<TextView
style="@style/SectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="@string/section_decrypt_verify" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/action_decrypt"
android:layout_width="match_parent"
android:layout_height="60dp"
android:padding="4dp"
android:text="@string/btn_decrypt_verify"
bootstrapbutton:bb_icon_left="fa-unlock"
bootstrapbutton:bb_type="info" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>

View File

@ -3,25 +3,25 @@
xmlns:bootstrapbutton="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp" >
android:paddingRight="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp" >
android:padding="4dp">
<ImageView
android:id="@+id/modePrevious"
@ -48,19 +48,19 @@
<ViewFlipper
android:id="@+id/mode"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/modeAsymmetric"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="4dp" >
android:padding="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<CheckBox
android:id="@+id/sign"
@ -73,7 +73,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingLeft="16dp" >
android:paddingLeft="16dp">
<TextView
android:id="@+id/mainUserId"
@ -101,7 +101,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingBottom="3dip" >
android:paddingBottom="3dip">
<TextView
android:id="@+id/label_selectPublicKeys"
@ -130,7 +130,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="4dp"
android:stretchColumns="1" >
android:stretchColumns="1">
<TableRow>
@ -174,7 +174,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp" >
android:padding="4dp">
<ImageView
android:id="@+id/sourcePrevious"
@ -203,14 +203,14 @@
android:id="@+id/source"
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
android:layout_weight="1">
<LinearLayout
android:id="@+id/sourceMessage"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp" >
android:padding="4dp">
<EditText
android:id="@+id/message"
@ -225,12 +225,12 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="4dp" >
android:padding="4dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<EditText
android:id="@+id/filename"
@ -253,7 +253,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<TextView
android:id="@+id/label_fileCompression"
@ -275,7 +275,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<CheckBox
android:id="@+id/deleteAfterEncryption"
@ -288,7 +288,7 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
android:orientation="horizontal">
<CheckBox
android:id="@+id/asciiArmour"
@ -299,6 +299,50 @@
</LinearLayout>
</LinearLayout>
</ViewFlipper>
<TextView
style="@style/SectionHeader"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="4dp"
android:text="@string/section_encrypt_and_or_sign" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="4dp">
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/action_encrypt_share"
android:layout_width="match_parent"
android:layout_height="60dp"
android:padding="4dp"
android:layout_weight="1"
android:text="@string/btn_share"
bootstrapbutton:bb_icon_left="fa-lock"
bootstrapbutton:bb_type="info" />
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/action_encrypt_clipboard"
android:layout_width="match_parent"
android:layout_height="60dp"
android:padding="4dp"
android:layout_weight="1"
android:text="@string/btn_clipboard"
bootstrapbutton:bb_icon_left="fa-lock"
bootstrapbutton:bb_type="info" />
<com.beardedhen.androidbootstrap.BootstrapButton
android:id="@+id/action_encrypt_file"
android:layout_width="match_parent"
android:layout_height="60dp"
android:padding="4dp"
android:visibility="gone"
android:text="@string/btn_encrypt_file"
bootstrapbutton:bb_icon_left="fa-lock"
bootstrapbutton:bb_type="info" />
</LinearLayout>
</LinearLayout>
</ScrollView>

View File

@ -42,15 +42,13 @@
<string name="section_signing_key">Your Key used for Signing</string>
<string name="section_upload_key">Upload Key</string>
<string name="section_key_server">Key Server</string>
<string name="section_encrypt_and_or_sign">Encrypt and/or Sign</string>
<string name="section_decrypt_verify">Decrypt and Verify</string>
<!-- button -->
<string name="btn_sign_to_clipboard">Sign (Clipboard)</string>
<string name="btn_encrypt_to_clipboard">Encrypt to Clipboard</string>
<string name="btn_encrypt_and_send">Encrypt and send…</string>
<string name="btn_sign_and_send">Sign and send…</string>
<string name="btn_sign">Sign</string>
<string name="btn_decrypt">Decrypt</string>
<string name="btn_verify">Verify</string>
<string name="btn_decrypt_verify">Decrypt and Verify</string>
<string name="btn_select_encrypt_keys">Select Recipients</string>
<string name="btn_encrypt_file">Encrypt File</string>
<string name="btn_save">Save</string>
@ -64,6 +62,9 @@
<string name="btn_export_to_server">Upload To Key Server</string>
<string name="btn_next">Next</string>
<string name="btn_back">Back</string>
<string name="btn_clipboard">Clipboard</string>
<string name="btn_share">Share with…</string>
<!-- menu -->
<string name="menu_preferences">Settings</string>