Allow barcodeless cards

This commit is contained in:
Sylvia van Os
2019-12-04 15:59:49 +01:00
parent e0d85f9c8d
commit 33b84ad4c3
7 changed files with 58 additions and 35 deletions

View File

@@ -116,6 +116,9 @@ public class BarcodeSelectorActivity extends AppCompatActivity
ImageView image = findViewById(barcodeViewMap.get(key));
createBarcodeOption(image, key, s.toString());
}
View noBarcodeButtonView = findViewById(R.id.noBarcode);
setButtonListener(noBarcodeButtonView, s.toString());
}
@Override
@@ -134,6 +137,21 @@ public class BarcodeSelectorActivity extends AppCompatActivity
}
}
private void setButtonListener(final View button, final String cardId)
{
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "Selected no barcode");
Intent result = new Intent();
result.putExtra(BARCODE_FORMAT, "");
result.putExtra(BARCODE_CONTENTS, cardId);
BarcodeSelectorActivity.this.setResult(RESULT_OK, result);
finish();
}
});
}
private void createBarcodeOption(final ImageView image, final String formatType, final String cardId)
{
final BarcodeFormat format = BarcodeFormat.valueOf(formatType);

View File

@@ -370,7 +370,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
return;
}
if(cardId.isEmpty() || barcodeType.isEmpty())
if(cardId.isEmpty())
{
Snackbar.make(cardIdFieldView, R.string.noCardIdError, Snackbar.LENGTH_LONG).show();
return;
@@ -480,7 +480,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
}
if(contents != null && contents.isEmpty() == false &&
format != null && format.isEmpty() == false)
format != null)
{
Log.i(TAG, "Read barcode id: " + contents);
Log.i(TAG, "Read format: " + format);

View File

@@ -118,7 +118,7 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
}
String formatString = loyaltyCard.barcodeType;
final BarcodeFormat format = BarcodeFormat.valueOf(formatString);
final BarcodeFormat format = !formatString.isEmpty() ? BarcodeFormat.valueOf(formatString) : null;
final String cardIdString = loyaltyCard.cardId;
cardIdFieldView.setText(loyaltyCard.cardId);
@@ -165,37 +165,44 @@ public class LoyaltyCardViewActivity extends AppCompatActivity
collapsingToolbarLayout.setBackgroundColor(backgroundHeaderColor);
if(barcodeImage.getHeight() == 0)
if(format != null)
{
Log.d(TAG, "ImageView size is not known known at start, waiting for load");
// The size of the ImageView is not yet available as it has not
// yet been drawn. Wait for it to be drawn so the size is available.
barcodeImage.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
findViewById(R.id.barcode).setVisibility(View.VISIBLE);
if(barcodeImage.getHeight() == 0)
{
Log.d(TAG, "ImageView size is not known known at start, waiting for load");
// The size of the ImageView is not yet available as it has not
// yet been drawn. Wait for it to be drawn so the size is available.
barcodeImage.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener()
{
if (Build.VERSION.SDK_INT < 16)
@Override
public void onGlobalLayout()
{
barcodeImage.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
else
{
barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
if (Build.VERSION.SDK_INT < 16)
{
barcodeImage.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
else
{
barcodeImage.getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
Log.d(TAG, "ImageView size now known");
new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute();
}
});
Log.d(TAG, "ImageView size now known");
new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute();
}
});
}
else
{
Log.d(TAG, "ImageView size known known, creating barcode");
new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute();
}
}
else
{
Log.d(TAG, "ImageView size known known, creating barcode");
new BarcodeImageWriterTask(barcodeImage, cardIdString, format).execute();
findViewById(R.id.barcode).setVisibility(View.GONE);
}
}
@Override

View File

@@ -196,10 +196,11 @@
android:contentDescription="@string/barcodeImageDescription"
android:layout_weight="1.0"/>
</LinearLayout>
<Button
android:id="@+id/noBarcode"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/barcodeNoBarcode" />
</LinearLayout>
</ScrollView>
</android.support.design.widget.CoordinatorLayout>

View File

@@ -47,7 +47,7 @@
android:layout_height="0dp"
android:layout_marginLeft="10.0dip"
android:layout_marginRight="10.0dip"
app:layout_constraintTop_toBottomOf="@id/centerGuideline"
app:layout_constraintTop_toBottomOf="@+id/barcode"
app:layout_constraintBottom_toTopOf="@+id/noteViewDivider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -12,6 +12,7 @@
<string name="note">Note</string>
<string name="cardId">Card ID</string>
<string name="barcodeType">Barcode Type</string>
<string name="barcodeNoBarcode">This card has no barcode</string>
<string name="cancel">Cancel</string>
<string name="save">Save</string>

View File

@@ -246,10 +246,6 @@ public class LoyaltyCardViewActivityTest
noteField.setText("note");
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
cardIdField.setText("cardId");
shadowActivity.clickMenuItem(R.id.action_save);
assertEquals(0, db.getLoyaltyCardCount());
}
@Test