mirror of
https://github.com/CatimaLoyalty/Android.git
synced 2026-03-30 21:31:50 -04:00
Support for returning images from PkpassParser
This commit is contained in:
@@ -66,7 +66,7 @@ public class CardShortcutConfigure extends CatimaAppCompatActivity implements Lo
|
||||
private void onClickAction(int position) {
|
||||
Cursor selected = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.All);
|
||||
selected.moveToPosition(position);
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(selected);
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(CardShortcutConfigure.this, selected);
|
||||
|
||||
Log.d(TAG, "Creating shortcut for card " + loyaltyCard.store + "," + loyaltyCard.id);
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
|
||||
Cursor loyaltyCardCursor = DBHelper.getLoyaltyCardCursor(mDatabase, DBHelper.LoyaltyCardArchiveFilter.Unarchived);
|
||||
return subscriber -> {
|
||||
while (loyaltyCardCursor.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(loyaltyCardCursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(this, loyaltyCardCursor);
|
||||
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
.putExtra(LoyaltyCardViewActivity.BUNDLE_ID, card.id);
|
||||
@@ -69,7 +69,7 @@ public class CardsOnPowerScreenService extends ControlsProviderService {
|
||||
for (String controlId : controlIds) {
|
||||
Control control;
|
||||
Integer cardId = this.controlIdToCardId(controlId);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, cardId);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(this, mDatabase, cardId);
|
||||
if (card != null) {
|
||||
Intent openIntent = new Intent(this, LoyaltyCardViewActivity.class)
|
||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
|
||||
@@ -332,10 +332,10 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||
Set<String> files = new HashSet<>();
|
||||
Cursor cardCursor = getLoyaltyCardCursor(database);
|
||||
while (cardCursor.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
|
||||
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
|
||||
String name = Utils.getCardImageFileName(card.id, imageLocationType);
|
||||
if (Utils.retrieveCardImageAsFile(context, name).exists()) {
|
||||
if (card.getImageForImageLocationType(imageLocationType) != null) {
|
||||
files.add(name);
|
||||
}
|
||||
}
|
||||
@@ -535,14 +535,14 @@ public class DBHelper extends SQLiteOpenHelper {
|
||||
return (rowsUpdated == 1);
|
||||
}
|
||||
|
||||
public static LoyaltyCard getLoyaltyCard(SQLiteDatabase database, final int id) {
|
||||
public static LoyaltyCard getLoyaltyCard(Context context, SQLiteDatabase database, final int id) {
|
||||
Cursor data = database.query(LoyaltyCardDbIds.TABLE, null, whereAttrs(LoyaltyCardDbIds.ID), withArgs(id), null, null, null);
|
||||
|
||||
LoyaltyCard card = null;
|
||||
|
||||
if (data.getCount() == 1) {
|
||||
data.moveToFirst();
|
||||
card = LoyaltyCard.fromCursor(data);
|
||||
card = LoyaltyCard.fromCursor(context, data);
|
||||
}
|
||||
|
||||
data.close();
|
||||
|
||||
@@ -125,7 +125,26 @@ public class ImportURIHelper {
|
||||
headerColor = Integer.parseInt(unparsedHeaderColor);
|
||||
}
|
||||
|
||||
return new LoyaltyCard(-1, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100, 0);
|
||||
return new LoyaltyCard(
|
||||
-1,
|
||||
store,
|
||||
note,
|
||||
validFrom,
|
||||
expiry,
|
||||
balance,
|
||||
balanceType,
|
||||
cardId,
|
||||
barcodeId,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
0,
|
||||
Utils.getUnixTime(),
|
||||
100,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
} catch (NumberFormatException | UnsupportedEncodingException | ArrayIndexOutOfBoundsException ex) {
|
||||
throw new InvalidObjectException("Not a valid import URI");
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package protect.card_locker;
|
||||
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
import android.graphics.Bitmap;
|
||||
import android.os.Bundle;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -14,7 +14,7 @@ import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class LoyaltyCard implements Parcelable {
|
||||
public class LoyaltyCard {
|
||||
public int id;
|
||||
public String store;
|
||||
public String note;
|
||||
@@ -37,6 +37,13 @@ public class LoyaltyCard implements Parcelable {
|
||||
public int zoomLevel;
|
||||
public int archiveStatus;
|
||||
|
||||
@Nullable
|
||||
public Bitmap imageThumbnail;
|
||||
@Nullable
|
||||
public Bitmap imageFront;
|
||||
@Nullable
|
||||
public Bitmap imageBack;
|
||||
|
||||
public static final String BUNDLE_LOYALTY_CARD_ID = "loyaltyCardId";
|
||||
public static final String BUNDLE_LOYALTY_CARD_STORE = "loyaltyCardStore";
|
||||
public static final String BUNDLE_LOYALTY_CARD_NOTE = "loyaltyCardNote";
|
||||
@@ -52,6 +59,13 @@ public class LoyaltyCard implements Parcelable {
|
||||
public static final String BUNDLE_LOYALTY_CARD_LAST_USED = "loyaltyCardLastUsed";
|
||||
public static final String BUNDLE_LOYALTY_CARD_ZOOM_LEVEL = "loyaltyCardZoomLevel";
|
||||
public static final String BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS = "loyaltyCardArchiveStatus";
|
||||
public static final String BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL = "loyaltyCardImageThumbnail";
|
||||
public static final String BUNDLE_LOYALTY_CARD_IMAGE_FRONT = "loyaltyCardImageFront";
|
||||
public static final String BUNDLE_LOYALTY_CARD_IMAGE_BACK = "loyaltyCardImageBack";
|
||||
|
||||
private static final String TEMP_IMAGE_THUMBNAIL_FILE_NAME = "loyaltyCardTempImageThumbnailFileName";
|
||||
private static final String TEMP_IMAGE_FRONT_FILE_NAME = "loyaltyCardTempImageFrontFileName";
|
||||
private static final String TEMP_IMAGE_BACK_FILE_NAME = "loyaltyCardTempImageBackFileName";
|
||||
|
||||
/**
|
||||
* Create a loyalty card object with default values
|
||||
@@ -72,6 +86,9 @@ public class LoyaltyCard implements Parcelable {
|
||||
setLastUsed(Utils.getUnixTime());
|
||||
setZoomLevel(100);
|
||||
setArchiveStatus(0);
|
||||
setImageThumbnail(null);
|
||||
setImageFront(null);
|
||||
setImageBack(null);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -97,7 +114,8 @@ public class LoyaltyCard implements Parcelable {
|
||||
@Nullable final Date expiry, final BigDecimal balance, @Nullable final Currency balanceType,
|
||||
final String cardId, @Nullable final String barcodeId, @Nullable final CatimaBarcode barcodeType,
|
||||
@Nullable final Integer headerColor, final int starStatus,
|
||||
final long lastUsed, final int zoomLevel, final int archiveStatus) {
|
||||
final long lastUsed, final int zoomLevel, final int archiveStatus,
|
||||
@Nullable Bitmap imageThumbnail, @Nullable Bitmap imageFront, @Nullable Bitmap imageBack) {
|
||||
setId(id);
|
||||
setStore(store);
|
||||
setNote(note);
|
||||
@@ -113,6 +131,9 @@ public class LoyaltyCard implements Parcelable {
|
||||
setLastUsed(lastUsed);
|
||||
setZoomLevel(zoomLevel);
|
||||
setArchiveStatus(archiveStatus);
|
||||
setImageThumbnail(imageThumbnail);
|
||||
setImageFront(imageFront);
|
||||
setImageBack(imageBack);
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
@@ -187,60 +208,32 @@ public class LoyaltyCard implements Parcelable {
|
||||
this.archiveStatus = archiveStatus;
|
||||
}
|
||||
|
||||
protected LoyaltyCard(Parcel in) {
|
||||
setId(in.readInt());
|
||||
setStore(Objects.requireNonNull(in.readString()));
|
||||
setNote(Objects.requireNonNull(in.readString()));
|
||||
long tmpValidFrom = in.readLong();
|
||||
setValidFrom(tmpValidFrom > 0 ? new Date(tmpValidFrom) : null);
|
||||
long tmpExpiry = in.readLong();
|
||||
setExpiry(tmpExpiry > 0 ? new Date(tmpExpiry) : null);
|
||||
setBalance((BigDecimal) in.readValue(BigDecimal.class.getClassLoader()));
|
||||
setBalanceType((Currency) in.readValue(Currency.class.getClassLoader()));
|
||||
setCardId(Objects.requireNonNull(in.readString()));
|
||||
setBarcodeId(in.readString());
|
||||
String tmpBarcodeType = in.readString();
|
||||
setBarcodeType((tmpBarcodeType != null && !tmpBarcodeType.isEmpty()) ? CatimaBarcode.fromName(tmpBarcodeType) : null);
|
||||
int tmpHeaderColor = in.readInt();
|
||||
setHeaderColor(tmpHeaderColor != -1 ? tmpHeaderColor : null);
|
||||
setStarStatus(in.readInt());
|
||||
setLastUsed(in.readLong());
|
||||
setZoomLevel(in.readInt());
|
||||
setArchiveStatus(in.readInt());
|
||||
public void setImageThumbnail(@Nullable Bitmap imageThumbnail) {
|
||||
this.imageThumbnail = imageThumbnail;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel parcel, int flags) {
|
||||
parcel.writeInt(id);
|
||||
parcel.writeString(store);
|
||||
parcel.writeString(note);
|
||||
parcel.writeLong(validFrom != null ? validFrom.getTime() : -1);
|
||||
parcel.writeLong(expiry != null ? expiry.getTime() : -1);
|
||||
parcel.writeValue(balance);
|
||||
parcel.writeValue(balanceType);
|
||||
parcel.writeString(cardId);
|
||||
parcel.writeString(barcodeId);
|
||||
parcel.writeString(barcodeType != null ? barcodeType.name() : "");
|
||||
parcel.writeInt(headerColor != null ? headerColor : -1);
|
||||
parcel.writeInt(starStatus);
|
||||
parcel.writeLong(lastUsed);
|
||||
parcel.writeInt(zoomLevel);
|
||||
parcel.writeInt(archiveStatus);
|
||||
public void setImageFront(@Nullable Bitmap imageFront) {
|
||||
this.imageFront = imageFront;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public static LoyaltyCard fromBundle(Bundle bundle, boolean requireFull) {
|
||||
// Grab default card
|
||||
LoyaltyCard loyaltyCard = new LoyaltyCard();
|
||||
|
||||
// Update from bundle
|
||||
loyaltyCard.updateFromBundle(bundle, requireFull);
|
||||
|
||||
// Return updated version
|
||||
return loyaltyCard;
|
||||
public void setImageBack(@Nullable Bitmap imageBack) {
|
||||
this.imageBack = imageBack;
|
||||
}
|
||||
|
||||
public void updateFromBundle(@NonNull Bundle bundle, boolean requireFull) {
|
||||
@Nullable
|
||||
public Bitmap getImageForImageLocationType(ImageLocationType imageLocationType) {
|
||||
if (imageLocationType == ImageLocationType.icon) {
|
||||
return imageThumbnail;
|
||||
} else if (imageLocationType == ImageLocationType.front) {
|
||||
return imageFront;
|
||||
} else if (imageLocationType == ImageLocationType.back) {
|
||||
return imageBack;
|
||||
}
|
||||
|
||||
throw new IllegalArgumentException("Unknown image location type");
|
||||
}
|
||||
|
||||
public void updateFromBundle(@NonNull Context context, @NonNull Bundle bundle, boolean requireFull) {
|
||||
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_ID)) {
|
||||
setId(bundle.getInt(BUNDLE_LOYALTY_CARD_ID));
|
||||
} else if (requireFull) {
|
||||
@@ -321,9 +314,39 @@ public class LoyaltyCard implements Parcelable {
|
||||
} else if (requireFull) {
|
||||
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS);
|
||||
}
|
||||
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL)) {
|
||||
String tempImageName = bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL);
|
||||
if (tempImageName != null) {
|
||||
setImageThumbnail(Utils.loadTempImage(context, tempImageName));
|
||||
} else {
|
||||
setImageThumbnail(null);
|
||||
}
|
||||
} else if (requireFull) {
|
||||
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL);
|
||||
}
|
||||
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_FRONT)) {
|
||||
String tempImageName = bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT);
|
||||
if (tempImageName != null) {
|
||||
setImageFront(Utils.loadTempImage(context, tempImageName));
|
||||
} else {
|
||||
setImageFront(null);
|
||||
}
|
||||
} else if (requireFull) {
|
||||
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_FRONT);
|
||||
}
|
||||
if (bundle.containsKey(BUNDLE_LOYALTY_CARD_IMAGE_BACK)) {
|
||||
String tempImageName = bundle.getString(BUNDLE_LOYALTY_CARD_IMAGE_BACK);
|
||||
if (tempImageName != null) {
|
||||
setImageBack(Utils.loadTempImage(context, tempImageName));
|
||||
} else {
|
||||
setImageBack(null);
|
||||
}
|
||||
} else if (requireFull) {
|
||||
throw new IllegalArgumentException("Missing key " + BUNDLE_LOYALTY_CARD_IMAGE_BACK);
|
||||
}
|
||||
}
|
||||
|
||||
public Bundle toBundle(List<String> exportLimit) {
|
||||
public Bundle toBundle(Context context, List<String> exportLimit) {
|
||||
boolean exportIsLimited = !exportLimit.isEmpty();
|
||||
|
||||
Bundle bundle = new Bundle();
|
||||
@@ -373,11 +396,37 @@ public class LoyaltyCard implements Parcelable {
|
||||
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS)) {
|
||||
bundle.putInt(BUNDLE_LOYALTY_CARD_ARCHIVE_STATUS, archiveStatus);
|
||||
}
|
||||
// There is an (undocumented) size limit to bundles of around 2MB(?), when going over it you will experience a random crash
|
||||
// So, instead of storing the bitmaps directly, we write the bitmap to a temp file and store the path
|
||||
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL)) {
|
||||
if (imageThumbnail != null) {
|
||||
Utils.saveTempImage(context, imageThumbnail, TEMP_IMAGE_THUMBNAIL_FILE_NAME, Bitmap.CompressFormat.PNG);
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL, TEMP_IMAGE_THUMBNAIL_FILE_NAME);
|
||||
} else {
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_THUMBNAIL, null);
|
||||
}
|
||||
}
|
||||
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_FRONT)) {
|
||||
if (imageFront != null) {
|
||||
Utils.saveTempImage(context, imageFront, TEMP_IMAGE_FRONT_FILE_NAME, Bitmap.CompressFormat.PNG);
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT, TEMP_IMAGE_FRONT_FILE_NAME);
|
||||
} else {
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_FRONT, null);
|
||||
}
|
||||
}
|
||||
if (!exportIsLimited || exportLimit.contains(BUNDLE_LOYALTY_CARD_IMAGE_BACK)) {
|
||||
if (imageBack != null) {
|
||||
Utils.saveTempImage(context, imageBack, TEMP_IMAGE_BACK_FILE_NAME, Bitmap.CompressFormat.PNG);
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_BACK, TEMP_IMAGE_BACK_FILE_NAME);
|
||||
} else {
|
||||
bundle.putString(BUNDLE_LOYALTY_CARD_IMAGE_BACK, null);
|
||||
}
|
||||
}
|
||||
|
||||
return bundle;
|
||||
}
|
||||
|
||||
public static LoyaltyCard fromCursor(Cursor cursor) {
|
||||
public static LoyaltyCard fromCursor(Context context, Cursor cursor) {
|
||||
// id
|
||||
int id = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ID));
|
||||
// store
|
||||
@@ -414,11 +463,37 @@ public class LoyaltyCard implements Parcelable {
|
||||
int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL));
|
||||
// archiveStatus
|
||||
int archiveStatus = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS));
|
||||
// imageThumbnail
|
||||
Bitmap imageThumbnail = Utils.retrieveCardImage(context, id, ImageLocationType.icon);
|
||||
// imageFront
|
||||
Bitmap imageFront = Utils.retrieveCardImage(context, id, ImageLocationType.front);
|
||||
// imageBack
|
||||
Bitmap imageBack = Utils.retrieveCardImage(context, id, ImageLocationType.back);
|
||||
|
||||
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed, zoomLevel, archiveStatus);
|
||||
return new LoyaltyCard(
|
||||
id,
|
||||
store,
|
||||
note,
|
||||
validFrom,
|
||||
expiry,
|
||||
balance,
|
||||
balanceType,
|
||||
cardId,
|
||||
barcodeId,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
starStatus,
|
||||
lastUsed,
|
||||
zoomLevel,
|
||||
archiveStatus,
|
||||
imageThumbnail,
|
||||
imageFront,
|
||||
imageBack
|
||||
);
|
||||
}
|
||||
|
||||
public static boolean isDuplicate(final LoyaltyCard a, final LoyaltyCard b) {
|
||||
// Note: Bitmap comparing is slow, be careful when calling this method
|
||||
// Skip lastUsed & zoomLevel
|
||||
return a.id == b.id && // non-nullable int
|
||||
a.store.equals(b.store) && // non-nullable String
|
||||
@@ -433,12 +508,23 @@ public class LoyaltyCard implements Parcelable {
|
||||
b.barcodeType == null ? null : b.barcodeType.format()) && // nullable CatimaBarcode with no overridden .equals(), so we need to check .format()
|
||||
Utils.equals(a.headerColor, b.headerColor) && // nullable Integer
|
||||
a.starStatus == b.starStatus && // non-nullable int
|
||||
a.archiveStatus == b.archiveStatus; // non-nullable int
|
||||
a.archiveStatus == b.archiveStatus && // non-nullable int
|
||||
nullableBitmapsEqual(a.imageThumbnail, b.imageThumbnail) && // nullable Bitmap
|
||||
nullableBitmapsEqual(a.imageFront, b.imageFront) && // nullable Bitmap
|
||||
nullableBitmapsEqual(a.imageBack, b.imageBack); // nullable Bitmap
|
||||
}
|
||||
|
||||
@Override
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
public static boolean nullableBitmapsEqual(@Nullable Bitmap a, @Nullable Bitmap b) {
|
||||
if (a == null && b == null) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (a != null && b != null) {
|
||||
return a.sameAs(b);
|
||||
}
|
||||
|
||||
// One is null and the other isn't, so it's not equal
|
||||
return false;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -447,7 +533,8 @@ public class LoyaltyCard implements Parcelable {
|
||||
return String.format(
|
||||
"LoyaltyCard{%n id=%s,%n store=%s,%n note=%s,%n validFrom=%s,%n expiry=%s,%n"
|
||||
+ " balance=%s,%n balanceType=%s,%n cardId=%s,%n barcodeId=%s,%n barcodeType=%s,%n"
|
||||
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n archiveStatus=%s%n}",
|
||||
+ " headerColor=%s,%n starStatus=%s,%n lastUsed=%s,%n zoomLevel=%s,%n archiveStatus=%s%n"
|
||||
+ " imageThumbnail=%s,%n imageFront=%s,%n imageBack=%s,%n}",
|
||||
this.id,
|
||||
this.store,
|
||||
this.note,
|
||||
@@ -462,19 +549,10 @@ public class LoyaltyCard implements Parcelable {
|
||||
this.starStatus,
|
||||
this.lastUsed,
|
||||
this.zoomLevel,
|
||||
this.archiveStatus
|
||||
this.archiveStatus,
|
||||
this.imageThumbnail,
|
||||
this.imageFront,
|
||||
this.imageBack
|
||||
);
|
||||
}
|
||||
|
||||
public static final Creator<LoyaltyCard> CREATOR = new Creator<LoyaltyCard>() {
|
||||
@Override
|
||||
public LoyaltyCard createFromParcel(Parcel in) {
|
||||
return new LoyaltyCard(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LoyaltyCard[] newArray(int size) {
|
||||
return new LoyaltyCard[size];
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,7 +80,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
|
||||
public LoyaltyCard getCard(int position) {
|
||||
mCursor.moveToPosition(position);
|
||||
return LoyaltyCard.fromCursor(mCursor);
|
||||
return LoyaltyCard.fromCursor(mContext, mCursor);
|
||||
}
|
||||
|
||||
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
|
||||
@@ -88,7 +88,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
boolean showDivider = false;
|
||||
inputHolder.mDivider.setVisibility(View.GONE);
|
||||
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(inputCursor);
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(mContext, inputCursor);
|
||||
Bitmap icon = Utils.retrieveCardImage(mContext, loyaltyCard.id, ImageLocationType.icon);
|
||||
|
||||
if (mLoyaltyCardListDisplayOptions.showingNameBelowThumbnail() && icon != null) {
|
||||
@@ -193,7 +193,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter<LoyaltyCardCurso
|
||||
int i;
|
||||
for (i = 0; i < mSelectedItems.size(); i++) {
|
||||
mCursor.moveToPosition(mSelectedItems.keyAt(i));
|
||||
result.add(LoyaltyCard.fromCursor(mCursor));
|
||||
result.add(LoyaltyCard.fromCursor(mContext, mCursor));
|
||||
}
|
||||
|
||||
return result;
|
||||
|
||||
@@ -93,15 +93,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
private final String STATE_TAB_INDEX = "savedTab";
|
||||
private final String STATE_TEMP_CARD = "tempLoyaltyCard";
|
||||
private final String STATE_TEMP_CARD_FIELD = "tempLoyaltyCardField";
|
||||
private final String STATE_REQUESTED_IMAGE = "requestedImage";
|
||||
private final String STATE_FRONT_IMAGE_UNSAVED = "frontImageUnsaved";
|
||||
private final String STATE_BACK_IMAGE_UNSAVED = "backImageUnsaved";
|
||||
private final String STATE_ICON_UNSAVED = "iconUnsaved";
|
||||
private final String STATE_UPDATE_LOYALTY_CARD = "updateLoyaltyCard";
|
||||
private final String STATE_HAS_CHANGED = "hasChange";
|
||||
private final String STATE_FRONT_IMAGE_REMOVED = "frontImageRemoved";
|
||||
private final String STATE_BACK_IMAGE_REMOVED = "backImageRemoved";
|
||||
private final String STATE_ICON_REMOVED = "iconRemoved";
|
||||
private final String STATE_OPEN_SET_ICON_MENU = "openSetIconMenu";
|
||||
|
||||
private static final String PICK_DATE_REQUEST_KEY = "pick_date_request";
|
||||
@@ -111,11 +104,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
private final String TEMP_CROP_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_crop_image.png";
|
||||
private final Bitmap.CompressFormat TEMP_CROP_IMAGE_FORMAT = Bitmap.CompressFormat.PNG;
|
||||
|
||||
private final String TEMP_UNSAVED_FRONT_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_front_image.png";
|
||||
private final String TEMP_UNSAVED_BACK_IMAGE_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_back_image.png";
|
||||
private final String TEMP_UNSAVED_ICON_NAME = LoyaltyCardEditActivity.class.getSimpleName() + "_icon.png";
|
||||
private final Bitmap.CompressFormat TEMP_UNSAVED_IMAGE_FORMAT = Bitmap.CompressFormat.PNG;
|
||||
|
||||
private static final int PERMISSION_REQUEST_CAMERA_IMAGE_FRONT = 100;
|
||||
private static final int PERMISSION_REQUEST_CAMERA_IMAGE_BACK = 101;
|
||||
private static final int PERMISSION_REQUEST_CAMERA_IMAGE_ICON = 102;
|
||||
@@ -185,17 +173,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
ActivityResultLauncher<Intent> mCropperLauncher;
|
||||
int mRequestedImage = 0;
|
||||
int mCropperFinishedType = 0;
|
||||
UCrop.Options mCropperOptions;
|
||||
|
||||
boolean mFrontImageUnsaved = false;
|
||||
boolean mBackImageUnsaved = false;
|
||||
boolean mIconUnsaved = false;
|
||||
|
||||
boolean mFrontImageRemoved = false;
|
||||
boolean mBackImageRemoved = false;
|
||||
boolean mIconRemoved = false;
|
||||
|
||||
final private TaskHandler mTasks = new TaskHandler();
|
||||
|
||||
// store system locale for Build.VERSION.SDK_INT < Build.VERSION_CODES.N
|
||||
@@ -288,7 +267,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
// If we have to import a loyalty card, do so
|
||||
if (updateLoyaltyCard || duplicateFromLoyaltyCardId) {
|
||||
tempLoyaltyCard = DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId);
|
||||
tempLoyaltyCard = DBHelper.getLoyaltyCard(this, mDatabase, loyaltyCardId);
|
||||
if (tempLoyaltyCard == null) {
|
||||
Log.w(TAG, "Could not lookup loyalty card " + loyaltyCardId);
|
||||
Toast.makeText(this, R.string.noCardExistsError, Toast.LENGTH_LONG).show();
|
||||
@@ -307,7 +286,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
// If the intent contains any loyalty card fields, override those fields in our current temp card
|
||||
if (b != null) {
|
||||
tempLoyaltyCard.updateFromBundle(b, false);
|
||||
tempLoyaltyCard.updateFromBundle(this, b, false);
|
||||
}
|
||||
|
||||
Log.d(TAG, "Edit activity: id=" + loyaltyCardId
|
||||
@@ -321,56 +300,28 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
super.onSaveInstanceState(savedInstanceState);
|
||||
tabs = binding.tabs;
|
||||
savedInstanceState.putInt(STATE_TAB_INDEX, tabs.getSelectedTabPosition());
|
||||
savedInstanceState.putParcelable(STATE_TEMP_CARD, tempLoyaltyCard);
|
||||
savedInstanceState.putBundle(STATE_TEMP_CARD, tempLoyaltyCard.toBundle(this, new ArrayList<>()));
|
||||
savedInstanceState.putSerializable(STATE_TEMP_CARD_FIELD, tempLoyaltyCardField);
|
||||
savedInstanceState.putInt(STATE_REQUESTED_IMAGE, mRequestedImage);
|
||||
|
||||
Object cardImageFrontObj = cardImageFront.getTag();
|
||||
if (mFrontImageUnsaved && (cardImageFrontObj instanceof Bitmap) && Utils.saveTempImage(this, (Bitmap) cardImageFrontObj, TEMP_UNSAVED_FRONT_IMAGE_NAME, TEMP_UNSAVED_IMAGE_FORMAT) != null) {
|
||||
savedInstanceState.putInt(STATE_FRONT_IMAGE_UNSAVED, 1);
|
||||
} else {
|
||||
savedInstanceState.putInt(STATE_FRONT_IMAGE_UNSAVED, 0);
|
||||
}
|
||||
|
||||
Object cardImageBackObj = cardImageBack.getTag();
|
||||
if (mBackImageUnsaved && (cardImageBackObj instanceof Bitmap) && Utils.saveTempImage(this, (Bitmap) cardImageBackObj, TEMP_UNSAVED_BACK_IMAGE_NAME, TEMP_UNSAVED_IMAGE_FORMAT) != null) {
|
||||
savedInstanceState.putInt(STATE_BACK_IMAGE_UNSAVED, 1);
|
||||
} else {
|
||||
savedInstanceState.putInt(STATE_BACK_IMAGE_UNSAVED, 0);
|
||||
}
|
||||
|
||||
Object thumbnailObj = thumbnail.getTag();
|
||||
if (mIconUnsaved && (thumbnailObj instanceof Bitmap) && Utils.saveTempImage(this, (Bitmap) thumbnailObj, TEMP_UNSAVED_ICON_NAME, TEMP_UNSAVED_IMAGE_FORMAT) != null) {
|
||||
savedInstanceState.putInt(STATE_ICON_UNSAVED, 1);
|
||||
} else {
|
||||
savedInstanceState.putInt(STATE_ICON_UNSAVED, 0);
|
||||
}
|
||||
|
||||
savedInstanceState.putInt(STATE_UPDATE_LOYALTY_CARD, updateLoyaltyCard ? 1 : 0);
|
||||
savedInstanceState.putInt(STATE_HAS_CHANGED, hasChanged ? 1 : 0);
|
||||
savedInstanceState.putInt(STATE_FRONT_IMAGE_REMOVED, mFrontImageRemoved ? 1 : 0);
|
||||
savedInstanceState.putInt(STATE_BACK_IMAGE_REMOVED, mBackImageRemoved ? 1 : 0);
|
||||
savedInstanceState.putInt(STATE_ICON_REMOVED, mIconRemoved ? 1 : 0);
|
||||
savedInstanceState.putInt(STATE_OPEN_SET_ICON_MENU, openSetIconMenu ? 1 : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
|
||||
onRestoring = true;
|
||||
tempLoyaltyCard = savedInstanceState.getParcelable(STATE_TEMP_CARD);
|
||||
tempLoyaltyCard = new LoyaltyCard();
|
||||
Bundle tempCardBundle = savedInstanceState.getBundle(STATE_TEMP_CARD);
|
||||
if (tempCardBundle != null) {
|
||||
tempLoyaltyCard.updateFromBundle(this, tempCardBundle, true);
|
||||
}
|
||||
tempLoyaltyCardField = (LoyaltyCardField) savedInstanceState.getSerializable(STATE_TEMP_CARD_FIELD);
|
||||
super.onRestoreInstanceState(savedInstanceState);
|
||||
tabs = binding.tabs;
|
||||
tabs.selectTab(tabs.getTabAt(savedInstanceState.getInt(STATE_TAB_INDEX)));
|
||||
mRequestedImage = savedInstanceState.getInt(STATE_REQUESTED_IMAGE);
|
||||
mFrontImageUnsaved = savedInstanceState.getInt(STATE_FRONT_IMAGE_UNSAVED) == 1;
|
||||
mBackImageUnsaved = savedInstanceState.getInt(STATE_BACK_IMAGE_UNSAVED) == 1;
|
||||
mIconUnsaved = savedInstanceState.getInt(STATE_ICON_UNSAVED) == 1;
|
||||
updateLoyaltyCard = savedInstanceState.getInt(STATE_UPDATE_LOYALTY_CARD) == 1;
|
||||
hasChanged = savedInstanceState.getInt(STATE_HAS_CHANGED) == 1;
|
||||
mFrontImageRemoved = savedInstanceState.getInt(STATE_FRONT_IMAGE_REMOVED) == 1;
|
||||
mBackImageRemoved = savedInstanceState.getInt(STATE_BACK_IMAGE_REMOVED) == 1;
|
||||
mIconRemoved = savedInstanceState.getInt(STATE_ICON_REMOVED) == 1;
|
||||
openSetIconMenu = savedInstanceState.getInt(STATE_OPEN_SET_ICON_MENU) == 1;
|
||||
}
|
||||
|
||||
@@ -425,7 +376,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
setLoyaltyCardStore(storeName);
|
||||
generateIcon(storeName);
|
||||
|
||||
if (storeName.length() == 0) {
|
||||
if (storeName.isEmpty()) {
|
||||
storeFieldEdit.setError(getString(R.string.field_must_not_be_empty));
|
||||
} else {
|
||||
storeFieldEdit.setError(null);
|
||||
@@ -705,7 +656,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
tempLoyaltyCard.updateFromBundle(resultIntentBundle, false);
|
||||
tempLoyaltyCard.updateFromBundle(this, resultIntentBundle, false);
|
||||
generateBarcode();
|
||||
hasChanged = true;
|
||||
}
|
||||
@@ -727,20 +678,13 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
if (bitmap != null) {
|
||||
if (requestedFrontImage()) {
|
||||
mFrontImageRemoved = false;
|
||||
mFrontImageUnsaved = true;
|
||||
setCardImage(cardImageFront, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
|
||||
setCardImage(ImageLocationType.front, cardImageFront, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
|
||||
} else if (requestedBackImage()) {
|
||||
mBackImageRemoved = false;
|
||||
mBackImageUnsaved = true;
|
||||
setCardImage(cardImageBack, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
|
||||
setCardImage(ImageLocationType.back, cardImageBack, Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_BIG), true);
|
||||
} else {
|
||||
mIconRemoved = false;
|
||||
mIconUnsaved = true;
|
||||
setThumbnailImage(Utils.resizeBitmap(bitmap, Utils.BITMAP_SIZE_SMALL));
|
||||
}
|
||||
Log.d("cropper", "mRequestedImage: " + mRequestedImage);
|
||||
mCropperFinishedType = mRequestedImage;
|
||||
hasChanged = true;
|
||||
} else {
|
||||
Toast.makeText(LoyaltyCardEditActivity.this, R.string.errorReadingImage, Toast.LENGTH_LONG).show();
|
||||
@@ -813,26 +757,14 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
return mRequestedImage == Utils.CARD_IMAGE_FROM_CAMERA_FRONT || mRequestedImage == Utils.CARD_IMAGE_FROM_FILE_FRONT;
|
||||
}
|
||||
|
||||
private boolean croppedFrontImage() {
|
||||
return mCropperFinishedType == Utils.CARD_IMAGE_FROM_CAMERA_FRONT || mCropperFinishedType == Utils.CARD_IMAGE_FROM_FILE_FRONT;
|
||||
}
|
||||
|
||||
private boolean requestedBackImage() {
|
||||
return mRequestedImage == Utils.CARD_IMAGE_FROM_CAMERA_BACK || mRequestedImage == Utils.CARD_IMAGE_FROM_FILE_BACK;
|
||||
}
|
||||
|
||||
private boolean croppedBackImage() {
|
||||
return mCropperFinishedType == Utils.CARD_IMAGE_FROM_CAMERA_BACK || mCropperFinishedType == Utils.CARD_IMAGE_FROM_FILE_BACK;
|
||||
}
|
||||
|
||||
private boolean requestedIcon() {
|
||||
return mRequestedImage == Utils.CARD_IMAGE_FROM_CAMERA_ICON || mRequestedImage == Utils.CARD_IMAGE_FROM_FILE_ICON;
|
||||
}
|
||||
|
||||
private boolean croppedIcon() {
|
||||
return mCropperFinishedType == Utils.CARD_IMAGE_FROM_CAMERA_ICON || mCropperFinishedType == Utils.CARD_IMAGE_FROM_FILE_ICON;
|
||||
}
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
@Override
|
||||
protected void onResume() {
|
||||
@@ -842,40 +774,12 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
|
||||
onResuming = true;
|
||||
|
||||
if (!initDone) {
|
||||
if (updateLoyaltyCard) {
|
||||
setTitle(R.string.editCardTitle);
|
||||
} else {
|
||||
setTitle(R.string.addCardTitle);
|
||||
}
|
||||
|
||||
if (updateLoyaltyCard || duplicateFromLoyaltyCardId) {
|
||||
if (!mFrontImageUnsaved && !croppedFrontImage() && !mFrontImageRemoved) {
|
||||
setCardImage(cardImageFront, Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.front), true);
|
||||
}
|
||||
if (!mBackImageUnsaved && !croppedBackImage() && !mBackImageRemoved) {
|
||||
setCardImage(cardImageBack, Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.back), true);
|
||||
}
|
||||
if (!mIconUnsaved && !croppedIcon() && !mIconRemoved) {
|
||||
setThumbnailImage(Utils.retrieveCardImage(this, tempLoyaltyCard.id, ImageLocationType.icon));
|
||||
}
|
||||
} else {
|
||||
setTitle(R.string.addCardTitle);
|
||||
}
|
||||
|
||||
if (mFrontImageUnsaved && !croppedFrontImage()) {
|
||||
setCardImage(cardImageFront, Utils.loadTempImage(this, TEMP_UNSAVED_FRONT_IMAGE_NAME), true);
|
||||
}
|
||||
if (mBackImageUnsaved && !croppedBackImage()) {
|
||||
setCardImage(cardImageBack, Utils.loadTempImage(this, TEMP_UNSAVED_BACK_IMAGE_NAME), true);
|
||||
}
|
||||
if (mIconUnsaved && !croppedIcon()) {
|
||||
setThumbnailImage(Utils.loadTempImage(this, TEMP_UNSAVED_ICON_NAME));
|
||||
}
|
||||
if (updateLoyaltyCard) {
|
||||
setTitle(R.string.editCardTitle);
|
||||
} else {
|
||||
setTitle(R.string.addCardTitle);
|
||||
}
|
||||
|
||||
mCropperFinishedType = 0;
|
||||
|
||||
boolean hadChanges = hasChanged;
|
||||
|
||||
storeFieldEdit.setText(tempLoyaltyCard.store);
|
||||
@@ -961,6 +865,10 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
setThumbnailImage(tempLoyaltyCard.imageThumbnail);
|
||||
setCardImage(ImageLocationType.front, cardImageFront, tempLoyaltyCard.imageFront, true);
|
||||
setCardImage(ImageLocationType.back, cardImageBack, tempLoyaltyCard.imageBack, true);
|
||||
|
||||
// Initialization has finished
|
||||
if (!initDone) {
|
||||
initDone = true;
|
||||
@@ -1000,7 +908,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
}
|
||||
|
||||
protected void setThumbnailImage(@Nullable Bitmap bitmap) {
|
||||
setCardImage(thumbnail, bitmap, false);
|
||||
setCardImage(ImageLocationType.icon, thumbnail, bitmap, false);
|
||||
|
||||
if (bitmap != null) {
|
||||
int headerColor = Utils.getHeaderColorFromImage(bitmap, Utils.getHeaderColor(this, tempLoyaltyCard));
|
||||
@@ -1021,8 +929,16 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
}
|
||||
}
|
||||
|
||||
protected void setCardImage(ImageView imageView, Bitmap bitmap, boolean applyFallback) {
|
||||
imageView.setTag(bitmap);
|
||||
protected void setCardImage(ImageLocationType imageLocationType, ImageView imageView, Bitmap bitmap, boolean applyFallback) {
|
||||
if (imageLocationType == ImageLocationType.icon) {
|
||||
tempLoyaltyCard.setImageThumbnail(bitmap);
|
||||
} else if (imageLocationType == ImageLocationType.front) {
|
||||
tempLoyaltyCard.setImageFront(bitmap);
|
||||
} else if (imageLocationType == ImageLocationType.back) {
|
||||
tempLoyaltyCard.setImageBack(bitmap);
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown image type");
|
||||
}
|
||||
|
||||
if (bitmap != null) {
|
||||
imageView.setImageBitmap(bitmap);
|
||||
@@ -1279,30 +1195,30 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
class ChooseCardImage implements View.OnClickListener {
|
||||
@Override
|
||||
public void onClick(View v) throws NoSuchElementException {
|
||||
Bitmap currentImage;
|
||||
ImageLocationType imageLocationType;
|
||||
ImageView targetView;
|
||||
|
||||
if (v.getId() == R.id.frontImageHolder) {
|
||||
currentImage = tempLoyaltyCard.imageFront;
|
||||
imageLocationType = ImageLocationType.front;
|
||||
targetView = cardImageFront;
|
||||
} else if (v.getId() == R.id.backImageHolder) {
|
||||
currentImage = tempLoyaltyCard.imageBack;
|
||||
imageLocationType = ImageLocationType.back;
|
||||
targetView = cardImageBack;
|
||||
} else if (v.getId() == R.id.thumbnail) {
|
||||
currentImage = tempLoyaltyCard.imageThumbnail;
|
||||
imageLocationType = ImageLocationType.icon;
|
||||
targetView = thumbnail;
|
||||
} else {
|
||||
throw new IllegalArgumentException("Invalid IMAGE ID " + v.getId());
|
||||
}
|
||||
|
||||
LinkedHashMap<String, Callable<Void>> cardOptions = new LinkedHashMap<>();
|
||||
if (targetView.getTag() != null && v.getId() != R.id.thumbnail) {
|
||||
if (currentImage != null && v.getId() != R.id.thumbnail) {
|
||||
cardOptions.put(getString(R.string.removeImage), () -> {
|
||||
if (targetView == cardImageFront) {
|
||||
mFrontImageRemoved = true;
|
||||
mFrontImageUnsaved = false;
|
||||
} else {
|
||||
mBackImageRemoved = true;
|
||||
mBackImageUnsaved = false;
|
||||
}
|
||||
|
||||
setCardImage(targetView, null, true);
|
||||
setCardImage(imageLocationType, targetView, null, true);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
@@ -1358,21 +1274,17 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
});
|
||||
|
||||
if (v.getId() == R.id.thumbnail) {
|
||||
if (cardImageFront.getTag() instanceof Bitmap) {
|
||||
if (tempLoyaltyCard.imageFront != null) {
|
||||
cardOptions.put(getString(R.string.useFrontImage), () -> {
|
||||
mIconRemoved = false;
|
||||
mIconUnsaved = true;
|
||||
setThumbnailImage(Utils.resizeBitmap((Bitmap) cardImageFront.getTag(), Utils.BITMAP_SIZE_SMALL));
|
||||
setThumbnailImage(Utils.resizeBitmap(tempLoyaltyCard.imageFront, Utils.BITMAP_SIZE_SMALL));
|
||||
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
if (cardImageBack.getTag() instanceof Bitmap) {
|
||||
if (tempLoyaltyCard.imageBack != null) {
|
||||
cardOptions.put(getString(R.string.useBackImage), () -> {
|
||||
mIconRemoved = false;
|
||||
mIconUnsaved = true;
|
||||
setThumbnailImage(Utils.resizeBitmap((Bitmap) cardImageBack.getTag(), Utils.BITMAP_SIZE_SMALL));
|
||||
setThumbnailImage(Utils.resizeBitmap(tempLoyaltyCard.imageBack, Utils.BITMAP_SIZE_SMALL));
|
||||
|
||||
return null;
|
||||
});
|
||||
@@ -1423,8 +1335,6 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
setLoyaltyCardHeaderColor(color);
|
||||
|
||||
// Unset image if set
|
||||
mIconRemoved = true;
|
||||
mIconUnsaved = false;
|
||||
setThumbnailImage(null);
|
||||
}
|
||||
|
||||
@@ -1602,16 +1512,16 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
}
|
||||
|
||||
try {
|
||||
Utils.saveCardImage(this, (Bitmap) cardImageFront.getTag(), loyaltyCardId, ImageLocationType.front);
|
||||
Utils.saveCardImage(this, (Bitmap) cardImageBack.getTag(), loyaltyCardId, ImageLocationType.back);
|
||||
Utils.saveCardImage(this, (Bitmap) thumbnail.getTag(), loyaltyCardId, ImageLocationType.icon);
|
||||
Utils.saveCardImage(this, tempLoyaltyCard.imageFront, loyaltyCardId, ImageLocationType.front);
|
||||
Utils.saveCardImage(this, tempLoyaltyCard.imageBack, loyaltyCardId, ImageLocationType.back);
|
||||
Utils.saveCardImage(this, tempLoyaltyCard.imageThumbnail, loyaltyCardId, ImageLocationType.icon);
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
DBHelper.setLoyaltyCardGroups(mDatabase, loyaltyCardId, selectedGroups);
|
||||
|
||||
ShortcutHelper.updateShortcuts(this, DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId));
|
||||
ShortcutHelper.updateShortcuts(this, DBHelper.getLoyaltyCard(this, mDatabase, loyaltyCardId));
|
||||
|
||||
if (duplicateFromLoyaltyCardId) {
|
||||
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
|
||||
@@ -1745,7 +1655,7 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity implements
|
||||
return;
|
||||
}
|
||||
|
||||
if (thumbnail.getTag() == null) {
|
||||
if (tempLoyaltyCard.imageThumbnail == null) {
|
||||
thumbnail.setBackgroundColor(tempLoyaltyCard.headerColor);
|
||||
|
||||
LetterBitmap letterBitmap = Utils.generateIcon(this, store, tempLoyaltyCard.headerColor);
|
||||
|
||||
@@ -660,7 +660,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements
|
||||
window.setAttributes(attributes);
|
||||
}
|
||||
|
||||
loyaltyCard = DBHelper.getLoyaltyCard(database, loyaltyCardId);
|
||||
loyaltyCard = DBHelper.getLoyaltyCard(this, database, loyaltyCardId);
|
||||
if (loyaltyCard == null) {
|
||||
Log.w(TAG, "Could not lookup loyalty card " + loyaltyCardId);
|
||||
Toast.makeText(this, R.string.noCardExistsError, Toast.LENGTH_LONG).show();
|
||||
|
||||
@@ -429,7 +429,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard
|
||||
@Override
|
||||
public void onUserChoseParseResult(ParseResult parseResult) {
|
||||
Intent intent = new Intent(getApplicationContext(), LoyaltyCardEditActivity.class);
|
||||
Bundle bundle = parseResult.toLoyaltyCardBundle();
|
||||
Bundle bundle = parseResult.toLoyaltyCardBundle(MainActivity.this);
|
||||
if (group != null) {
|
||||
bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, group);
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class ManageGroupCursorAdapter extends LoyaltyCardCursorAdapter {
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(LoyaltyCardListItemViewHolder inputHolder, Cursor inputCursor) {
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(inputCursor);
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(mContext, inputCursor);
|
||||
Boolean overlayValue = mInGroupOverlay.get(loyaltyCard.id);
|
||||
if ((overlayValue != null ? overlayValue : isLoyaltyCardInGroup(loyaltyCard.id))) {
|
||||
mAnimationItemsIndex.put(inputCursor.getPosition(), true);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package protect.card_locker
|
||||
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
|
||||
class ParseResult(
|
||||
@@ -7,9 +8,9 @@ class ParseResult(
|
||||
val loyaltyCard: LoyaltyCard) {
|
||||
var note: String? = null
|
||||
|
||||
fun toLoyaltyCardBundle(): Bundle {
|
||||
fun toLoyaltyCardBundle(context: Context): Bundle {
|
||||
when (parseResultType) {
|
||||
ParseResultType.FULL -> return loyaltyCard.toBundle(listOf())
|
||||
ParseResultType.FULL -> return loyaltyCard.toBundle(context, listOf())
|
||||
ParseResultType.BARCODE_ONLY -> {
|
||||
val defaultLoyaltyCard = LoyaltyCard()
|
||||
defaultLoyaltyCard.setBarcodeId(null)
|
||||
@@ -17,6 +18,7 @@ class ParseResult(
|
||||
defaultLoyaltyCard.setCardId(loyaltyCard.cardId)
|
||||
|
||||
return defaultLoyaltyCard.toBundle(
|
||||
context,
|
||||
listOf(
|
||||
LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_ID,
|
||||
LoyaltyCard.BUNDLE_LOYALTY_CARD_BARCODE_TYPE,
|
||||
|
||||
@@ -125,7 +125,10 @@ class PkpassParser(context: Context, uri: Uri?) {
|
||||
starStatus,
|
||||
lastUsed,
|
||||
zoomLevel,
|
||||
archiveStatus
|
||||
archiveStatus,
|
||||
image,
|
||||
null,
|
||||
null
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -299,7 +299,7 @@ public class ScanActivity extends CatimaAppCompatActivity {
|
||||
|
||||
private void returnResult(ParseResult parseResult) {
|
||||
Intent result = new Intent();
|
||||
Bundle bundle = parseResult.toLoyaltyCardBundle();
|
||||
Bundle bundle = parseResult.toLoyaltyCardBundle(ScanActivity.this);
|
||||
if (addGroup != null) {
|
||||
bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, addGroup);
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ class ShortcutHelper {
|
||||
for (int index = 0; index < list.size(); index++) {
|
||||
ShortcutInfoCompat prevShortcut = list.get(index);
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(database, Integer.parseInt(prevShortcut.getId()));
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(context, database, Integer.parseInt(prevShortcut.getId()));
|
||||
|
||||
// skip outdated cards that no longer exist
|
||||
if (loyaltyCard != null) {
|
||||
|
||||
@@ -176,7 +176,6 @@ public class Utils {
|
||||
}
|
||||
|
||||
static public List<ParseResult> retrieveBarcodesFromPkPass(Context context, Uri uri) {
|
||||
// FIXME: Also return image
|
||||
Log.i(TAG, "Received Pkpass file with possible barcode");
|
||||
if (uri == null) {
|
||||
Log.e(TAG, "Pkpass did not contain any data");
|
||||
@@ -836,7 +835,7 @@ public class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
public static Bitmap loadImage(String path) {
|
||||
public static @Nullable Bitmap loadImage(String path) {
|
||||
try {
|
||||
return BitmapFactory.decodeStream(new FileInputStream(path));
|
||||
} catch (IOException e) {
|
||||
@@ -845,7 +844,7 @@ public class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
public static Bitmap loadTempImage(Context context, String name) {
|
||||
public static @Nullable Bitmap loadTempImage(Context context, String name) {
|
||||
return loadImage(context.getCacheDir() + "/" + name);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ public class CatimaExporter implements Exporter {
|
||||
// Generate CSV
|
||||
ByteArrayOutputStream catimaOutputStream = new ByteArrayOutputStream();
|
||||
OutputStreamWriter catimaOutputStreamWriter = new OutputStreamWriter(catimaOutputStream, StandardCharsets.UTF_8);
|
||||
writeCSV(database, catimaOutputStreamWriter);
|
||||
writeCSV(context, database, catimaOutputStreamWriter);
|
||||
|
||||
// Add CSV to zip file
|
||||
ZipParameters csvZipParameters = createZipParameters("catima.csv", password);
|
||||
@@ -64,12 +64,12 @@ public class CatimaExporter implements Exporter {
|
||||
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
|
||||
while (cardCursor.moveToNext()) {
|
||||
// For each card
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
|
||||
|
||||
// For each image
|
||||
for (ImageLocationType imageLocationType : ImageLocationType.values()) {
|
||||
// If it exists, add to the .zip file
|
||||
Bitmap image = Utils.retrieveCardImage(context, card.id, imageLocationType);
|
||||
Bitmap image = card.getImageForImageLocationType(imageLocationType);
|
||||
if (image != null) {
|
||||
ZipParameters imageZipParameters = createZipParameters(Utils.getCardImageFileName(card.id, imageLocationType), password);
|
||||
zipOutputStream.putNextEntry(imageZipParameters);
|
||||
@@ -95,7 +95,7 @@ public class CatimaExporter implements Exporter {
|
||||
return zipParameters;
|
||||
}
|
||||
|
||||
private void writeCSV(SQLiteDatabase database, OutputStreamWriter output) throws IOException, InterruptedException {
|
||||
private void writeCSV(Context context, SQLiteDatabase database, OutputStreamWriter output) throws IOException, InterruptedException {
|
||||
CSVPrinter printer = new CSVPrinter(output, CSVFormat.RFC4180);
|
||||
|
||||
// Print the version
|
||||
@@ -142,7 +142,7 @@ public class CatimaExporter implements Exporter {
|
||||
Cursor cardCursor = DBHelper.getLoyaltyCardCursor(database);
|
||||
|
||||
while (cardCursor.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor);
|
||||
|
||||
printer.printRecord(card.id,
|
||||
card.store,
|
||||
@@ -176,7 +176,7 @@ public class CatimaExporter implements Exporter {
|
||||
Cursor cardCursor2 = DBHelper.getLoyaltyCardCursor(database);
|
||||
|
||||
while (cardCursor2.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cardCursor2);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(context, cardCursor2);
|
||||
|
||||
for (Group group : DBHelper.getLoyaltyCardGroups(database, card.id)) {
|
||||
printer.printRecord(card.id, group._id);
|
||||
|
||||
@@ -124,7 +124,7 @@ public class CatimaImporter implements Importer {
|
||||
Set<String> existingImages = DBHelper.imageFiles(context, database);
|
||||
|
||||
for (LoyaltyCard card : data.cards) {
|
||||
LoyaltyCard existing = DBHelper.getLoyaltyCard(database, card.id);
|
||||
LoyaltyCard existing = DBHelper.getLoyaltyCard(context, database, card.id);
|
||||
if (existing == null) {
|
||||
DBHelper.insertLoyaltyCard(database, card.id, card.store, card.note, card.validFrom, card.expiry, card.balance, card.balanceType,
|
||||
card.cardId, card.barcodeId, card.barcodeType, card.headerColor, card.starStatus, card.lastUsed, card.archiveStatus);
|
||||
@@ -490,7 +490,26 @@ public class CatimaImporter implements Importer {
|
||||
// We catch this exception so we can still import old backups
|
||||
}
|
||||
|
||||
return new LoyaltyCard(id, store, note, validFrom, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
|
||||
return new LoyaltyCard(
|
||||
id,
|
||||
store,
|
||||
note,
|
||||
validFrom,
|
||||
expiry,
|
||||
balance,
|
||||
balanceType,
|
||||
cardId,
|
||||
barcodeId,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
starStatus,
|
||||
lastUsed,
|
||||
DBHelper.DEFAULT_ZOOM_LEVEL,
|
||||
archiveStatus,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -149,7 +149,26 @@ public class FidmeImporter implements Importer {
|
||||
// TODO: Front and back image
|
||||
|
||||
// use -1 for the ID, it will be ignored when inserting the card into the DB
|
||||
return new LoyaltyCard(-1, store, note, null, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, starStatus, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, archiveStatus);
|
||||
return new LoyaltyCard(
|
||||
-1,
|
||||
store,
|
||||
note,
|
||||
null,
|
||||
null,
|
||||
BigDecimal.valueOf(0),
|
||||
null,
|
||||
cardId,
|
||||
null,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
starStatus,
|
||||
Utils.getUnixTime(),
|
||||
DBHelper.DEFAULT_ZOOM_LEVEL,
|
||||
archiveStatus,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
}
|
||||
|
||||
public void saveAndDeduplicate(SQLiteDatabase database, final ImportedData data) {
|
||||
|
||||
@@ -354,7 +354,26 @@ public class StocardImporter implements Importer {
|
||||
|
||||
long lastUsed = record.lastUsed != null ? record.lastUsed : Utils.getUnixTime();
|
||||
|
||||
LoyaltyCard card = new LoyaltyCard(tempID, store, note, null, null, BigDecimal.valueOf(0), null, record.cardId, null, barcodeType, headerColor, 0, lastUsed, DBHelper.DEFAULT_ZOOM_LEVEL, 0);
|
||||
LoyaltyCard card = new LoyaltyCard(
|
||||
tempID,
|
||||
store,
|
||||
note,
|
||||
null,
|
||||
null,
|
||||
BigDecimal.valueOf(0),
|
||||
null,
|
||||
record.cardId,
|
||||
null,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
0,
|
||||
lastUsed,
|
||||
DBHelper.DEFAULT_ZOOM_LEVEL,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
);
|
||||
importedData.cards.add(card);
|
||||
|
||||
Map<ImageLocationType, Bitmap> images = new HashMap<>();
|
||||
|
||||
@@ -151,7 +151,26 @@ public class VoucherVaultImporter implements Importer {
|
||||
}
|
||||
|
||||
// use -1 for the ID, it will be ignored when inserting the card into the DB
|
||||
importedData.cards.add(new LoyaltyCard(-1, store, "", null, expiry, balance, balanceType, cardId, null, barcodeType, headerColor, 0, Utils.getUnixTime(), DBHelper.DEFAULT_ZOOM_LEVEL, 0));
|
||||
importedData.cards.add(new LoyaltyCard(
|
||||
-1,
|
||||
store,
|
||||
"",
|
||||
null,
|
||||
expiry,
|
||||
balance,
|
||||
balanceType,
|
||||
cardId,
|
||||
null,
|
||||
barcodeType,
|
||||
headerColor,
|
||||
0,
|
||||
Utils.getUnixTime(),
|
||||
DBHelper.DEFAULT_ZOOM_LEVEL,
|
||||
0,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
));
|
||||
}
|
||||
|
||||
return importedData;
|
||||
|
||||
@@ -46,7 +46,7 @@ public class DatabaseTest {
|
||||
assertTrue(result);
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1);
|
||||
assertNotNull(loyaltyCard);
|
||||
assertEquals("store", loyaltyCard.store);
|
||||
assertEquals("note", loyaltyCard.note);
|
||||
@@ -64,7 +64,7 @@ public class DatabaseTest {
|
||||
result = DBHelper.deleteLoyaltyCard(mDatabase, mActivity, 1);
|
||||
assertTrue(result);
|
||||
assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
assertNull(DBHelper.getLoyaltyCard(mDatabase, 1));
|
||||
assertNull(DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -78,7 +78,7 @@ public class DatabaseTest {
|
||||
assertTrue(result);
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1);
|
||||
assertNotNull(loyaltyCard);
|
||||
assertEquals("store1", loyaltyCard.store);
|
||||
assertEquals("note1", loyaltyCard.note);
|
||||
@@ -105,7 +105,7 @@ public class DatabaseTest {
|
||||
assertTrue(result);
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1);
|
||||
assertNotNull(loyaltyCard);
|
||||
assertEquals("store", loyaltyCard.store);
|
||||
assertEquals("note", loyaltyCard.note);
|
||||
@@ -138,7 +138,7 @@ public class DatabaseTest {
|
||||
assertTrue(result);
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1);
|
||||
assertNotNull(loyaltyCard);
|
||||
assertEquals("", loyaltyCard.store);
|
||||
assertEquals("", loyaltyCard.note);
|
||||
@@ -480,7 +480,7 @@ public class DatabaseTest {
|
||||
dbHelper.onUpgrade(database, DBHelper.ORIGINAL_DATABASE_VERSION, DBHelper.DATABASE_VERSION);
|
||||
|
||||
// Determine that the entries are queryable and the fields are correct
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(database, newCardId);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), database, newCardId);
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
@@ -496,7 +496,7 @@ public class DatabaseTest {
|
||||
assertEquals(100, card.zoomLevel);
|
||||
|
||||
// Determine that the entries are queryable and the fields are correct
|
||||
LoyaltyCard card2 = DBHelper.getLoyaltyCard(database, newCardId2);
|
||||
LoyaltyCard card2 = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), database, newCardId2);
|
||||
assertEquals("store", card2.store);
|
||||
assertEquals("", card2.note);
|
||||
assertEquals(null, card2.validFrom);
|
||||
@@ -523,7 +523,7 @@ public class DatabaseTest {
|
||||
assertTrue(result);
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard loyaltyCard = DBHelper.getLoyaltyCard(mActivity.getApplicationContext(), mDatabase, 1);
|
||||
assertNotNull(loyaltyCard);
|
||||
assertEquals("store", loyaltyCard.store);
|
||||
assertEquals("note", loyaltyCard.note);
|
||||
|
||||
@@ -94,7 +94,7 @@ public class ImportExportTest {
|
||||
boolean result = (id != -1);
|
||||
assertTrue(result);
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, (int) id);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, (int) id);
|
||||
assertEquals("No Expiry", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
@@ -111,7 +111,7 @@ public class ImportExportTest {
|
||||
result = (id != -1);
|
||||
assertTrue(result);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, (int) id);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, (int) id);
|
||||
assertEquals("Past", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
@@ -128,7 +128,7 @@ public class ImportExportTest {
|
||||
result = (id != -1);
|
||||
assertTrue(result);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, (int) id);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, (int) id);
|
||||
assertEquals("Today", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
@@ -148,7 +148,7 @@ public class ImportExportTest {
|
||||
result = (id != -1);
|
||||
assertTrue(result);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, (int) id);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, (int) id);
|
||||
assertEquals("Future", card.store);
|
||||
assertEquals("", card.note);
|
||||
assertEquals(null, card.validFrom);
|
||||
@@ -174,7 +174,7 @@ public class ImportExportTest {
|
||||
int index = 1;
|
||||
|
||||
while (cursor.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
|
||||
String expectedStore = String.format("store, \"%4d", index);
|
||||
String expectedNote = String.format("note, \"%4d", index);
|
||||
@@ -200,7 +200,7 @@ public class ImportExportTest {
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
|
||||
while (cursor.moveToNext()) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
|
||||
// ID goes up for duplicates (b/c the cursor orders by store), down for originals
|
||||
int index = card.id > numCards ? card.id - numCards : numCards - card.id + 1;
|
||||
@@ -236,7 +236,7 @@ public class ImportExportTest {
|
||||
|
||||
while (index < 10) {
|
||||
cursor.moveToNext();
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
|
||||
String expectedStore = String.format("store, \"%4d", index);
|
||||
String expectedNote = String.format("note, \"%4d", index);
|
||||
@@ -258,7 +258,7 @@ public class ImportExportTest {
|
||||
|
||||
index = 1;
|
||||
while (cursor.moveToNext() && index < 5) {
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(cursor);
|
||||
LoyaltyCard card = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
|
||||
String expectedStore = String.format("store, \"%4d", index);
|
||||
String expectedNote = String.format("note, \"%4d", index);
|
||||
@@ -649,7 +649,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -675,7 +675,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -713,7 +713,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -739,7 +739,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -765,7 +765,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -798,7 +798,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("store", card.store);
|
||||
assertEquals("note", card.note);
|
||||
@@ -831,7 +831,7 @@ public class ImportExportTest {
|
||||
|
||||
// Create card 1
|
||||
int loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 1", "Note 1", new Date(1601510400), new Date(1618053234), new BigDecimal("100"), Currency.getInstance("USD"), "1234", "5432", CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), 1, 0, null,0);
|
||||
loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId));
|
||||
loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, loyaltyCardId));
|
||||
DBHelper.insertGroup(mDatabase, "One");
|
||||
List<Group> groups = Arrays.asList(DBHelper.getGroup(mDatabase, "One"));
|
||||
DBHelper.setLoyaltyCardGroups(mDatabase, loyaltyCardId, groups);
|
||||
@@ -845,7 +845,7 @@ public class ImportExportTest {
|
||||
|
||||
// Create card 2
|
||||
loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 2", "", null, null, new BigDecimal(0), null, "123456", null, null, 2, 1, null,0);
|
||||
loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId));
|
||||
loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, loyaltyCardId));
|
||||
|
||||
// Export everything
|
||||
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
|
||||
@@ -863,7 +863,7 @@ public class ImportExportTest {
|
||||
for (Integer loyaltyCardID : loyaltyCardHashMap.keySet()) {
|
||||
LoyaltyCard loyaltyCard = loyaltyCardHashMap.get(loyaltyCardID);
|
||||
|
||||
LoyaltyCard dbLoyaltyCard = DBHelper.getLoyaltyCard(mDatabase, loyaltyCardID);
|
||||
LoyaltyCard dbLoyaltyCard = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, loyaltyCardID);
|
||||
|
||||
assertEquals(loyaltyCard.id, dbLoyaltyCard.id);
|
||||
assertEquals(loyaltyCard.store, dbLoyaltyCard.store);
|
||||
@@ -950,7 +950,7 @@ public class ImportExportTest {
|
||||
assertEquals(Arrays.asList(8, 6), DBHelper.getGroupCardIds(mDatabase, "Fashion"));
|
||||
|
||||
// Check all cards
|
||||
LoyaltyCard card1 = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card1 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("Card 1", card1.store);
|
||||
assertEquals("Note 1", card1.note);
|
||||
@@ -967,7 +967,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card1.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card8 = DBHelper.getLoyaltyCard(mDatabase, 8);
|
||||
LoyaltyCard card8 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 8);
|
||||
|
||||
assertEquals("Clothes Store", card8.store);
|
||||
assertEquals("Note about store", card8.note);
|
||||
@@ -984,7 +984,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card8.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card2 = DBHelper.getLoyaltyCard(mDatabase, 2);
|
||||
LoyaltyCard card2 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2);
|
||||
|
||||
assertEquals("Department Store", card2.store);
|
||||
assertEquals("", card2.note);
|
||||
@@ -1001,7 +1001,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card2.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card3 = DBHelper.getLoyaltyCard(mDatabase, 3);
|
||||
LoyaltyCard card3 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 3);
|
||||
|
||||
assertEquals("Grocery Store", card3.store);
|
||||
assertEquals("Multiline note about grocery store\n\nwith blank line", card3.note);
|
||||
@@ -1018,7 +1018,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card3.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card4 = DBHelper.getLoyaltyCard(mDatabase, 4);
|
||||
LoyaltyCard card4 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 4);
|
||||
|
||||
assertEquals("Pharmacy", card4.store);
|
||||
assertEquals("", card4.note);
|
||||
@@ -1035,7 +1035,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card4.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card5 = DBHelper.getLoyaltyCard(mDatabase, 5);
|
||||
LoyaltyCard card5 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 5);
|
||||
|
||||
assertEquals("Restaurant", card5.store);
|
||||
assertEquals("Note about restaurant here", card5.note);
|
||||
@@ -1052,7 +1052,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, ImageLocationType.back));
|
||||
assertEquals(null, Utils.retrieveCardImage(activity.getApplicationContext(), card5.id, ImageLocationType.icon));
|
||||
|
||||
LoyaltyCard card6 = DBHelper.getLoyaltyCard(mDatabase, 6);
|
||||
LoyaltyCard card6 = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 6);
|
||||
|
||||
assertEquals("Shoe Store", card6.store);
|
||||
assertEquals("", card6.note);
|
||||
@@ -1081,7 +1081,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(3, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("Hema", card.store);
|
||||
assertEquals("2021-03-24 18:35:08 UTC", card.note);
|
||||
@@ -1094,7 +1094,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, card.barcodeType);
|
||||
assertEquals(0, card.starStatus);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 2);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2);
|
||||
|
||||
assertEquals("test", card.store);
|
||||
assertEquals("Test\n2021-03-24 18:34:19 UTC", card.note);
|
||||
@@ -1107,7 +1107,7 @@ public class ImportExportTest {
|
||||
assertEquals(null, card.barcodeType);
|
||||
assertEquals(0, card.starStatus);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 3);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 3);
|
||||
|
||||
assertEquals("Albert Heijn", card.store);
|
||||
assertEquals("Bonus Kaart\n2021-03-24 16:47:47 UTC\nFirst Last", card.note);
|
||||
@@ -1138,7 +1138,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(3, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("Air Miles", card.store);
|
||||
assertEquals("szjsbs", card.note);
|
||||
@@ -1156,7 +1156,7 @@ public class ImportExportTest {
|
||||
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-back.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.back)));
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.icon));
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 2);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2);
|
||||
|
||||
assertEquals("GAMMA", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1174,7 +1174,7 @@ public class ImportExportTest {
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.back));
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.icon));
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 3);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 3);
|
||||
|
||||
assertEquals("jö", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1205,7 +1205,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(4, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("Foo", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1223,7 +1223,7 @@ public class ImportExportTest {
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.back));
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 1, ImageLocationType.icon));
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 2);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2);
|
||||
|
||||
assertEquals("Air Miles", card.store);
|
||||
assertEquals("szjsbs\nMiles", card.note);
|
||||
@@ -1241,7 +1241,7 @@ public class ImportExportTest {
|
||||
assertTrue(BitmapFactory.decodeStream(getClass().getResourceAsStream("stocard-back.jpg")).sameAs(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.back)));
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 2, ImageLocationType.icon));
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 3);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 3);
|
||||
|
||||
assertEquals("GAMMA", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1259,7 +1259,7 @@ public class ImportExportTest {
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, ImageLocationType.back));
|
||||
assertNull(Utils.retrieveCardImage(activity.getApplicationContext(), 3, ImageLocationType.icon));
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 4);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 4);
|
||||
|
||||
assertEquals("jö", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1289,7 +1289,7 @@ public class ImportExportTest {
|
||||
assertEquals(ImportExportResultType.Success, result.resultType());
|
||||
assertEquals(2, DBHelper.getLoyaltyCardCount(mDatabase));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
assertEquals("Clothes Store", card.store);
|
||||
assertEquals("", card.note);
|
||||
@@ -1303,7 +1303,7 @@ public class ImportExportTest {
|
||||
assertEquals(Color.GRAY, (long) card.headerColor);
|
||||
assertEquals(0, card.starStatus);
|
||||
|
||||
card = DBHelper.getLoyaltyCard(mDatabase, 2);
|
||||
card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 2);
|
||||
|
||||
assertEquals("Department Store", card.store);
|
||||
assertEquals("", card.note);
|
||||
|
||||
@@ -25,12 +25,13 @@ import java.util.Date;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
public class ImportURITest {
|
||||
private Activity activity;
|
||||
private ImportURIHelper importURIHelper;
|
||||
private SQLiteDatabase mDatabase;
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
Activity activity = Robolectric.setupActivity(MainActivity.class);
|
||||
activity = Robolectric.setupActivity(MainActivity.class);
|
||||
importURIHelper = new ImportURIHelper(activity);
|
||||
mDatabase = TestHelpers.getEmptyDb(activity).getWritableDatabase();
|
||||
}
|
||||
@@ -43,7 +44,7 @@ public class ImportURITest {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "This note contains evil symbols like & and = that will break the parser if not escaped right $#!%()*+;:á", date, date, new BigDecimal("100"), null, BarcodeFormat.UPC_E.toString(), BarcodeFormat.UPC_A.toString(), CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), Color.BLACK, 1, null,0);
|
||||
|
||||
// Get card
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
// Card to URI
|
||||
Uri cardUri = importURIHelper.toUri(card);
|
||||
@@ -73,7 +74,7 @@ public class ImportURITest {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), null, 0, null,0);
|
||||
|
||||
// Get card
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
// Card to URI
|
||||
Uri cardUri = importURIHelper.toUri(card);
|
||||
@@ -103,7 +104,7 @@ public class ImportURITest {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), null, 0, null,0);
|
||||
|
||||
// Get card
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
// Card to URI, with a trailing slash
|
||||
Uri cardUri = importURIHelper.toUri(card).buildUpon().path("/share/").build();
|
||||
|
||||
@@ -97,7 +97,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapterEmptyNote() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
@@ -112,7 +112,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapterWithNote() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
@@ -137,7 +137,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
assertEquals(4, cursor.getCount());
|
||||
|
||||
assertTrue(cursor.moveToFirst());
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(cursor);
|
||||
LoyaltyCard loyaltyCard = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
assertEquals("storeD", loyaltyCard.store);
|
||||
View view = createView(cursor);
|
||||
ConstraintLayout star = view.findViewById(R.id.star);
|
||||
@@ -146,7 +146,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
assertEquals(View.GONE, archive.getVisibility());
|
||||
|
||||
assertTrue(cursor.moveToNext());
|
||||
loyaltyCard = LoyaltyCard.fromCursor(cursor);
|
||||
loyaltyCard = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
assertEquals("storeC", loyaltyCard.store);
|
||||
view = createView(cursor);
|
||||
star = view.findViewById(R.id.star);
|
||||
@@ -155,7 +155,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
assertEquals(View.GONE, archive.getVisibility());
|
||||
|
||||
assertTrue(cursor.moveToNext());
|
||||
loyaltyCard = LoyaltyCard.fromCursor(cursor);
|
||||
loyaltyCard = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
assertEquals("storeB", loyaltyCard.store);
|
||||
view = createView(cursor);
|
||||
star = view.findViewById(R.id.star);
|
||||
@@ -164,7 +164,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
assertEquals(View.VISIBLE, archive.getVisibility());
|
||||
|
||||
assertTrue(cursor.moveToNext());
|
||||
loyaltyCard = LoyaltyCard.fromCursor(cursor);
|
||||
loyaltyCard = LoyaltyCard.fromCursor(activity.getApplicationContext(), cursor);
|
||||
assertEquals("storeA", loyaltyCard.store);
|
||||
view = createView(cursor);
|
||||
star = view.findViewById(R.id.star);
|
||||
@@ -178,7 +178,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapter0Points() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
@@ -193,7 +193,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapter0EUR() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase,"store", "", null, null, new BigDecimal("0"), Currency.getInstance("EUR"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
@@ -208,7 +208,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapter100Points() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
@@ -223,7 +223,7 @@ public class LoyaltyCardCursorAdapterTest {
|
||||
@Test
|
||||
public void TestCursorAdapter10USD() {
|
||||
DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, null, new BigDecimal("10.00"), Currency.getInstance("USD"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), mDatabase, 1);
|
||||
|
||||
Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase);
|
||||
cursor.moveToFirst();
|
||||
|
||||
@@ -167,7 +167,7 @@ public class LoyaltyCardViewActivityTest {
|
||||
|
||||
assertEquals(1, DBHelper.getLoyaltyCardCount(database));
|
||||
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(database, 1);
|
||||
LoyaltyCard card = DBHelper.getLoyaltyCard(activity.getApplicationContext(), database, 1);
|
||||
assertEquals(store, card.store);
|
||||
assertEquals(note, card.note);
|
||||
assertEquals(balance, card.balance);
|
||||
@@ -216,7 +216,7 @@ public class LoyaltyCardViewActivityTest {
|
||||
* Initiate and complete a barcode capture, either in success
|
||||
* or in failure
|
||||
*/
|
||||
private void captureBarcodeWithResult(final Activity activity, final boolean success) throws IOException {
|
||||
private void captureBarcodeWithResult(final Activity activity, final boolean success) {
|
||||
// Start image capture
|
||||
final Button startButton = activity.findViewById(R.id.enterButton);
|
||||
startButton.performClick();
|
||||
@@ -238,7 +238,7 @@ public class LoyaltyCardViewActivityTest {
|
||||
loyaltyCard.setCardId(BARCODE_DATA);
|
||||
ParseResult parseResult = new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard);
|
||||
|
||||
resultIntent.putExtras(parseResult.toLoyaltyCardBundle());
|
||||
resultIntent.putExtras(parseResult.toLoyaltyCardBundle(activity));
|
||||
|
||||
// Respond to image capture, success
|
||||
shadowOf(activity).receiveResult(
|
||||
@@ -251,7 +251,7 @@ public class LoyaltyCardViewActivityTest {
|
||||
* Initiate and complete a barcode selection, either in success
|
||||
* or in failure
|
||||
*/
|
||||
private void selectBarcodeWithResult(final Activity activity, final String barcodeData, final String barcodeType, final boolean success) throws IOException {
|
||||
private void selectBarcodeWithResult(final Activity activity, final String barcodeData, final String barcodeType, final boolean success) {
|
||||
// Start barcode selector
|
||||
final Button startButton = activity.findViewById(R.id.enterButton);
|
||||
startButton.performClick();
|
||||
@@ -278,7 +278,7 @@ public class LoyaltyCardViewActivityTest {
|
||||
loyaltyCard.setCardId(barcodeData);
|
||||
ParseResult parseResult = new ParseResult(ParseResultType.BARCODE_ONLY, loyaltyCard);
|
||||
|
||||
resultIntent.putExtras(parseResult.toLoyaltyCardBundle());
|
||||
resultIntent.putExtras(parseResult.toLoyaltyCardBundle(activity));
|
||||
|
||||
// Respond to barcode selection, success
|
||||
shadowOf(activity).receiveResult(
|
||||
@@ -302,8 +302,10 @@ public class LoyaltyCardViewActivityTest {
|
||||
} else if (fieldType == FieldTypeView.ImageView) {
|
||||
ImageView imageView = (ImageView) view;
|
||||
Bitmap image = null;
|
||||
if (imageView.getTag() != null) {
|
||||
try {
|
||||
image = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
|
||||
} catch (ClassCastException e) {
|
||||
// This is probably a VectorDrawable, the placeholder image. Aka: No image.
|
||||
}
|
||||
assertEquals(contents, image);
|
||||
} else {
|
||||
@@ -419,8 +421,8 @@ public class LoyaltyCardViewActivityTest {
|
||||
cardIdField.setText("12345678");
|
||||
barcodeField.setText("87654321");
|
||||
barcodeTypeField.setText(CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE).prettyName());
|
||||
activity.setCardImage(frontImageView, frontBitmap, true);
|
||||
activity.setCardImage(backImageView, backBitmap, true);
|
||||
activity.setCardImage(ImageLocationType.front, frontImageView, frontBitmap, true);
|
||||
activity.setCardImage(ImageLocationType.back, backImageView, backBitmap, true);
|
||||
|
||||
shadowOf(getMainLooper()).idle();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user