aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThialfihar <thialfihar@gmail.com>2010-05-04 15:56:55 +0000
committerThialfihar <thialfihar@gmail.com>2010-05-04 15:56:55 +0000
commit3008f2c51f00e4e948cb330ad6f74b1b4e734620 (patch)
treeac8658754cecb575d42d29600af2863631322160 /src
parentf34fcaabf340738468be989a67ec88ab24aaa81e (diff)
downloadopen-keychain-3008f2c51f00e4e948cb330ad6f74b1b4e734620.tar.gz
open-keychain-3008f2c51f00e4e948cb330ad6f74b1b4e734620.tar.bz2
open-keychain-3008f2c51f00e4e948cb330ad6f74b1b4e734620.zip
added an option to delete files after encryption or decryption, also no longer delete the output file if either fails
Diffstat (limited to 'src')
-rw-r--r--src/org/thialfihar/android/apg/BaseActivity.java44
-rw-r--r--src/org/thialfihar/android/apg/DecryptFileActivity.java14
-rw-r--r--src/org/thialfihar/android/apg/EncryptFileActivity.java16
-rw-r--r--src/org/thialfihar/android/apg/Id.java1
-rw-r--r--src/org/thialfihar/android/apg/MainActivity.java1
5 files changed, 73 insertions, 3 deletions
diff --git a/src/org/thialfihar/android/apg/BaseActivity.java b/src/org/thialfihar/android/apg/BaseActivity.java
index 01415734b..15a9b7156 100644
--- a/src/org/thialfihar/android/apg/BaseActivity.java
+++ b/src/org/thialfihar/android/apg/BaseActivity.java
@@ -16,6 +16,8 @@
package org.thialfihar.android.apg;
+import java.io.File;
+
import org.bouncycastle2.bcpg.HashAlgorithmTags;
import org.bouncycastle2.openpgp.PGPEncryptedData;
@@ -29,6 +31,7 @@ import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
+import android.widget.Toast;
public class BaseActivity extends Activity
implements Runnable, ProgressDialogUpdater,
@@ -38,6 +41,7 @@ public class BaseActivity extends Activity
private Thread mRunningThread = null;
private long mSecretKeyId = 0;
+ private String mDeleteFile = null;
protected static SharedPreferences mPreferences = null;
private Handler mHandler = new Handler() {
@@ -137,6 +141,38 @@ public class BaseActivity extends Activity
return alert.create();
}
+ case Id.dialog.delete_file: {
+ AlertDialog.Builder alert = new AlertDialog.Builder(this);
+
+ alert.setIcon(android.R.drawable.ic_dialog_alert);
+ alert.setTitle("Warning");
+ alert.setMessage("Are you sure you want to delete\n" + getDeleteFile() + "?");
+
+ alert.setPositiveButton(android.R.string.ok,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ removeDialog(Id.dialog.delete_file);
+ File file = new File(getDeleteFile());
+ String msg = "";
+ if (file.delete()) {
+ msg = "Successfully deleted.";
+ } else {
+ msg = "Error: deleting '" + file + "' failed";
+ }
+ Toast.makeText(BaseActivity.this,
+ msg, Toast.LENGTH_SHORT).show();
+ }
+ });
+ alert.setNegativeButton(android.R.string.cancel,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ removeDialog(Id.dialog.delete_file);
+ }
+ });
+ alert.setCancelable(true);
+
+ return alert.create();
+ }
default: {
break;
@@ -295,4 +331,12 @@ public class BaseActivity extends Activity
editor.putBoolean(Constants.pref.has_seen_change_log, value);
editor.commit();
}
+
+ protected void setDeleteFile(String deleteFile) {
+ mDeleteFile = deleteFile;
+ }
+
+ protected String getDeleteFile() {
+ return mDeleteFile;
+ }
}
diff --git a/src/org/thialfihar/android/apg/DecryptFileActivity.java b/src/org/thialfihar/android/apg/DecryptFileActivity.java
index e8c8397eb..a8a33d1e2 100644
--- a/src/org/thialfihar/android/apg/DecryptFileActivity.java
+++ b/src/org/thialfihar/android/apg/DecryptFileActivity.java
@@ -40,6 +40,7 @@ import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
+import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.ImageView;
@@ -49,6 +50,7 @@ import android.widget.Toast;
public class DecryptFileActivity extends BaseActivity {
private EditText mFilename = null;
+ private CheckBox mDeleteAfter = null;
private ImageButton mBrowse = null;
private Button mDecryptButton = null;
private LinearLayout mSignatureLayout = null;
@@ -75,6 +77,8 @@ public class DecryptFileActivity extends BaseActivity {
}
});
+ mDeleteAfter = (CheckBox) findViewById(R.id.delete_after_decryption);
+
mDecryptButton = (Button) findViewById(R.id.btn_decrypt);
mDecryptButton.setOnClickListener(new OnClickListener() {
@Override
@@ -127,6 +131,12 @@ public class DecryptFileActivity extends BaseActivity {
return;
}
+ File file = new File(mInputFilename);
+ if (!file.exists() || !file.isFile()) {
+ Toast.makeText(this, "Error: file not found", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
try {
InputStream in = new FileInputStream(mInputFilename);
try {
@@ -303,6 +313,10 @@ public class DecryptFileActivity extends BaseActivity {
Toast.makeText(DecryptFileActivity.this,
"Successfully decrypted.",
Toast.LENGTH_SHORT).show();
+ if (mDeleteAfter.isChecked()) {
+ setDeleteFile(mInputFilename);
+ showDialog(Id.dialog.delete_file);
+ }
}
mSignatureLayout.setVisibility(View.INVISIBLE);
diff --git a/src/org/thialfihar/android/apg/EncryptFileActivity.java b/src/org/thialfihar/android/apg/EncryptFileActivity.java
index 14b342d7e..dee9a3e39 100644
--- a/src/org/thialfihar/android/apg/EncryptFileActivity.java
+++ b/src/org/thialfihar/android/apg/EncryptFileActivity.java
@@ -58,6 +58,7 @@ import android.widget.RadioGroup.OnCheckedChangeListener;
public class EncryptFileActivity extends BaseActivity {
private EditText mFilename = null;
+ private CheckBox mDeleteAfter = null;
private ImageButton mBrowse = null;
private CheckBox mSign = null;
private TextView mMainUserId = null;
@@ -110,6 +111,8 @@ public class EncryptFileActivity extends BaseActivity {
}
});
+ mDeleteAfter = (CheckBox) findViewById(R.id.delete_after_encryption);
+
mEncryptButton = (Button) findViewById(R.id.btn_encrypt);
mSign = (CheckBox) findViewById(R.id.sign);
mMainUserId = (TextView) findViewById(R.id.main_user_id);
@@ -278,6 +281,12 @@ public class EncryptFileActivity extends BaseActivity {
return;
}
+ File file = new File(mInputFilename);
+ if (!file.exists() || !file.isFile()) {
+ Toast.makeText(this, "Error: file not found", Toast.LENGTH_SHORT).show();
+ return;
+ }
+
// symmetric encryption
if (mEncryptionMode.getCheckedRadioButtonId() == R.id.use_symmetric) {
boolean gotPassPhrase = false;
@@ -385,9 +394,6 @@ public class EncryptFileActivity extends BaseActivity {
if (error != null) {
data.putString("error", error);
- // delete the file if an error occurred
- File file = new File(mOutputFilename);
- file.delete();
}
msg.setData(data);
@@ -505,6 +511,10 @@ public class EncryptFileActivity extends BaseActivity {
Toast.makeText(EncryptFileActivity.this,
"Successfully encrypted.",
Toast.LENGTH_SHORT).show();
+ if (mDeleteAfter.isChecked()) {
+ setDeleteFile(mInputFilename);
+ showDialog(Id.dialog.delete_file);
+ }
}
}
}
diff --git a/src/org/thialfihar/android/apg/Id.java b/src/org/thialfihar/android/apg/Id.java
index 08fd4b805..7b0957050 100644
--- a/src/org/thialfihar/android/apg/Id.java
+++ b/src/org/thialfihar/android/apg/Id.java
@@ -70,6 +70,7 @@ public final class Id {
public static final int about = 0x2107000f;
public static final int change_log = 0x21070010;
public static final int output_filename = 0x21070011;
+ public static final int delete_file = 0x21070012;
}
public static final class task {
diff --git a/src/org/thialfihar/android/apg/MainActivity.java b/src/org/thialfihar/android/apg/MainActivity.java
index 31035a5d9..3e15b45c9 100644
--- a/src/org/thialfihar/android/apg/MainActivity.java
+++ b/src/org/thialfihar/android/apg/MainActivity.java
@@ -221,6 +221,7 @@ public class MainActivity extends BaseActivity {
SpannableString info =
new SpannableString("Read the warnings!\n\n" +
"Changes:\n" +
+ "* option to delete file after encryption/decryption\n" +
"* fixed several crashes\n" +
"* can encrypt large files\n" +
"* better progress bar calculation\n" +