diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt index 5391b4650..d6cfa2e2b 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt @@ -43,7 +43,7 @@ private fun createViews( private fun RemoteViews.applyMeta(context: Context, state: WidgetState) { setTextViewText(R.id.widget_song, state.song.name) - setTextViewText(R.id.widget_artist, state.song.album.artist.name) + setTextViewText(R.id.widget_artist, state.song.album.artist.resolvedName) if (state.albumArt != null) { setImageViewBitmap(R.id.widget_cover, state.albumArt) @@ -92,15 +92,15 @@ fun createDefaultWidget(context: Context): RemoteViews { return createViews(context, R.layout.widget_default) } -fun createCompactWidget(context: Context, state: WidgetState): RemoteViews { - val views = createViews(context, R.layout.widget_compact) +fun createTinyWidget(context: Context, state: WidgetState): RemoteViews { + val views = createViews(context, R.layout.widget_tiny) views.applyMeta(context, state) views.applyControls(context, state) return views } -fun createMinimalWidget(context: Context, state: WidgetState): RemoteViews { - val views = createViews(context, R.layout.widget_minimal) +fun createWideWidget(context: Context, state: WidgetState): RemoteViews { + val views = createViews(context, R.layout.widget_wide) views.applyMeta(context, state) views.applyControls(context, state) return views @@ -113,8 +113,15 @@ fun createSmallWidget(context: Context, state: WidgetState): RemoteViews { return views } -fun createFullWidget(context: Context, state: WidgetState): RemoteViews { - val views = createViews(context, R.layout.widget_full) +fun createMediumWidget(context: Context, state: WidgetState): RemoteViews { + val views = createViews(context, R.layout.widget_medium) + views.applyMeta(context, state) + views.applyControls(context, state) + return views +} + +fun createLargeWidget(context: Context, state: WidgetState): RemoteViews { + val views = createViews(context, R.layout.widget_large) views.applyMeta(context, state) views.applyControls(context, state) diff --git a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt index 82e32e900..a9abb902b 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt @@ -46,10 +46,11 @@ import org.oxycblt.auxio.util.logD * packing what could be considered multiple widgets into a single responsive widget. All types * are listed below: * - * - Full: Large widgets will show cover art and all controls - * - Small: Tall and thin widgets will show cover art and three controls - * - Compact: Wide and short widgets will show cover art and all controls in a compact manner - * - Minimal: Small widgets will only show cover art and three controls + * - Large widgets will show cover art and all controls + * - Tall and thin widgets will show cover art and three controls + * - Wide and short widgets will show cover art and all controls in a compact manner + * - Small widgets will only show text and three controls + * - Tiny widgets [e.g landscape mode] will show cover art, text, and a play/pause control. * * There are some minor problems with this implementation [notably UI jittering when the widget * picks a new layout below Android 12], but this is tolerable. It may be improved in the future. @@ -80,10 +81,11 @@ class WidgetProvider : AppWidgetProvider() { // Map each widget form to the cells where it would look at least okay. val views = mapOf( - SizeF(180f, 152f) to createMinimalWidget(context, state), - SizeF(272f, 152f) to createCompactWidget(context, state), - SizeF(180f, 270f) to createSmallWidget(context, state), - SizeF(272f, 270f) to createFullWidget(context, state) + SizeF(180f, 100f) to createTinyWidget(context, state), + SizeF(180f, 152f) to createSmallWidget(context, state), + SizeF(272f, 152f) to createWideWidget(context, state), + SizeF(180f, 270f) to createMediumWidget(context, state), + SizeF(272f, 270f) to createLargeWidget(context, state) ) appWidgetManager.applyViewsCompat(context, views) diff --git a/app/src/main/res/layout/widget_full.xml b/app/src/main/res/layout/widget_large.xml similarity index 100% rename from app/src/main/res/layout/widget_full.xml rename to app/src/main/res/layout/widget_large.xml diff --git a/app/src/main/res/layout/widget_medium.xml b/app/src/main/res/layout/widget_medium.xml new file mode 100644 index 000000000..5bafa713c --- /dev/null +++ b/app/src/main/res/layout/widget_medium.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widget_small.xml b/app/src/main/res/layout/widget_small.xml index 5bafa713c..1bc3eaa4b 100644 --- a/app/src/main/res/layout/widget_small.xml +++ b/app/src/main/res/layout/widget_small.xml @@ -1,53 +1,14 @@ - + android:layout_height="match_parent" + android:background="?attr/colorSurface" + android:gravity="center_vertical" + android:orientation="vertical" + android:theme="@style/Theme.Widget"> - - - - - - - + + android:layout_marginTop="@dimen/spacing_medium"> - - + diff --git a/app/src/main/res/layout/widget_minimal.xml b/app/src/main/res/layout/widget_tiny.xml similarity index 61% rename from app/src/main/res/layout/widget_minimal.xml rename to app/src/main/res/layout/widget_tiny.xml index 5d3cb9495..4de2446a5 100644 --- a/app/src/main/res/layout/widget_minimal.xml +++ b/app/src/main/res/layout/widget_tiny.xml @@ -8,11 +8,12 @@ android:background="?attr/colorSurface" android:theme="@style/Theme.Widget"> - - - - - - + android:src="@drawable/sel_playing_state" /> - - + - - - \ No newline at end of file + diff --git a/app/src/main/res/layout/widget_compact.xml b/app/src/main/res/layout/widget_wide.xml similarity index 100% rename from app/src/main/res/layout/widget_compact.xml rename to app/src/main/res/layout/widget_wide.xml diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e0e468bd8..f4f3174a3 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -43,7 +43,7 @@ 28dp 176dp - 180dp + 110dp @dimen/widget_width_min 180dp \ No newline at end of file diff --git a/app/src/main/res/xml-v31/widget_info.xml b/app/src/main/res/xml-v31/widget_info.xml index 4890660a1..8e344046f 100644 --- a/app/src/main/res/xml-v31/widget_info.xml +++ b/app/src/main/res/xml-v31/widget_info.xml @@ -1,10 +1,10 @@