major restructuring, moving dialog, message, menu, option menu, task, type IDs into Id in a similar structure as the generated R, also introducing a BaseActivity class that almost all activities derive from, which generates some common dialogs, handles the progress update, thread management, and thread communication
also adding first draft of encrypt file activity, not very functional yet
This commit is contained in:
@@ -27,18 +27,16 @@ import org.bouncycastle2.openpgp.PGPSecretKeyRing;
|
||||
import org.thialfihar.android.apg.ui.widget.SectionView;
|
||||
import org.thialfihar.android.apg.utils.IterableIterator;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Dialog;
|
||||
import android.app.ProgressDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Message;
|
||||
import android.text.InputType;
|
||||
import android.text.method.PasswordTransformationMethod;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
@@ -50,17 +48,7 @@ import android.widget.EditText;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.Toast;
|
||||
|
||||
public class EditKeyActivity extends Activity
|
||||
implements OnClickListener, ProgressDialogUpdater, Runnable {
|
||||
static final int OPTION_MENU_NEW_PASS_PHRASE = 1;
|
||||
|
||||
static final int DIALOG_NEW_PASS_PHRASE = 1;
|
||||
static final int DIALOG_PASS_PHRASES_DO_NOT_MATCH = 2;
|
||||
static final int DIALOG_NO_PASS_PHRASE = 3;
|
||||
static final int DIALOG_SAVING = 4;
|
||||
|
||||
static final int MESSAGE_PROGRESS_UPDATE = 1;
|
||||
static final int MESSAGE_DONE = 2;
|
||||
public class EditKeyActivity extends BaseActivity implements OnClickListener {
|
||||
|
||||
private PGPSecretKeyRing mKeyRing = null;
|
||||
|
||||
@@ -70,56 +58,8 @@ public class EditKeyActivity extends Activity
|
||||
private Button mSaveButton;
|
||||
private Button mDiscardButton;
|
||||
|
||||
private ProgressDialog mProgressDialog = null;
|
||||
private Thread mRunningThread = null;
|
||||
|
||||
private String mNewPassPhrase = null;
|
||||
|
||||
private Handler mHandler = new Handler() {
|
||||
@Override
|
||||
public void handleMessage(Message msg) {
|
||||
Bundle data = msg.getData();
|
||||
if (data != null) {
|
||||
int type = data.getInt("type");
|
||||
switch (type) {
|
||||
case MESSAGE_PROGRESS_UPDATE: {
|
||||
String message = data.getString("message");
|
||||
if (mProgressDialog != null) {
|
||||
if (message != null) {
|
||||
mProgressDialog.setMessage(message);
|
||||
}
|
||||
mProgressDialog.setMax(data.getInt("max"));
|
||||
mProgressDialog.setProgress(data.getInt("progress"));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case MESSAGE_DONE: {
|
||||
removeDialog(DIALOG_SAVING);
|
||||
mProgressDialog = null;
|
||||
|
||||
String error = data.getString("error");
|
||||
if (error != null) {
|
||||
Toast.makeText(EditKeyActivity.this,
|
||||
"Error: " + data.getString("error"),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(EditKeyActivity.this, R.string.key_saved,
|
||||
Toast.LENGTH_SHORT).show();
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@@ -176,13 +116,14 @@ public class EditKeyActivity extends Activity
|
||||
}
|
||||
|
||||
public boolean havePassPhrase() {
|
||||
Log.e("oink", "password is " + Apg.getPassPhrase());
|
||||
return (Apg.getPassPhrase() != null && !Apg.getPassPhrase().equals("")) ||
|
||||
(mNewPassPhrase != null && mNewPassPhrase.equals(""));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
menu.add(0, OPTION_MENU_NEW_PASS_PHRASE, 0,
|
||||
menu.add(0, Id.menu.option.new_pass_phrase, 0,
|
||||
(havePassPhrase() ? "Change Pass Phrase" : "Set Pass Phrase"))
|
||||
.setIcon(android.R.drawable.ic_menu_add);
|
||||
return true;
|
||||
@@ -191,8 +132,8 @@ public class EditKeyActivity extends Activity
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case OPTION_MENU_NEW_PASS_PHRASE: {
|
||||
showDialog(DIALOG_NEW_PASS_PHRASE);
|
||||
case Id.menu.option.new_pass_phrase: {
|
||||
showDialog(Id.dialog.new_pass_phrase);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -206,15 +147,7 @@ public class EditKeyActivity extends Activity
|
||||
@Override
|
||||
protected Dialog onCreateDialog(int id) {
|
||||
switch (id) {
|
||||
case DIALOG_SAVING: {
|
||||
mProgressDialog = new ProgressDialog(this);
|
||||
mProgressDialog.setMessage("saving...");
|
||||
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
|
||||
mProgressDialog.setCancelable(false);
|
||||
return mProgressDialog;
|
||||
}
|
||||
|
||||
case DIALOG_NEW_PASS_PHRASE: {
|
||||
case Id.dialog.new_pass_phrase: {
|
||||
AlertDialog.Builder alert = new AlertDialog.Builder(this);
|
||||
|
||||
if (havePassPhrase()) {
|
||||
@@ -252,17 +185,17 @@ public class EditKeyActivity extends Activity
|
||||
alert.setPositiveButton(android.R.string.ok,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
removeDialog(DIALOG_NEW_PASS_PHRASE);
|
||||
removeDialog(Id.dialog.new_pass_phrase);
|
||||
|
||||
String passPhrase1 = "" + input1.getText();
|
||||
String passPhrase2 = "" + input2.getText();
|
||||
if (!passPhrase1.equals(passPhrase2)) {
|
||||
showDialog(DIALOG_PASS_PHRASES_DO_NOT_MATCH);
|
||||
showDialog(Id.dialog.pass_phrases_do_not_match);
|
||||
return;
|
||||
}
|
||||
|
||||
if (passPhrase1.equals("")) {
|
||||
showDialog(DIALOG_NO_PASS_PHRASE);
|
||||
showDialog(Id.dialog.no_pass_phrase);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -273,49 +206,13 @@ public class EditKeyActivity extends Activity
|
||||
alert.setNegativeButton(android.R.string.cancel,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
removeDialog(DIALOG_NEW_PASS_PHRASE);
|
||||
removeDialog(Id.dialog.new_pass_phrase);
|
||||
}
|
||||
});
|
||||
|
||||
return alert.create();
|
||||
}
|
||||
|
||||
case DIALOG_PASS_PHRASES_DO_NOT_MATCH: {
|
||||
AlertDialog.Builder alert = new AlertDialog.Builder(this);
|
||||
|
||||
alert.setIcon(android.R.drawable.ic_dialog_alert);
|
||||
alert.setTitle("Error");
|
||||
alert.setMessage("The pass phrases didn't match.");
|
||||
|
||||
alert.setPositiveButton(android.R.string.ok,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
removeDialog(DIALOG_PASS_PHRASES_DO_NOT_MATCH);
|
||||
}
|
||||
});
|
||||
alert.setCancelable(false);
|
||||
|
||||
return alert.create();
|
||||
}
|
||||
|
||||
case DIALOG_NO_PASS_PHRASE: {
|
||||
AlertDialog.Builder alert = new AlertDialog.Builder(this);
|
||||
|
||||
alert.setIcon(android.R.drawable.ic_dialog_alert);
|
||||
alert.setTitle("Error");
|
||||
alert.setMessage("Empty pass phrases are not supported.");
|
||||
|
||||
alert.setPositiveButton(android.R.string.ok,
|
||||
new DialogInterface.OnClickListener() {
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
removeDialog(DIALOG_NO_PASS_PHRASE);
|
||||
}
|
||||
});
|
||||
alert.setCancelable(false);
|
||||
|
||||
return alert.create();
|
||||
}
|
||||
|
||||
default: {
|
||||
break;
|
||||
}
|
||||
@@ -334,16 +231,15 @@ public class EditKeyActivity extends Activity
|
||||
}
|
||||
|
||||
private void saveClicked() {
|
||||
if ((Apg.getPassPhrase() == null || Apg.getPassPhrase().equals("")) &&
|
||||
(mNewPassPhrase == null || mNewPassPhrase.equals(""))) {
|
||||
if (!havePassPhrase()) {
|
||||
Toast.makeText(this, R.string.set_a_pass_phrase, Toast.LENGTH_SHORT).show();
|
||||
return;
|
||||
}
|
||||
showDialog(DIALOG_SAVING);
|
||||
mRunningThread = new Thread(this);
|
||||
mRunningThread.start();
|
||||
showDialog(Id.dialog.saving);
|
||||
startThread();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
String error = null;
|
||||
Bundle data = new Bundle();
|
||||
@@ -368,34 +264,32 @@ public class EditKeyActivity extends Activity
|
||||
error = e.getMessage();
|
||||
}
|
||||
|
||||
data.putInt("type", MESSAGE_DONE);
|
||||
data.putInt("type", Id.message.done);
|
||||
|
||||
if (error != null) {
|
||||
data.putString("error", error);
|
||||
}
|
||||
|
||||
msg.setData(data);
|
||||
mHandler.sendMessage(msg);
|
||||
sendMessage(msg);
|
||||
}
|
||||
|
||||
public void setProgress(int progress, int max) {
|
||||
Message msg = new Message();
|
||||
Bundle data = new Bundle();
|
||||
data.putInt("type", MESSAGE_PROGRESS_UPDATE);
|
||||
data.putInt("progress", progress);
|
||||
data.putInt("max", max);
|
||||
msg.setData(data);
|
||||
mHandler.sendMessage(msg);
|
||||
}
|
||||
@Override
|
||||
public void doneCallback(Message msg) {
|
||||
super.doneCallback(msg);
|
||||
|
||||
public void setProgress(String message, int progress, int max) {
|
||||
Message msg = new Message();
|
||||
Bundle data = new Bundle();
|
||||
data.putInt("type", MESSAGE_PROGRESS_UPDATE);
|
||||
data.putString("message", message);
|
||||
data.putInt("progress", progress);
|
||||
data.putInt("max", max);
|
||||
msg.setData(data);
|
||||
mHandler.sendMessage(msg);
|
||||
Bundle data = msg.getData();
|
||||
removeDialog(Id.dialog.saving);
|
||||
|
||||
String error = data.getString("error");
|
||||
if (error != null) {
|
||||
Toast.makeText(EditKeyActivity.this,
|
||||
"Error: " + data.getString("error"),
|
||||
Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
Toast.makeText(EditKeyActivity.this, R.string.key_saved, Toast.LENGTH_SHORT).show();
|
||||
setResult(RESULT_OK);
|
||||
finish();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user