diff --git a/CHANGELOG.md b/CHANGELOG.md
index b92f57de0..6759f30e0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
- Fixed pressing the save button multiple times creating multiple entries
- Lower card header size when hiding details to fit even more cards
+- Restructure edit dialog
## v2.12.0 - 96 (2021-12-23)
diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
index 5e07dbfdb..d2a13fea5 100644
--- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
+++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java
@@ -153,7 +153,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
AlertDialog confirmExitDialog = null;
boolean validBalance = true;
- Runnable warnOnInvalidBarcodeType;
+ Runnable barcodeImageGenerationFinishedCallback;
HashMap currencies = new HashMap<>();
@@ -208,6 +208,10 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
private void updateTempState(LoyaltyCardField fieldName, Object value) {
tempLoyaltyCard = updateTempState(tempLoyaltyCard, fieldName, value);
+ if (initDone && (fieldName == LoyaltyCardField.cardId || fieldName == LoyaltyCardField.barcodeId || fieldName == LoyaltyCardField.barcodeType)) {
+ generateBarcode();
+ }
+
hasChanged = true;
}
@@ -223,7 +227,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
importLoyaltyCardUri = intent.getData();
- Log.d(TAG, "View activity: id=" + loyaltyCardId
+ Log.d(TAG, "Edit activity: id=" + loyaltyCardId
+ ", updateLoyaltyCard=" + updateLoyaltyCard);
}
@@ -326,8 +330,9 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
cardImageFront.setBackgroundColor(getThemeColor());
cardImageBack.setBackgroundColor(getThemeColor());
- warnOnInvalidBarcodeType = () -> {
+ barcodeImageGenerationFinishedCallback = () -> {
if (!(boolean) barcodeImage.getTag()) {
+ barcodeImageLayout.setVisibility(View.GONE);
Toast.makeText(LoyaltyCardEditActivity.this, getString(R.string.wrongValueForBarcodeType), Toast.LENGTH_LONG).show();
}
};
@@ -524,8 +529,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
} else {
updateTempState(LoyaltyCardField.barcodeId, s.toString());
}
-
- generateOrHideBarcode();
}
@Override
@@ -556,8 +559,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
} catch (IllegalArgumentException e) {
}
}
-
- generateOrHideBarcode();
}
}
@@ -889,7 +890,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
hasChanged = hadChanges;
}
- generateOrHideBarcode();
+ generateBarcode();
enterButton.setOnClickListener(new EditCardIdAndBarcode());
barcodeImage.setOnClickListener(new EditCardIdAndBarcode());
@@ -1403,27 +1404,22 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
);
}
- private void showBarcode() {
- barcodeImageLayout.setVisibility(View.VISIBLE);
- }
+ private void generateBarcode() {
+ if (tempLoyaltyCard == null) {
+ return;
+ }
- private void hideBarcode() {
- barcodeImageLayout.setVisibility(View.GONE);
- }
+ mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
- private void generateOrHideBarcode() {
String cardIdString = tempLoyaltyCard.barcodeId != null ? tempLoyaltyCard.barcodeId : tempLoyaltyCard.cardId;
CatimaBarcode barcodeFormat = tempLoyaltyCard.barcodeType;
- if (barcodeFormat == null || cardIdString.isEmpty() || !barcodeFormat.isSupported()) {
- hideBarcode();
- } else {
- generateBarcode(cardIdString, barcodeFormat);
+ if (cardIdString == null || barcodeFormat == null) {
+ barcodeImageLayout.setVisibility(View.GONE);
+ return;
}
- }
- private void generateBarcode(String cardIdString, CatimaBarcode barcodeFormat) {
- mTasks.flushTaskList(TaskHandler.TYPE.BARCODE, true, false, false);
+ barcodeImageLayout.setVisibility(View.VISIBLE);
if (barcodeImage.getHeight() == 0) {
Log.d(TAG, "ImageView size is not known known at start, waiting for load");
@@ -1436,17 +1432,15 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
Log.d(TAG, "ImageView size now known");
- BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, warnOnInvalidBarcodeType);
+ BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
});
} else {
Log.d(TAG, "ImageView size known known, creating barcode");
- BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, warnOnInvalidBarcodeType);
+ BarcodeImageWriterTask barcodeWriter = new BarcodeImageWriterTask(getApplicationContext(), barcodeImage, cardIdString, barcodeFormat, null, false, barcodeImageGenerationFinishedCallback);
mTasks.executeTask(TaskHandler.TYPE.BARCODE, barcodeWriter);
}
-
- showBarcode();
}
private void generateIcon(String store) {
@@ -1476,30 +1470,24 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity {
}
View cardPart = findViewById(R.id.cardPart);
- View barcodePart = findViewById(R.id.barcodePart);
+ View optionsPart = findViewById(R.id.optionsPart);
View picturesPart = findViewById(R.id.picturesPart);
if (getString(R.string.card).equals(part)) {
cardPart.setVisibility(View.VISIBLE);
- barcodePart.setVisibility(View.GONE);
- picturesPart.setVisibility(View.GONE);
-
- // Explicitly hide barcode (fixes blurriness on redraw)
- hideBarcode();
- } else if (getString(R.string.barcode).equals(part)) {
- cardPart.setVisibility(View.GONE);
- barcodePart.setVisibility(View.VISIBLE);
+ optionsPart.setVisibility(View.GONE);
picturesPart.setVisibility(View.GONE);
// Redraw barcode due to size change (Visibility.GONE sets it to 0)
- generateOrHideBarcode();
+ generateBarcode();
+ } else if (getString(R.string.options).equals(part)) {
+ cardPart.setVisibility(View.GONE);
+ optionsPart.setVisibility(View.VISIBLE);
+ picturesPart.setVisibility(View.GONE);
} else if (getString(R.string.photos).equals(part)) {
cardPart.setVisibility(View.GONE);
- barcodePart.setVisibility(View.GONE);
+ optionsPart.setVisibility(View.GONE);
picturesPart.setVisibility(View.VISIBLE);
-
- // Explicitly hide barcode (fixes blurriness on redraw)
- hideBarcode();
} else {
throw new UnsupportedOperationException();
}
diff --git a/app/src/main/res/layout/loyalty_card_edit_activity.xml b/app/src/main/res/layout/loyalty_card_edit_activity.xml
index cbc3e5aa8..30c964b33 100644
--- a/app/src/main/res/layout/loyalty_card_edit_activity.xml
+++ b/app/src/main/res/layout/loyalty_card_edit_activity.xml
@@ -39,7 +39,7 @@
+ android:text="@string/options"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hide details
on Weblate
Select a card
+ Options