Load icon from Pkpass if exists

This commit is contained in:
Sylvia van Os
2019-12-18 12:15:32 +01:00
parent 2ef4d3f6e0
commit 1a6cad893d
14 changed files with 154 additions and 59 deletions

View File

@@ -1,6 +1,7 @@
package protect.card_locker;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVParser;
@@ -145,12 +146,19 @@ public class CsvDatabaseImporter implements DatabaseImporter
headerTextColor = extractInt(DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR, record, true);
}
Bitmap icon = null;
String iconData = extractString(DBHelper.LoyaltyCardDbIds.ICON, record, "");
if(!iconData.isEmpty())
{
icon = DBHelper.convertBitmapBlobToBitmap(iconData.getBytes("UTF-8"));
}
ExtrasHelper extras = new ExtrasHelper();
try
{
extras.fromJSON(new JSONObject(extractString(DBHelper.LoyaltyCardDbIds.EXTRAS, record, "{}")));
helper.insertLoyaltyCard(database, id, store, note, cardId, barcodeType, headerColor, headerTextColor, extras);
helper.insertLoyaltyCard(database, id, store, note, cardId, barcodeType, headerColor, headerTextColor, icon, extras);
}
catch (JSONException ex)
{

View File

@@ -6,10 +6,15 @@ import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
public class DBHelper extends SQLiteOpenHelper
{
public static final String DATABASE_NAME = "LoyaltyCards.db";
@@ -26,6 +31,7 @@ public class DBHelper extends SQLiteOpenHelper
public static final String HEADER_TEXT_COLOR = "headertextcolor";
public static final String CARD_ID = "cardid";
public static final String BARCODE_TYPE = "barcodetype";
public static final String ICON = "icon";
public static final String EXTRAS = "extras";
}
@@ -34,6 +40,19 @@ public class DBHelper extends SQLiteOpenHelper
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public static byte[] convertBitmapToBlob(Bitmap bitmap)
{
// https://stackoverflow.com/a/7620610
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0, byteArrayOutputStream);
return byteArrayOutputStream.toByteArray();
}
public static Bitmap convertBitmapBlobToBitmap(byte[] bytes)
{
return BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
@Override
public void onCreate(SQLiteDatabase db)
{
@@ -46,6 +65,7 @@ public class DBHelper extends SQLiteOpenHelper
LoyaltyCardDbIds.HEADER_TEXT_COLOR + " INTEGER," +
LoyaltyCardDbIds.CARD_ID + " TEXT not null," +
LoyaltyCardDbIds.BARCODE_TYPE + " TEXT not null," +
LoyaltyCardDbIds.ICON + " BLOB," +
LoyaltyCardDbIds.EXTRAS + " TEXT)");
}
@@ -71,6 +91,8 @@ public class DBHelper extends SQLiteOpenHelper
// Upgrade from version 3 to version 4
if(oldVersion < 4 && newVersion >= 4)
{
db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE
+ " ADD COLUMN " + LoyaltyCardDbIds.ICON + " BLOB");
db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE
+ " ADD COLUMN " + LoyaltyCardDbIds.EXTRAS + " TEXT");
}
@@ -78,7 +100,8 @@ public class DBHelper extends SQLiteOpenHelper
public long insertLoyaltyCard(final String store, final String note, final String cardId,
final String barcodeType, final Integer headerColor,
final Integer headerTextColor, final ExtrasHelper extras) throws JSONException
final Integer headerTextColor, final Bitmap icon,
final ExtrasHelper extras) throws JSONException
{
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
@@ -88,6 +111,7 @@ public class DBHelper extends SQLiteOpenHelper
contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType);
contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor);
contentValues.put(LoyaltyCardDbIds.HEADER_TEXT_COLOR, headerTextColor);
contentValues.put(LoyaltyCardDbIds.ICON, icon != null ? convertBitmapToBlob(icon) : null);
contentValues.put(LoyaltyCardDbIds.EXTRAS, extras.toJSON().toString());
final long newId = db.insert(LoyaltyCardDbIds.TABLE, null, contentValues);
return newId;
@@ -96,7 +120,8 @@ public class DBHelper extends SQLiteOpenHelper
public boolean insertLoyaltyCard(final SQLiteDatabase db, final int id,
final String store, final String note, final String cardId,
final String barcodeType, final Integer headerColor,
final Integer headerTextColor, final ExtrasHelper extras) throws JSONException
final Integer headerTextColor, final Bitmap icon,
final ExtrasHelper extras) throws JSONException
{
ContentValues contentValues = new ContentValues();
contentValues.put(LoyaltyCardDbIds.ID, id);
@@ -106,6 +131,7 @@ public class DBHelper extends SQLiteOpenHelper
contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType);
contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor);
contentValues.put(LoyaltyCardDbIds.HEADER_TEXT_COLOR, headerTextColor);
contentValues.put(LoyaltyCardDbIds.ICON, icon != null ? convertBitmapToBlob(icon) : null);
contentValues.put(LoyaltyCardDbIds.EXTRAS, extras.toJSON().toString());
final long newId = db.insert(LoyaltyCardDbIds.TABLE, null, contentValues);
return (newId != -1);
@@ -115,7 +141,7 @@ public class DBHelper extends SQLiteOpenHelper
public boolean updateLoyaltyCard(final int id, final String store, final String note,
final String cardId, final String barcodeType,
final Integer headerColor, final Integer headerTextColor,
final ExtrasHelper extras) throws JSONException
final Bitmap icon, final ExtrasHelper extras) throws JSONException
{
SQLiteDatabase db = getWritableDatabase();
ContentValues contentValues = new ContentValues();
@@ -125,6 +151,7 @@ public class DBHelper extends SQLiteOpenHelper
contentValues.put(LoyaltyCardDbIds.BARCODE_TYPE, barcodeType);
contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor);
contentValues.put(LoyaltyCardDbIds.HEADER_TEXT_COLOR, headerTextColor);
contentValues.put(LoyaltyCardDbIds.ICON, icon != null ? convertBitmapToBlob(icon) : null);
contentValues.put(LoyaltyCardDbIds.EXTRAS, extras.toJSON().toString());
int rowsUpdated = db.update(LoyaltyCardDbIds.TABLE, contentValues,
LoyaltyCardDbIds.ID + "=?",

View File

@@ -2,12 +2,15 @@ package protect.card_locker;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.InvalidObjectException;
import java.io.UnsupportedEncodingException;
public class ImportURIHelper {
private static final String STORE = DBHelper.LoyaltyCardDbIds.STORE;
@@ -16,6 +19,7 @@ public class ImportURIHelper {
private static final String BARCODE_TYPE = DBHelper.LoyaltyCardDbIds.BARCODE_TYPE;
private static final String HEADER_COLOR = DBHelper.LoyaltyCardDbIds.HEADER_COLOR;
private static final String HEADER_TEXT_COLOR = DBHelper.LoyaltyCardDbIds.HEADER_TEXT_COLOR;
private static final String ICON = DBHelper.LoyaltyCardDbIds.ICON;
private static final String EXTRAS = DBHelper.LoyaltyCardDbIds.EXTRAS;
private final Context context;
@@ -46,15 +50,28 @@ public class ImportURIHelper {
String barcodeType = uri.getQueryParameter(BARCODE_TYPE);
Integer headerColor = Integer.parseInt(uri.getQueryParameter(HEADER_COLOR));
Integer headerTextColor = Integer.parseInt(uri.getQueryParameter(HEADER_TEXT_COLOR));
String iconData = uri.getQueryParameter(ICON);
Bitmap icon = null;
if(!iconData.isEmpty())
{
byte[] iconBytes = iconData.getBytes("UTF-8");
icon = DBHelper.convertBitmapBlobToBitmap(iconBytes);
}
ExtrasHelper extras = new ExtrasHelper().fromJSON(new JSONObject(uri.getQueryParameter(EXTRAS)));
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor, extras);
} catch (NullPointerException | NumberFormatException | JSONException ex) {
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor, icon, extras);
} catch (NullPointerException | NumberFormatException | JSONException | UnsupportedEncodingException ex) {
throw new InvalidObjectException("Not a valid import URI");
}
}
// Protected for usage in tests
protected Uri toUri(LoyaltyCard loyaltyCard) throws JSONException {
String icon = "";
if(loyaltyCard.icon != null)
{
icon = DBHelper.convertBitmapToBlob(loyaltyCard.icon).toString();
}
Uri.Builder uriBuilder = new Uri.Builder();
uriBuilder.scheme("https");
uriBuilder.authority(host);
@@ -65,6 +82,7 @@ public class ImportURIHelper {
uriBuilder.appendQueryParameter(BARCODE_TYPE, loyaltyCard.barcodeType);
uriBuilder.appendQueryParameter(HEADER_COLOR, loyaltyCard.headerColor.toString());
uriBuilder.appendQueryParameter(HEADER_TEXT_COLOR, loyaltyCard.headerTextColor.toString());
uriBuilder.appendQueryParameter(ICON, icon);
uriBuilder.appendQueryParameter(EXTRAS, loyaltyCard.extras.toJSON().toString());
return uriBuilder.build();

View File

@@ -1,6 +1,8 @@
package protect.card_locker;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.annotation.Nullable;
import org.json.JSONException;
@@ -22,12 +24,15 @@ public class LoyaltyCard
@Nullable
public final Integer headerTextColor;
@Nullable
public final Bitmap icon;
@Nullable
public final ExtrasHelper extras;
public LoyaltyCard(final int id, final String store, final String note, final String cardId,
final String barcodeType, final Integer headerColor, final Integer headerTextColor,
final ExtrasHelper extras)
final Bitmap icon, final ExtrasHelper extras)
{
this.id = id;
this.store = store;
@@ -36,6 +41,7 @@ public class LoyaltyCard
this.barcodeType = barcodeType;
this.headerColor = headerColor;
this.headerTextColor = headerTextColor;
this.icon = icon;
this.extras = extras;
}
@@ -63,6 +69,15 @@ public class LoyaltyCard
headerTextColor = cursor.getInt(headerTextColorColumn);
}
int iconColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ICON);
Bitmap icon = null;
if(cursor.isNull(iconColumn) == false)
{
byte[] iconData = cursor.getBlob(iconColumn);
icon = BitmapFactory.decodeByteArray(iconData, 0, iconData.length);
}
int extrasColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.EXTRAS);
ExtrasHelper extras = new ExtrasHelper();
@@ -80,6 +95,6 @@ public class LoyaltyCard
}
}
return new LoyaltyCard(id, store, note, cardId, barcodeType, headerColor, headerTextColor, extras);
return new LoyaltyCard(id, store, note, cardId, barcodeType, headerColor, headerTextColor, icon, extras);
}
}

