diff --git a/app/src/main/java/protect/card_locker/DBHelper.java b/app/src/main/java/protect/card_locker/DBHelper.java index 2773b9f88..b070b3e44 100644 --- a/app/src/main/java/protect/card_locker/DBHelper.java +++ b/app/src/main/java/protect/card_locker/DBHelper.java @@ -21,7 +21,7 @@ import java.util.List; public class DBHelper extends SQLiteOpenHelper { public static final String DATABASE_NAME = "Catima.db"; public static final int ORIGINAL_DATABASE_VERSION = 1; - public static final int DATABASE_VERSION = 14; + public static final int DATABASE_VERSION = 15; public static class LoyaltyCardDbGroups { public static final String TABLE = "groups"; @@ -45,6 +45,7 @@ public class DBHelper extends SQLiteOpenHelper { public static final String STAR_STATUS = "starstatus"; public static final String LAST_USED = "lastused"; public static final String ZOOM_LEVEL = "zoomlevel"; + public static final String ARCHIVE_STATUS = "archive"; } public static class LoyaltyCardDbIdsGroups { @@ -71,6 +72,11 @@ public class DBHelper extends SQLiteOpenHelper { Descending } + public enum LoyaltyCardArchiveFilter{ + Archived, + Unarchived + } + public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @@ -97,7 +103,8 @@ public class DBHelper extends SQLiteOpenHelper { LoyaltyCardDbIds.BARCODE_TYPE + " TEXT," + LoyaltyCardDbIds.STAR_STATUS + " INTEGER DEFAULT '0'," + LoyaltyCardDbIds.LAST_USED + " INTEGER DEFAULT '0', " + - LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '100' )"); + LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '100', " + + LoyaltyCardDbIds.ARCHIVE_STATUS + " INTEGER DEFAULT '0' )"); // create associative table for cards in groups db.execSQL("CREATE TABLE " + LoyaltyCardDbIdsGroups.TABLE + "(" + @@ -302,6 +309,10 @@ public class DBHelper extends SQLiteOpenHelper { db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE + " ADD COLUMN " + LoyaltyCardDbIds.ZOOM_LEVEL + " INTEGER DEFAULT '100' "); } + if (oldVersion < 15 && newVersion >= 15) { + db.execSQL("ALTER TABLE " + LoyaltyCardDbIds.TABLE + + " ADD COLUMN " + LoyaltyCardDbIds.ARCHIVE_STATUS + " INTEGER DEFAULT '0' "); + } } private static ContentValues generateFTSContentValues(final int id, final String store, final String note) { @@ -349,7 +360,7 @@ public class DBHelper extends SQLiteOpenHelper { final SQLiteDatabase database, final String store, final String note, final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId, final String barcodeId, final CatimaBarcode barcodeType, final Integer headerColor, - final int starStatus, final Long lastUsed) { + final int starStatus, final Long lastUsed,final int archiveStatus) { database.beginTransaction(); // Card @@ -365,6 +376,7 @@ public class DBHelper extends SQLiteOpenHelper { contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); contentValues.put(LoyaltyCardDbIds.LAST_USED, lastUsed != null ? lastUsed : Utils.getUnixTime()); + contentValues.put(LoyaltyCardDbIds.ARCHIVE_STATUS, archiveStatus); long id = database.insert(LoyaltyCardDbIds.TABLE, null, contentValues); // FTS @@ -380,7 +392,7 @@ public class DBHelper extends SQLiteOpenHelper { final SQLiteDatabase database, final int id, final String store, final String note, final Date expiry, final BigDecimal balance, final Currency balanceType, final String cardId, final String barcodeId, final CatimaBarcode barcodeType, - final Integer headerColor, final int starStatus, final Long lastUsed) { + final Integer headerColor, final int starStatus, final Long lastUsed, final int archiveStatus) { database.beginTransaction(); // Card @@ -397,6 +409,7 @@ public class DBHelper extends SQLiteOpenHelper { contentValues.put(LoyaltyCardDbIds.HEADER_COLOR, headerColor); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); contentValues.put(LoyaltyCardDbIds.LAST_USED, lastUsed != null ? lastUsed : Utils.getUnixTime()); + contentValues.put(LoyaltyCardDbIds.ARCHIVE_STATUS, archiveStatus); database.insert(LoyaltyCardDbIds.TABLE, null, contentValues); // FTS @@ -438,6 +451,15 @@ public class DBHelper extends SQLiteOpenHelper { return (rowsUpdated == 1); } + public static boolean updateLoyaltyCardArchiveStatus(SQLiteDatabase database, final int id, final int archiveStatus) { + ContentValues contentValues = new ContentValues(); + contentValues.put(LoyaltyCardDbIds.ARCHIVE_STATUS, archiveStatus); + int rowsUpdated = database.update(LoyaltyCardDbIds.TABLE, contentValues, + whereAttrs(LoyaltyCardDbIds.ID), + withArgs(id)); + return (rowsUpdated == 1); + } + public static boolean updateLoyaltyCardStarStatus(SQLiteDatabase database, final int id, final int starStatus) { ContentValues contentValues = new ContentValues(); contentValues.put(LoyaltyCardDbIds.STAR_STATUS, starStatus); @@ -549,11 +571,20 @@ public class DBHelper extends SQLiteOpenHelper { return (rowsDeleted == 1); } + public static int getArchivedCardsCount(SQLiteDatabase database) { + return (int) DatabaseUtils.queryNumEntries(database, LoyaltyCardDbIds.TABLE, + whereAttrs(LoyaltyCardDbIds.ARCHIVE_STATUS), withArgs(1)); + } + public static Cursor getLoyaltyCardCursor(SQLiteDatabase database) { // An empty string will match everything return getLoyaltyCardCursor(database, ""); } + public static Cursor getAllLoyaltyCardCursor(SQLiteDatabase database){ + return database.query(LoyaltyCardDbIds.TABLE,null,null,null,null,null,null); + } + /** * Returns a cursor to all loyalty cards with the filter text in either the store or note. * @@ -572,7 +603,7 @@ public class DBHelper extends SQLiteOpenHelper { * @return Cursor */ public static Cursor getLoyaltyCardCursor(SQLiteDatabase database, final String filter, Group group) { - return getLoyaltyCardCursor(database, filter, group, LoyaltyCardOrder.Alpha, LoyaltyCardOrderDirection.Ascending); + return getLoyaltyCardCursor(database, filter, group, LoyaltyCardOrder.Alpha, LoyaltyCardOrderDirection.Ascending, LoyaltyCardArchiveFilter.Unarchived); } /** @@ -583,7 +614,7 @@ public class DBHelper extends SQLiteOpenHelper { * @param order * @return Cursor */ - public static Cursor getLoyaltyCardCursor(SQLiteDatabase database, String filter, Group group, LoyaltyCardOrder order, LoyaltyCardOrderDirection direction) { + public static Cursor getLoyaltyCardCursor(SQLiteDatabase database, String filter, Group group, LoyaltyCardOrder order, LoyaltyCardOrderDirection direction, LoyaltyCardArchiveFilter archiveFilter) { StringBuilder groupFilter = new StringBuilder(); String limitString = ""; @@ -613,6 +644,8 @@ public class DBHelper extends SQLiteOpenHelper { " ON " + LoyaltyCardDbFTS.TABLE + "." + LoyaltyCardDbFTS.ID + " = " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.ID + (filter.trim().isEmpty() ? " " : " AND " + LoyaltyCardDbFTS.TABLE + " MATCH ? ") + groupFilter.toString() + + " AND " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.ARCHIVE_STATUS + " = " + + (archiveFilter.equals(LoyaltyCardArchiveFilter.Unarchived) ? 0 : 1) + " ORDER BY " + LoyaltyCardDbIds.TABLE + "." + LoyaltyCardDbIds.STAR_STATUS + " DESC, " + " (CASE WHEN " + LoyaltyCardDbIds.TABLE + "." + orderField + " IS NULL THEN 1 ELSE 0 END), " + LoyaltyCardDbIds.TABLE + "." + orderField + " COLLATE NOCASE " + getDbDirection(order, direction) + ", " + diff --git a/app/src/main/java/protect/card_locker/ImportURIHelper.java b/app/src/main/java/protect/card_locker/ImportURIHelper.java index 8a94cc6df..1549ed9cd 100644 --- a/app/src/main/java/protect/card_locker/ImportURIHelper.java +++ b/app/src/main/java/protect/card_locker/ImportURIHelper.java @@ -116,7 +116,7 @@ public class ImportURIHelper { headerColor = Integer.parseInt(unparsedHeaderColor); } - return new LoyaltyCard(-1, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100); + return new LoyaltyCard(-1, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, 0, Utils.getUnixTime(), 100,0); } catch (NullPointerException | NumberFormatException | UnsupportedEncodingException ex) { throw new InvalidObjectException("Not a valid import URI"); } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCard.java b/app/src/main/java/protect/card_locker/LoyaltyCard.java index 06a0165a5..7f8acaadb 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCard.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCard.java @@ -29,13 +29,14 @@ public class LoyaltyCard implements Parcelable { public final Integer headerColor; public final int starStatus; + public final int archiveStatus; public final long lastUsed; public int zoomLevel; public LoyaltyCard(final int id, final String store, final String note, final Date expiry, final BigDecimal balance, 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) { + @Nullable final Integer headerColor, final int starStatus, final long lastUsed, final int zoomLevel,final int archiveStatus) { this.id = id; this.store = store; this.note = note; @@ -49,6 +50,7 @@ public class LoyaltyCard implements Parcelable { this.starStatus = starStatus; this.lastUsed = lastUsed; this.zoomLevel = zoomLevel; + this.archiveStatus = archiveStatus; } protected LoyaltyCard(Parcel in) { @@ -68,6 +70,7 @@ public class LoyaltyCard implements Parcelable { starStatus = in.readInt(); lastUsed = in.readLong(); zoomLevel = in.readInt(); + archiveStatus = in.readInt(); } @Override @@ -85,6 +88,7 @@ public class LoyaltyCard implements Parcelable { parcel.writeInt(starStatus); parcel.writeLong(lastUsed); parcel.writeInt(zoomLevel); + parcel.writeInt(archiveStatus); } public static LoyaltyCard toLoyaltyCard(Cursor cursor) { @@ -98,6 +102,7 @@ public class LoyaltyCard implements Parcelable { int starred = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS)); long lastUsed = cursor.getLong(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.LAST_USED)); int zoomLevel = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ZOOM_LEVEL)); + int archived = cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS)); int barcodeTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE); int balanceTypeColumn = cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BALANCE_TYPE); @@ -124,7 +129,7 @@ public class LoyaltyCard implements Parcelable { headerColor = cursor.getInt(headerColorColumn); } - return new LoyaltyCard(id, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starred, lastUsed, zoomLevel); + return new LoyaltyCard(id, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starred, lastUsed, zoomLevel,archived); } @Override diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 8dda3ac54..aba68dc21 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -131,7 +131,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { inputListener.onRowClicked(getAdapterPosition()); @@ -321,7 +324,7 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter { - Log.e(TAG, "Deleting card: " + loyaltyCardId); - - DBHelper.deleteLoyaltyCard(mDatabase, LoyaltyCardEditActivity.this, loyaltyCardId); - - ShortcutHelper.removeShortcut(LoyaltyCardEditActivity.this, loyaltyCardId); - - finish(); - dialog.dismiss(); - }); - builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); - AlertDialog dialog = builder.create(); - dialog.show(); - - return true; + if (id == android.R.id.home) { + askBeforeQuitIfChanged(); + return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardField.java b/app/src/main/java/protect/card_locker/LoyaltyCardField.java index 6971b9be1..cecf4845d 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardField.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardField.java @@ -11,5 +11,6 @@ public enum LoyaltyCardField { barcodeId, barcodeType, headerColor, - starStatus + starStatus, + archiveStatus } diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index d16f796fd..84a8507b5 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -45,6 +45,7 @@ import java.util.List; import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.Toolbar; @@ -698,6 +699,16 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements loyaltyCard = DBHelper.getLoyaltyCard(database, loyaltyCardId); starred = loyaltyCard.starStatus != 0; + if(loyaltyCard.archiveStatus != 0){ + menu.findItem(R.id.action_unarchive).setVisible(true); + menu.findItem(R.id.action_archive).setVisible(false); + } + else{ + menu.findItem(R.id.action_unarchive).setVisible(false); + menu.findItem(R.id.action_archive).setVisible(true); + } + + menu.findItem(R.id.action_overflow).setIcon(getIcon(R.drawable.ic_overflow_menu, backgroundNeedsDarkIcons)); menu.findItem(R.id.action_share).setIcon(getIcon(R.drawable.ic_share_white, backgroundNeedsDarkIcons)); return super.onCreateOptionsMenu(menu); @@ -759,6 +770,38 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements DBHelper.updateLoyaltyCardStarStatus(database, loyaltyCardId, starred ? 1 : 0); invalidateOptionsMenu(); return true; + + case R.id.action_archive: + DBHelper.updateLoyaltyCardArchiveStatus(database, loyaltyCardId, 1); + Toast.makeText(LoyaltyCardViewActivity.this, R.string.archived, Toast.LENGTH_LONG).show(); + invalidateOptionsMenu(); + return true; + + case R.id.action_unarchive: + DBHelper.updateLoyaltyCardArchiveStatus(database, loyaltyCardId, 0); + Toast.makeText(LoyaltyCardViewActivity.this, R.string.unarchived, Toast.LENGTH_LONG).show(); + invalidateOptionsMenu(); + return true; + + case R.id.action_delete: + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.deleteTitle); + builder.setMessage(R.string.deleteConfirmation); + builder.setPositiveButton(R.string.confirm, (dialog, which) -> { + Log.e(TAG, "Deleting card: " + loyaltyCardId); + + DBHelper.deleteLoyaltyCard(database, LoyaltyCardViewActivity.this, loyaltyCardId); + + ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId); + + finish(); + dialog.dismiss(); + }); + builder.setNegativeButton(R.string.cancel, (dialog, which) -> dialog.dismiss()); + AlertDialog dialog = builder.create(); + dialog.show(); + + return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 2b4a78a32..04af02c06 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -21,6 +21,7 @@ import android.widget.Toast; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; +import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.view.ActionMode; import androidx.appcompat.widget.SearchView; @@ -58,6 +59,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard private View mNoMatchingCardsText; private View mNoGroupCardsText; + private boolean mArchiveMode; + public static final String BUNDLE_ARCHIVE_MODE = "archiveMode"; + private ActivityResultLauncher mBarcodeScannerLauncher; private ActivityResultLauncher mSettingsLauncher; @@ -142,7 +146,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard builder.setPositiveButton(R.string.confirm, (dialog, which) -> { for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { - Log.e(TAG, "Deleting card: " + loyaltyCard.id); + Log.d(TAG, "Deleting card: " + loyaltyCard.id); DBHelper.deleteLoyaltyCard(mDatabase, MainActivity.this, loyaltyCard.id); @@ -162,6 +166,46 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard return true; } + else if(inputItem.getItemId() == R.id.action_archive){ + for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { + Log.d(TAG, "Archiving card: " + loyaltyCard.id); + DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,1); + updateLoyaltyCardList(false); + inputMode.finish(); + invalidateOptionsMenu(); + } + return true; + } + else if(inputItem.getItemId() == R.id.action_unarchive){ + for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { + Log.d(TAG, "Unarchiving card: " + loyaltyCard.id); + DBHelper.updateLoyaltyCardArchiveStatus(mDatabase, loyaltyCard.id,0); + updateLoyaltyCardList(false); + inputMode.finish(); + invalidateOptionsMenu(); + } + return true; + } + else if(inputItem.getItemId() == R.id.action_star){ + for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { + Log.d(TAG, "Starring card: " + loyaltyCard.id); + DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 1); + updateLoyaltyCardList(false); + inputMode.finish(); + } + return true; + } + else if(inputItem.getItemId() == R.id.action_unstar){ + for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { + Log.d(TAG, "Unstarring card: " + loyaltyCard.id); + DBHelper.updateLoyaltyCardStarStatus(mDatabase, loyaltyCard.id, 0); + updateLoyaltyCardList(false); + inputMode.finish(); + } + return true; + } + + return false; } @@ -175,17 +219,33 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard @Override protected void onCreate(Bundle inputSavedInstanceState) { + extractIntentFields(getIntent()); super.onCreate(inputSavedInstanceState); SplashScreen.installSplashScreen(this); - setTitle(R.string.app_name); + if(!mArchiveMode) { + setTitle(R.string.app_name); + setContentView(R.layout.main_activity); + } + else{ + setTitle(R.string.archive); + setContentView(R.layout.archive_activity); + } // XXX color patching has to be done again after setting splash screen Utils.patchColors(this); - setContentView(R.layout.main_activity); Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); + if(mArchiveMode){ + ActionBar actionBar = getSupportActionBar(); + if (actionBar != null) { + actionBar.setDisplayHomeAsUpEnabled(true); + } + } + mDatabase = new DBHelper(this).getWritableDatabase(); + + TabLayout groupsTabLayout = findViewById(R.id.groups); groupsTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override @@ -342,21 +402,25 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard updateLoyaltyCardList(true); // End of active tab logic - FloatingActionButton addButton = findViewById(R.id.fabAdd); - addButton.setOnClickListener(v -> { - Intent intent = new Intent(getApplicationContext(), ScanActivity.class); - Bundle bundle = new Bundle(); - if (selectedTab != 0) { - bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, groupsTabLayout.getTabAt(selectedTab).getText().toString()); - } - intent.putExtras(bundle); - mBarcodeScannerLauncher.launch(intent); - }); - addButton.bringToFront(); + if (!mArchiveMode) { + FloatingActionButton addButton = findViewById(R.id.fabAdd); + + addButton.setOnClickListener(v -> { + Intent intent = new Intent(getApplicationContext(), ScanActivity.class); + Bundle bundle = new Bundle(); + if (selectedTab != 0) { + bundle.putString(LoyaltyCardEditActivity.BUNDLE_ADDGROUP, groupsTabLayout.getTabAt(selectedTab).getText().toString()); + } + intent.putExtras(bundle); + mBarcodeScannerLauncher.launch(intent); + }); + addButton.bringToFront(); + } } @Override public void onBackPressed() { + if (!mSearchView.isIconified()) { mSearchView.setIconified(true); return; @@ -381,7 +445,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard group = (Group) mGroup; } - mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection)); + mAdapter.swapCursor(DBHelper.getLoyaltyCardCursor(mDatabase, mFilter, group, mOrder, mOrderDirection, mArchiveMode ? DBHelper.LoyaltyCardArchiveFilter.Archived : DBHelper.LoyaltyCardArchiveFilter.Unarchived)); if (updateCount) { updateLoyaltyCardCount(); @@ -424,6 +488,11 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } } + private void extractIntentFields(Intent intent) { + final Bundle b = intent.getExtras(); + mArchiveMode = b != null && b.getBoolean(BUNDLE_ARCHIVE_MODE, false); + } + public void updateTabGroups(TabLayout groupsTabLayout) { List newGroups = DBHelper.getGroups(mDatabase); @@ -448,11 +517,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } groupsTabLayout.setVisibility(View.VISIBLE); + } @Override public boolean onCreateOptionsMenu(Menu inputMenu) { - getMenuInflater().inflate(R.menu.main_menu, inputMenu); + if(!mArchiveMode) + getMenuInflater().inflate(R.menu.main_menu, inputMenu); + else{ + getMenuInflater().inflate(R.menu.archive_menu, inputMenu); + } Utils.updateMenuCardDetailsButtonState(inputMenu.findItem(R.id.action_unfold), mAdapter.showingDetails()); displayCardSetupOptions(inputMenu, mLoyaltyCardCount > 0); @@ -488,6 +562,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } }); } + if(!mArchiveMode) { + if (DBHelper.getArchivedCardsCount(mDatabase) == 0) { + inputMenu.findItem(R.id.action_archived).setVisible(false); + } else { + inputMenu.findItem(R.id.action_archived).setVisible(true); + } + } + return super.onCreateOptionsMenu(inputMenu); } @@ -495,6 +577,10 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard public boolean onOptionsItemSelected(MenuItem inputItem) { int id = inputItem.getItemId(); + if (id == android.R.id.home) { + onBackPressed(); + } + if (id == R.id.action_unfold) { mAdapter.showDetails(!mAdapter.showingDetails()); invalidateOptionsMenu(); @@ -518,17 +604,21 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard final View customLayout = getLayoutInflater().inflate(R.layout.sorting_option, null); builder.setView(customLayout); - CheckBox ch = (CheckBox) customLayout.findViewById(R.id.checkBox_reverse); - ch.setChecked(mOrderDirection == DBHelper.LoyaltyCardOrderDirection.Descending); + CheckBox showReversed = (CheckBox) customLayout.findViewById(R.id.checkBox_reverse); + + + showReversed.setChecked(mOrderDirection == DBHelper.LoyaltyCardOrderDirection.Descending); + builder.setSingleChoiceItems(R.array.sort_types_array, currentIndex.get(), (dialog, which) -> currentIndex.set(which)); builder.setPositiveButton(R.string.sort, (dialog, which) -> { - if (ch.isChecked()) { - setSort(loyaltyCardOrders.get(currentIndex.get()), DBHelper.LoyaltyCardOrderDirection.Descending); - } else { - setSort(loyaltyCardOrders.get(currentIndex.get()), DBHelper.LoyaltyCardOrderDirection.Ascending); - } + + setSort( + loyaltyCardOrders.get(currentIndex.get()), + showReversed.isChecked() ? DBHelper.LoyaltyCardOrderDirection.Descending : DBHelper.LoyaltyCardOrderDirection.Ascending + ); + dialog.dismiss(); }); @@ -564,6 +654,16 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard return true; } + if(id == R.id.action_archived){ + Intent i = new Intent(getApplicationContext(), MainActivity.class); + Bundle bundle = new Bundle(); + bundle.putBoolean("archiveMode", true); + i.putExtras(bundle); + startActivity(i); + return true; + } + + return super.onOptionsItemSelected(inputItem); } @@ -685,10 +785,47 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mCurrentActionMode.setTitle(getResources().getQuantityString(R.plurals.selectedCardCount, count, count)); MenuItem editItem = mCurrentActionMode.getMenu().findItem(R.id.action_edit); + MenuItem archiveItem = mCurrentActionMode.getMenu().findItem(R.id.action_archive); + MenuItem unarchiveItem = mCurrentActionMode.getMenu().findItem(R.id.action_unarchive); + MenuItem starItem = mCurrentActionMode.getMenu().findItem(R.id.action_star); + MenuItem unstarItem = mCurrentActionMode.getMenu().findItem(R.id.action_unstar); + + boolean hasStarred = false; + boolean hasUnstarred = false; + + if(!mArchiveMode) { + unarchiveItem.setVisible(false); + archiveItem.setVisible(true); + } + else{ + unarchiveItem.setVisible(true); + archiveItem.setVisible(false); + } + + for (LoyaltyCard loyaltyCard : mAdapter.getSelectedItems()) { + + if (loyaltyCard.starStatus == 1) { + hasStarred = true; + } else { + hasUnstarred = true; + } + + if (hasStarred && hasUnstarred) { + hasStarred = true; + hasUnstarred = true; + break; + } + } + if (count == 1) { + starItem.setVisible(!hasStarred); + unstarItem.setVisible(!hasUnstarred); editItem.setVisible(true); editItem.setEnabled(true); } else { + starItem.setVisible(hasUnstarred); + unstarItem.setVisible(hasStarred); + editItem.setVisible(false); editItem.setEnabled(false); } @@ -697,6 +834,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard } } + @Override public void onRowClicked(int inputPosition) { if (mAdapter.getSelectedItemCount() > 0) { diff --git a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java index 9fd7192ee..d83c25655 100644 --- a/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/CatimaImporter.java @@ -321,6 +321,15 @@ public class CatimaImporter implements Importer { } if (starStatus != 1) starStatus = 0; + int archiveStatus = 0; + try { + archiveStatus = CSVHelpers.extractInt(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS, record, false); + } catch (FormatException _e) { + // This field did not exist in versions 2.16.3 and before + // We catch this exception so we can still import old backups + } + if (archiveStatus != 1) archiveStatus = 0; + Long lastUsed = 0L; try { lastUsed = CSVHelpers.extractLong(DBHelper.LoyaltyCardDbIds.LAST_USED, record, false); @@ -329,7 +338,7 @@ public class CatimaImporter implements Importer { // We catch this exception so we can still import old backups } - DBHelper.insertLoyaltyCard(database, id, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed); + DBHelper.insertLoyaltyCard(database, id, store, note, expiry, balance, balanceType, cardId, barcodeId, barcodeType, headerColor, starStatus, lastUsed,archiveStatus); } /** diff --git a/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java b/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java index 454edcea8..296b380f5 100644 --- a/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/FidmeImporter.java @@ -120,10 +120,11 @@ public class FidmeImporter implements Importer { // No favourite data or colour in the export either int starStatus = 0; + int archiveStatus = 0; int headerColor = Utils.getRandomHeaderColor(context); // TODO: Front and back image - DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, starStatus, null); + DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, starStatus, null,archiveStatus); } } \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/importexport/StocardImporter.java b/app/src/main/java/protect/card_locker/importexport/StocardImporter.java index 74ccc1c5a..9b519c910 100644 --- a/app/src/main/java/protect/card_locker/importexport/StocardImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/StocardImporter.java @@ -234,7 +234,7 @@ public class StocardImporter implements Importer { headerColor = Utils.getHeaderColorFromImage(cardIcon, headerColor); } - long loyaltyCardInternalId = DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, 0, null); + long loyaltyCardInternalId = DBHelper.insertLoyaltyCard(database, store, note, null, BigDecimal.valueOf(0), null, cardId, null, barcodeType, headerColor, 0, null,0); if (cardIcon != null) { Utils.saveCardImage(context, cardIcon, (int) loyaltyCardInternalId, ImageLocationType.icon); diff --git a/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java b/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java index e4e298692..20f475e10 100644 --- a/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java +++ b/app/src/main/java/protect/card_locker/importexport/VoucherVaultImporter.java @@ -126,7 +126,7 @@ public class VoucherVaultImporter implements Importer { throw new FormatException("Unknown colour type found: " + colorFromJSON); } - DBHelper.insertLoyaltyCard(database, store, "", expiry, balance, balanceType, cardId, null, barcodeType, headerColor, 0, Utils.getUnixTime()); + DBHelper.insertLoyaltyCard(database, store, "", expiry, balance, balanceType, cardId, null, barcodeType, headerColor, 0, Utils.getUnixTime(),0); } bufferedReader.close(); diff --git a/app/src/main/res/drawable/ic_baseline_archive_24.xml b/app/src/main/res/drawable/ic_baseline_archive_24.xml new file mode 100644 index 000000000..635842bf5 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_archive_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_baseline_archive_24_black.xml b/app/src/main/res/drawable/ic_baseline_archive_24_black.xml new file mode 100644 index 000000000..f96ed5dda --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_archive_24_black.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/ic_overflow_menu.xml b/app/src/main/res/drawable/ic_overflow_menu.xml new file mode 100644 index 000000000..34b93ecdf --- /dev/null +++ b/app/src/main/res/drawable/ic_overflow_menu.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/layout/archive_activity.xml b/app/src/main/res/layout/archive_activity.xml new file mode 100644 index 000000000..bc4e3e86e --- /dev/null +++ b/app/src/main/res/layout/archive_activity.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/loyalty_card_layout.xml b/app/src/main/res/layout/loyalty_card_layout.xml index 7e1529c5f..b60a78f42 100644 --- a/app/src/main/res/layout/loyalty_card_layout.xml +++ b/app/src/main/res/layout/loyalty_card_layout.xml @@ -53,7 +53,8 @@ android:id="@+id/star" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="end"> + android:layout_gravity="end" + tools:ignore="ExtraText"> + + + + + + + - \ No newline at end of file + diff --git a/app/src/main/res/menu/archive_menu.xml b/app/src/main/res/menu/archive_menu.xml new file mode 100644 index 000000000..29b190f25 --- /dev/null +++ b/app/src/main/res/menu/archive_menu.xml @@ -0,0 +1,24 @@ + + + + + diff --git a/app/src/main/res/menu/card_longclick_menu.xml b/app/src/main/res/menu/card_longclick_menu.xml index 54ea4b6a5..064832dbb 100644 --- a/app/src/main/res/menu/card_longclick_menu.xml +++ b/app/src/main/res/menu/card_longclick_menu.xml @@ -23,6 +23,30 @@ android:titleCondensed="@string/editCardTitle" app:showAsAction="ifRoom"/> + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/card_view_menu.xml b/app/src/main/res/menu/card_view_menu.xml index 55f2bda70..d1c420337 100644 --- a/app/src/main/res/menu/card_view_menu.xml +++ b/app/src/main/res/menu/card_view_menu.xml @@ -2,10 +2,6 @@ - + - \ No newline at end of file + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml index b0e238a8a..a1f1c882e 100644 --- a/app/src/main/res/menu/main_menu.xml +++ b/app/src/main/res/menu/main_menu.xml @@ -26,6 +26,10 @@ android:icon="@drawable/ic_folder_white" android:title="@string/groups" app:showAsAction="never"/> + Set scale If you want to request support, include the following info: Duplicate + Archive + Unarchive + Card archived + Card unarchived + Archive list + Overflow menu \ No newline at end of file diff --git a/app/src/test/java/protect/card_locker/DatabaseTest.java b/app/src/test/java/protect/card_locker/DatabaseTest.java index eacbcd8cf..db89ae38f 100644 --- a/app/src/test/java/protect/card_locker/DatabaseTest.java +++ b/app/src/test/java/protect/card_locker/DatabaseTest.java @@ -43,7 +43,7 @@ public class DatabaseTest { @Test public void addRemoveOneGiftCard() { assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -60,6 +60,7 @@ public class DatabaseTest { assertEquals(BarcodeFormat.UPC_A, loyaltyCard.barcodeType.format()); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(0, loyaltyCard.starStatus); + assertEquals(0, loyaltyCard.archiveStatus); result = DBHelper.deleteLoyaltyCard(mDatabase, mActivity, 1); assertTrue(result); @@ -69,7 +70,7 @@ public class DatabaseTest { @Test public void updateGiftCard() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -90,11 +91,12 @@ public class DatabaseTest { assertEquals(BarcodeFormat.AZTEC, loyaltyCard.barcodeType.format()); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(0, loyaltyCard.starStatus); + assertEquals(0, loyaltyCard.archiveStatus); } @Test public void updateGiftCardOnlyStar() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -115,6 +117,7 @@ public class DatabaseTest { assertEquals(BarcodeFormat.UPC_A, loyaltyCard.barcodeType.format()); assertEquals(DEFAULT_HEADER_COLOR, loyaltyCard.headerColor); assertEquals(1, loyaltyCard.starStatus); + assertEquals(0, loyaltyCard.archiveStatus); } @Test @@ -129,7 +132,7 @@ public class DatabaseTest { @Test public void emptyGiftCardValues() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "", "", null, new BigDecimal("0"), null, "", null, null, null, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "", "", null, new BigDecimal("0"), null, "", null, null, null, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -146,6 +149,7 @@ public class DatabaseTest { assertEquals(null, loyaltyCard.barcodeType); // headerColor is randomly generated when not given, so skip assertEquals(0, loyaltyCard.starStatus); + assertEquals(0, loyaltyCard.archiveStatus); } @Test @@ -156,7 +160,7 @@ public class DatabaseTest { // that they are sorted for (int index = CARDS_TO_ADD - 1; index >= 0; index--) { long id = DBHelper.insertLoyaltyCard(mDatabase, "store" + index, "note" + index, null, new BigDecimal("0"), null, "cardId" + index, - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 0, null); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 0, null,0); boolean result = (id != -1); assertTrue(result); } @@ -181,6 +185,7 @@ public class DatabaseTest { assertEquals(BarcodeFormat.UPC_A.toString(), cursor.getString(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.BARCODE_TYPE))); assertEquals(index, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.HEADER_COLOR))); assertEquals(0, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.STAR_STATUS))); + assertEquals(0, cursor.getInt(cursor.getColumnIndexOrThrow(DBHelper.LoyaltyCardDbIds.ARCHIVE_STATUS))); cursor.moveToNext(); } @@ -200,10 +205,10 @@ public class DatabaseTest { for (int index = CARDS_TO_ADD - 1; index >= 0; index--) { if (index == CARDS_TO_ADD - 1) { id = DBHelper.insertLoyaltyCard(mDatabase, "store" + index, "note" + index, null, new BigDecimal("0"), null, "cardId" + index, - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 1, null); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 1, null,0); } else { id = DBHelper.insertLoyaltyCard(mDatabase, "store" + index, "note" + index, null, new BigDecimal("0"), null, "cardId" + index, - null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 0, null); + null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), index, 0, null,0); } boolean result = (id != -1); assertTrue(result); @@ -300,7 +305,7 @@ public class DatabaseTest { public void updateGroup() { // Create card assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); @@ -412,7 +417,7 @@ public class DatabaseTest { public void cardAddAndRemoveGroups() { // Create card assertEquals(0, DBHelper.getLoyaltyCardCount(mDatabase)); - long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), DEFAULT_HEADER_COLOR, 0, null,0); boolean result = (id != -1); assertTrue(result); assertEquals(1, DBHelper.getLoyaltyCardCount(mDatabase)); diff --git a/app/src/test/java/protect/card_locker/ImportExportTest.java b/app/src/test/java/protect/card_locker/ImportExportTest.java index 8627c0af0..5b01feecb 100644 --- a/app/src/test/java/protect/card_locker/ImportExportTest.java +++ b/app/src/test/java/protect/card_locker/ImportExportTest.java @@ -87,7 +87,7 @@ public class ImportExportTest { for (int index = cardsToAdd; index > 0; index--) { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null,0); boolean result = (id != -1); assertTrue(result); } @@ -101,7 +101,7 @@ public class ImportExportTest { for (int index = cardsToAdd; index > 4; index--) { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 1, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 1, null,0); boolean result = (id != -1); assertTrue(result); } @@ -109,7 +109,7 @@ public class ImportExportTest { String storeName = String.format("store, \"%4d", index); String note = String.format("note, \"%4d", index); //if index is even - long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, storeName, note, null, new BigDecimal(String.valueOf(index)), null, BARCODE_DATA, null, BARCODE_TYPE, index, 0, null,0); boolean result = (id != -1); assertTrue(result); } @@ -118,7 +118,7 @@ public class ImportExportTest { @Test public void addLoyaltyCardsWithExpiryNeverPastTodayFuture() { - long id = DBHelper.insertLoyaltyCard(mDatabase, "No Expiry", "", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null); + long id = DBHelper.insertLoyaltyCard(mDatabase, "No Expiry", "", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null,0); boolean result = (id != -1); assertTrue(result); @@ -134,7 +134,7 @@ public class ImportExportTest { assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); - id = DBHelper.insertLoyaltyCard(mDatabase, "Past", "", new Date((long) 1), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null); + id = DBHelper.insertLoyaltyCard(mDatabase, "Past", "", new Date((long) 1), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -150,7 +150,7 @@ public class ImportExportTest { assertEquals(Integer.valueOf(0), card.headerColor); assertEquals(0, card.starStatus); - id = DBHelper.insertLoyaltyCard(mDatabase, "Today", "", new Date(), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null); + id = DBHelper.insertLoyaltyCard(mDatabase, "Today", "", new Date(), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -169,7 +169,7 @@ public class ImportExportTest { // This will break after 19 January 2038 // If someone is still maintaining this code base by then: I love you - id = DBHelper.insertLoyaltyCard(mDatabase, "Future", "", new Date(2147483648000L), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null); + id = DBHelper.insertLoyaltyCard(mDatabase, "Future", "", new Date(2147483648000L), new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, 0, 0, null,0); result = (id != -1); assertTrue(result); @@ -890,7 +890,7 @@ public class ImportExportTest { HashMap loyaltyCardIconImages = new HashMap<>(); // Create card 1 - int loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 1", "Note 1", new Date(1618053234), new BigDecimal("100"), Currency.getInstance("USD"), "1234", "5432", CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), 1, 0, null); + int loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 1", "Note 1", 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)); DBHelper.insertGroup(mDatabase, "One"); List groups = Arrays.asList(DBHelper.getGroup(mDatabase, "One")); @@ -904,7 +904,7 @@ public class ImportExportTest { loyaltyCardIconImages.put(loyaltyCardId, launcherBitmap); // Create card 2 - loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 2", "", null, new BigDecimal(0), null, "123456", null, null, 2, 1, null); + loyaltyCardId = (int) DBHelper.insertLoyaltyCard(mDatabase, "Card 2", "", null, new BigDecimal(0), null, "123456", null, null, 2, 1, null,0); loyaltyCardHashMap.put(loyaltyCardId, DBHelper.getLoyaltyCard(mDatabase, loyaltyCardId)); // Export everything diff --git a/app/src/test/java/protect/card_locker/ImportURITest.java b/app/src/test/java/protect/card_locker/ImportURITest.java index 6ae7dfa97..894a726f4 100644 --- a/app/src/test/java/protect/card_locker/ImportURITest.java +++ b/app/src/test/java/protect/card_locker/ImportURITest.java @@ -42,7 +42,7 @@ public class ImportURITest { // Generate card Date date = new Date(); - DBHelper.insertLoyaltyCard(mDatabase, "store", "This note contains evil symbols like & and = that will break the parser if not escaped right $#!%()*+;:á", date, new BigDecimal("100"), null, BarcodeFormat.UPC_E.toString(), BarcodeFormat.UPC_A.toString(), CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), Color.BLACK, 1, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "This note contains evil symbols like & and = that will break the parser if not escaped right $#!%()*+;:á", 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); @@ -65,12 +65,13 @@ public class ImportURITest { assertEquals(card.headerColor, parsedCard.headerColor); // No export of starStatus for export URL foreseen therefore 0 will be imported assertEquals(0, parsedCard.starStatus); + assertEquals(0, parsedCard.archiveStatus); } @Test public void ensureNoCrashOnMissingHeaderFields() throws InvalidObjectException, UnsupportedEncodingException { // Generate card - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("10.00"), Currency.getInstance("EUR"), BarcodeFormat.UPC_A.toString(), null, CatimaBarcode.fromBarcode(BarcodeFormat.QR_CODE), null, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", 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); @@ -93,6 +94,7 @@ public class ImportURITest { assertNull(parsedCard.headerColor); // No export of starStatus for export URL foreseen therefore 0 will be imported assertEquals(0, parsedCard.starStatus); + assertEquals(0, parsedCard.archiveStatus); } @Test diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java index 9aec4ade8..632c42568 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardCursorAdapterTest.java @@ -109,7 +109,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterEmptyNote() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -124,7 +124,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterWithNote() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -142,7 +142,7 @@ public class LoyaltyCardCursorAdapterTest { Date expiryDate = new Date(); String dateString = DateFormat.getDateInstance(DateFormat.LONG).format(expiryDate); - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", expiryDate, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", expiryDate, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -162,13 +162,13 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapterStarring() { - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeA", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null)); - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeB", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null)); - assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeC", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeA", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeB", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null,1)); + assertNotEquals(-1, DBHelper.insertLoyaltyCard(mDatabase, "storeC", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null,1)); assertEquals(3, DBHelper.getLoyaltyCardCount(mDatabase)); - Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); + Cursor cursor = DBHelper.getAllLoyaltyCardCursor(mDatabase); assertEquals(3, cursor.getCount()); cursor.moveToFirst(); @@ -180,31 +180,37 @@ public class LoyaltyCardCursorAdapterTest { assertTrue(cursor.moveToFirst()); LoyaltyCard loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); - assertEquals("storeB", loyaltyCard.store); + assertEquals("storeA", loyaltyCard.store); View view = createView(cursor); ConstraintLayout star = view.findViewById(R.id.star); + ConstraintLayout archive = view.findViewById(R.id.archivedIcon); + assertEquals(View.GONE, star.getVisibility()); + assertEquals(View.GONE, archive.getVisibility()); + + assertTrue(cursor.moveToNext()); + loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); + assertEquals("storeB", loyaltyCard.store); + view = createView(cursor); + star = view.findViewById(R.id.star); + archive = view.findViewById(R.id.archivedIcon); assertEquals(View.VISIBLE, star.getVisibility()); + assertEquals(View.VISIBLE, archive.getVisibility()); assertTrue(cursor.moveToNext()); loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); assertEquals("storeC", loyaltyCard.store); view = createView(cursor); star = view.findViewById(R.id.star); + archive = view.findViewById(R.id.archivedIcon); assertEquals(View.VISIBLE, star.getVisibility()); - - assertTrue(cursor.moveToNext()); - loyaltyCard = LoyaltyCard.toLoyaltyCard(cursor); - assertEquals("storeA", loyaltyCard.store); - view = createView(cursor); - star = view.findViewById(R.id.star); - assertEquals(View.GONE, star.getVisibility()); + assertEquals(View.VISIBLE, archive.getVisibility()); cursor.close(); } @Test public void TestCursorAdapter0Points() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -219,7 +225,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter0EUR() { - DBHelper.insertLoyaltyCard(mDatabase,"store", "", null, new BigDecimal("0"), Currency.getInstance("EUR"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase,"store", "", 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); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -234,7 +240,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter100Points() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("100"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); LoyaltyCard card = DBHelper.getLoyaltyCard(mDatabase, 1); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); @@ -249,7 +255,7 @@ public class LoyaltyCardCursorAdapterTest { @Test public void TestCursorAdapter10USD() { - DBHelper.insertLoyaltyCard(mDatabase, "store", "note", null, new BigDecimal("10.00"), Currency.getInstance("USD"), "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(mDatabase, "store", "note", 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); Cursor cursor = DBHelper.getLoyaltyCardCursor(mDatabase); diff --git a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java index 1cf7f2991..c7b9cd692 100644 --- a/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java +++ b/app/src/test/java/protect/card_locker/LoyaltyCardViewActivityTest.java @@ -355,7 +355,7 @@ public class LoyaltyCardViewActivityTest { SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); if (!newCard) { - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); } activityController.start(); @@ -591,7 +591,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -609,7 +609,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -627,7 +627,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -651,7 +651,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -689,7 +689,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -721,7 +721,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", new Date(), new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", new Date(), new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -745,7 +745,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -795,7 +795,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("10.00"), Currency.getInstance("USD"), EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("10.00"), Currency.getInstance("USD"), EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -835,7 +835,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -866,7 +866,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, null, EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -899,7 +899,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -935,7 +935,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, EAN_BARCODE_DATA, "123456", EAN_BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -970,7 +970,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -1016,7 +1016,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -1035,7 +1035,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, null,0); activityController.start(); activityController.visible(); @@ -1054,7 +1054,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, null, 0, null,0); activityController.start(); activityController.visible(); @@ -1072,7 +1072,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, null, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, null, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -1091,7 +1091,7 @@ public class LoyaltyCardViewActivityTest { final Context context = activity.getApplicationContext(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -1120,7 +1120,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); final int LARGE_FONT_SIZE = 40; @@ -1155,7 +1155,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = new DBHelper(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(activity); settings.edit() @@ -1188,7 +1188,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); activityController.resume(); @@ -1222,7 +1222,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, BARCODE_TYPE, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); @@ -1327,7 +1327,7 @@ public class LoyaltyCardViewActivityTest { Activity activity = (Activity) activityController.get(); SQLiteDatabase database = TestHelpers.getEmptyDb(activity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, null, Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, BARCODE_DATA, null, null, Color.BLACK, 0, null,0); activityController.start(); activityController.visible(); diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java index c2c4129cd..0b172557c 100644 --- a/app/src/test/java/protect/card_locker/MainActivityTest.java +++ b/app/src/test/java/protect/card_locker/MainActivityTest.java @@ -59,7 +59,7 @@ public class MainActivityTest { assertNotNull(menu); // The settings, import/export, groups, search and add button should be present - assertEquals(menu.size(), 7); + assertEquals(menu.size(), 8); assertEquals("Search", menu.findItem(R.id.action_search).getTitle().toString()); assertEquals("Sort", menu.findItem(R.id.action_sort).getTitle().toString()); assertEquals("Hide details", menu.findItem(R.id.action_unfold).getTitle().toString()); @@ -94,7 +94,7 @@ public class MainActivityTest { assertEquals(0, list.getAdapter().getItemCount()); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "store", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); assertEquals(View.VISIBLE, helpText.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); @@ -129,10 +129,10 @@ public class MainActivityTest { assertEquals(0, list.getAdapter().getItemCount()); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "storeB", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); - DBHelper.insertLoyaltyCard(database, "storeA", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); - DBHelper.insertLoyaltyCard(database, "storeD", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null); - DBHelper.insertLoyaltyCard(database, "storeC", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null); + DBHelper.insertLoyaltyCard(database, "storeB", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "storeA", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "storeD", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null,0); + DBHelper.insertLoyaltyCard(database, "storeC", "note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 1, null,0); assertEquals(View.VISIBLE, helpText.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); @@ -223,8 +223,8 @@ public class MainActivityTest { TabLayout groupTabs = mainActivity.findViewById(R.id.groups); SQLiteDatabase database = TestHelpers.getEmptyDb(mainActivity).getWritableDatabase(); - DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); - DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null); + DBHelper.insertLoyaltyCard(database, "The First Store", "Initial note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); + DBHelper.insertLoyaltyCard(database, "The Second Store", "Secondary note", null, new BigDecimal("0"), null, "cardId", null, CatimaBarcode.fromBarcode(BarcodeFormat.UPC_A), Color.BLACK, 0, null,0); DBHelper.insertGroup(database, "Group one"); List groups = new ArrayList<>();