diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index b1e48e6f..4061db11 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -19,6 +19,8 @@ public class Preferences { return _prefs.getBoolean("pref_tap_to_reveal", false); } + public boolean isSearchAccountNameEnabled() { return _prefs.getBoolean("pref_search_names", false); } + public boolean isSecureScreenEnabled() { // screen security should be enabled by default, but not for debug builds return _prefs.getBoolean("pref_secure_screen", !BuildConfig.DEBUG); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java index 6942c8ae..e97f493c 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -101,6 +101,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _entryListView = (EntryListView) getSupportFragmentManager().findFragmentById(R.id.key_profiles); _entryListView.setListener(this); _entryListView.setShowAccountName(getPreferences().isAccountNameVisible()); + _entryListView.setSearchAccountName(getPreferences().isSearchAccountNameEnabled()); _entryListView.setTapToReveal(getPreferences().isTapToRevealEnabled()); _entryListView.setTapToRevealTime(getPreferences().getTapToRevealTime()); _entryListView.setSortCategory(getPreferences().getCurrentSortCategory(), false); @@ -216,10 +217,12 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene recreate(); } else if (data.getBooleanExtra("needsRefresh", false)) { boolean showAccountName = getPreferences().isAccountNameVisible(); + boolean searchAccountName = getPreferences().isSearchAccountNameEnabled(); boolean tapToReveal = getPreferences().isTapToRevealEnabled(); int tapToRevealTime = getPreferences().getTapToRevealTime(); ViewMode viewMode = getPreferences().getCurrentViewMode(); _entryListView.setShowAccountName(showAccountName); + _entryListView.setSearchAccountName(searchAccountName); _entryListView.setTapToReveal(tapToReveal); _entryListView.setTapToRevealTime(tapToRevealTime); _entryListView.setViewMode(viewMode); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java index f4856f35..87013bf8 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java @@ -201,6 +201,12 @@ public class PreferencesFragment extends PreferenceFragmentCompat { } }); + Preference searchAccountNamePreference = findPreference("pref_search_names"); + searchAccountNamePreference.setOnPreferenceChangeListener((preference, newValue) -> { + _result.putExtra("needsRefresh", true); + return true; + }); + Preference tapToRevealPreference = findPreference("pref_tap_to_reveal"); tapToRevealPreference.setOnPreferenceChangeListener((preference, newValue) -> { _result.putExtra("needsRefresh", true); diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java index b0e9a950..75772ce1 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryAdapter.java @@ -26,6 +26,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I private List _shownEntries; private DatabaseEntry _selectedEntry; private boolean _showAccountName; + private boolean _searchAccountName; private boolean _tapToReveal; private int _tapToRevealTime; private String _groupFilter; @@ -63,6 +64,8 @@ public class EntryAdapter extends RecyclerView.Adapter implements I _tapToRevealTime = number; } + public void setSearchAccountName(boolean searchAccountName) { _searchAccountName = searchAccountName; } + public DatabaseEntry getEntryAt(int position) { return _shownEntries.get(position); } @@ -153,12 +156,17 @@ public class EntryAdapter extends RecyclerView.Adapter implements I private boolean isEntryFiltered(DatabaseEntry entry) { String group = entry.getGroup(); String issuer = entry.getIssuer().toLowerCase(); + String name = entry.getName().toLowerCase(); if (_groupFilter != null && (group == null || !group.equals(_groupFilter))) { return true; } - return _searchFilter != null && !issuer.contains(_searchFilter); + if (_searchFilter == null) { + return false; + } + + return !issuer.contains(_searchFilter) && !(_searchAccountName && name.contains(_searchFilter)); } public void refresh(boolean hard) { diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java index febb6bf8..085b73e7 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/views/EntryListView.java @@ -211,6 +211,10 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { _adapter.setShowAccountName(showAccountName); } + public void setSearchAccountName(boolean searchAccountName) { + _adapter.setSearchAccountName(searchAccountName); + } + public void setTapToReveal(boolean tapToReveal) { _adapter.setTapToReveal(tapToReveal); } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d0652adf..4e70b15e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -14,6 +14,7 @@ Preferences Appearance + General Security Tools Theme @@ -155,6 +156,8 @@ Group name Edit groups Manage and delete your groups here + Search in account names + Include account name matches in the search results Hidden Selected Dark theme diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 99872f7e..1640441a 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -42,6 +42,17 @@ app:iconSpaceReserved="false"/> + + + +