From 4680b53f86977f19594f47a1f691e9290b33e1aa Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sat, 19 Feb 2022 15:44:35 +0100 Subject: [PATCH] Save card details expansion state --- CHANGELOG.md | 4 +++ app/src/main/AndroidManifest.xml | 2 -- .../card_locker/CardShortcutConfigure.java | 28 +++++++++++++++++-- .../card_locker/LoyaltyCardCursorAdapter.java | 21 +++++++++++++- .../protect/card_locker/MainActivity.java | 16 ++++------- .../card_locker/ManageGroupActivity.java | 23 ++++++++++++++- .../main/java/protect/card_locker/Utils.java | 12 ++++++++ app/src/main/res/menu/card_details_menu.xml | 9 ++++++ app/src/main/res/values/strings.xml | 2 ++ 9 files changed, 100 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/menu/card_details_menu.xml diff --git a/CHANGELOG.md b/CHANGELOG.md index cd7149898..05a036602 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased - 104 + +- Save card detail expansion state + ## v2.15.2 - 103 (2022-02-11) - Fix manual language selection not applying everywhere diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 4af7841e0..e27451079 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -134,7 +134,5 @@ - - \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java index 4f5fa1e33..d2402f20c 100644 --- a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java +++ b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java @@ -4,6 +4,8 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; @@ -19,6 +21,7 @@ import androidx.recyclerview.widget.RecyclerView; public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener { static final String TAG = "Catima"; private SQLiteDatabase mDatabase; + private LoyaltyCardCursorAdapter mAdapter; @Override public void onCreate(Bundle bundle) { @@ -33,6 +36,7 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC setContentView(R.layout.simple_toolbar_list_activity); Toolbar toolbar = findViewById(R.id.toolbar); toolbar.setTitle(R.string.shortcutSelectCard); + setSupportActionBar(toolbar); // If there are no cards, bail if (DBHelper.getLoyaltyCardCount(mDatabase) == 0) { @@ -47,8 +51,8 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC } Cursor cardCursor = DBHelper.getLoyaltyCardCursor(mDatabase); - final LoyaltyCardCursorAdapter adapter = new LoyaltyCardCursorAdapter(this, cardCursor, this); - cardList.setAdapter(adapter); + mAdapter = new LoyaltyCardCursorAdapter(this, cardCursor, this); + cardList.setAdapter(mAdapter); } private void onClickAction(int position) { @@ -65,6 +69,26 @@ public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyC finish(); } + @Override + public boolean onCreateOptionsMenu(Menu inputMenu) { + getMenuInflater().inflate(R.menu.card_details_menu, inputMenu); + Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails()); + return super.onCreateOptionsMenu(inputMenu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem inputItem) { + int id = inputItem.getItemId(); + + if (id == R.id.action_unfold) { + mAdapter.showDetails(!mAdapter.showingDetails()); + invalidateOptionsMenu(); + + return true; + } + + return super.onOptionsItemSelected(inputItem); + } @Override public void onRowClicked(int inputPosition) { diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index b6f7250f1..8dda3ac54 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -1,6 +1,7 @@ package protect.card_locker; import android.content.Context; +import android.content.SharedPreferences; import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; @@ -40,7 +41,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter 0); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); @@ -493,17 +496,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard int id = inputItem.getItemId(); if (id == R.id.action_unfold) { - boolean shouldShow = !mAdapter.showingDetails(); - - if (shouldShow) { - inputItem.setIcon(R.drawable.ic_baseline_unfold_less_24); - inputItem.setTitle(R.string.action_hide_details); - } else { - inputItem.setIcon(R.drawable.ic_baseline_unfold_more_24); - inputItem.setTitle(R.string.action_show_details); - } - - mAdapter.showDetails(shouldShow); + mAdapter.showDetails(!mAdapter.showingDetails()); + invalidateOptionsMenu(); return true; } diff --git a/app/src/main/java/protect/card_locker/ManageGroupActivity.java b/app/src/main/java/protect/card_locker/ManageGroupActivity.java index 436a98cdd..9dfe62be7 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupActivity.java @@ -1,12 +1,13 @@ package protect.card_locker; - import android.content.Intent; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; +import android.view.Menu; +import android.view.MenuItem; import android.view.View; import android.widget.EditText; import android.widget.TextView; @@ -156,6 +157,26 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana return ret; } + @Override + public boolean onCreateOptionsMenu(Menu inputMenu) { + getMenuInflater().inflate(R.menu.card_details_menu, inputMenu); + Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails()); + return super.onCreateOptionsMenu(inputMenu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem inputItem) { + int id = inputItem.getItemId(); + + if (id == R.id.action_unfold) { + mAdapter.showDetails(!mAdapter.showingDetails()); + invalidateOptionsMenu(); + + return true; + } + + return super.onOptionsItemSelected(inputItem); + } @Override protected void onSaveInstanceState(@NonNull Bundle outState) { diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java index 23f7cb84e..55e9d86d0 100644 --- a/app/src/main/java/protect/card_locker/Utils.java +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -15,6 +15,8 @@ import android.os.LocaleList; import android.provider.MediaStore; import android.util.Log; import android.util.TypedValue; +import android.view.Menu; +import android.view.MenuItem; import android.widget.Toast; import com.google.android.material.color.DynamicColors; @@ -506,4 +508,14 @@ public class Utils { activity.getTheme().resolveAttribute(android.R.attr.colorBackground, typedValue, true); activity.findViewById(android.R.id.content).setBackgroundColor(typedValue.data); } + + public static void updateMenuCardDetailsButtonState(MenuItem item, boolean currentlyExpanded) { + if (currentlyExpanded) { + item.setIcon(R.drawable.ic_baseline_unfold_less_24); + item.setTitle(R.string.action_hide_details); + } else { + item.setIcon(R.drawable.ic_baseline_unfold_more_24); + item.setTitle(R.string.action_show_details); + } + } } diff --git a/app/src/main/res/menu/card_details_menu.xml b/app/src/main/res/menu/card_details_menu.xml new file mode 100644 index 000000000..048bd5092 --- /dev/null +++ b/app/src/main/res/menu/card_details_menu.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 57aeee633..8078227eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -115,6 +115,8 @@ sharedpreference_sort sharedpreference_sort_order sharedpreference_sort_direction + sharedpreference_card_details + sharedpreference_card_details_show I want to share a card with you catima.app /share