From acf90293944cddc70cb1367ecfea1501338b4775 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 4 Sep 2022 17:14:25 +0200 Subject: [PATCH 1/2] Put archive link below card list --- .../protect/card_locker/MainActivity.java | 37 ++++---- app/src/main/res/layout/content_main.xml | 95 +++++++++++-------- app/src/main/res/menu/main_menu.xml | 4 - app/src/main/res/values/strings.xml | 4 + 4 files changed, 79 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index f5ad96f0f..79064ad1f 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -17,6 +17,7 @@ import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.widget.CheckBox; +import android.widget.TextView; import android.widget.Toast; import com.google.android.material.floatingactionbutton.FloatingActionButton; @@ -67,6 +68,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard private View mHelpText; private View mNoMatchingCardsText; private View mNoGroupCardsText; + private TextView mOpenArchiveText; private boolean mArchiveMode; public static final String BUNDLE_ARCHIVE_MODE = "archiveMode"; @@ -285,6 +287,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mHelpText = findViewById(R.id.helpText); mNoMatchingCardsText = findViewById(R.id.noMatchingCardsText); mNoGroupCardsText = findViewById(R.id.noGroupCardsText); + mOpenArchiveText = findViewById(R.id.openArchiveLinkText); mCardList = findViewById(R.id.list); mHelpText.setOnTouchListener(gestureTouchListener); @@ -292,6 +295,15 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mCardList.setOnTouchListener(gestureTouchListener); mNoGroupCardsText.setOnTouchListener(gestureTouchListener); + // Open archive on archive text click + mOpenArchiveText.setOnClickListener(view -> { + Intent i = new Intent(getApplicationContext(), MainActivity.class); + Bundle bundle = new Bundle(); + bundle.putBoolean("archiveMode", true); + i.putExtras(bundle); + startActivity(i); + }); + mAdapter = new LoyaltyCardCursorAdapter(this, null, this); mCardList.setAdapter(mAdapter); registerForContextMenu(mCardList); @@ -464,7 +476,11 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mHelpText.setVisibility(View.GONE); mNoGroupCardsText.setVisibility(View.GONE); - if (mAdapter.getItemCount() > 0) { + int archiveCount = + mArchiveMode ? 0 : + group != null ? DBHelper.getArchivedCardsCount(mDatabase, group._id) : DBHelper.getArchivedCardsCount(mDatabase); + + if (mAdapter.getItemCount() + archiveCount > 0) { mCardList.setVisibility(View.VISIBLE); mNoMatchingCardsText.setVisibility(View.GONE); } else { @@ -479,6 +495,9 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mNoGroupCardsText.setVisibility(View.VISIBLE); } } + + mOpenArchiveText.setText(getResources().getQuantityString(R.plurals.viewArchivedCardsWithCount, archiveCount, archiveCount)); + mOpenArchiveText.setVisibility(archiveCount > 0 ? View.VISIBLE : View.GONE); } else { mCardList.setVisibility(View.GONE); mHelpText.setVisibility(View.VISIBLE); @@ -566,13 +585,6 @@ 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); } @@ -658,15 +670,6 @@ 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); } diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 76975f0d5..21bd50ceb 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -1,50 +1,65 @@ - - - - - - - - + android:layout_height="wrap_content" + android:orientation="vertical"> - + + + + + + + + + + + + + diff --git a/app/src/main/res/menu/main_menu.xml b/app/src/main/res/menu/main_menu.xml index a1f1c882e..b0e238a8a 100644 --- a/app/src/main/res/menu/main_menu.xml +++ b/app/src/main/res/menu/main_menu.xml @@ -26,10 +26,6 @@ android:icon="@drawable/ic_folder_white" android:title="@string/groups" app:showAsAction="never"/> - Previous Next Install a web browser first + + View archive (%1$d card) + View archive (%1$d cards) + From 3edb0f6a5d90cc55314071c0b39eb9a0d335ace6 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 4 Sep 2022 22:06:52 +0200 Subject: [PATCH 2/2] Improve welcome screen --- CHANGELOG.md | 2 + .../protect/card_locker/MainActivity.java | 9 ++- .../card_locker/ManageGroupActivity.java | 10 ++-- app/src/main/res/layout/content_main.xml | 37 +++++++++--- app/src/main/res/values/strings.xml | 1 + .../protect/card_locker/MainActivityTest.java | 59 ++++++++++--------- 6 files changed, 70 insertions(+), 48 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a01fc4d59..822266013 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ ## Unreleased - 114 - Add Monochrome icon for Android 13 +- Improve first launch screen +- Move archive info from overflow menu to bottom of card list ## v2.19.0 - 113 diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 79064ad1f..ce6c83749 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -65,7 +65,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard protected DBHelper.LoyaltyCardOrderDirection mOrderDirection = DBHelper.LoyaltyCardOrderDirection.Ascending; protected int selectedTab = 0; private RecyclerView mCardList; - private View mHelpText; + private View mHelpSection; private View mNoMatchingCardsText; private View mNoGroupCardsText; private TextView mOpenArchiveText; @@ -284,13 +284,12 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard View.OnTouchListener gestureTouchListener = (v, event) -> mGestureDetector.onTouchEvent(event); - mHelpText = findViewById(R.id.helpText); + mHelpSection = findViewById(R.id.helpSection); mNoMatchingCardsText = findViewById(R.id.noMatchingCardsText); mNoGroupCardsText = findViewById(R.id.noGroupCardsText); mOpenArchiveText = findViewById(R.id.openArchiveLinkText); mCardList = findViewById(R.id.list); - mHelpText.setOnTouchListener(gestureTouchListener); mNoMatchingCardsText.setOnTouchListener(gestureTouchListener); mCardList.setOnTouchListener(gestureTouchListener); mNoGroupCardsText.setOnTouchListener(gestureTouchListener); @@ -473,7 +472,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard // We want the cardList to be visible regardless of the filtered match count // to ensure that the noMatchingCardsText doesn't end up being shown below // the keyboard - mHelpText.setVisibility(View.GONE); + mHelpSection.setVisibility(View.GONE); mNoGroupCardsText.setVisibility(View.GONE); int archiveCount = @@ -500,7 +499,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mOpenArchiveText.setVisibility(archiveCount > 0 ? View.VISIBLE : View.GONE); } else { mCardList.setVisibility(View.GONE); - mHelpText.setVisibility(View.VISIBLE); + mHelpSection.setVisibility(View.VISIBLE); mNoMatchingCardsText.setVisibility(View.GONE); mNoGroupCardsText.setVisibility(View.GONE); diff --git a/app/src/main/java/protect/card_locker/ManageGroupActivity.java b/app/src/main/java/protect/card_locker/ManageGroupActivity.java index 9dfe62be7..4b5174dc4 100644 --- a/app/src/main/java/protect/card_locker/ManageGroupActivity.java +++ b/app/src/main/java/protect/card_locker/ManageGroupActivity.java @@ -35,7 +35,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana protected Group mGroup = null; private RecyclerView mCardList; - private TextView mHelpText; + private TextView noGroupCardsText; private EditText mGroupNameText; private boolean mGroupNameNotInUse; @@ -49,7 +49,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana mDatabase = new DBHelper(this).getWritableDatabase(); - mHelpText = findViewById(R.id.helpText); + noGroupCardsText = findViewById(R.id.noGroupCardsText); mCardList = findViewById(R.id.list); FloatingActionButton saveButton = findViewById(R.id.fabSave); @@ -133,7 +133,7 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana finish(); }); // this setText is here because content_main.xml is reused from main activity - mHelpText.setText(getResources().getText(R.string.noGiftCardsGroup)); + noGroupCardsText.setText(getResources().getText(R.string.noGiftCardsGroup)); updateLoyaltyCardList(); } @@ -191,10 +191,10 @@ public class ManageGroupActivity extends CatimaAppCompatActivity implements Mana if (mAdapter.getItemCount() == 0) { mCardList.setVisibility(View.GONE); - mHelpText.setVisibility(View.VISIBLE); + noGroupCardsText.setVisibility(View.VISIBLE); } else { mCardList.setVisibility(View.VISIBLE); - mHelpText.setVisibility(View.GONE); + noGroupCardsText.setVisibility(View.GONE); } } diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index 21bd50ceb..ab02b2779 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -13,20 +13,39 @@ android:layout_height="wrap_content" android:orientation="vertical"> - + android:layout_height="wrap_content" + android:orientation="vertical" + android:visibility="gone"> + + + + + + + @@ -35,7 +54,7 @@ style="@style/AppTheme.TextView.NoData" android:id="@+id/noGroupCardsText" android:layout_width="match_parent" - android:layout_height="match_parent" + android:layout_height="wrap_content" android:gravity="center" android:text="@string/noGroupCards" android:visibility="gone"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 010c80c18..62961df31 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -297,4 +297,5 @@ View archive (%1$d card) View archive (%1$d cards) + Welcome to Catima diff --git a/app/src/test/java/protect/card_locker/MainActivityTest.java b/app/src/test/java/protect/card_locker/MainActivityTest.java index 0b172557c..2d881730c 100644 --- a/app/src/test/java/protect/card_locker/MainActivityTest.java +++ b/app/src/test/java/protect/card_locker/MainActivityTest.java @@ -7,6 +7,7 @@ import android.database.sqlite.SQLiteDatabase; import android.graphics.Color; import android.view.Menu; import android.view.View; +import android.widget.LinearLayout; import android.widget.TextView; import com.google.android.material.tabs.TabLayout; @@ -41,8 +42,8 @@ public class MainActivityTest { Activity activity = Robolectric.setupActivity(MainActivity.class); assertNotNull(activity); - TextView helpText = activity.findViewById(R.id.helpText); - assertEquals(View.VISIBLE, helpText.getVisibility()); + LinearLayout helpSection = activity.findViewById(R.id.helpSection); + assertEquals(View.VISIBLE, helpSection.getVisibility()); TextView noMatchingCardsText = activity.findViewById(R.id.noMatchingCardsText); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); @@ -59,7 +60,7 @@ public class MainActivityTest { assertNotNull(menu); // The settings, import/export, groups, search and add button should be present - assertEquals(menu.size(), 8); + assertEquals(menu.size(), 7); 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()); @@ -87,7 +88,7 @@ public class MainActivityTest { activityController.start(); activityController.resume(); - TextView helpText = mainActivity.findViewById(R.id.helpText); + LinearLayout helpSection = mainActivity.findViewById(R.id.helpSection); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); RecyclerView list = mainActivity.findViewById(R.id.list); @@ -96,14 +97,14 @@ public class MainActivityTest { 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,0); - assertEquals(View.VISIBLE, helpText.getVisibility()); + assertEquals(View.VISIBLE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -122,7 +123,7 @@ public class MainActivityTest { activityController.resume(); activityController.visible(); - TextView helpText = mainActivity.findViewById(R.id.helpText); + LinearLayout helpSection = mainActivity.findViewById(R.id.helpSection); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); RecyclerView list = mainActivity.findViewById(R.id.list); @@ -134,7 +135,7 @@ public class MainActivityTest { 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.VISIBLE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); @@ -142,7 +143,7 @@ public class MainActivityTest { activityController.resume(); activityController.visible(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -217,7 +218,7 @@ public class MainActivityTest { activityController.start(); activityController.resume(); - TextView helpText = mainActivity.findViewById(R.id.helpText); + LinearLayout helpSection = mainActivity.findViewById(R.id.helpSection); TextView noMatchingCardsText = mainActivity.findViewById(R.id.noMatchingCardsText); RecyclerView list = mainActivity.findViewById(R.id.list); TabLayout groupTabs = mainActivity.findViewById(R.id.groups); @@ -234,7 +235,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -245,7 +246,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -257,7 +258,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -266,7 +267,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -277,7 +278,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -289,7 +290,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -298,7 +299,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -309,7 +310,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -321,7 +322,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -330,7 +331,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -341,7 +342,7 @@ public class MainActivityTest { activityController.pause(); activityController.resume(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -355,7 +356,7 @@ public class MainActivityTest { shadowOf(getMainLooper()).idle(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); @@ -364,7 +365,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -377,7 +378,7 @@ public class MainActivityTest { shadowOf(getMainLooper()).idle(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); @@ -391,7 +392,7 @@ public class MainActivityTest { shadowOf(getMainLooper()).idle(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); @@ -400,7 +401,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.VISIBLE, noMatchingCardsText.getVisibility()); assertEquals(View.GONE, list.getVisibility()); @@ -413,7 +414,7 @@ public class MainActivityTest { shadowOf(getMainLooper()).idle(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -427,7 +428,7 @@ public class MainActivityTest { shadowOf(getMainLooper()).idle(); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility()); @@ -436,7 +437,7 @@ public class MainActivityTest { // Switch back to all groups groupTabs.selectTab(groupTabs.getTabAt(0)); - assertEquals(View.GONE, helpText.getVisibility()); + assertEquals(View.GONE, helpSection.getVisibility()); assertEquals(View.GONE, noMatchingCardsText.getVisibility()); assertEquals(View.VISIBLE, list.getVisibility());