View File

@@ -2,6 +2,7 @@ package protect.card_locker;
import android.content.Context;
import android.database.Cursor;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -61,10 +62,18 @@ class LoyaltyCardCursorAdapter extends CursorAdapter
int tileLetterFontSize = context.getResources().getDimensionPixelSize(R.dimen.tileLetterFontSize);
int pixelSize = context.getResources().getDimensionPixelSize(R.dimen.cardThumbnailSize);
Integer letterBackgroundColor = loyaltyCard.headerColor;
Integer letterTextColor = loyaltyCard.headerTextColor;
LetterBitmap letterBitmap = new LetterBitmap(context, loyaltyCard.store, loyaltyCard.store,
tileLetterFontSize, pixelSize, pixelSize, letterBackgroundColor, letterTextColor);
thumbnail.setImageBitmap(letterBitmap.getLetterTile());
if(loyaltyCard.icon == null)
{
Integer letterBackgroundColor = loyaltyCard.headerColor;
Integer letterTextColor = loyaltyCard.headerTextColor;
LetterBitmap letterBitmap = new LetterBitmap(context, loyaltyCard.store, loyaltyCard.store,
tileLetterFontSize, pixelSize, pixelSize, letterBackgroundColor, letterTextColor);
thumbnail.setImageBitmap(letterBitmap.getLetterTile());
}
else
{
thumbnail.setImageBitmap(loyaltyCard.icon);
}
}
}

