From d49d42254b1809ba02bef5b76ccb44b33fc2adb4 Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Mon, 25 May 2020 15:49:37 +0200 Subject: [PATCH] Add an option to copy tokens on tap (and disable it by default) --- .../java/com/beemdevelopment/aegis/Preferences.java | 4 ++++ .../com/beemdevelopment/aegis/ui/MainActivity.java | 9 +++++++-- .../beemdevelopment/aegis/ui/PreferencesFragment.java | 6 ++++++ .../beemdevelopment/aegis/ui/views/EntryAdapter.java | 11 ++++++++++- .../beemdevelopment/aegis/ui/views/EntryListView.java | 10 ++++++++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 6 ++++++ 7 files changed, 45 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index 60e4c8f6..78251446 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -167,4 +167,8 @@ public class Preferences { public void setIsTimeSyncWarningEnabled(boolean enabled) { _prefs.edit().putBoolean("pref_warn_time_sync", enabled).apply(); } + + public boolean isCopyOnTapEnabled() { + return _prefs.getBoolean("pref_copy_on_tap", false); + } } 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 804f5ea2..c027256d 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/MainActivity.java @@ -108,6 +108,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _entryListView.setTapToRevealTime(getPreferences().getTapToRevealTime()); _entryListView.setSortCategory(getPreferences().getCurrentSortCategory(), false); _entryListView.setViewMode(getPreferences().getCurrentViewMode()); + _entryListView.setIsCopyOnTapEnabled(getPreferences().isCopyOnTapEnabled()); // set up the floating action button _fabMenu = findViewById(R.id.fab); @@ -226,6 +227,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene boolean tapToReveal = getPreferences().isTapToRevealEnabled(); int tapToRevealTime = getPreferences().getTapToRevealTime(); ViewMode viewMode = getPreferences().getCurrentViewMode(); + boolean copyOnTap = getPreferences().isCopyOnTapEnabled(); _entryListView.setShowAccountName(showAccountName); _entryListView.setCodeGroupSize(codeGroupSize); _entryListView.setSearchAccountName(searchAccountName); @@ -233,6 +235,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene _entryListView.setTapToReveal(tapToReveal); _entryListView.setTapToRevealTime(tapToRevealTime); _entryListView.setViewMode(viewMode); + _entryListView.setIsCopyOnTapEnabled(copyOnTap); _entryListView.refresh(true); } } @@ -655,8 +658,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene return; } - - copyEntryCode(entry); } @Override @@ -701,6 +702,10 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene saveVault(); } + public void onEntryCopy(VaultEntry entry) { + copyEntryCode(entry); + } + @Override public void onScroll(int dx, int dy) { _fabScrollHelper.onScroll(dx, dy); 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 3a06846b..b5f907a4 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesFragment.java @@ -228,6 +228,12 @@ public class PreferencesFragment extends PreferenceFragmentCompat { return true; }); + Preference copyOnTapPreference = findPreference("pref_copy_on_tap"); + copyOnTapPreference.setOnPreferenceChangeListener((preference, newValue) -> { + _result.putExtra("needsRefresh", true); + return true; + }); + Preference entryHighlightPreference = findPreference("pref_highlight_entry"); entryHighlightPreference.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 1e548be9..e98b70a4 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 @@ -38,6 +38,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I private boolean _highlightEntry; private boolean _tapToReveal; private int _tapToRevealTime; + private boolean _copyOnTap; private String _groupFilter; private SortCategory _sortCategory; private ViewMode _viewMode; @@ -89,6 +90,10 @@ public class EntryAdapter extends RecyclerView.Adapter implements I _highlightEntry = highlightEntry; } + public void setIsCopyOnTapEnabled(boolean enabled) { + _copyOnTap = enabled; + } + public VaultEntry getEntryAt(int position) { return _shownEntries.get(position); } @@ -343,7 +348,10 @@ public class EntryAdapter extends RecyclerView.Adapter implements I boolean handled = false; if (_selectedEntries.isEmpty()) { - holder.animateCopyText(); + if (_copyOnTap) { + _view.onEntryCopy(entry); + holder.animateCopyText(); + } if (_highlightEntry || _tapToReveal) { if (_focusedEntry == entry) { @@ -548,6 +556,7 @@ public class EntryAdapter extends RecyclerView.Adapter implements I void onEntryMove(VaultEntry entry1, VaultEntry entry2); void onEntryDrop(VaultEntry entry); void onEntryChange(VaultEntry entry); + void onEntryCopy(VaultEntry entry); void onPeriodUniformityChanged(boolean uniform, int period); void onSelect(VaultEntry entry); void onDeselect(VaultEntry entry); 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 e5c1b6b5..b22653e0 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 @@ -138,6 +138,10 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { _touchCallback.setIsLongPressDragEnabled(enabled); } + public void setIsCopyOnTapEnabled(boolean enabled) { + _adapter.setIsCopyOnTapEnabled(enabled); + } + public void setActionModeState(boolean enabled, VaultEntry entry) { _touchCallback.setSelectedEntry(entry); _touchCallback.setIsLongPressDragEnabled(enabled && _adapter.isDragAndDropAllowed()); @@ -205,6 +209,11 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { _listener.onEntryChange(entry); } + @Override + public void onEntryCopy(VaultEntry entry) { + _listener.onEntryCopy(entry); + } + @Override public void onSelect(VaultEntry entry) { _listener.onSelect(entry); } @@ -323,6 +332,7 @@ public class EntryListView extends Fragment implements EntryAdapter.Listener { void onEntryMove(VaultEntry entry1, VaultEntry entry2); void onEntryDrop(VaultEntry entry); void onEntryChange(VaultEntry entry); + void onEntryCopy(VaultEntry entry); void onLongEntryClick(VaultEntry entry); void onScroll(int dx, int dy); void onSelect(VaultEntry entry); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8cd4f826..9af7c76a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -195,6 +195,8 @@ Include account name matches in the search results Highlight tokens when tapped Make tokens easier to distinguish from each other by temporarily highlighting them when tapped + Copy tokens when tapped + Copy tokens to the clipboard by tapping them Hidden Selected Dark theme diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index f69ac873..470f5889 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -58,6 +58,12 @@ android:title="@string/pref_search_name_title" android:summary="@string/pref_search_name_summary" app:iconSpaceReserved="false"/> +