From 589eff63ad47ab681c3499ca5cbdb376d81e3ab0 Mon Sep 17 00:00:00 2001 From: Anoop Date: Thu, 3 Oct 2024 01:24:12 +0530 Subject: [PATCH] Refactored; Changed the empty collection string and fixed the alignment of empty_widget Text View. --- .../widget/deckpicker/DeckPickerWidget.kt | 78 +++++++++++-------- .../main/res/layout/widget_card_analysis.xml | 2 +- .../res/layout/widget_deck_picker_large.xml | 5 +- AnkiDroid/src/main/res/values/08-widget.xml | 3 +- 4 files changed, 50 insertions(+), 38 deletions(-) diff --git a/AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidget.kt b/AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidget.kt index 95ab3de3ec21..02929f2fdc11 100644 --- a/AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidget.kt +++ b/AnkiDroid/src/main/java/com/ichi2/widget/deckpicker/DeckPickerWidget.kt @@ -124,44 +124,41 @@ class DeckPickerWidget : AnalyticsWidgetProvider() { appWidgetManager: AppWidgetManager, appWidgetId: AppWidgetId, remoteViews: RemoteViews, - deckIds: LongArray? + deckIds: LongArray ) { remoteViews.removeAllViews(R.id.deckCollection) - - val deckData = deckIds?.let { getDeckNamesAndStats(it.toList()) } - if (deckData != null) { - for (deck in deckData) { - val deckView = RemoteViews(context.packageName, R.layout.widget_item_deck_main) - - remoteViews.setViewVisibility(R.id.empty_widget, View.GONE) - remoteViews.setViewVisibility(R.id.deckCollection, View.VISIBLE) - deckView.setTextViewText(R.id.deckName, deck.name) - deckView.setTextViewText(R.id.deckNew, deck.newCount.toString()) - deckView.setTextViewText(R.id.deckDue, deck.reviewCount.toString()) - deckView.setTextViewText(R.id.deckLearn, deck.learnCount.toString()) - - val isEmptyDeck = deck.newCount == 0 && deck.reviewCount == 0 && deck.learnCount == 0 - - val intent = if (!isEmptyDeck) { - Intent(context, Reviewer::class.java).apply { - action = Intent.ACTION_VIEW - putExtra("deckId", deck.deckId) - addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - } - } else { - DeckOptions.getIntent(context, deck.deckId) + val deckData = getDeckNamesAndStats(deckIds.toList()) + for (deck in deckData) { + val deckView = RemoteViews(context.packageName, R.layout.widget_item_deck_main) + + remoteViews.setViewVisibility(R.id.empty_widget, View.GONE) + remoteViews.setViewVisibility(R.id.deckCollection, View.VISIBLE) + deckView.setTextViewText(R.id.deckName, deck.name) + deckView.setTextViewText(R.id.deckNew, deck.newCount.toString()) + deckView.setTextViewText(R.id.deckDue, deck.reviewCount.toString()) + deckView.setTextViewText(R.id.deckLearn, deck.learnCount.toString()) + + val isEmptyDeck = deck.newCount == 0 && deck.reviewCount == 0 && deck.learnCount == 0 + + val intent = if (!isEmptyDeck) { + Intent(context, Reviewer::class.java).apply { + action = Intent.ACTION_VIEW + putExtra("deckId", deck.deckId) + addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) } + } else { + DeckOptions.getIntent(context, deck.deckId) + } - val pendingIntent = PendingIntent.getActivity( - context, - deck.deckId.toInt(), - intent, - PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE - ) + val pendingIntent = PendingIntent.getActivity( + context, + deck.deckId.toInt(), + intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) - deckView.setOnClickPendingIntent(R.id.deckName, pendingIntent) - remoteViews.addView(R.id.deckCollection, deckView) - } + deckView.setOnClickPendingIntent(R.id.deckName, pendingIntent) + remoteViews.addView(R.id.deckCollection, deckView) } appWidgetManager.updateAppWidget(appWidgetId, remoteViews) @@ -173,10 +170,22 @@ class DeckPickerWidget : AnalyticsWidgetProvider() { appWidgetId: AppWidgetId, remoteViews: RemoteViews ) { - remoteViews.setTextViewText(R.id.empty_widget, context.getString(R.string.app_not_initialized_new)) + remoteViews.setTextViewText(R.id.empty_widget, context.getString(R.string.empty_collection_state_in_widget)) remoteViews.setViewVisibility(R.id.empty_widget, View.VISIBLE) remoteViews.setViewVisibility(R.id.deckCollection, View.GONE) + val configIntent = Intent(context, DeckPickerWidgetConfig::class.java).apply { + putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) + flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK + } + val configPendingIntent = PendingIntent.getActivity( + context, + appWidgetId, + configIntent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + remoteViews.setOnClickPendingIntent(R.id.empty_widget, configPendingIntent) + appWidgetManager.updateAppWidget(appWidgetId, remoteViews) } @@ -186,6 +195,7 @@ class DeckPickerWidget : AnalyticsWidgetProvider() { appWidgetId: AppWidgetId, remoteViews: RemoteViews ) { + remoteViews.setTextViewText(R.id.empty_widget, context.getString(R.string.empty_widget_state)) remoteViews.setViewVisibility(R.id.empty_widget, View.VISIBLE) remoteViews.setViewVisibility(R.id.deckCollection, View.GONE) diff --git a/AnkiDroid/src/main/res/layout/widget_card_analysis.xml b/AnkiDroid/src/main/res/layout/widget_card_analysis.xml index 939abb53674b..0c15cfe61e47 100644 --- a/AnkiDroid/src/main/res/layout/widget_card_analysis.xml +++ b/AnkiDroid/src/main/res/layout/widget_card_analysis.xml @@ -17,7 +17,7 @@ android:layout_marginStart="7dp" android:gravity="center" android:padding="30dp" - android:text="@string/empty_widget" + android:text="@string/empty_widget_state" android:visibility="gone" />/> You can select up to %d deck. You can select up to %d decks. - Missing deck. Please reconfigure + Missing deck. Tap to reconfigure. + Collection is empty, use app to add decks then reconfigure"