View File

@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.net.Uri;
import android.os.Build;
@@ -65,6 +66,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
String importLoyaltyCardType = null;
Integer headingColorValue = null;
Integer headingStoreTextColorValue = null;
Bitmap icon = null;
ExtrasHelper extras = new ExtrasHelper();
DBHelper db;
@@ -237,6 +239,7 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
barcodeTypeField.setText(importCard.barcodeType);
headingColorValue = importCard.headerColor;
headingStoreTextColorValue = importCard.headerTextColor;
icon = importCard.icon;
extras = importCard.extras;
}
else
@@ -415,12 +418,12 @@ public class LoyaltyCardEditActivity extends AppCompatActivity
if(updateLoyaltyCard)
{
db.updateLoyaltyCard(loyaltyCardId, store, note, cardId, barcodeType, headingColorValue, headingStoreTextColorValue, extras);
db.updateLoyaltyCard(loyaltyCardId, store, note, cardId, barcodeType, headingColorValue, headingStoreTextColorValue, icon, extras);
Log.i(TAG, "Updated " + loyaltyCardId + " to " + cardId);
}
else
{
loyaltyCardId = (int)db.insertLoyaltyCard(store, note, cardId, barcodeType, headingColorValue, headingStoreTextColorValue, extras);
loyaltyCardId = (int)db.insertLoyaltyCard(store, note, cardId, barcodeType, headingColorValue, headingStoreTextColorValue, icon, extras);
}
finish();

