diff --git a/app/src/main/java/me/impy/aegis/ui/MainActivity.java b/app/src/main/java/me/impy/aegis/ui/MainActivity.java index b6f22233..bbd54873 100644 --- a/app/src/main/java/me/impy/aegis/ui/MainActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/MainActivity.java @@ -4,10 +4,8 @@ import android.Manifest; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; -import android.content.DialogInterface; import android.content.Intent; import android.graphics.Rect; -import android.media.MediaScannerConnection; import android.support.design.widget.BottomSheetDialog; import android.support.v7.app.AlertDialog; import android.os.Bundle; @@ -26,7 +24,6 @@ import me.impy.aegis.AegisApplication; import me.impy.aegis.R; import me.impy.aegis.crypto.MasterKey; import me.impy.aegis.db.DatabaseManagerException; -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; @@ -42,7 +39,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen private static final int CODE_DO_INTRO = 4; private static final int CODE_DECRYPT = 5; private static final int CODE_PREFERENCES = 6; - private static final int CODE_SLOTS = 7; // permission request codes private static final int CODE_PERM_CAMERA = 0; @@ -179,9 +175,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen case CODE_PREFERENCES: onPreferencesResult(resultCode, data); break; - case CODE_SLOTS: - onSlotManagerResult(resultCode, data); - break; } } @@ -199,16 +192,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen } } - private void onSlotManagerResult(int resultCode, Intent data) { - if (resultCode != RESULT_OK) { - return; - } - - SlotCollection slots = (SlotCollection) data.getSerializableExtra("slots"); - _db.getFile().setSlots(slots); - saveDatabase(); - } - private void onPreferencesResult(int resultCode, Intent data) { // refresh the entire key profile list if needed if (data.getBooleanExtra("needsReload", false)) { @@ -221,18 +204,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen boolean showIssuer = _app.getPreferences().getBoolean("pref_issuer", false); _keyProfileView.setShowIssuer(showIssuer); } - - // perform any pending actions - int action = data.getIntExtra("action", -1); - switch (action) { - case PreferencesFragment.ACTION_SLOTS: - MasterKey masterKey = _db.getMasterKey(); - Intent intent = new Intent(this, SlotManagerActivity.class); - intent.putExtra("masterKey", masterKey); - intent.putExtra("slots", _db.getFile().getSlots()); - startActivityForResult(intent, CODE_SLOTS); - break; - } } private void startEditProfileActivity(int requestCode, KeyProfile profile, boolean isNew) { @@ -445,7 +416,6 @@ public class MainActivity extends AegisActivity implements KeyProfileView.Listen switch (item.getItemId()) { case R.id.action_settings: Intent intent = new Intent(this, PreferencesActivity.class); - intent.putExtra("encrypted", _db.getFile().isEncrypted()); startActivityForResult(intent, CODE_PREFERENCES); return true; case R.id.action_lock: diff --git a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java index 68345acd..e4e4c149 100644 --- a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java +++ b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java @@ -25,6 +25,7 @@ import me.impy.aegis.crypto.MasterKey; import me.impy.aegis.db.DatabaseEntry; import me.impy.aegis.db.DatabaseManager; import me.impy.aegis.db.DatabaseManagerException; +import me.impy.aegis.db.slots.SlotCollection; import me.impy.aegis.helpers.PermissionHelper; import me.impy.aegis.importers.AegisImporter; import me.impy.aegis.importers.DatabaseImporter; @@ -35,14 +36,12 @@ public class PreferencesFragment extends PreferenceFragment { // activity request codes private static final int CODE_IMPORT = 0; private static final int CODE_IMPORT_DECRYPT = 1; + private static final int CODE_SLOTS = 2; // permission request codes private static final int CODE_PERM_IMPORT = 0; private static final int CODE_PERM_EXPORT = 1; - // action codes - public static final int ACTION_SLOTS = 0; - private Intent _result = new Intent(); private DatabaseManager _db; @@ -98,12 +97,15 @@ public class PreferencesFragment extends PreferenceFragment { }); Preference slotsPreference = findPreference("pref_slots"); - slotsPreference.setEnabled(getArguments().getBoolean("encrypted")); + slotsPreference.setEnabled(_db.getFile().isEncrypted()); slotsPreference.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { - _result.putExtra("action", ACTION_SLOTS); - finish(); + MasterKey masterKey = _db.getMasterKey(); + Intent intent = new Intent(getActivity(), SlotManagerActivity.class); + intent.putExtra("masterKey", masterKey); + intent.putExtra("slots", _db.getFile().getSlots()); + startActivityForResult(intent, CODE_SLOTS); return true; } }); @@ -158,6 +160,9 @@ public class PreferencesFragment extends PreferenceFragment { case CODE_IMPORT_DECRYPT: onImportDecryptResult(resultCode, data); break; + case CODE_SLOTS: + onSlotManagerResult(resultCode, data); + break; } } @@ -184,6 +189,8 @@ public class PreferencesFragment extends PreferenceFragment { e.printStackTrace(); Toast.makeText(getActivity(), "An error occurred while trying to parse the file", Toast.LENGTH_SHORT).show(); } + + _converter = null; } private void onImportResult(int resultCode, Intent data) { @@ -249,11 +256,7 @@ public class PreferencesFragment extends PreferenceFragment { _db.addKey(entry); } - try { - _db.save(); - } catch (DatabaseManagerException e) { - e.printStackTrace(); - Toast.makeText(getActivity(), "An error occurred while trying to save the database", Toast.LENGTH_LONG).show(); + if (!saveDatabase()) { return; } @@ -300,4 +303,26 @@ public class PreferencesFragment extends PreferenceFragment { } builder.show(); } + + private void onSlotManagerResult(int resultCode, Intent data) { + if (resultCode != Activity.RESULT_OK) { + return; + } + + SlotCollection slots = (SlotCollection) data.getSerializableExtra("slots"); + _db.getFile().setSlots(slots); + saveDatabase(); + } + + private boolean saveDatabase() { + try { + _db.save(); + } catch (DatabaseManagerException e) { + e.printStackTrace(); + Toast.makeText(getActivity(), "An error occurred while trying to save the database", Toast.LENGTH_LONG).show(); + return false; + } + + return true; + } }