From 9a0149def89ea4f55efaf1902e09e97fa427a6ff Mon Sep 17 00:00:00 2001 From: realwk <97958348+realwk@users.noreply.github.com> Date: Wed, 30 Jul 2025 21:21:55 +0200 Subject: [PATCH 1/5] Initial widget work Co-authored-by: Sylvia van Os --- app/src/main/AndroidManifest.xml | 18 +++ .../card_locker/CatimaRemoteViewsService.kt | 110 ++++++++++++++++++ .../java/protect/card_locker/CatimaWidget.kt | 34 ++++++ .../protect/card_locker/MainActivity.java | 28 ++--- .../main/java/protect/card_locker/Utils.java | 37 ++++++ .../res/drawable-nodpi/widget_preview.png | Bin 0 -> 61139 bytes app/src/main/res/layout/catima_widget.xml | 17 +++ .../main/res/layout/catima_widget_empty.xml | 12 ++ .../main/res/layout/catima_widget_item.xml | 26 +++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/xml/catima_widget_info.xml | 12 ++ 11 files changed, 280 insertions(+), 16 deletions(-) create mode 100644 app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt create mode 100644 app/src/main/java/protect/card_locker/CatimaWidget.kt create mode 100644 app/src/main/res/drawable-nodpi/widget_preview.png create mode 100644 app/src/main/res/layout/catima_widget.xml create mode 100644 app/src/main/res/layout/catima_widget_empty.xml create mode 100644 app/src/main/res/layout/catima_widget_item.xml create mode 100644 app/src/main/res/xml/catima_widget_info.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 98f978d98..a65683a29 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -30,6 +30,20 @@ android:supportsRtl="true" android:theme="@style/AppTheme" android:localeConfig="@xml/locales_config"> + + + + + + + + + + + diff --git a/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt b/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt new file mode 100644 index 000000000..d4ca18443 --- /dev/null +++ b/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt @@ -0,0 +1,110 @@ +package protect.card_locker + +import android.content.Context +import android.content.Intent +import android.database.sqlite.SQLiteDatabase +import android.graphics.Color +import android.graphics.drawable.Icon +import android.os.Build +import android.view.View +import android.widget.RemoteViews +import android.widget.RemoteViewsService +import protect.card_locker.DBHelper.LoyaltyCardArchiveFilter +import kotlin.math.max + +class CatimaWidgetRemoteViewsFactory(private var context: Context) : + RemoteViewsService.RemoteViewsFactory { + + private var mDatabase: SQLiteDatabase = DBHelper(context).readableDatabase + + override fun onCreate() { + onDataSetChanged() + } + + private var mCards: ArrayList = ArrayList() + + override fun onDataSetChanged() { + val mOrder = Utils.getLoyaltyCardOrder(context); + val mOrderDirection = Utils.getLoyaltyCardOrderDirection(context); + + val cur = DBHelper.getLoyaltyCardCursor( + mDatabase, + "", + null, + mOrder, + mOrderDirection, + LoyaltyCardArchiveFilter.Unarchived + ) + + mCards.clear() + if (cur.moveToFirst()) { + do { + val item = LoyaltyCard.fromCursor(context, cur) + mCards.add(item) + } while (cur.moveToNext()) + } + } + + override fun onDestroy() {} + + override fun getCount(): Int { + return max(1, mCards.count()) + } + + private fun createRemoteView(item: LoyaltyCard): RemoteViews + { + val rv = RemoteViews(context.packageName, R.layout.catima_widget_item).apply { + val headerColor = Utils.getHeaderColor(context, item) + val foreground = if (Utils.needsDarkForeground(headerColor)) Color.BLACK else Color.WHITE + setInt(R.id.item_container, "setBackgroundColor", headerColor) + val icon = item.getImageThumbnail(context) + // setImageViewIcon is not supported on Android 5, so force Android 5 down the text path + if (icon != null && Build.VERSION.SDK_INT >= 23) { + setInt(R.id.item_container, "setBackgroundColor", foreground) + setImageViewIcon(R.id.item_image, Icon.createWithBitmap(icon)) + setViewVisibility(R.id.item_text, View.INVISIBLE) + setViewVisibility(R.id.item_image, View.VISIBLE) + } else { + setImageViewBitmap(R.id.item_image, null) + setTextViewText(R.id.item_text, item.store) + setViewVisibility(R.id.item_text, View.VISIBLE) + setViewVisibility(R.id.item_image, View.INVISIBLE) + setTextColor( + R.id.item_text, + foreground + ) + } + + val fillInIntent = Intent().apply { + putExtra(LoyaltyCardViewActivity.BUNDLE_ID, item.id) + } + + setOnClickFillInIntent(R.id.item_container, fillInIntent) + } + + return rv + } + + override fun getViewAt(position: Int): RemoteViews { + if (mCards.isEmpty()) { + return RemoteViews(context.packageName, R.layout.catima_widget_empty) + } + + val item = mCards[position] + return createRemoteView(item) + } + + override fun getLoadingView(): RemoteViews? = null + + override fun getViewTypeCount(): Int = 1 + + override fun getItemId(position: Int): Long = position.toLong() + + override fun hasStableIds(): Boolean = true +} + +class CatimaRemoteViewsService : RemoteViewsService() { + override fun onGetViewFactory(intent: Intent?): RemoteViewsFactory { + return CatimaWidgetRemoteViewsFactory(applicationContext) + } +} \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/CatimaWidget.kt b/app/src/main/java/protect/card_locker/CatimaWidget.kt new file mode 100644 index 000000000..86b6c6070 --- /dev/null +++ b/app/src/main/java/protect/card_locker/CatimaWidget.kt @@ -0,0 +1,34 @@ +package protect.card_locker + +import android.app.PendingIntent +import android.appwidget.AppWidgetManager +import android.appwidget.AppWidgetProvider +import android.content.Context +import android.content.Intent +import android.widget.RemoteViews + +class CatimaWidget : AppWidgetProvider() { + override fun onUpdate( + context: Context, + appWidgetManager: AppWidgetManager, + appWidgetIds: IntArray + ) { + for (appWidgetId in appWidgetIds) { + val views = RemoteViews(context.packageName, R.layout.catima_widget) + val intent = Intent(context, CatimaRemoteViewsService::class.java) + intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) + views.setRemoteAdapter(R.id.grid_view, intent) + + val templateIntent = Intent(context, LoyaltyCardViewActivity::class.java) + val pendingIntent = PendingIntent.getActivity( + context, + 0, + templateIntent, + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + + views.setPendingIntentTemplate(R.id.grid_view, pendingIntent) + appWidgetManager.updateAppWidget(appWidgetId, views) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index dbcbd8a0d..9adc8ee10 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -2,6 +2,8 @@ package protect.card_locker; import android.app.Activity; import android.app.SearchManager; +import android.appwidget.AppWidgetManager; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -330,22 +332,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard selectedTab = activeTabPref.getInt(getString(R.string.sharedpreference_active_tab), 0); // Restore sort preferences from Shared Preferences - // If one of the sorting prefererences has never been set or is set to an invalid value, - // stick to the defaults. - SharedPreferences sortPref = getApplicationContext().getSharedPreferences( - getString(R.string.sharedpreference_sort), - Context.MODE_PRIVATE); - - String orderString = sortPref.getString(getString(R.string.sharedpreference_sort_order), null); - String orderDirectionString = sortPref.getString(getString(R.string.sharedpreference_sort_direction), null); - - if (orderString != null && orderDirectionString != null) { - try { - mOrder = DBHelper.LoyaltyCardOrder.valueOf(orderString); - mOrderDirection = DBHelper.LoyaltyCardOrderDirection.valueOf(orderDirectionString); - } catch (IllegalArgumentException ignored) { - } - } + mOrder = Utils.getLoyaltyCardOrder(this); + mOrderDirection = Utils.getLoyaltyCardOrderDirection(this); mGroup = null; @@ -442,6 +430,14 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard if (mCurrentActionMode != null) { mCurrentActionMode.finish(); } + + updateWidget(mAdapter.mContext); + } + + private void updateWidget(Context context) { + AppWidgetManager manager = AppWidgetManager.getInstance(context); + int[] ids = manager.getAppWidgetIds(new ComponentName(context, CatimaWidget.class)); + manager.notifyAppWidgetViewDataChanged(ids, R.id.grid_view); } private void processParseResultList(List parseResultList, String group, boolean closeAppOnNoBarcode) { diff --git a/app/src/main/java/protect/card_locker/Utils.java b/app/src/main/java/protect/card_locker/Utils.java index a8eec2319..87a96371d 100644 --- a/app/src/main/java/protect/card_locker/Utils.java +++ b/app/src/main/java/protect/card_locker/Utils.java @@ -4,6 +4,7 @@ import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; @@ -1176,4 +1177,40 @@ public class Utils { return ImageView.ScaleType.FIT_CENTER; } + + public static DBHelper.LoyaltyCardOrder getLoyaltyCardOrder(Context context) { + SharedPreferences sortPref = context.getSharedPreferences( + "sharedpreference_sort", + Context.MODE_PRIVATE + ); + + String orderString = sortPref.getString("sharedpreference_sort_order", null); + + if (orderString != null) { + try { + return DBHelper.LoyaltyCardOrder.valueOf(orderString); + } catch (IllegalArgumentException ignored) { + } + } + + return DBHelper.LoyaltyCardOrder.Alpha; + } + + public static DBHelper.LoyaltyCardOrderDirection getLoyaltyCardOrderDirection(Context context) { + SharedPreferences sortPref = context.getSharedPreferences( + "sharedpreference_sort", + Context.MODE_PRIVATE + ); + + String orderDirectionString = sortPref.getString("sharedpreference_sort_direction", null); + + if (orderDirectionString != null) { + try { + return DBHelper.LoyaltyCardOrderDirection.valueOf(orderDirectionString); + } catch (IllegalArgumentException ignored) { + } + } + + return DBHelper.LoyaltyCardOrderDirection.Ascending; + } } diff --git a/app/src/main/res/drawable-nodpi/widget_preview.png b/app/src/main/res/drawable-nodpi/widget_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..2e738a426f9eb8896fb95b5756450a091c2c3b8c GIT binary patch literal 61139 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/catima_widget.xml b/app/src/main/res/layout/catima_widget.xml new file mode 100644 index 000000000..e85e1091a --- /dev/null +++ b/app/src/main/res/layout/catima_widget.xml @@ -0,0 +1,17 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/catima_widget_empty.xml b/app/src/main/res/layout/catima_widget_empty.xml new file mode 100644 index 000000000..a1857232c --- /dev/null +++ b/app/src/main/res/layout/catima_widget_empty.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/catima_widget_item.xml b/app/src/main/res/layout/catima_widget_item.xml new file mode 100644 index 000000000..84b757039 --- /dev/null +++ b/app/src/main/res/layout/catima_widget_item.xml @@ -0,0 +1,26 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d78a86dc2..420f84b2f 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -362,5 +362,7 @@ This file is not supported Sorry, something went wrong, please try again... Width + Card list Set Barcode Width + No loyalty cards diff --git a/app/src/main/res/xml/catima_widget_info.xml b/app/src/main/res/xml/catima_widget_info.xml new file mode 100644 index 000000000..2efb897aa --- /dev/null +++ b/app/src/main/res/xml/catima_widget_info.xml @@ -0,0 +1,12 @@ + + From 7277ff26fc36f992e37dc43fdb57201707d00974 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Sun, 13 Jul 2025 23:24:40 +0200 Subject: [PATCH 2/5] Refactor deprecated widget code This replaces the deprecated widget method with the new one and ensures it consistently updates on changes. --- app/build.gradle.kts | 1 + app/src/main/AndroidManifest.xml | 4 - .../card_locker/CatimaRemoteViewsService.kt | 110 ------------------ .../java/protect/card_locker/CatimaWidget.kt | 90 +++++++++++++- .../card_locker/LoyaltyCardViewActivity.java | 4 + .../protect/card_locker/MainActivity.java | 8 +- 6 files changed, 91 insertions(+), 126 deletions(-) delete mode 100644 app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 32749ea0f..7446d69ab 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -112,6 +112,7 @@ dependencies { implementation("androidx.appcompat:appcompat:1.7.1") implementation("androidx.constraintlayout:constraintlayout:2.2.1") implementation("androidx.core:core-ktx:1.16.0") + implementation("androidx.core:core-remoteviews:1.1.0") implementation("androidx.core:core-splashscreen:1.0.1") implementation("androidx.exifinterface:exifinterface:1.4.1") implementation("androidx.palette:palette:1.0.0") diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a65683a29..adb39906a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -218,9 +218,5 @@ - - diff --git a/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt b/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt deleted file mode 100644 index d4ca18443..000000000 --- a/app/src/main/java/protect/card_locker/CatimaRemoteViewsService.kt +++ /dev/null @@ -1,110 +0,0 @@ -package protect.card_locker - -import android.content.Context -import android.content.Intent -import android.database.sqlite.SQLiteDatabase -import android.graphics.Color -import android.graphics.drawable.Icon -import android.os.Build -import android.view.View -import android.widget.RemoteViews -import android.widget.RemoteViewsService -import protect.card_locker.DBHelper.LoyaltyCardArchiveFilter -import kotlin.math.max - -class CatimaWidgetRemoteViewsFactory(private var context: Context) : - RemoteViewsService.RemoteViewsFactory { - - private var mDatabase: SQLiteDatabase = DBHelper(context).readableDatabase - - override fun onCreate() { - onDataSetChanged() - } - - private var mCards: ArrayList = ArrayList() - - override fun onDataSetChanged() { - val mOrder = Utils.getLoyaltyCardOrder(context); - val mOrderDirection = Utils.getLoyaltyCardOrderDirection(context); - - val cur = DBHelper.getLoyaltyCardCursor( - mDatabase, - "", - null, - mOrder, - mOrderDirection, - LoyaltyCardArchiveFilter.Unarchived - ) - - mCards.clear() - if (cur.moveToFirst()) { - do { - val item = LoyaltyCard.fromCursor(context, cur) - mCards.add(item) - } while (cur.moveToNext()) - } - } - - override fun onDestroy() {} - - override fun getCount(): Int { - return max(1, mCards.count()) - } - - private fun createRemoteView(item: LoyaltyCard): RemoteViews - { - val rv = RemoteViews(context.packageName, R.layout.catima_widget_item).apply { - val headerColor = Utils.getHeaderColor(context, item) - val foreground = if (Utils.needsDarkForeground(headerColor)) Color.BLACK else Color.WHITE - setInt(R.id.item_container, "setBackgroundColor", headerColor) - val icon = item.getImageThumbnail(context) - // setImageViewIcon is not supported on Android 5, so force Android 5 down the text path - if (icon != null && Build.VERSION.SDK_INT >= 23) { - setInt(R.id.item_container, "setBackgroundColor", foreground) - setImageViewIcon(R.id.item_image, Icon.createWithBitmap(icon)) - setViewVisibility(R.id.item_text, View.INVISIBLE) - setViewVisibility(R.id.item_image, View.VISIBLE) - } else { - setImageViewBitmap(R.id.item_image, null) - setTextViewText(R.id.item_text, item.store) - setViewVisibility(R.id.item_text, View.VISIBLE) - setViewVisibility(R.id.item_image, View.INVISIBLE) - setTextColor( - R.id.item_text, - foreground - ) - } - - val fillInIntent = Intent().apply { - putExtra(LoyaltyCardViewActivity.BUNDLE_ID, item.id) - } - - setOnClickFillInIntent(R.id.item_container, fillInIntent) - } - - return rv - } - - override fun getViewAt(position: Int): RemoteViews { - if (mCards.isEmpty()) { - return RemoteViews(context.packageName, R.layout.catima_widget_empty) - } - - val item = mCards[position] - return createRemoteView(item) - } - - override fun getLoadingView(): RemoteViews? = null - - override fun getViewTypeCount(): Int = 1 - - override fun getItemId(position: Int): Long = position.toLong() - - override fun hasStableIds(): Boolean = true -} - -class CatimaRemoteViewsService : RemoteViewsService() { - override fun onGetViewFactory(intent: Intent?): RemoteViewsFactory { - return CatimaWidgetRemoteViewsFactory(applicationContext) - } -} \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/CatimaWidget.kt b/app/src/main/java/protect/card_locker/CatimaWidget.kt index 86b6c6070..d5984ecfa 100644 --- a/app/src/main/java/protect/card_locker/CatimaWidget.kt +++ b/app/src/main/java/protect/card_locker/CatimaWidget.kt @@ -3,22 +3,36 @@ package protect.card_locker import android.app.PendingIntent import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetProvider +import android.content.ComponentName import android.content.Context import android.content.Intent +import android.graphics.Color +import android.graphics.drawable.Icon +import android.os.Build +import android.view.View import android.widget.RemoteViews +import androidx.core.widget.RemoteViewsCompat +import protect.card_locker.DBHelper.LoyaltyCardArchiveFilter class CatimaWidget : AppWidgetProvider() { + fun updateAll(context: Context) { + val appWidgetManager = AppWidgetManager.getInstance(context) + val componentName = ComponentName(context, CatimaWidget::class.java) + onUpdate( + context, + appWidgetManager, + appWidgetManager.getAppWidgetIds(componentName) + ) + } + override fun onUpdate( context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray ) { for (appWidgetId in appWidgetIds) { + // Prepare generic widget val views = RemoteViews(context.packageName, R.layout.catima_widget) - val intent = Intent(context, CatimaRemoteViewsService::class.java) - intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) - views.setRemoteAdapter(R.id.grid_view, intent) - val templateIntent = Intent(context, LoyaltyCardViewActivity::class.java) val pendingIntent = PendingIntent.getActivity( context, @@ -26,9 +40,75 @@ class CatimaWidget : AppWidgetProvider() { templateIntent, PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT ) - views.setPendingIntentTemplate(R.id.grid_view, pendingIntent) + + // Get cards + val order = Utils.getLoyaltyCardOrder(context); + val orderDirection = Utils.getLoyaltyCardOrderDirection(context); + val database = DBHelper(context).readableDatabase + + val loyaltyCardCursor = DBHelper.getLoyaltyCardCursor( + database, + "", + null, + order, + orderDirection, + LoyaltyCardArchiveFilter.Unarchived + ) + + // Bind every card to cell in the grid + val remoteCollectionItemsBuilder = RemoteViewsCompat.RemoteCollectionItems.Builder() + if (loyaltyCardCursor.moveToFirst()) { + do { + val loyaltyCard = LoyaltyCard.fromCursor(context, loyaltyCardCursor) + remoteCollectionItemsBuilder.addItem( + loyaltyCard.id.toLong(), + createRemoteViews( + context, loyaltyCard + ) + ) + } while (loyaltyCardCursor.moveToNext()) + } + RemoteViewsCompat.setRemoteAdapter(context, views, appWidgetId, R.id.grid_view, remoteCollectionItemsBuilder.build()) + + // Let Android know the widget is ready for display appWidgetManager.updateAppWidget(appWidgetId, views) } } + + private fun createRemoteViews(context: Context, loyaltyCard: LoyaltyCard): RemoteViews { + // Create a single cell for the grid view, bind it to open in the LoyaltyCardViewActivity + // Note: Android 5 will not use bitmaps + val remoteViews = RemoteViews(context.packageName, R.layout.catima_widget_item).apply { + val headerColor = Utils.getHeaderColor(context, loyaltyCard) + val foreground = if (Utils.needsDarkForeground(headerColor)) Color.BLACK else Color.WHITE + setInt(R.id.item_container, "setBackgroundColor", headerColor) + val icon = loyaltyCard.getImageThumbnail(context) + // setImageViewIcon is not supported on Android 5, so force Android 5 down the text path + if (icon != null && Build.VERSION.SDK_INT >= 23) { + setInt(R.id.item_container, "setBackgroundColor", foreground) + setImageViewIcon(R.id.item_image, Icon.createWithBitmap(icon)) + setViewVisibility(R.id.item_text, View.INVISIBLE) + setViewVisibility(R.id.item_image, View.VISIBLE) + } else { + setImageViewBitmap(R.id.item_image, null) + setTextViewText(R.id.item_text, loyaltyCard.store) + setViewVisibility(R.id.item_text, View.VISIBLE) + setViewVisibility(R.id.item_image, View.INVISIBLE) + setTextColor( + R.id.item_text, + foreground + ) + } + + // Add the card ID to the intent template + val fillInIntent = Intent().apply { + putExtra(LoyaltyCardViewActivity.BUNDLE_ID, loyaltyCard.id) + } + + setOnClickFillInIntent(R.id.item_container, fillInIntent) + } + + return remoteViews + } } \ No newline at end of file diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index eeb9383ba..4317c4f11 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -880,6 +880,8 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements } else if (id == R.id.action_star_unstar) { DBHelper.updateLoyaltyCardStarStatus(database, loyaltyCardId, loyaltyCard.starStatus == 0 ? 1 : 0); + new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); + // Re-init loyaltyCard with new data from DB onResume(); invalidateOptionsMenu(); @@ -890,6 +892,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements Toast.makeText(LoyaltyCardViewActivity.this, R.string.archived, Toast.LENGTH_LONG).show(); ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId); + new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); // Re-init loyaltyCard with new data from DB onResume(); @@ -915,6 +918,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements DBHelper.deleteLoyaltyCard(database, LoyaltyCardViewActivity.this, loyaltyCardId); ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId); + new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); finish(); dialog.dismiss(); diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 9adc8ee10..70f49638b 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -431,13 +431,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mCurrentActionMode.finish(); } - updateWidget(mAdapter.mContext); - } - - private void updateWidget(Context context) { - AppWidgetManager manager = AppWidgetManager.getInstance(context); - int[] ids = manager.getAppWidgetIds(new ComponentName(context, CatimaWidget.class)); - manager.notifyAppWidgetViewDataChanged(ids, R.id.grid_view); + new CatimaWidget().updateAll(mAdapter.mContext); } private void processParseResultList(List parseResultList, String group, boolean closeAppOnNoBarcode) { From 54c27f7038b40473ec1c22d6a179962851d7a4a1 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Tue, 29 Jul 2025 23:18:30 +0200 Subject: [PATCH 3/5] Refactor widget to be the same size as regular cards This isn't as automatic as I would've liked, but with some manual trial-and-error I think this works well enough in keeping the aspect ratio while somewhat "scaling" based on size (at least the number of columns are scaled) --- .../java/protect/card_locker/CatimaWidget.kt | 4 +- .../res/drawable-nodpi/widget_preview.png | Bin 61139 -> 45224 bytes app/src/main/res/layout/catima_widget.xml | 9 ++-- .../main/res/layout/catima_widget_item.xml | 39 +++++++++++------- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/protect/card_locker/CatimaWidget.kt b/app/src/main/java/protect/card_locker/CatimaWidget.kt index d5984ecfa..c83d86b88 100644 --- a/app/src/main/java/protect/card_locker/CatimaWidget.kt +++ b/app/src/main/java/protect/card_locker/CatimaWidget.kt @@ -82,11 +82,11 @@ class CatimaWidget : AppWidgetProvider() { val remoteViews = RemoteViews(context.packageName, R.layout.catima_widget_item).apply { val headerColor = Utils.getHeaderColor(context, loyaltyCard) val foreground = if (Utils.needsDarkForeground(headerColor)) Color.BLACK else Color.WHITE - setInt(R.id.item_container, "setBackgroundColor", headerColor) + setInt(R.id.item_container_foreground, "setBackgroundColor", headerColor) val icon = loyaltyCard.getImageThumbnail(context) // setImageViewIcon is not supported on Android 5, so force Android 5 down the text path if (icon != null && Build.VERSION.SDK_INT >= 23) { - setInt(R.id.item_container, "setBackgroundColor", foreground) + setInt(R.id.item_container_foreground, "setBackgroundColor", foreground) setImageViewIcon(R.id.item_image, Icon.createWithBitmap(icon)) setViewVisibility(R.id.item_text, View.INVISIBLE) setViewVisibility(R.id.item_image, View.VISIBLE) diff --git a/app/src/main/res/drawable-nodpi/widget_preview.png b/app/src/main/res/drawable-nodpi/widget_preview.png index 2e738a426f9eb8896fb95b5756450a091c2c3b8c..68cd4c43a11fdf62d479ebb3004abbe90245d103 100644 GIT binary patch literal 45224 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∨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 ndS4g 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 NoRl)4R>Cy+e*nUFWS0N{ literal 61139 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 diff --git a/app/src/main/res/layout/catima_widget.xml b/app/src/main/res/layout/catima_widget.xml index e85e1091a..1a7a6e53c 100644 --- a/app/src/main/res/layout/catima_widget.xml +++ b/app/src/main/res/layout/catima_widget.xml @@ -1,17 +1,18 @@ + \ No newline at end of file diff --git a/app/src/main/res/layout/catima_widget_item.xml b/app/src/main/res/layout/catima_widget_item.xml index 84b757039..c5449c07f 100644 --- a/app/src/main/res/layout/catima_widget_item.xml +++ b/app/src/main/res/layout/catima_widget_item.xml @@ -1,26 +1,37 @@ + + android:background="@drawable/round_outline" + android:clipToOutline="true"> - + android:id="@+id/item_container_foreground" + android:padding="4dp"> - + + + \ No newline at end of file From acc72c09372c5cb004f8a3ad723c3b566a46a390 Mon Sep 17 00:00:00 2001 From: Sylvia van Os Date: Tue, 29 Jul 2025 23:37:21 +0200 Subject: [PATCH 4/5] Rename from CatimaWidget to ListWidget This makes the codebase easier to understand if we get more widget types in the future --- app/src/main/AndroidManifest.xml | 4 +- .../{CatimaWidget.kt => ListWidget.kt} | 88 +++++++++++-------- .../card_locker/LoyaltyCardViewActivity.java | 6 +- .../protect/card_locker/MainActivity.java | 2 +- .../{catima_widget.xml => list_widget.xml} | 2 +- ...widget_empty.xml => list_widget_empty.xml} | 7 +- ...a_widget_item.xml => list_widget_item.xml} | 0 app/src/main/res/values/strings.xml | 2 +- ...a_widget_info.xml => list_widget_info.xml} | 4 +- 9 files changed, 67 insertions(+), 48 deletions(-) rename app/src/main/java/protect/card_locker/{CatimaWidget.kt => ListWidget.kt} (56%) rename app/src/main/res/layout/{catima_widget.xml => list_widget.xml} (85%) rename app/src/main/res/layout/{catima_widget_empty.xml => list_widget_empty.xml} (56%) rename app/src/main/res/layout/{catima_widget_item.xml => list_widget_item.xml} (100%) rename app/src/main/res/xml/{catima_widget_info.xml => list_widget_info.xml} (79%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index adb39906a..346f97f5f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,7 +32,7 @@ android:localeConfig="@xml/locales_config"> @@ -41,7 +41,7 @@ + android:resource="@xml/list_widget_info" /> 0) { + // Prepare generic widget + views = RemoteViews(context.packageName, R.layout.list_widget) + val templateIntent = Intent(context, LoyaltyCardViewActivity::class.java) + val pendingIntent = PendingIntent.getActivity( + context, + 0, + templateIntent, + PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT + ) + views.setPendingIntentTemplate(R.id.grid_view, pendingIntent) + + // Get cards + val order = Utils.getLoyaltyCardOrder(context); + val orderDirection = Utils.getLoyaltyCardOrderDirection(context); + + val loyaltyCardCursor = DBHelper.getLoyaltyCardCursor( + database, + "", + null, + order, + orderDirection, + LoyaltyCardArchiveFilter.Unarchived + ) + + // Bind every card to cell in the grid + val remoteCollectionItemsBuilder = RemoteViewsCompat.RemoteCollectionItems.Builder() + if (loyaltyCardCursor.moveToFirst()) { + do { + val loyaltyCard = LoyaltyCard.fromCursor(context, loyaltyCardCursor) + remoteCollectionItemsBuilder.addItem( + loyaltyCard.id.toLong(), + createRemoteViews( + context, loyaltyCard + ) ) - ) - } while (loyaltyCardCursor.moveToNext()) + } while (loyaltyCardCursor.moveToNext()) + } + + RemoteViewsCompat.setRemoteAdapter( + context, + views, + appWidgetId, + R.id.grid_view, + remoteCollectionItemsBuilder.build() + ) } - RemoteViewsCompat.setRemoteAdapter(context, views, appWidgetId, R.id.grid_view, remoteCollectionItemsBuilder.build()) // Let Android know the widget is ready for display appWidgetManager.updateAppWidget(appWidgetId, views) @@ -79,7 +93,7 @@ class CatimaWidget : AppWidgetProvider() { private fun createRemoteViews(context: Context, loyaltyCard: LoyaltyCard): RemoteViews { // Create a single cell for the grid view, bind it to open in the LoyaltyCardViewActivity // Note: Android 5 will not use bitmaps - val remoteViews = RemoteViews(context.packageName, R.layout.catima_widget_item).apply { + val remoteViews = RemoteViews(context.packageName, R.layout.list_widget_item).apply { val headerColor = Utils.getHeaderColor(context, loyaltyCard) val foreground = if (Utils.needsDarkForeground(headerColor)) Color.BLACK else Color.WHITE setInt(R.id.item_container_foreground, "setBackgroundColor", headerColor) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java index 4317c4f11..ff5238236 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardViewActivity.java @@ -880,7 +880,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements } else if (id == R.id.action_star_unstar) { DBHelper.updateLoyaltyCardStarStatus(database, loyaltyCardId, loyaltyCard.starStatus == 0 ? 1 : 0); - new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); + new ListWidget().updateAll(LoyaltyCardViewActivity.this); // Re-init loyaltyCard with new data from DB onResume(); @@ -892,7 +892,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements Toast.makeText(LoyaltyCardViewActivity.this, R.string.archived, Toast.LENGTH_LONG).show(); ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId); - new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); + new ListWidget().updateAll(LoyaltyCardViewActivity.this); // Re-init loyaltyCard with new data from DB onResume(); @@ -918,7 +918,7 @@ public class LoyaltyCardViewActivity extends CatimaAppCompatActivity implements DBHelper.deleteLoyaltyCard(database, LoyaltyCardViewActivity.this, loyaltyCardId); ShortcutHelper.removeShortcut(LoyaltyCardViewActivity.this, loyaltyCardId); - new CatimaWidget().updateAll(LoyaltyCardViewActivity.this); + new ListWidget().updateAll(LoyaltyCardViewActivity.this); finish(); dialog.dismiss(); diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index 70f49638b..cff585e93 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -431,7 +431,7 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard mCurrentActionMode.finish(); } - new CatimaWidget().updateAll(mAdapter.mContext); + new ListWidget().updateAll(mAdapter.mContext); } private void processParseResultList(List parseResultList, String group, boolean closeAppOnNoBarcode) { diff --git a/app/src/main/res/layout/catima_widget.xml b/app/src/main/res/layout/list_widget.xml similarity index 85% rename from app/src/main/res/layout/catima_widget.xml rename to app/src/main/res/layout/list_widget.xml index 1a7a6e53c..71f055d87 100644 --- a/app/src/main/res/layout/catima_widget.xml +++ b/app/src/main/res/layout/list_widget.xml @@ -5,7 +5,7 @@ android:layout_height="match_parent" android:orientation="vertical"> - + @@ -8,5 +9,9 @@ android:id="@+id/no_cards_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:text="@string/no_loyalty_cards" /> + android:text="@string/card_list_widget_empty" + app:autoSizeTextType="uniform" + app:autoSizeMinTextSize="12sp" + app:autoSizeMaxTextSize="100sp" + app:autoSizeStepGranularity="2sp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/catima_widget_item.xml b/app/src/main/res/layout/list_widget_item.xml similarity index 100% rename from app/src/main/res/layout/catima_widget_item.xml rename to app/src/main/res/layout/list_widget_item.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 420f84b2f..caa8684be 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -364,5 +364,5 @@ Width Card list Set Barcode Width - No loyalty cards + After you add some loyalty cards in Catima, they will appear here. diff --git a/app/src/main/res/xml/catima_widget_info.xml b/app/src/main/res/xml/list_widget_info.xml similarity index 79% rename from app/src/main/res/xml/catima_widget_info.xml rename to app/src/main/res/xml/list_widget_info.xml index 2efb897aa..26fc5eb57 100644 --- a/app/src/main/res/xml/catima_widget_info.xml +++ b/app/src/main/res/xml/list_widget_info.xml @@ -1,7 +1,7 @@ Date: Wed, 30 Jul 2025 20:56:17 +0200 Subject: [PATCH 5/5] Various widget bugfixes Widget now updates on sorting order change and no cards is correctly detected --- .../java/protect/card_locker/ListWidget.kt | 64 ++++++++++--------- .../protect/card_locker/MainActivity.java | 2 + app/src/main/res/layout/list_widget_item.xml | 3 +- app/src/main/res/values/strings.xml | 2 +- 4 files changed, 37 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/protect/card_locker/ListWidget.kt b/app/src/main/java/protect/card_locker/ListWidget.kt index 6286f4e83..226f437b4 100644 --- a/app/src/main/java/protect/card_locker/ListWidget.kt +++ b/app/src/main/java/protect/card_locker/ListWidget.kt @@ -33,12 +33,41 @@ class ListWidget : AppWidgetProvider() { for (appWidgetId in appWidgetIds) { val database = DBHelper(context).readableDatabase - // Default to empty widget + // Get cards + val order = Utils.getLoyaltyCardOrder(context); + val orderDirection = Utils.getLoyaltyCardOrderDirection(context); + + val loyaltyCardCursor = DBHelper.getLoyaltyCardCursor( + database, + "", + null, + order, + orderDirection, + LoyaltyCardArchiveFilter.Unarchived + ) + + // Bind every card to cell in the grid + var hasCards = false + val remoteCollectionItemsBuilder = RemoteViewsCompat.RemoteCollectionItems.Builder() + if (loyaltyCardCursor.moveToFirst()) { + do { + val loyaltyCard = LoyaltyCard.fromCursor(context, loyaltyCardCursor) + remoteCollectionItemsBuilder.addItem( + loyaltyCard.id.toLong(), + createRemoteViews( + context, loyaltyCard + ) + ) + hasCards = true + } while (loyaltyCardCursor.moveToNext()) + } + loyaltyCardCursor.close() + + // Create the base empty view var views = RemoteViews(context.packageName, R.layout.list_widget_empty) - // If we have cards, replace with non-empty widget - if (DBHelper.getLoyaltyCardCount(database) > 0) { - // Prepare generic widget + if (hasCards) { + // If we have cards, create the list views = RemoteViews(context.packageName, R.layout.list_widget) val templateIntent = Intent(context, LoyaltyCardViewActivity::class.java) val pendingIntent = PendingIntent.getActivity( @@ -49,33 +78,6 @@ class ListWidget : AppWidgetProvider() { ) views.setPendingIntentTemplate(R.id.grid_view, pendingIntent) - // Get cards - val order = Utils.getLoyaltyCardOrder(context); - val orderDirection = Utils.getLoyaltyCardOrderDirection(context); - - val loyaltyCardCursor = DBHelper.getLoyaltyCardCursor( - database, - "", - null, - order, - orderDirection, - LoyaltyCardArchiveFilter.Unarchived - ) - - // Bind every card to cell in the grid - val remoteCollectionItemsBuilder = RemoteViewsCompat.RemoteCollectionItems.Builder() - if (loyaltyCardCursor.moveToFirst()) { - do { - val loyaltyCard = LoyaltyCard.fromCursor(context, loyaltyCardCursor) - remoteCollectionItemsBuilder.addItem( - loyaltyCard.id.toLong(), - createRemoteViews( - context, loyaltyCard - ) - ) - } while (loyaltyCardCursor.moveToNext()) - } - RemoteViewsCompat.setRemoteAdapter( context, views, diff --git a/app/src/main/java/protect/card_locker/MainActivity.java b/app/src/main/java/protect/card_locker/MainActivity.java index cff585e93..4d7371573 100644 --- a/app/src/main/java/protect/card_locker/MainActivity.java +++ b/app/src/main/java/protect/card_locker/MainActivity.java @@ -699,6 +699,8 @@ public class MainActivity extends CatimaAppCompatActivity implements LoyaltyCard showReversed.isChecked() ? DBHelper.LoyaltyCardOrderDirection.Descending : DBHelper.LoyaltyCardOrderDirection.Ascending ); + new ListWidget().updateAll(this); + dialog.dismiss(); }); diff --git a/app/src/main/res/layout/list_widget_item.xml b/app/src/main/res/layout/list_widget_item.xml index c5449c07f..386b42ddb 100644 --- a/app/src/main/res/layout/list_widget_item.xml +++ b/app/src/main/res/layout/list_widget_item.xml @@ -16,8 +16,7 @@ Both multiplied by 1.25 to fit better + android:id="@+id/item_container_foreground"> Width Card list Set Barcode Width - After you add some loyalty cards in Catima, they will appear here. + After you add some loyalty cards in Catima, they will appear here. If you have cards, make sure they are not all archived.