View File

@@ -11,11 +11,9 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.AppCompatDelegate;
import android.support.v7.widget.SearchView;
import android.support.v7.widget.Toolbar;
import android.util.Log;
@@ -36,7 +34,6 @@ import java.util.Calendar;
import java.util.Map;
import protect.card_locker.intro.IntroActivity;
import protect.card_locker.preferences.Settings;
import protect.card_locker.preferences.SettingsActivity;
public class MainActivity extends AppCompatActivity

View File

@@ -1,12 +1,13 @@
package protect.card_locker;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.primitives.Chars;
import com.google.zxing.BarcodeFormat;
import org.json.JSONArray;
@@ -16,8 +17,6 @@ import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
@@ -28,6 +27,8 @@ import java.util.zip.ZipInputStream;
public class PkpassImporter {
private Context context;
private Bitmap icon = null;
private HashMap<String, HashMap<String, String>> translations = new HashMap<>();
public PkpassImporter(Context context)
@@ -35,7 +36,7 @@ public class PkpassImporter {
this.context = context;
}
private String readZipInputStream(ZipInputStream zipInputStream) throws IOException
private ByteArrayOutputStream readZipInputStream(ZipInputStream zipInputStream) throws IOException
{
byte[] buffer = new byte[2048];
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
@@ -46,7 +47,13 @@ public class PkpassImporter {
byteArrayOutputStream.write(buffer, 0, size);
}
return byteArrayOutputStream.toString("UTF-8");
return byteArrayOutputStream;
}
private void loadBitmap(ByteArrayOutputStream byteArrayOutputStream)
{
byte[] bytes = byteArrayOutputStream.toByteArray();
icon = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
}
// FIXME: Probably very fragile
@@ -152,17 +159,21 @@ public class PkpassImporter {
ZipEntry entry;
// We first want to parse the translations
while ((entry = zipInputStream.getNextEntry()) != null) {
if (entry.getName().endsWith("pass.strings"))
while((entry = zipInputStream.getNextEntry()) != null) {
if(entry.getName().endsWith("pass.strings"))
{
// Example: en.lproj/pass.strings
String language = entry.getName().substring(0, entry.getName().indexOf("."));
parseTranslations(language, readZipInputStream(zipInputStream));
parseTranslations(language, readZipInputStream(zipInputStream).toString("UTF-8"));
}
else if (entry.getName().equals("pass.json"))
else if(entry.getName().equals("pass.json"))
{
passJSONString = readZipInputStream(zipInputStream);
passJSONString = readZipInputStream(zipInputStream).toString("UTF-8");
}
else if(entry.getName().equals("icon.png"))
{
loadBitmap(readZipInputStream(zipInputStream));
}
}
@@ -298,6 +309,6 @@ public class PkpassImporter {
extras = appendData(extras, json, styleKey, "auxiliaryFields");
extras = appendData(extras, json, styleKey, "backFields");
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor, extras);
return new LoyaltyCard(-1, store, note, cardId, barcodeType, headerColor, headerTextColor, icon, extras);
}
}

View File

@@ -2,8 +2,11 @@ package protect.card_locker;
import android.app.Activity;
import android.content.ContentValues;
import android.content.res.Resources;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import com.google.zxing.BarcodeFormat;
@@ -30,6 +33,7 @@ public class DatabaseTest
private static final Integer DEFAULT_HEADER_COLOR = Color.BLACK;
private static final Integer DEFAULT_HEADER_TEXT_COLOR = Color.WHITE;
private static Bitmap DEFAULT_ICON = BitmapFactory.decodeResource(Resources.getSystem(), R.drawable.app_icon_intro);
private static ExtrasHelper DEFAULT_EXTRAS;
@Before
@@ -46,7 +50,7 @@ public class DatabaseTest
public void addRemoveOneGiftCard() throws JSONException
{
assertEquals(0, db.getLoyaltyCardCount());
long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS);
long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_ICON, DEFAULT_EXTRAS);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -67,12 +71,12 @@ public class DatabaseTest
@Test
public void updateGiftCard() throws JSONException
{
long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS);
long id = db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_ICON, DEFAULT_EXTRAS);
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS);
result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1", BarcodeFormat.AZTEC.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_ICON, DEFAULT_EXTRAS);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -91,7 +95,7 @@ public class DatabaseTest
assertEquals(0, db.getLoyaltyCardCount());
boolean result = db.updateLoyaltyCard(1, "store1", "note1", "cardId1",
BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_EXTRAS);
BarcodeFormat.UPC_A.toString(), DEFAULT_HEADER_COLOR, DEFAULT_HEADER_TEXT_COLOR, DEFAULT_ICON, DEFAULT_EXTRAS);
assertEquals(false, result);
assertEquals(0, db.getLoyaltyCardCount());
}
@@ -99,7 +103,7 @@ public class DatabaseTest
@Test
public void emptyGiftCardValues() throws JSONException
{
long id = db.insertLoyaltyCard("", "", "", "", null, null, new ExtrasHelper());
long id = db.insertLoyaltyCard("", "", "", "", null, null, null, new ExtrasHelper());
boolean result = (id != -1);
assertTrue(result);
assertEquals(1, db.getLoyaltyCardCount());
@@ -123,7 +127,7 @@ public class DatabaseTest
for(int index = CARDS_TO_ADD-1; index >= 0; index--)
{
long id = db.insertLoyaltyCard("store" + index, "note" + index, "cardId" + index,
BarcodeFormat.UPC_A.toString(), index, index*2, DEFAULT_EXTRAS);
BarcodeFormat.UPC_A.toString(), index, index*2, DEFAULT_ICON, DEFAULT_EXTRAS);
boolean result = (id != -1);
assertTrue(result);
}

