diff --git a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java index b744c4a0..fa46fb3c 100644 --- a/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java +++ b/app/src/main/java/com/zeapo/pwdstore/crypto/PgpHandler.java @@ -56,6 +56,7 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne SharedPreferences settings; private Activity activity; ClipboardManager clipboard; + AsyncTask delayShowTask; private boolean registered; @@ -137,10 +138,46 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne return true; case R.id.copy_password: copyToClipBoard(); + break; + case R.id.edit_password: + editPassword(); + if (delayShowTask != null) { + delayShowTask.cancel(true); + delayShowTask = null; + } } return super.onOptionsItemSelected(item); } + public void editPassword() { + + if (findViewById(R.id.crypto_container).getVisibility() != View.VISIBLE) + return; + + CharSequence category = ((TextView) findViewById(R.id.crypto_password_category)).getText(); + CharSequence file = ((TextView) findViewById(R.id.crypto_password_file)).getText(); + CharSequence password = ((TextView) findViewById(R.id.crypto_password_show)).getText(); + CharSequence extra = ((TextView) findViewById(R.id.crypto_extra_show)).getText(); + + setContentView(R.layout.encrypt_layout); + Typeface monoTypeface = Typeface.createFromAsset(getAssets(), "fonts/sourcecodepro.ttf"); + ((EditText) findViewById(R.id.crypto_password_edit)).setTypeface(monoTypeface); + ((EditText) findViewById(R.id.crypto_extra_edit)).setTypeface(monoTypeface); + + ((TextView) findViewById(R.id.crypto_password_category)).setText(category); + ((TextView) findViewById(R.id.crypto_password_file_edit)).setText(file); + ((EditText) findViewById(R.id.crypto_password_edit)).setText(password); + ((EditText) findViewById(R.id.crypto_extra_edit)).setText(extra); + + // the original intent was to decrypt so FILE_PATH will have the file, not enclosing dir + // PgpCallback expects the dir when encrypting + String filePath = getIntent().getExtras().getString("FILE_PATH"); + String directoryPath = filePath.substring(0, filePath.lastIndexOf(File.separator)); + Intent intent = new Intent(this, PgpHandler.class); + intent.putExtra("FILE_PATH", directoryPath); + setIntent(intent); + } + public void copyToClipBoard() { if (findViewById(R.id.crypto_password_show) == null) @@ -248,6 +285,9 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne if (showPassword) { publishProgress(current); } + if (isCancelled()) { + return false; + } } return true; } @@ -361,7 +401,7 @@ public class PgpHandler extends AppCompatActivity implements OpenPgpServiceConne copyToClipBoard(); } - new DelayShow().execute(); + delayShowTask = new DelayShow().execute(); if (!showPassword) { activity.setResult(RESULT_CANCELED); activity.finish(); diff --git a/app/src/main/res/drawable-hdpi/ic_action_edit.png b/app/src/main/res/drawable-hdpi/ic_action_edit.png new file mode 100644 index 00000000..3ecfd46f Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_action_edit.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_action_edit.png b/app/src/main/res/drawable-mdpi/ic_action_edit.png new file mode 100644 index 00000000..efad93e5 Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_action_edit.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_action_edit.png b/app/src/main/res/drawable-xhdpi/ic_action_edit.png new file mode 100644 index 00000000..559aac98 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_action_edit.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_action_edit.png b/app/src/main/res/drawable-xxhdpi/ic_action_edit.png new file mode 100644 index 00000000..29046d95 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_action_edit.png differ diff --git a/app/src/main/res/menu/pgp_handler.xml b/app/src/main/res/menu/pgp_handler.xml index 56298a33..233a0940 100644 --- a/app/src/main/res/menu/pgp_handler.xml +++ b/app/src/main/res/menu/pgp_handler.xml @@ -7,4 +7,9 @@ pwstore:showAsAction="ifRoom" android:id="@+id/copy_password" /> +