diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 771e4699..a23781b5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -15,7 +15,7 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
-
+
diff --git a/app/src/main/java/me/impy/aegis/AegisApplication.java b/app/src/main/java/me/impy/aegis/AegisApplication.java
index 39f89d68..86f92ab7 100644
--- a/app/src/main/java/me/impy/aegis/AegisApplication.java
+++ b/app/src/main/java/me/impy/aegis/AegisApplication.java
@@ -13,6 +13,7 @@ import android.support.annotation.RequiresApi;
import java.util.Collections;
import me.impy.aegis.db.DatabaseManager;
+import me.impy.aegis.ui.MainActivity;
public class AegisApplication extends Application {
private boolean _running = false;
diff --git a/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java b/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java
deleted file mode 100644
index e9556799..00000000
--- a/app/src/main/java/me/impy/aegis/EditProfileBottomSheetdialog.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package me.impy.aegis;
-
-import android.os.Bundle;
-import android.support.annotation.Nullable;
-import android.support.design.widget.BottomSheetDialogFragment;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-
-public class EditProfileBottomSheetdialog extends BottomSheetDialogFragment {
- LinearLayout _copyLayout;
-
- public static EditProfileBottomSheetdialog getInstance() {
- return new EditProfileBottomSheetdialog();
- }
-
- public LinearLayout GetCopyLayout()
- {
- return _copyLayout;
- }
-
- @Nullable
- @Override
- public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
- return inflater.inflate(R.layout.bottom_sheet_edit_profile, container, false);
- }
-}
diff --git a/app/src/main/java/me/impy/aegis/db/DatabaseFile.java b/app/src/main/java/me/impy/aegis/db/DatabaseFile.java
index 98c5df1f..18cf1c9e 100644
--- a/app/src/main/java/me/impy/aegis/db/DatabaseFile.java
+++ b/app/src/main/java/me/impy/aegis/db/DatabaseFile.java
@@ -7,7 +7,7 @@ import java.lang.reflect.UndeclaredThrowableException;
import java.util.Arrays;
import me.impy.aegis.crypto.CryptParameters;
-import me.impy.aegis.crypto.slots.SlotCollection;
+import me.impy.aegis.db.slots.SlotCollection;
import me.impy.aegis.crypto.CryptoUtils;
import me.impy.aegis.util.LittleByteBuffer;
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java b/app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java
similarity index 78%
rename from app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java
rename to app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java
index 6f47a666..6db19c19 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/FingerprintSlot.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/FingerprintSlot.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
public class FingerprintSlot extends RawSlot {
@Override
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java b/app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java
similarity index 98%
rename from app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java
rename to app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java
index 5584ec8c..ed029fb9 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/PasswordSlot.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/PasswordSlot.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
import java.security.NoSuchAlgorithmException;
import java.security.spec.InvalidKeySpecException;
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java b/app/src/main/java/me/impy/aegis/db/slots/RawSlot.java
similarity index 96%
rename from app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java
rename to app/src/main/java/me/impy/aegis/db/slots/RawSlot.java
index 03b116da..ed2db6cc 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/RawSlot.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/RawSlot.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
import me.impy.aegis.crypto.CryptoUtils;
import me.impy.aegis.util.LittleByteBuffer;
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/Slot.java b/app/src/main/java/me/impy/aegis/db/slots/Slot.java
similarity index 97%
rename from app/src/main/java/me/impy/aegis/crypto/slots/Slot.java
rename to app/src/main/java/me/impy/aegis/db/slots/Slot.java
index 7c1247b2..92d0aca2 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/Slot.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/Slot.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
import android.annotation.SuppressLint;
@@ -15,7 +15,7 @@ import javax.crypto.spec.SecretKeySpec;
import me.impy.aegis.crypto.CryptoUtils;
import me.impy.aegis.crypto.MasterKey;
-import me.impy.aegis.util.Hex;
+import me.impy.aegis.encoding.Hex;
public abstract class Slot implements Serializable {
public final static byte TYPE_RAW = 0x00;
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java b/app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java
similarity index 99%
rename from app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java
rename to app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java
index 9ff26ed9..c58f0ebc 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/SlotCollection.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/SlotCollection.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
import java.io.Serializable;
import java.util.ArrayList;
diff --git a/app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java b/app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java
similarity index 62%
rename from app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java
rename to app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java
index d3090359..79061a5e 100644
--- a/app/src/main/java/me/impy/aegis/crypto/slots/SlotIntegrityException.java
+++ b/app/src/main/java/me/impy/aegis/db/slots/SlotIntegrityException.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.crypto.slots;
+package me.impy.aegis.db.slots;
public class SlotIntegrityException extends Exception {
diff --git a/app/src/main/java/me/impy/aegis/util/Hex.java b/app/src/main/java/me/impy/aegis/encoding/Hex.java
similarity index 97%
rename from app/src/main/java/me/impy/aegis/util/Hex.java
rename to app/src/main/java/me/impy/aegis/encoding/Hex.java
index 34793984..86d12d88 100644
--- a/app/src/main/java/me/impy/aegis/util/Hex.java
+++ b/app/src/main/java/me/impy/aegis/encoding/Hex.java
@@ -1,4 +1,4 @@
-package me.impy.aegis.util;
+package me.impy.aegis.encoding;
// The hexadecimal utility functions in this file were taken and modified from: http://www.docjar.com/html/api/com/sun/xml/internal/bind/DatatypeConverterImpl.java.html
// It is licensed under GPLv2 with a classpath exception.
diff --git a/app/src/main/java/me/impy/aegis/helpers/AuthHelper.java b/app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java
similarity index 85%
rename from app/src/main/java/me/impy/aegis/helpers/AuthHelper.java
rename to app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java
index be804ebe..dd5baced 100644
--- a/app/src/main/java/me/impy/aegis/helpers/AuthHelper.java
+++ b/app/src/main/java/me/impy/aegis/helpers/EditTextHelper.java
@@ -7,8 +7,8 @@ import java.util.Arrays;
import me.impy.aegis.crypto.CryptoUtils;
-public class AuthHelper {
- private AuthHelper() {
+public class EditTextHelper {
+ private EditTextHelper() {
}
public static void clearEditText(EditText text) {
@@ -22,7 +22,7 @@ public class AuthHelper {
return chars;
}
- public static boolean arePasswordsEqual(EditText text1, EditText text2) {
+ public static boolean areEditTextsEqual(EditText text1, EditText text2) {
char[] password = getEditTextChars(text1);
char[] passwordConfirm = getEditTextChars(text2);
return password.length != 0 && Arrays.equals(password, passwordConfirm);
diff --git a/app/src/main/java/me/impy/aegis/AegisActivity.java b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java
similarity index 90%
rename from app/src/main/java/me/impy/aegis/AegisActivity.java
rename to app/src/main/java/me/impy/aegis/ui/AegisActivity.java
index f7b96355..709bd1da 100644
--- a/app/src/main/java/me/impy/aegis/AegisActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/AegisActivity.java
@@ -1,8 +1,10 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
+import me.impy.aegis.AegisApplication;
+
public abstract class AegisActivity extends AppCompatActivity {
private AegisApplication _app;
diff --git a/app/src/main/java/me/impy/aegis/AuthActivity.java b/app/src/main/java/me/impy/aegis/ui/AuthActivity.java
similarity index 93%
rename from app/src/main/java/me/impy/aegis/AuthActivity.java
rename to app/src/main/java/me/impy/aegis/ui/AuthActivity.java
index 91210bde..9bf4b21c 100644
--- a/app/src/main/java/me/impy/aegis/AuthActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/AuthActivity.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
@@ -15,20 +15,21 @@ import android.widget.TextView;
import com.mattprecious.swirl.SwirlView;
import java.lang.reflect.UndeclaredThrowableException;
-import java.security.InvalidKeyException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyStoreHandle;
import me.impy.aegis.crypto.MasterKey;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.PasswordSlot;
-import me.impy.aegis.crypto.slots.Slot;
-import me.impy.aegis.crypto.slots.SlotCollection;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.PasswordSlot;
+import me.impy.aegis.db.slots.Slot;
+import me.impy.aegis.db.slots.SlotCollection;
import me.impy.aegis.helpers.FingerprintHelper;
import me.impy.aegis.helpers.FingerprintUiHelper;
-import me.impy.aegis.helpers.AuthHelper;
+import me.impy.aegis.helpers.EditTextHelper;
+import me.impy.aegis.ui.tasks.SlotCollectionTask;
public class AuthActivity extends AegisActivity implements FingerprintUiHelper.Callback, SlotCollectionTask.Callback {
private EditText _textPassword;
@@ -93,7 +94,7 @@ public class AuthActivity extends AegisActivity implements FingerprintUiHelper.C
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- char[] password = AuthHelper.getEditTextChars(_textPassword);
+ char[] password = EditTextHelper.getEditTextChars(_textPassword);
trySlots(PasswordSlot.class, password);
}
});
diff --git a/app/src/main/java/me/impy/aegis/EditProfileActivity.java b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
similarity index 97%
rename from app/src/main/java/me/impy/aegis/EditProfileActivity.java
rename to app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
index f96538ca..e556317e 100644
--- a/app/src/main/java/me/impy/aegis/EditProfileActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/EditProfileActivity.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.content.Intent;
import android.os.Bundle;
@@ -18,14 +18,15 @@ import android.widget.Spinner;
import com.amulyakhare.textdrawable.TextDrawable;
-import me.impy.aegis.crypto.CryptoUtils;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyInfo;
import me.impy.aegis.crypto.KeyInfoException;
import me.impy.aegis.db.DatabaseEntry;
import me.impy.aegis.encoding.Base32;
-import me.impy.aegis.helpers.AuthHelper;
+import me.impy.aegis.helpers.EditTextHelper;
import me.impy.aegis.helpers.SpinnerHelper;
import me.impy.aegis.helpers.TextDrawableHelper;
+import me.impy.aegis.ui.views.KeyProfile;
public class EditProfileActivity extends AegisActivity {
private boolean _isNew = false;
@@ -217,7 +218,7 @@ public class EditProfileActivity extends AegisActivity {
KeyInfo info = entry.getInfo();
try {
- char[] secret = AuthHelper.getEditTextChars(_textSecret);
+ char[] secret = EditTextHelper.getEditTextChars(_textSecret);
info.setSecret(secret);
info.setIssuer(_textIssuer.getText().toString());
info.setPeriod(period);
diff --git a/app/src/main/java/me/impy/aegis/IntroActivity.java b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java
similarity index 94%
rename from app/src/main/java/me/impy/aegis/IntroActivity.java
rename to app/src/main/java/me/impy/aegis/ui/IntroActivity.java
index 115fc5a9..5710d6e9 100644
--- a/app/src/main/java/me/impy/aegis/IntroActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/IntroActivity.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.Manifest;
import android.content.Intent;
@@ -12,15 +12,20 @@ import com.github.paolorotolo.appintro.model.SliderPage;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
+import me.impy.aegis.AegisApplication;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.CryptResult;
import me.impy.aegis.crypto.MasterKey;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.PasswordSlot;
-import me.impy.aegis.crypto.slots.Slot;
-import me.impy.aegis.crypto.slots.SlotCollection;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.PasswordSlot;
+import me.impy.aegis.db.slots.Slot;
+import me.impy.aegis.db.slots.SlotCollection;
import me.impy.aegis.db.Database;
import me.impy.aegis.db.DatabaseFile;
import me.impy.aegis.db.DatabaseManager;
+import me.impy.aegis.ui.slides.CustomAuthenticatedSlide;
+import me.impy.aegis.ui.slides.CustomAuthenticationSlide;
+import me.impy.aegis.ui.tasks.DerivationTask;
public class IntroActivity extends AppIntro implements DerivationTask.Callback {
public static final int RESULT_OK = 0;
diff --git a/app/src/main/java/me/impy/aegis/MainActivity.java b/app/src/main/java/me/impy/aegis/ui/MainActivity.java
similarity index 99%
rename from app/src/main/java/me/impy/aegis/MainActivity.java
rename to app/src/main/java/me/impy/aegis/ui/MainActivity.java
index 9ffac3f0..536f4978 100644
--- a/app/src/main/java/me/impy/aegis/MainActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/MainActivity.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.Manifest;
import android.content.ClipData;
@@ -25,12 +25,16 @@ import java.io.InputStream;
import java.lang.reflect.UndeclaredThrowableException;
import java.util.List;
+import me.impy.aegis.AegisApplication;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.MasterKey;
-import me.impy.aegis.crypto.slots.SlotCollection;
+import me.impy.aegis.db.slots.SlotCollection;
import me.impy.aegis.db.DatabaseEntry;
import me.impy.aegis.db.DatabaseManager;
import me.impy.aegis.helpers.PermissionHelper;
import me.impy.aegis.importers.DatabaseImporter;
+import me.impy.aegis.ui.views.KeyProfile;
+import me.impy.aegis.ui.views.KeyProfileView;
import me.impy.aegis.util.ByteInputStream;
public class MainActivity extends AegisActivity implements KeyProfileView.Listener {
diff --git a/app/src/main/java/me/impy/aegis/PreferencesActivity.java b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java
similarity index 98%
rename from app/src/main/java/me/impy/aegis/PreferencesActivity.java
rename to app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java
index a907aad9..f059e52d 100644
--- a/app/src/main/java/me/impy/aegis/PreferencesActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java
@@ -1,12 +1,13 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceFragment;
-import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;
+import me.impy.aegis.R;
+
public class PreferencesActivity extends AegisActivity {
public static final int ACTION_IMPORT = 0;
public static final int ACTION_EXPORT = 1;
diff --git a/app/src/main/java/me/impy/aegis/ScannerActivity.java b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
similarity index 96%
rename from app/src/main/java/me/impy/aegis/ScannerActivity.java
rename to app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
index a7c0bbc6..0e1128b3 100644
--- a/app/src/main/java/me/impy/aegis/ScannerActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/ScannerActivity.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.app.Activity;
import android.content.Context;
@@ -16,6 +16,7 @@ import me.dm7.barcodescanner.zxing.ZXingScannerView;
import me.impy.aegis.crypto.KeyInfo;
import me.impy.aegis.db.DatabaseEntry;
import me.impy.aegis.helpers.SquareFinderView;
+import me.impy.aegis.ui.views.KeyProfile;
public class ScannerActivity extends AegisActivity implements ZXingScannerView.ResultHandler {
private ZXingScannerView _scannerView;
diff --git a/app/src/main/java/me/impy/aegis/SlotManagerActivity.java b/app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java
similarity index 93%
rename from app/src/main/java/me/impy/aegis/SlotManagerActivity.java
rename to app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java
index 3793c8a7..888183fb 100644
--- a/app/src/main/java/me/impy/aegis/SlotManagerActivity.java
+++ b/app/src/main/java/me/impy/aegis/ui/SlotManagerActivity.java
@@ -1,7 +1,6 @@
-package me.impy.aegis;
+package me.impy.aegis.ui;
import android.content.Intent;
-import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
@@ -14,14 +13,19 @@ import android.widget.Toast;
import javax.crypto.Cipher;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyStoreHandle;
import me.impy.aegis.crypto.KeyStoreHandleException;
import me.impy.aegis.crypto.MasterKey;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.PasswordSlot;
-import me.impy.aegis.crypto.slots.Slot;
-import me.impy.aegis.crypto.slots.SlotCollection;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.PasswordSlot;
+import me.impy.aegis.db.slots.Slot;
+import me.impy.aegis.db.slots.SlotCollection;
import me.impy.aegis.helpers.FingerprintHelper;
+import me.impy.aegis.ui.dialogs.FingerprintDialogFragment;
+import me.impy.aegis.ui.dialogs.PasswordDialogFragment;
+import me.impy.aegis.ui.views.SlotAdapter;
+import me.impy.aegis.ui.dialogs.SlotDialogFragment;
public class SlotManagerActivity extends AegisActivity implements SlotAdapter.Listener, SlotDialogFragment.Listener {
private MasterKey _masterKey;
diff --git a/app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java
similarity index 94%
rename from app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java
rename to app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java
index 9caddb72..d1ac0be4 100644
--- a/app/src/main/java/me/impy/aegis/FingerprintDialogFragment.java
+++ b/app/src/main/java/me/impy/aegis/ui/dialogs/FingerprintDialogFragment.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.dialogs;
import android.app.Dialog;
import android.hardware.fingerprint.FingerprintManager;
@@ -13,9 +13,10 @@ import com.mattprecious.swirl.SwirlView;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyStoreHandle;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.Slot;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.Slot;
import me.impy.aegis.helpers.FingerprintHelper;
import me.impy.aegis.helpers.FingerprintUiHelper;
diff --git a/app/src/main/java/me/impy/aegis/PasswordDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java
similarity index 83%
rename from app/src/main/java/me/impy/aegis/PasswordDialogFragment.java
rename to app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java
index 7cf2ad5d..aa105a44 100644
--- a/app/src/main/java/me/impy/aegis/PasswordDialogFragment.java
+++ b/app/src/main/java/me/impy/aegis/ui/dialogs/PasswordDialogFragment.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.dialogs;
import android.app.Dialog;
import android.os.Bundle;
@@ -12,9 +12,11 @@ import android.widget.EditText;
import javax.crypto.Cipher;
-import me.impy.aegis.crypto.slots.PasswordSlot;
-import me.impy.aegis.crypto.slots.Slot;
-import me.impy.aegis.helpers.AuthHelper;
+import me.impy.aegis.R;
+import me.impy.aegis.db.slots.PasswordSlot;
+import me.impy.aegis.db.slots.Slot;
+import me.impy.aegis.helpers.EditTextHelper;
+import me.impy.aegis.ui.tasks.DerivationTask;
public class PasswordDialogFragment extends SlotDialogFragment {
private Button _buttonOK;
@@ -39,11 +41,11 @@ public class PasswordDialogFragment extends SlotDialogFragment {
// replace the default listener
_buttonOK.setOnClickListener(v -> {
- if (!AuthHelper.arePasswordsEqual(textPassword, textPasswordConfirm)) {
+ if (!EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm)) {
return;
}
- char[] password = AuthHelper.getEditTextChars(textPassword);
+ char[] password = EditTextHelper.getEditTextChars(textPassword);
PasswordSlot slot = new PasswordSlot();
DerivationTask task = new DerivationTask(getContext(), key -> {
Cipher cipher;
@@ -66,7 +68,7 @@ public class PasswordDialogFragment extends SlotDialogFragment {
TextWatcher watcher = new TextWatcher() {
public void onTextChanged(CharSequence c, int start, int before, int count) {
- boolean equal = AuthHelper.arePasswordsEqual(textPassword, textPasswordConfirm);
+ boolean equal = EditTextHelper.areEditTextsEqual(textPassword, textPasswordConfirm);
_buttonOK.setEnabled(equal);
}
public void beforeTextChanged(CharSequence c, int start, int count, int after) { }
diff --git a/app/src/main/java/me/impy/aegis/SlotDialogFragment.java b/app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java
similarity index 91%
rename from app/src/main/java/me/impy/aegis/SlotDialogFragment.java
rename to app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java
index b8d82ebb..cc5972ac 100644
--- a/app/src/main/java/me/impy/aegis/SlotDialogFragment.java
+++ b/app/src/main/java/me/impy/aegis/ui/dialogs/SlotDialogFragment.java
@@ -1,11 +1,11 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.dialogs;
import android.content.Context;
import android.support.v4.app.DialogFragment;
import javax.crypto.Cipher;
-import me.impy.aegis.crypto.slots.Slot;
+import me.impy.aegis.db.slots.Slot;
public class SlotDialogFragment extends DialogFragment {
private Listener _listener;
diff --git a/app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java
similarity index 93%
rename from app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java
rename to app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java
index f99b6946..cc975104 100644
--- a/app/src/main/java/me/impy/aegis/CustomAuthenticatedSlide.java
+++ b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticatedSlide.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.slides;
import android.content.Context;
import android.content.Intent;
@@ -23,11 +23,12 @@ import java.lang.reflect.UndeclaredThrowableException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyStoreHandle;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.Slot;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.Slot;
import me.impy.aegis.helpers.FingerprintUiHelper;
-import me.impy.aegis.helpers.AuthHelper;
+import me.impy.aegis.helpers.EditTextHelper;
public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiHelper.Callback, ISlidePolicy, ISlideSelectionListener {
private int _cryptType;
@@ -67,7 +68,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
}
public char[] getPassword() {
- return AuthHelper.getEditTextChars(_textPassword);
+ return EditTextHelper.getEditTextChars(_textPassword);
}
public Cipher getFingerCipher() {
@@ -138,7 +139,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
}
// intentional fallthrough
case CustomAuthenticationSlide.CRYPT_TYPE_PASS:
- return AuthHelper.arePasswordsEqual(_textPassword, _textPasswordConfirm);
+ return EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm);
default:
throw new RuntimeException();
}
@@ -147,7 +148,7 @@ public class CustomAuthenticatedSlide extends Fragment implements FingerprintUiH
@Override
public void onUserIllegallyRequestedNextPage() {
String message;
- if (!AuthHelper.arePasswordsEqual(_textPassword, _textPasswordConfirm)) {
+ if (!EditTextHelper.areEditTextsEqual(_textPassword, _textPasswordConfirm)) {
message = "Passwords should be equal and non-empty";
} else if (!_fingerAuthenticated) {
message = "Register your fingerprint";
diff --git a/app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java
similarity index 98%
rename from app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java
rename to app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java
index fd3742d8..bf60c036 100644
--- a/app/src/main/java/me/impy/aegis/CustomAuthenticationSlide.java
+++ b/app/src/main/java/me/impy/aegis/ui/slides/CustomAuthenticationSlide.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.slides;
import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
@@ -14,6 +14,7 @@ import android.widget.TextView;
import com.github.paolorotolo.appintro.ISlidePolicy;
+import me.impy.aegis.R;
import me.impy.aegis.helpers.FingerprintHelper;
public class CustomAuthenticationSlide extends Fragment implements ISlidePolicy, RadioGroup.OnCheckedChangeListener {
diff --git a/app/src/main/java/me/impy/aegis/DerivationTask.java b/app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java
similarity index 89%
rename from app/src/main/java/me/impy/aegis/DerivationTask.java
rename to app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java
index 9eae2bfa..70d458d5 100644
--- a/app/src/main/java/me/impy/aegis/DerivationTask.java
+++ b/app/src/main/java/me/impy/aegis/ui/tasks/DerivationTask.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.tasks;
import android.content.Context;
import android.os.Process;
@@ -6,7 +6,7 @@ import android.os.Process;
import javax.crypto.SecretKey;
import me.impy.aegis.crypto.CryptoUtils;
-import me.impy.aegis.crypto.slots.PasswordSlot;
+import me.impy.aegis.db.slots.PasswordSlot;
public class DerivationTask extends ProgressDialogTask {
private Callback _cb;
@@ -36,12 +36,12 @@ public class DerivationTask extends ProgressDialogTask extends ProgressDialogTask {
private Callback _cb;
@@ -71,12 +70,12 @@ public class SlotCollectionTask extends ProgressDialogTask implements ItemTouchHelperAdapter {
diff --git a/app/src/main/java/me/impy/aegis/KeyProfileHolder.java b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
similarity index 98%
rename from app/src/main/java/me/impy/aegis/KeyProfileHolder.java
rename to app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
index c612247c..5b718a59 100644
--- a/app/src/main/java/me/impy/aegis/KeyProfileHolder.java
+++ b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileHolder.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.views;
import android.animation.ObjectAnimator;
import android.os.Handler;
@@ -11,6 +11,8 @@ import android.widget.TextView;
import com.amulyakhare.textdrawable.TextDrawable;
+import me.impy.aegis.R;
+
public class KeyProfileHolder extends RecyclerView.ViewHolder {
private TextView _profileName;
private TextView _profileCode;
diff --git a/app/src/main/java/me/impy/aegis/KeyProfileView.java b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java
similarity index 98%
rename from app/src/main/java/me/impy/aegis/KeyProfileView.java
rename to app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java
index c5bbbb10..d78b7ac1 100644
--- a/app/src/main/java/me/impy/aegis/KeyProfileView.java
+++ b/app/src/main/java/me/impy/aegis/ui/views/KeyProfileView.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.views;
import android.os.Bundle;
import android.support.v4.app.Fragment;
@@ -9,6 +9,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import me.impy.aegis.R;
import me.impy.aegis.db.DatabaseEntry;
import me.impy.aegis.helpers.SimpleItemTouchHelperCallback;
diff --git a/app/src/main/java/me/impy/aegis/SlotAdapter.java b/app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java
similarity index 95%
rename from app/src/main/java/me/impy/aegis/SlotAdapter.java
rename to app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java
index 5e650e3b..6a0c084b 100644
--- a/app/src/main/java/me/impy/aegis/SlotAdapter.java
+++ b/app/src/main/java/me/impy/aegis/ui/views/SlotAdapter.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.views;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
@@ -7,7 +7,8 @@ import android.view.ViewGroup;
import java.util.ArrayList;
-import me.impy.aegis.crypto.slots.Slot;
+import me.impy.aegis.R;
+import me.impy.aegis.db.slots.Slot;
public class SlotAdapter extends RecyclerView.Adapter {
private Listener _listener;
diff --git a/app/src/main/java/me/impy/aegis/SlotHolder.java b/app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java
similarity index 90%
rename from app/src/main/java/me/impy/aegis/SlotHolder.java
rename to app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java
index b2b9492b..8d6002cb 100644
--- a/app/src/main/java/me/impy/aegis/SlotHolder.java
+++ b/app/src/main/java/me/impy/aegis/ui/views/SlotHolder.java
@@ -1,4 +1,4 @@
-package me.impy.aegis;
+package me.impy.aegis.ui.views;
import android.support.v7.widget.RecyclerView;
import android.view.View;
@@ -6,12 +6,13 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
+import me.impy.aegis.R;
import me.impy.aegis.crypto.KeyStoreHandle;
import me.impy.aegis.crypto.KeyStoreHandleException;
-import me.impy.aegis.crypto.slots.FingerprintSlot;
-import me.impy.aegis.crypto.slots.PasswordSlot;
-import me.impy.aegis.crypto.slots.RawSlot;
-import me.impy.aegis.crypto.slots.Slot;
+import me.impy.aegis.db.slots.FingerprintSlot;
+import me.impy.aegis.db.slots.PasswordSlot;
+import me.impy.aegis.db.slots.RawSlot;
+import me.impy.aegis.db.slots.Slot;
import me.impy.aegis.helpers.FingerprintHelper;
public class SlotHolder extends RecyclerView.ViewHolder {
diff --git a/app/src/main/res/layout/activity_auth.xml b/app/src/main/res/layout/activity_auth.xml
index 35ead88e..23fc8329 100644
--- a/app/src/main/res/layout/activity_auth.xml
+++ b/app/src/main/res/layout/activity_auth.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context="me.impy.aegis.AuthActivity">
+ tools:context="me.impy.aegis.ui.AuthActivity">
+ tools:context="me.impy.aegis.ui.IntroActivity">
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index a11b3ef6..4d8f0bb3 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context="me.impy.aegis.MainActivity">
+ tools:context="me.impy.aegis.ui.MainActivity">
+ tools:context="me.impy.aegis.ui.ScannerActivity">
diff --git a/app/src/main/res/layout/activity_slots.xml b/app/src/main/res/layout/activity_slots.xml
index 7e27a845..b4d5007f 100644
--- a/app/src/main/res/layout/activity_slots.xml
+++ b/app/src/main/res/layout/activity_slots.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
- tools:context="me.impy.aegis.SlotManagerActivity">
+ tools:context="me.impy.aegis.ui.SlotManagerActivity">
+ tools:context="me.impy.aegis.ui.EditProfileActivity">
-
+ tools:context="me.impy.aegis.ui.MainActivity">
-
+ tools:context="me.impy.aegis.ui.SlotManagerActivity">