From 608d334947050e39c6e9cc72183eb51e7027bd75 Mon Sep 17 00:00:00 2001 From: ligi Date: Mon, 15 Sep 2014 20:32:33 +0200 Subject: [PATCH] alternative text for barcodes --- .../model/AppleStylePassReader.java | 7 ++++++- .../org/ligi/passandroid/model/BarCode.java | 10 ++++++++++ .../ligi/passandroid/ui/PassViewActivity.java | 18 +++++++++++------- .../res/layout/activity_pass_view_base.xml | 6 ++++++ 4 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/ligi/passandroid/model/AppleStylePassReader.java b/src/main/java/org/ligi/passandroid/model/AppleStylePassReader.java index 8b97127e..301c6c06 100644 --- a/src/main/java/org/ligi/passandroid/model/AppleStylePassReader.java +++ b/src/main/java/org/ligi/passandroid/model/AppleStylePassReader.java @@ -92,7 +92,12 @@ public class AppleStylePassReader { final String barcodeFormatString = barcode_json.getString("format"); final BarcodeFormat barcodeFormat = BarCode.getFormatFromString(barcodeFormatString); - pass.setBarCode(new BarCode(barcodeFormat, barcode_json.getString("message"))); + final BarCode barCode = new BarCode(barcodeFormat, barcode_json.getString("message")); + pass.setBarCode(barCode); + + if (barcode_json.has("altText")) { + pass.getBarCode().get().setAlternativeText(barcode_json.getString("altText")); + } // TODO should check a bit more with barcode here - this can be dangerous diff --git a/src/main/java/org/ligi/passandroid/model/BarCode.java b/src/main/java/org/ligi/passandroid/model/BarCode.java index 26b4316f..9d6b0a27 100644 --- a/src/main/java/org/ligi/passandroid/model/BarCode.java +++ b/src/main/java/org/ligi/passandroid/model/BarCode.java @@ -2,6 +2,7 @@ package org.ligi.passandroid.model; import android.graphics.Bitmap; +import com.google.common.base.Optional; import com.google.zxing.BarcodeFormat; import org.ligi.passandroid.Tracker; @@ -14,10 +15,12 @@ import java.util.Locale; public class BarCode implements Serializable { private final BarcodeFormat barcodeFormat; private final String barcodeMessage; + private Optional alternativeText; public BarCode(BarcodeFormat barcodeFormat, String barcodeMessage) { this.barcodeFormat = barcodeFormat; this.barcodeMessage = barcodeMessage; + alternativeText = Optional.absent(); } public Bitmap getBitmap(final int size) { @@ -54,5 +57,12 @@ public class BarCode implements Serializable { } + public void setAlternativeText(final String alternativeText) { + this.alternativeText = Optional.fromNullable(alternativeText); + } + + public Optional getAlternativeText() { + return alternativeText; + } } diff --git a/src/main/java/org/ligi/passandroid/ui/PassViewActivity.java b/src/main/java/org/ligi/passandroid/ui/PassViewActivity.java index 49a6d794..2aecd59f 100644 --- a/src/main/java/org/ligi/passandroid/ui/PassViewActivity.java +++ b/src/main/java/org/ligi/passandroid/ui/PassViewActivity.java @@ -53,6 +53,10 @@ public class PassViewActivity extends PassViewActivityBase { @InjectView(R.id.main_fields) TextView front_tv; + @InjectView(R.id.barcode_alt_text) + TextView barcodeAlternatvieText; + + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -90,20 +94,20 @@ public class PassViewActivity extends PassViewActivityBase { ButterKnife.inject(this); - if (pass.getBarCode().isPresent()) { - - barcode_img.setVisibility(View.VISIBLE); - } else { - barcode_img.setVisibility(View.GONE); - } - if (pass.getBarCode().isPresent()) { final int smallestSide = AXT.at(getWindowManager()).getSmallestSide(); final Bitmap bitmap = pass.getBarCode().get().getBitmap(smallestSide / 3); setBitmapSafe(barcode_img, Optional.fromNullable(bitmap)); + if (pass.getBarCode().get().getAlternativeText().isPresent()) { + barcodeAlternatvieText.setText(pass.getBarCode().get().getAlternativeText().get()); + barcodeAlternatvieText.setVisibility(View.VISIBLE); + } else { + barcodeAlternatvieText.setVisibility(View.GONE); + } } else { setBitmapSafe(barcode_img, Optional.absent()); } + setBitmapSafe(logo_img, pass.getLogoBitmap()); logo_img.setBackgroundColor(pass.getBackGroundColor()); diff --git a/src/main/res/layout/activity_pass_view_base.xml b/src/main/res/layout/activity_pass_view_base.xml index b621780e..2b0a73eb 100644 --- a/src/main/res/layout/activity_pass_view_base.xml +++ b/src/main/res/layout/activity_pass_view_base.xml @@ -34,6 +34,12 @@ android:layout_gravity="center_horizontal" /> + +