View File

@@ -74,7 +74,7 @@ public class ImportExportTest
{
String storeName = String.format("store, \"%4d", index);
String note = String.format("note, \"%4d", index);
long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, index*2, EXTRAS);
long id = db.insertLoyaltyCard(storeName, note, BARCODE_DATA, BARCODE_TYPE, index, index*2, null, EXTRAS);
boolean result = (id != -1);
assertTrue(result);
}

View File

@@ -1,6 +1,9 @@
package protect.card_locker;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.net.Uri;
import com.google.zxing.BarcodeFormat;
@@ -36,9 +39,10 @@ public class ImportURITest {
public void ensureNoDataLoss() throws InvalidObjectException, JSONException
{
// Generate card
Bitmap icon = BitmapFactory.decodeResource(Resources.getSystem(), R.drawable.app_icon_intro);
ExtrasHelper extrasHelper = new ExtrasHelper();
extrasHelper.addLanguageValue("en", "key", "value");
db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, Color.WHITE, extrasHelper);
db.insertLoyaltyCard("store", "note", BarcodeFormat.UPC_A.toString(), LoyaltyCardDbIds.BARCODE_TYPE, Color.BLACK, Color.WHITE, icon, extrasHelper);
// Get card
LoyaltyCard card = db.getLoyaltyCard(1);
@@ -56,6 +60,7 @@ public class ImportURITest {
assertEquals(card.headerTextColor, parsedCard.headerTextColor);
assertEquals(card.note, parsedCard.note);
assertEquals(card.store, parsedCard.store);
assertEquals(card.icon.getRowBytes(), parsedCard.icon.getRowBytes());
assertEquals(card.extras.toJSON().toString(), parsedCard.extras.toJSON().toString());
}

View File

@@ -85,7 +85,7 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterEmptyNote() throws JSONException
{
db.insertLoyaltyCard("store", "", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();
@@ -99,7 +99,7 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterWithNote() throws JSONException
{
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();
@@ -113,7 +113,7 @@ public class LoyaltyCardCursorAdapterTest
@Test
public void TestCursorAdapterFontSizes() throws JSONException
{
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
LoyaltyCard card = db.getLoyaltyCard(1);
Cursor cursor = db.getLoyaltyCardCursor();

View File

@@ -360,7 +360,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -376,7 +376,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -392,7 +392,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -413,7 +413,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", EAN_BARCODE_DATA, EAN_BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -439,7 +439,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -484,7 +484,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -502,7 +502,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, null, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, null, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -520,7 +520,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, null, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, null, null, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -537,7 +537,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, "", Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, "", Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.visible();
@@ -554,7 +554,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
final int STORE_FONT_SIZE = 50;
final int CARD_FONT_SIZE = 40;
@@ -596,7 +596,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity);
settings.edit()
@@ -631,7 +631,7 @@ public class LoyaltyCardViewActivityTest
Activity activity = (Activity)activityController.get();
DBHelper db = new DBHelper(activity);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.start();
activityController.resume();
@@ -653,7 +653,7 @@ public class LoyaltyCardViewActivityTest
ExtrasHelper extrasHelper = new ExtrasHelper();
extrasHelper.addLanguageValue("en", "key", "value");
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, extrasHelper);
db.insertLoyaltyCard("store", "note", BARCODE_DATA, BARCODE_TYPE, Color.BLACK, Color.WHITE, null, extrasHelper);
activityController.start();
activityController.resume();
@@ -668,7 +668,7 @@ public class LoyaltyCardViewActivityTest
@Test
public void importCard()
{
Uri importUri = Uri.parse("https://brarcher.github.io/loyalty-card-locker/share?store=Example%20Store&note=&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1&extras={}");
Uri importUri = Uri.parse("https://brarcher.github.io/loyalty-card-locker/share?store=Example%20Store&note=&cardid=123456&barcodetype=AZTEC&headercolor=-416706&headertextcolor=-1&icon=&extras={}");
Intent intent = new Intent();
intent.setData(importUri);

View File

@@ -8,7 +8,6 @@ import android.content.SharedPreferences;
import android.database.Cursor;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.widget.SearchView;
import android.view.Menu;
import android.view.View;
import android.widget.ListView;
@@ -17,7 +16,6 @@ import android.widget.TextView;
import com.google.zxing.BarcodeFormat;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -111,7 +109,7 @@ public class MainActivityTest
assertEquals(0, list.getCount());
DBHelper db = new DBHelper(mainActivity);
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("store", "note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
assertEquals(View.VISIBLE, helpText.getVisibility());
assertEquals(View.GONE, noMatchingCardsText.getVisibility());
@@ -143,8 +141,8 @@ public class MainActivityTest
ListView list = mainActivity.findViewById(R.id.list);
DBHelper db = new DBHelper(mainActivity);
db.insertLoyaltyCard("The First Store", "Initial note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("The Second Store", "Secondary note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, new ExtrasHelper());
db.insertLoyaltyCard("The First Store", "Initial note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
db.insertLoyaltyCard("The Second Store", "Secondary note", "cardId", BarcodeFormat.UPC_A.toString(), Color.BLACK, Color.WHITE, null, new ExtrasHelper());
activityController.pause();
activityController.resume();