From ad2e0973546f276d1b854ddf96298cf3ff67992b Mon Sep 17 00:00:00 2001 From: Brent Panther Date: Sun, 21 Jan 2024 13:20:47 -0600 Subject: [PATCH] Fixed an issue where widgets would not respond properly to dark theme changes. --- bitcoin/build.gradle | 4 +- .../com/brentpanther/bitcoinwidget/Enums.kt | 49 ++++++++++++------- .../display/PriceWidgetDisplayStrategy.kt | 2 +- .../ComposePreviewWidgetPresenter.kt | 3 +- .../presenter/RemoteWidgetPresenter.kt | 3 +- .../widget_price_material_auto.xml | 10 ++++ .../layout-night/widget_price_solid_auto.xml | 10 ++++ .../widget_price_transparent_auto.xml | 10 ++++ ...widget_price_transparent_auto_material.xml | 9 ++++ .../widget_value_material_auto.xml | 10 ++++ .../layout-night/widget_value_solid_auto.xml | 10 ++++ .../widget_value_transparent_auto.xml | 10 ++++ ...widget_value_transparent_auto_material.xml | 9 ++++ .../res/layout/widget_price_material_auto.xml | 10 ++++ .../res/layout/widget_price_solid_auto.xml | 10 ++++ .../layout/widget_price_transparent_auto.xml | 9 ++++ ...widget_price_transparent_auto_material.xml | 9 ++++ .../res/layout/widget_value_material_auto.xml | 10 ++++ .../res/layout/widget_value_solid_auto.xml | 10 ++++ .../layout/widget_value_transparent_auto.xml | 9 ++++ ...widget_value_transparent_auto_material.xml | 9 ++++ bitcoin/src/main/res/xml/widget_price.xml | 2 +- bitcoin/src/main/res/xml/widget_value.xml | 2 +- .../metadata/android/en-US/changelogs/328.txt | 1 + gradle.properties | 1 - 25 files changed, 194 insertions(+), 27 deletions(-) create mode 100644 bitcoin/src/main/res/layout-night/widget_price_material_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_price_solid_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_price_transparent_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_price_transparent_auto_material.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_value_material_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_value_solid_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_value_transparent_auto.xml create mode 100644 bitcoin/src/main/res/layout-night/widget_value_transparent_auto_material.xml create mode 100644 bitcoin/src/main/res/layout/widget_price_material_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_price_solid_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_price_transparent_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_price_transparent_auto_material.xml create mode 100644 bitcoin/src/main/res/layout/widget_value_material_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_value_solid_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_value_transparent_auto.xml create mode 100644 bitcoin/src/main/res/layout/widget_value_transparent_auto_material.xml create mode 100644 fastlane/metadata/android/en-US/changelogs/328.txt diff --git a/bitcoin/build.gradle b/bitcoin/build.gradle index 031832c7..7b479b89 100644 --- a/bitcoin/build.gradle +++ b/bitcoin/build.gradle @@ -13,8 +13,8 @@ android { applicationId "com.brentpanther.bitcoinwidget" minSdk 23 targetSdk 34 - versionCode 327 - versionName "8.5.2" + versionCode 328 + versionName "8.5.3" } diff --git a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/Enums.kt b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/Enums.kt index ed03b1ee..051dfa21 100644 --- a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/Enums.kt +++ b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/Enums.kt @@ -6,23 +6,38 @@ import androidx.annotation.DrawableRes import androidx.annotation.LayoutRes import androidx.annotation.StringRes -enum class Theme(@LayoutRes val lightPrice: Int, @LayoutRes val darkPrice: Int, - @LayoutRes val lightValue: Int, @LayoutRes val darkValue: Int) { - - SOLID(R.layout.widget_price_solid_light, R.layout.widget_price_solid_dark, - R.layout.widget_value_solid_light, R.layout.widget_value_solid_dark), - TRANSPARENT(R.layout.widget_price_transparent_light, R.layout.widget_price_transparent_dark, - R.layout.widget_value_transparent_light, R.layout.widget_value_transparent_dark), - MATERIAL(R.layout.widget_price_material_light, R.layout.widget_price_material_dark, - R.layout.widget_value_material_light, R.layout.widget_value_material_dark), - TRANSPARENT_MATERIAL(R.layout.widget_price_transparent_light_material, R.layout.widget_price_transparent_dark_material, - R.layout.widget_value_transparent_light_material, R.layout.widget_value_transparent_dark_material); - - fun getLayout(isDark: Boolean, type: WidgetType): Int { - return when(type) { - WidgetType.PRICE -> if (isDark) darkPrice else lightPrice - WidgetType.VALUE -> if (isDark) darkValue else lightValue - } +enum class Theme(@LayoutRes val lightPrice: Int, @LayoutRes val darkPrice: Int, @LayoutRes val autoPrice: Int, + @LayoutRes val lightValue: Int, @LayoutRes val darkValue: Int, @LayoutRes val autoValue: Int) { + + SOLID(R.layout.widget_price_solid_light, + R.layout.widget_price_solid_dark, + R.layout.widget_price_solid_auto, + R.layout.widget_value_solid_light, + R.layout.widget_value_solid_dark, + R.layout.widget_value_solid_auto), + TRANSPARENT(R.layout.widget_price_transparent_light, + R.layout.widget_price_transparent_dark, + R.layout.widget_price_transparent_auto, + R.layout.widget_value_transparent_light, + R.layout.widget_value_transparent_dark, + R.layout.widget_value_transparent_auto), + MATERIAL(R.layout.widget_price_material_light, + R.layout.widget_price_material_dark, + R.layout.widget_price_material_auto, + R.layout.widget_value_material_light, + R.layout.widget_value_material_dark, + R.layout.widget_value_material_auto), + TRANSPARENT_MATERIAL(R.layout.widget_price_transparent_light_material, + R.layout.widget_price_transparent_dark_material, + R.layout.widget_price_transparent_auto_material, + R.layout.widget_value_transparent_light_material, + R.layout.widget_value_transparent_dark_material, + R.layout.widget_value_transparent_auto_material); + + fun getLayout(mode: NightMode, type: WidgetType) = when(mode) { + NightMode.LIGHT -> if (type == WidgetType.PRICE) lightPrice else lightValue + NightMode.DARK -> if (type == WidgetType.PRICE) darkPrice else darkValue + NightMode.SYSTEM -> if (type == WidgetType.PRICE) autoPrice else autoValue } } diff --git a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/display/PriceWidgetDisplayStrategy.kt b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/display/PriceWidgetDisplayStrategy.kt index 22108580..35d08641 100644 --- a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/display/PriceWidgetDisplayStrategy.kt +++ b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/display/PriceWidgetDisplayStrategy.kt @@ -80,7 +80,7 @@ abstract class PriceWidgetDisplayStrategy(context: Context, widget: Widget, widg } protected fun getView(@IdRes layoutId: Int): TextView { - val layout = widget.theme.getLayout(widget.nightMode.isDark(appContext), widget.widgetType) + val layout = widget.theme.getLayout(widget.nightMode, widget.widgetType) val vg = LayoutInflater.from(appContext).inflate(layout, null) as ViewGroup return vg.findViewById(layoutId) } diff --git a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/ComposePreviewWidgetPresenter.kt b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/ComposePreviewWidgetPresenter.kt index 373d5840..e263e5f9 100644 --- a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/ComposePreviewWidgetPresenter.kt +++ b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/ComposePreviewWidgetPresenter.kt @@ -17,8 +17,7 @@ class ComposePreviewWidgetPresenter(widget: Widget, private val view: View) : Wi init { val context = view.context - val isDark = widget.nightMode.isDark(context) - val layout = widget.theme.getLayout(isDark, widget.widgetType) + val layout = widget.theme.getLayout(widget.nightMode, widget.widgetType) view.findViewById(R.id.widgetContainer).apply { removeAllViews() View.inflate(context, layout, this) diff --git a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/RemoteWidgetPresenter.kt b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/RemoteWidgetPresenter.kt index 1cc42296..e5cb54f8 100644 --- a/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/RemoteWidgetPresenter.kt +++ b/bitcoin/src/main/java/com/brentpanther/bitcoinwidget/strategy/presenter/RemoteWidgetPresenter.kt @@ -23,8 +23,7 @@ class RemoteWidgetPresenter(context: Context, widget: Widget) : WidgetPresenter private var remoteViews: RemoteViews init { - val isDark = widget.nightMode.isDark(context) - val layout = widget.theme.getLayout(isDark, widget.widgetType) + val layout = widget.theme.getLayout(widget.nightMode, widget.widgetType) remoteViews = RemoteViews(context.packageName, layout) } diff --git a/bitcoin/src/main/res/layout-night/widget_price_material_auto.xml b/bitcoin/src/main/res/layout-night/widget_price_material_auto.xml new file mode 100644 index 00000000..fbd67b2b --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_price_material_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_price_solid_auto.xml b/bitcoin/src/main/res/layout-night/widget_price_solid_auto.xml new file mode 100644 index 00000000..8bf2f473 --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_price_solid_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_price_transparent_auto.xml b/bitcoin/src/main/res/layout-night/widget_price_transparent_auto.xml new file mode 100644 index 00000000..a1f4d0a6 --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_price_transparent_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_price_transparent_auto_material.xml b/bitcoin/src/main/res/layout-night/widget_price_transparent_auto_material.xml new file mode 100644 index 00000000..62b2d06f --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_price_transparent_auto_material.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_value_material_auto.xml b/bitcoin/src/main/res/layout-night/widget_value_material_auto.xml new file mode 100644 index 00000000..b47078d4 --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_value_material_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_value_solid_auto.xml b/bitcoin/src/main/res/layout-night/widget_value_solid_auto.xml new file mode 100644 index 00000000..1405540b --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_value_solid_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_value_transparent_auto.xml b/bitcoin/src/main/res/layout-night/widget_value_transparent_auto.xml new file mode 100644 index 00000000..cdb31905 --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_value_transparent_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout-night/widget_value_transparent_auto_material.xml b/bitcoin/src/main/res/layout-night/widget_value_transparent_auto_material.xml new file mode 100644 index 00000000..35158eb4 --- /dev/null +++ b/bitcoin/src/main/res/layout-night/widget_value_transparent_auto_material.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_price_material_auto.xml b/bitcoin/src/main/res/layout/widget_price_material_auto.xml new file mode 100644 index 00000000..6fa5ebbc --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_price_material_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_price_solid_auto.xml b/bitcoin/src/main/res/layout/widget_price_solid_auto.xml new file mode 100644 index 00000000..b6ec226a --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_price_solid_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_price_transparent_auto.xml b/bitcoin/src/main/res/layout/widget_price_transparent_auto.xml new file mode 100644 index 00000000..0e3410fb --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_price_transparent_auto.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_price_transparent_auto_material.xml b/bitcoin/src/main/res/layout/widget_price_transparent_auto_material.xml new file mode 100644 index 00000000..b81e3c70 --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_price_transparent_auto_material.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_value_material_auto.xml b/bitcoin/src/main/res/layout/widget_value_material_auto.xml new file mode 100644 index 00000000..4e7ce896 --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_value_material_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_value_solid_auto.xml b/bitcoin/src/main/res/layout/widget_value_solid_auto.xml new file mode 100644 index 00000000..e2ebccdd --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_value_solid_auto.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_value_transparent_auto.xml b/bitcoin/src/main/res/layout/widget_value_transparent_auto.xml new file mode 100644 index 00000000..e21b470d --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_value_transparent_auto.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/layout/widget_value_transparent_auto_material.xml b/bitcoin/src/main/res/layout/widget_value_transparent_auto_material.xml new file mode 100644 index 00000000..0570bb8d --- /dev/null +++ b/bitcoin/src/main/res/layout/widget_value_transparent_auto_material.xml @@ -0,0 +1,9 @@ + + + + + + \ No newline at end of file diff --git a/bitcoin/src/main/res/xml/widget_price.xml b/bitcoin/src/main/res/xml/widget_price.xml index 6e1880b6..494fdab4 100644 --- a/bitcoin/src/main/res/xml/widget_price.xml +++ b/bitcoin/src/main/res/xml/widget_price.xml @@ -1,7 +1,7 @@