code cleanup and fixes for encrypt

This commit is contained in:
Dominik 2012-06-09 19:43:37 +03:00
parent 5576a847a6
commit 0f243d9e41

View File

@ -25,7 +25,6 @@ import org.thialfihar.android.apg.Constants;
import org.thialfihar.android.apg.FileDialog; import org.thialfihar.android.apg.FileDialog;
import org.thialfihar.android.apg.Id; import org.thialfihar.android.apg.Id;
import org.thialfihar.android.apg.Preferences; import org.thialfihar.android.apg.Preferences;
import org.thialfihar.android.apg.passphrase.AskForPassphrase;
import org.thialfihar.android.apg.service.ApgHandler; import org.thialfihar.android.apg.service.ApgHandler;
import org.thialfihar.android.apg.service.ApgService; import org.thialfihar.android.apg.service.ApgService;
import org.thialfihar.android.apg.ui.dialog.PassphraseDialogFragment; import org.thialfihar.android.apg.ui.dialog.PassphraseDialogFragment;
@ -129,6 +128,10 @@ public class EncryptActivity extends SherlockFragmentActivity {
return mSecretKeyId; return mSecretKeyId;
} }
/**
* ActionBar menu is created based on class variables to change it at runtime
*
*/
@Override @Override
public boolean onCreateOptionsMenu(Menu menu) { public boolean onCreateOptionsMenu(Menu menu) {
if (mEncryptToClipboardEnabled) { if (mEncryptToClipboardEnabled) {
@ -437,7 +440,7 @@ public class EncryptActivity extends SherlockFragmentActivity {
mSourceLabel.setEnabled(false); mSourceLabel.setEnabled(false);
} }
updateButtons(); updateActionBarButtons();
if (mReturnResult if (mReturnResult
&& (mMessage.getText().length() > 0 || mData != null || mContentUri != null) && (mMessage.getText().length() > 0 || mData != null || mContentUri != null)
@ -486,66 +489,72 @@ public class EncryptActivity extends SherlockFragmentActivity {
break; break;
} }
} }
updateButtons(); updateActionBarButtons();
} }
private void updateButtons() { /**
* Set ActionBar buttons based on parameters
*
* @param encryptEnabled
* @param encryptStringRes
* @param encryptToClipboardEnabled
* @param encryptToClipboardStringRes
*/
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
invalidateOptionsMenu();
}
/**
* Update ActionBar buttons based on current selection in view
*/
private void updateActionBarButtons() {
switch (mSource.getCurrentView().getId()) { switch (mSource.getCurrentView().getId()) {
case R.id.sourceFile: { case R.id.sourceFile: {
mEncryptEnabled = true; setActionbarButtons(true, R.string.btn_encryptFile, false, 0);
mEncryptToClipboardEnabled = false;
break; break;
} }
case R.id.sourceMessage: { case R.id.sourceMessage: {
mSourceLabel.setText(R.string.label_message); mSourceLabel.setText(R.string.label_message);
if (mReturnResult) {
mEncryptToClipboardEnabled = false;
} else {
mEncryptToClipboardEnabled = true;
}
if (mMode.getCurrentView().getId() == R.id.modeSymmetric) { if (mMode.getCurrentView().getId() == R.id.modeSymmetric) {
if (mReturnResult) { if (mReturnResult) {
mEncryptString = getString(R.string.btn_encrypt); setActionbarButtons(true, R.string.btn_encrypt, false, 0);
} else { } else {
mEncryptString = getString(R.string.btn_encryptAndEmail); setActionbarButtons(true, R.string.btn_encryptAndEmail, true,
R.string.btn_encryptToClipboard);
} }
mEncryptEnabled = true;
mEncryptToClipboardString = getString(R.string.btn_encryptToClipboard);
mEncryptToClipboardEnabled = true;
} else { } else {
if (mEncryptionKeyIds == null || mEncryptionKeyIds.length == 0) { if (mEncryptionKeyIds == null || mEncryptionKeyIds.length == 0) {
if (getSecretKeyId() == 0) { if (getSecretKeyId() == 0) {
if (mReturnResult) { setActionbarButtons(false, 0, false, 0);
mEncryptString = getString(R.string.btn_encrypt);
} else {
mEncryptString = getString(R.string.btn_encryptAndEmail);
}
mEncryptEnabled = false;
mEncryptToClipboardString = getString(R.string.btn_encryptToClipboard);
mEncryptToClipboardEnabled = false;
} else { } else {
if (mReturnResult) { if (mReturnResult) {
mEncryptString = getString(R.string.btn_sign); setActionbarButtons(true, R.string.btn_sign, false, 0);
} else { } else {
mEncryptString = getString(R.string.btn_signAndEmail); setActionbarButtons(true, R.string.btn_signAndEmail, true,
R.string.btn_signToClipboard);
} }
mEncryptEnabled = true;
mEncryptToClipboardString = getString(R.string.btn_signToClipboard);
mEncryptToClipboardEnabled = true;
} }
} else { } else {
if (mReturnResult) { if (mReturnResult) {
mEncryptString = getString(R.string.btn_encrypt); setActionbarButtons(true, R.string.btn_encrypt, false, 0);
} else { } else {
mEncryptString = getString(R.string.btn_encryptAndEmail); setActionbarButtons(true, R.string.btn_encryptAndEmail, true,
R.string.btn_encryptToClipboard);
} }
mEncryptEnabled = true;
mEncryptToClipboardString = getString(R.string.btn_encryptToClipboard);
mEncryptToClipboardEnabled = true;
} }
} }
break; break;
@ -556,8 +565,6 @@ public class EncryptActivity extends SherlockFragmentActivity {
} }
} }
// build new action bar
invalidateOptionsMenu();
} }
private void updateMode() { private void updateMode() {
@ -576,7 +583,7 @@ public class EncryptActivity extends SherlockFragmentActivity {
break; break;
} }
} }
updateButtons(); updateActionBarButtons();
} }
private void encryptToClipboardClicked() { private void encryptToClipboardClicked() {
@ -738,43 +745,6 @@ public class EncryptActivity extends SherlockFragmentActivity {
// fill values for this action // fill values for this action
Bundle data = new Bundle(); Bundle data = new Bundle();
// fillDataSource(signOnly && !mReturnResult);
// fillDataDestination();
// if (mContentUri != null) {
// mDataSource.setUri(mContentUri);
// } else if (mEncryptTarget == Id.target.file) {
// mDataSource.setUri(mInputFilename);
// } else {
// if (mData != null) {
// mDataSource.setData(mData);
// } else {
// String message = mMessage.getText().toString();
// if (fixContent) {
// // fix the message a bit, trailing spaces and newlines break stuff,
// // because GMail sends as HTML and such things fuck up the
// // signature,
// // TODO: things like "<" and ">" also fuck up the signature
// message = message.replaceAll(" +\n", "\n");
// message = message.replaceAll("\n\n+", "\n\n");
// message = message.replaceFirst("^\n+", "");
// // make sure there'll be exactly one newline at the end
// message = message.replaceFirst("\n*$", "\n");
// }
// mDataSource.setText(message);
// }
// }
// mDataDestination = new DataDestination();
// if (mContentUri != null) {
// mDataDestination.setMode(Id.mode.stream);
// } else if (mEncryptTarget == Id.target.file) {
// mDataDestination.setFilename(mOutputFilename);
// mDataDestination.setMode(Id.mode.file);
// } else {
// mDataDestination.setMode(Id.mode.byte_array);
// }
// choose default settings, action and data bundle by target // choose default settings, action and data bundle by target
if (mContentUri != null) { if (mContentUri != null) {
// mDataSource.setUri(mContentUri); // mDataSource.setUri(mContentUri);
@ -804,7 +774,7 @@ public class EncryptActivity extends SherlockFragmentActivity {
} else { } else {
String message = mMessage.getText().toString(); String message = mMessage.getText().toString();
if (signOnly && !mReturnResult) { if (signOnly && !mReturnResult) {
fixContent(message); fixBadCharactersForGmail(message);
} }
// mDataSource.setText(message); // mDataSource.setText(message);
data.putByteArray(ApgService.BYTES, message.getBytes()); data.putByteArray(ApgService.BYTES, message.getBytes());
@ -905,7 +875,13 @@ public class EncryptActivity extends SherlockFragmentActivity {
startService(intent); startService(intent);
} }
private String fixContent(String message) { /**
* Fixes bad message characters for gmail
*
* @param message
* @return
*/
private String fixBadCharactersForGmail(String message) {
// fix the message a bit, trailing spaces and newlines break stuff, // fix the message a bit, trailing spaces and newlines break stuff,
// because GMail sends as HTML and such things fuck up the // because GMail sends as HTML and such things fuck up the
// signature, // signature,
@ -953,7 +929,7 @@ public class EncryptActivity extends SherlockFragmentActivity {
mSign.setChecked(true); mSign.setChecked(true);
} }
updateButtons(); updateActionBarButtons();
} }
private void selectPublicKeys() { private void selectPublicKeys() {