From ca210de78ece6d2a2e099ebf54162c8980ead65b Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Tue, 2 Jan 2018 21:50:07 +0100 Subject: [PATCH 1/2] Drop AddProfileActivity in favor of EditProfileActivity Also automatically update the TextDrawable on name changes in EditProfileActivity --- app/src/main/AndroidManifest.xml | 4 - .../me/impy/aegis/AddProfileActivity.java | 88 --------- .../me/impy/aegis/EditProfileActivity.java | 29 ++- .../main/java/me/impy/aegis/KeyProfile.java | 11 +- .../main/java/me/impy/aegis/MainActivity.java | 22 ++- .../java/me/impy/aegis/ScannerActivity.java | 1 + .../aegis/helpers/TextDrawableHelper.java | 20 ++ .../main/res/layout/activity_add_profile.xml | 182 ------------------ .../main/res/layout/activity_edit_profile.xml | 4 +- 9 files changed, 63 insertions(+), 298 deletions(-) delete mode 100644 app/src/main/java/me/impy/aegis/AddProfileActivity.java create mode 100644 app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java delete mode 100644 app/src/main/res/layout/activity_add_profile.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7434242e..64703425 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,10 +32,6 @@ android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation|screenSize"> - - { bottomDialog.dismiss(); - Intent intent = new Intent(this, EditProfileActivity.class); - intent.putExtra("KeyProfile", profile); - startActivityForResult(intent, CODE_EDIT_KEYINFO); + startEditProfileActivity(CODE_EDIT_KEYINFO, profile, false); }); return bottomDialog; diff --git a/app/src/main/java/me/impy/aegis/ScannerActivity.java b/app/src/main/java/me/impy/aegis/ScannerActivity.java index 20367fa2..a7c0bbc6 100644 --- a/app/src/main/java/me/impy/aegis/ScannerActivity.java +++ b/app/src/main/java/me/impy/aegis/ScannerActivity.java @@ -58,6 +58,7 @@ public class ScannerActivity extends AegisActivity implements ZXingScannerView.R try { KeyInfo info = KeyInfo.fromURL(rawResult.getText()); KeyProfile profile = new KeyProfile(new DatabaseEntry(info)); + profile.getEntry().setName(info.getAccountName()); Intent resultIntent = new Intent(); resultIntent.putExtra("KeyProfile", profile); diff --git a/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java b/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java new file mode 100644 index 00000000..7f4afeec --- /dev/null +++ b/app/src/main/java/me/impy/aegis/helpers/TextDrawableHelper.java @@ -0,0 +1,20 @@ +package me.impy.aegis.helpers; + +import com.amulyakhare.textdrawable.TextDrawable; +import com.amulyakhare.textdrawable.util.ColorGenerator; + +public class TextDrawableHelper { + private TextDrawableHelper() { + + } + + public static TextDrawable generate(String s) { + if (s == null || s.length() <= 1) { + return null; + } + + ColorGenerator generator = ColorGenerator.MATERIAL; + int color = generator.getColor(s); + return TextDrawable.builder().buildRound(s.substring(0, 1).toUpperCase(), color); + } +} diff --git a/app/src/main/res/layout/activity_add_profile.xml b/app/src/main/res/layout/activity_add_profile.xml deleted file mode 100644 index bb4e9fee..00000000 --- a/app/src/main/res/layout/activity_add_profile.xml +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/activity_edit_profile.xml b/app/src/main/res/layout/activity_edit_profile.xml index c92d6b44..d30c1447 100644 --- a/app/src/main/res/layout/activity_edit_profile.xml +++ b/app/src/main/res/layout/activity_edit_profile.xml @@ -124,7 +124,7 @@ android:layout_height="wrap_content" android:orientation="horizontal"> @@ -147,7 +147,7 @@ android:textColor="#808080"/> From 4f98d8764cf737df4965d50144f29ae0c43fed02 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Tue, 2 Jan 2018 22:11:09 +0100 Subject: [PATCH 2/2] Abstract some parts of the AsyncTasks away into ProgressDialogTask --- .../java/me/impy/aegis/DerivationTask.java | 18 ++-------- .../me/impy/aegis/ProgressDialogTask.java | 34 +++++++++++++++++++ .../me/impy/aegis/SlotCollectionTask.java | 18 ++-------- 3 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 app/src/main/java/me/impy/aegis/ProgressDialogTask.java diff --git a/app/src/main/java/me/impy/aegis/DerivationTask.java b/app/src/main/java/me/impy/aegis/DerivationTask.java index c567edd3..cc446920 100644 --- a/app/src/main/java/me/impy/aegis/DerivationTask.java +++ b/app/src/main/java/me/impy/aegis/DerivationTask.java @@ -1,8 +1,6 @@ package me.impy.aegis; -import android.app.ProgressDialog; import android.content.Context; -import android.os.AsyncTask; import android.os.Process; import javax.crypto.SecretKey; @@ -10,14 +8,12 @@ import javax.crypto.SecretKey; import me.impy.aegis.crypto.CryptoUtils; import me.impy.aegis.crypto.slots.PasswordSlot; -public class DerivationTask extends AsyncTask { +public class DerivationTask extends ProgressDialogTask { private Callback _cb; - private ProgressDialog _dialog; public DerivationTask(Context context, Callback cb) { + super(context, "Deriving key from password"); _cb = cb; - _dialog = new ProgressDialog(context); - _dialog.setCancelable(false); } @Override @@ -35,17 +31,9 @@ public class DerivationTask extends AsyncTask extends AsyncTask { + private ProgressDialog _dialog; + + public ProgressDialogTask(Context context, String message) { + _dialog = new ProgressDialog(context); + _dialog.setCancelable(false); + _dialog.setMessage(message); + } + + @CallSuper + @Override + protected void onPreExecute() { + _dialog.show(); + } + + @CallSuper + @Override + protected void onPostExecute(Result result) { + if (_dialog.isShowing()) { + _dialog.dismiss(); + } + } + + protected final ProgressDialog getDialog() { + return _dialog; + } +} diff --git a/app/src/main/java/me/impy/aegis/SlotCollectionTask.java b/app/src/main/java/me/impy/aegis/SlotCollectionTask.java index 05b3d04d..f323a80e 100644 --- a/app/src/main/java/me/impy/aegis/SlotCollectionTask.java +++ b/app/src/main/java/me/impy/aegis/SlotCollectionTask.java @@ -1,8 +1,6 @@ package me.impy.aegis; -import android.app.ProgressDialog; import android.content.Context; -import android.os.AsyncTask; import android.os.Process; import java.lang.reflect.UndeclaredThrowableException; @@ -18,16 +16,14 @@ import me.impy.aegis.crypto.slots.Slot; import me.impy.aegis.crypto.slots.SlotCollection; import me.impy.aegis.crypto.slots.SlotIntegrityException; -public class SlotCollectionTask extends AsyncTask { +public class SlotCollectionTask extends ProgressDialogTask { private Callback _cb; private Class _type; - private ProgressDialog _dialog; public SlotCollectionTask(Class type, Context context, Callback cb) { + super(context, "Decrypting database"); _cb = cb; _type = type; - _dialog = new ProgressDialog(context); - _dialog.setCancelable(false); } @Override @@ -70,17 +66,9 @@ public class SlotCollectionTask extends AsyncTask