diff --git a/CHANGELOG.md b/CHANGELOG.md index 17ef2df49..6d94b1c88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Unreleased - 124 + +- Support selecting exactly which details to view in card overview + ## v2.23.3 - 123 - Minor UI improvements diff --git a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java index a34916a63..207f8d9ec 100644 --- a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java +++ b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java @@ -81,7 +81,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo @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); } @@ -89,8 +89,8 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo public boolean onOptionsItemSelected(MenuItem inputItem) { int id = inputItem.getItemId(); - if (id == R.id.action_unfold) { - mAdapter.showDetails(!mAdapter.showingDetails()); + if (id == R.id.action_shown_details) { + mAdapter.showSelectDetailDisplayDialog(); invalidateOptionsMenu(); return true; diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index ca6704ce9..d1da27ef8 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -18,12 +18,14 @@ import android.widget.TextView; import com.google.android.material.card.MaterialCardView; import com.google.android.material.color.MaterialColors; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import java.math.BigDecimal; import java.text.DateFormat; import java.util.ArrayList; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.core.graphics.BlendModeColorFilterCompat; @@ -31,7 +33,6 @@ import androidx.core.graphics.BlendModeCompat; import androidx.recyclerview.widget.RecyclerView; import protect.card_locker.databinding.LoyaltyCardLayoutBinding; -import protect.card_locker.preferences.Settings; public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { private int mCurrentSelectedIndex = -1; @@ -41,7 +42,10 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { + switch (i) { + case 0: showNameBelowThumbnail(b); break; + case 1: showNote(b); break; + case 2: showBalance(b); break; + case 3: showValidity(b); break; + default: throw new IndexOutOfBoundsException("No such index exists in LoyaltyCardCursorAdapter show details view"); + } + } + ); + builder.setPositiveButton(R.string.ok, (dialog, i) -> dialog.dismiss()); + + AlertDialog dialog = builder.create(); + dialog.show(); } @NonNull @@ -104,33 +179,40 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter 0); SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); @@ -653,8 +649,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard onBackPressed(); } - if (id == R.id.action_unfold) { - mAdapter.showDetails(!mAdapter.showingDetails()); + if (id == R.id.action_shown_details) { + mAdapter.showSelectDetailDisplayDialog(); 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 a161bf922..d518ca0a8 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupActivity.java @@ -21,7 +21,6 @@ import java.util.HashMap; import java.util.Map; import androidx.annotation.NonNull; -import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.recyclerview.widget.RecyclerView; @@ -160,7 +159,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana @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); } @@ -168,8 +167,8 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana public boolean onOptionsItemSelected(MenuItem inputItem) { int id = inputItem.getItemId(); - if (id == R.id.action_unfold) { - mAdapter.showDetails(!mAdapter.showingDetails()); + if (id == R.id.action_shown_details) { + mAdapter.showSelectDetailDisplayDialog(); invalidateOptionsMenu(); return true; diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java index 024e0ea6e..c8cc89a06 100644 --- a/app/src/main/java/protect/card_locker/Utils.java +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -560,16 +560,6 @@ public class Utils { 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); - } - } - public static int getHeaderColorFromImage(Bitmap image, int fallback) { if (image == null) { return fallback; @@ -603,8 +593,7 @@ public class Utils { return result.toString(); } - public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, ImageView backgroundOrIcon, TextView textWhenNoImage) { - Bitmap icon = Utils.retrieveCardImage(context, loyaltyCard.id, ImageLocationType.icon); + public static void setIconOrTextWithBackground(Context context, LoyaltyCard loyaltyCard, Bitmap icon, ImageView backgroundOrIcon, TextView textWhenNoImage) { if (icon != null) { Log.d("onResume", "setting icon image"); textWhenNoImage.setVisibility(View.GONE); diff --git a/app/src/main/res/drawable/baseline_visibility_24.xml b/app/src/main/res/drawable/baseline_visibility_24.xml new file mode 100644 index 000000000..c06596754 --- /dev/null +++ b/app/src/main/res/drawable/baseline_visibility_24.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/layout/loyalty_card_layout.xml b/app/src/main/res/layout/loyalty_card_layout.xml index 5497e673d..3f1c62a21 100644 --- a/app/src/main/res/layout/loyalty_card_layout.xml +++ b/app/src/main/res/layout/loyalty_card_layout.xml @@ -18,7 +18,7 @@ android:outlineProvider="none" app:cardCornerRadius="8dp" app:strokeWidth="0dp" - app:layout_constraintBottom_toTopOf="@+id/note" + app:layout_constraintBottom_toTopOf="@+id/store" app:layout_constraintDimensionRatio="85.6f:53.98f" app:layout_constraintTop_toTopOf="parent"> @@ -129,6 +129,23 @@ + + diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml index a1f1c882e..c5fe0f2d8 100644 --- a/app/src/main/res/menu/main_menu.xml +++ b/app/src/main/res/menu/main_menu.xml @@ -10,9 +10,9 @@ app:showAsAction="always|collapseActionView" android:visible="false"/> sharedpreference_sort_order sharedpreference_sort_direction sharedpreference_card_details - sharedpreference_card_details_show I want to share a card with you catima.app /share @@ -224,7 +223,7 @@ pref_locale System Select color - Set icon + Set thumbnail pref_theme_color Theme color Catima @@ -313,5 +312,13 @@ Open back image in gallery app Set barcode height Donate - Long press to edit icon + Long press to edit thumbnail + Show name below image thumbnail + Show note + Show balance + Show validity + sharedpreference_card_details_show_note + sharedpreference_card_details_show_balance + sharedpreference_card_details_show_validity + sharedpreference_card_details_show_name_below_thumbnail diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java index c76386c83..45251217d 100644 --- a/app/src/test/java/protect/card_locker/MainActivityTest.java +++ b/app/src/test/java/protect/card_locker/MainActivityTest.java @@ -62,7 +62,7 @@ public class MainActivityTest { assertEquals(menu.size(), 8); assertEquals("Search", menu.findItem(R.id.action_search).getTitle().toString()); assertEquals("Sort", menu.findItem(R.id.action_sort).getTitle().toString()); - assertEquals("Hide details", menu.findItem(R.id.action_unfold).getTitle().toString()); + assertEquals("Show details", menu.findItem(R.id.action_shown_details).getTitle().toString()); assertEquals("Groups", menu.findItem(R.id.action_manage_groups).getTitle().toString()); assertEquals("Archive", menu.findItem(R.id.action_archived).getTitle().toString()); assertEquals("Import/Export", menu.findItem(R.id.action_import_export).getTitle().toString());