Add ability to favorite/pin entries

This commit is contained in:
Michael Schättgen 2022-10-26 14:07:49 +02:00
parent c58b773878
commit 5ec1e33a31
17 changed files with 247 additions and 20 deletions

View file

@ -110,7 +110,6 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_isDPadPressed = false;
_isDoingIntro = false;
_isAuthenticating = false;
if (savedInstanceState != null) {
_isRecreated = true;
_pendingSearchQuery = savedInstanceState.getString("pendingSearchQuery");
@ -177,10 +176,15 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
@Override
protected void onPause() {
Map<UUID, Integer> usageMap = _entryListView.getUsageCounts();
List<UUID> favoritesList = _entryListView.getFavorites();
if (usageMap != null) {
_prefs.setUsageCount(usageMap);
}
if (favoritesList != null) {
_prefs.setFavorites(favoritesList);
}
super.onPause();
}
@ -645,6 +649,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
public boolean onCreateOptionsMenu(Menu menu) {
_menu = menu;
getMenuInflater().inflate(R.menu.menu_main, menu);
updateLockIcon();
if (_loaded) {
_entryListView.setGroups(_vaultManager.getVault().getGroups());
@ -774,6 +779,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
private void loadEntries() {
if (!_loaded) {
_entryListView.setUsageCounts(_prefs.getUsageCounts());
_entryListView.setFavorites(_prefs.getFavorites());
_entryListView.addEntries(_vaultManager.getVault().getEntries());
_entryListView.runEntriesAnimation();
_loaded = true;
@ -859,6 +865,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
if (_selectedEntries.isEmpty()) {
_actionMode.finish();
} else {
setFavoriteMenuItemVisiblity();
setIsMultipleSelected(_selectedEntries.size() > 1);
}
@ -882,6 +889,27 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
_actionMode.getMenu().findItem(R.id.action_copy).setVisible(!multipleSelected);
}
private void setFavoriteMenuItemVisiblity() {
MenuItem toggleFavoriteMenuItem = _actionMode.getMenu().findItem(R.id.action_toggle_favorite);
if (_selectedEntries.size() == 1){
if (_selectedEntries.get(0).getIsFavorited()) {
toggleFavoriteMenuItem.setIcon(R.drawable.ic_set_favorite);
toggleFavoriteMenuItem.setTitle(R.string.unfavorite);
} else {
toggleFavoriteMenuItem.setIcon(R.drawable.ic_unset_favorite);
toggleFavoriteMenuItem.setTitle(R.string.favorite);
}
} else {
toggleFavoriteMenuItem.setIcon(R.drawable.ic_unset_favorite);
toggleFavoriteMenuItem.setTitle(String.format("%s / %s", getString(R.string.favorite), getString(R.string.unfavorite)));
}
}
private void toggleFavorite(VaultEntry entry) {
_entryListView.toggleFavoriteState(entry);
}
@Override
public void onLongEntryClick(VaultEntry entry) {
if (!_selectedEntries.isEmpty()) {
@ -896,6 +924,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
private void startActionMode() {
_actionMode = startSupportActionMode(_actionModeCallbacks);
_actionModeBackPressHandler.setEnabled(true);
setFavoriteMenuItemVisiblity();
}
@Override
@ -1021,7 +1050,7 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
private class ActionModeCallbacks implements ActionMode.Callback {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
MenuInflater inflater = mode.getMenuInflater();
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_action_mode, menu);
return true;
}
@ -1048,6 +1077,14 @@ public class MainActivity extends AegisActivity implements EntryListView.Listene
mode.finish();
return true;
case R.id.action_toggle_favorite:
for (VaultEntry entry : _selectedEntries) {
toggleFavorite(entry);
}
mode.finish();
return true;
case R.id.action_share_qr:
Intent intent = new Intent(getBaseContext(), TransferEntriesActivity.class);
ArrayList<GoogleAuthInfo> authInfos = new ArrayList<>();