diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9fb910e9e..a51041b0e 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
# Changelog
+## Unreleased - 122
+
+- Long-press card icon in view activity to change it
+
## v2.23.1 - 121
- Update used libraries
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
index 09d877774..f2cb7ca11 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
@@ -118,6 +118,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
public static final String BUNDLE_ID = "id";
public static final String BUNDLE_DUPLICATE_ID = "duplicateId";
public static final String BUNDLE_UPDATE = "update";
+ public static final String BUNDLE_OPEN_SET_ICON_MENU = "openSetIconMenu";
public static final String BUNDLE_CARDID = "cardId";
public static final String BUNDLE_BARCODEID = "barcodeId";
public static final String BUNDLE_BARCODETYPE = "barcodeType";
@@ -152,6 +153,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
int loyaltyCardId;
boolean updateLoyaltyCard;
boolean duplicateFromLoyaltyCardId;
+ boolean openSetIconMenu;
String cardId;
String barcodeId;
String barcodeType;
@@ -238,6 +240,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
updateLoyaltyCard = b != null && b.getBoolean(BUNDLE_UPDATE, false);
duplicateFromLoyaltyCardId = b != null && b.getBoolean(BUNDLE_DUPLICATE_ID, false);
+ openSetIconMenu = b != null && b.getBoolean(BUNDLE_OPEN_SET_ICON_MENU, false);
+
cardId = b != null ? b.getString(BUNDLE_CARDID) : null;
barcodeId = b != null ? b.getString(BUNDLE_BARCODEID) : null;
barcodeType = b != null ? b.getString(BUNDLE_BARCODETYPE) : null;
@@ -897,6 +901,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
}
onResuming = false;
+
+ // Fake click on the edit icon to cause the set icon option to pop up if the icon was
+ // long-pressed in the view activity
+ if (openSetIconMenu) {
+ openSetIconMenu = false;
+ thumbnail.callOnClick();
+ }
}
protected void setColorFromIcon() {
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
index 57afa8368..80d2c81b4 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java
@@ -288,8 +288,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.fabEdit.setOnClickListener(v -> {
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = new Bundle();
- bundle.putInt("id", loyaltyCardId);
- bundle.putBoolean("update", true);
+ bundle.putInt(LoyaltyCardEditActivity.BUNDLE_ID, loyaltyCardId);
+ bundle.putBoolean(LoyaltyCardEditActivity.BUNDLE_UPDATE, true);
intent.putExtras(bundle);
startActivity(intent);
finish();
@@ -301,6 +301,20 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
binding.bottomAppBarNextButton.setOnClickListener(view -> prevNextCard(true));
binding.bottomAppBarUpdateBalanceButton.setOnClickListener(view -> showBalanceUpdateDialog());
+ binding.iconContainer.setOnClickListener(view -> Toast.makeText(LoyaltyCardViewActivity.this, R.string.icon_header_click_text, Toast.LENGTH_LONG).show());
+ binding.iconContainer.setOnLongClickListener(view -> {
+ Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
+ Bundle bundle = new Bundle();
+ bundle.putInt(LoyaltyCardEditActivity.BUNDLE_ID, loyaltyCardId);
+ bundle.putBoolean(LoyaltyCardEditActivity.BUNDLE_UPDATE, true);
+ bundle.putBoolean(LoyaltyCardEditActivity.BUNDLE_OPEN_SET_ICON_MENU, true);
+ intent.putExtras(bundle);
+ startActivity(intent);
+ finish();
+
+ return true;
+ });
+
binding.mainImage.setOnClickListener(view -> onMainImageTap());
// This long-press was originally only intended for when Talkback was used but sadly limiting
// this doesn't seem to work well
@@ -743,8 +757,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
} else if (id == R.id.action_duplicate) {
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
Bundle bundle = new Bundle();
- bundle.putInt("id", loyaltyCardId);
- bundle.putBoolean("duplicateId", true);
+ bundle.putInt(LoyaltyCardEditActivity.BUNDLE_ID, loyaltyCardId);
+ bundle.putBoolean(LoyaltyCardEditActivity.BUNDLE_DUPLICATE_ID, true);
intent.putExtras(bundle);
startActivity(intent);
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 3562fccd8..54e40d0ab 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -313,4 +313,5 @@
Open back image in gallery app
Set barcode height
Donate
+ Long press to edit icon