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 20c5321ea..fc36fb2d0 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/Forms.kt @@ -33,14 +33,21 @@ import org.oxycblt.auxio.util.newMainIntent fun createDefaultWidget(context: Context) = createViews(context, R.layout.widget_default) /** - * The tiny widget is for an edge-case situation where a widget falls under the size class of the - * small widget, either via landscape mode or exceptionally small screens. + * The tiny widget like a small or medium widget, but for landscape or exceptionally small screens. */ fun createTinyWidget(context: Context, state: WidgetComponent.WidgetState) = createViews(context, R.layout.widget_tiny) - .applyMeta(context, state) + .applyCover(context, state) .applyBasicControls(context, state) +/** + * The thin widget is like a wide or large widget, but for landscape or exceptionally small screens. + */ +fun createThinWidget(context: Context, state: WidgetComponent.WidgetState) = + createViews(context, R.layout.widget_thin) + .applyCover(context, state) + .applyFullControls(context, state) + /** * The small widget is for 2x2 widgets and just shows the cover art and playback controls. This is * generally because a Medium widget is too large for this widget size and a text-only widget is too 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 8658d5a42..9b327c96f 100644 --- a/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt +++ b/app/src/main/java/org/oxycblt/auxio/widgets/WidgetProvider.kt @@ -42,6 +42,8 @@ import org.oxycblt.auxio.util.unlikelyToBeNull * changes. This is tolerable. * * For more specific details about these sub-widgets, see Forms.kt. + * + * @author OxygenCobalt */ class WidgetProvider : AppWidgetProvider() { /* @@ -57,6 +59,7 @@ class WidgetProvider : AppWidgetProvider() { val views = mapOf( SizeF(180f, 100f) to createTinyWidget(context, state), + SizeF(372f, 100f) to createThinWidget(context, state), SizeF(180f, 152f) to createSmallWidget(context, state), SizeF(272f, 152f) to createWideWidget(context, state), SizeF(180f, 270f) to createMediumWidget(context, state), @@ -122,13 +125,6 @@ class WidgetProvider : AppWidgetProvider() { val name = ComponentName(context, WidgetProvider::class.java) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - for (id in getAppWidgetIds(name)) { - val options = getAppWidgetOptions(id) - logD( - options.getParcelableArrayList(AppWidgetManager.OPTION_APPWIDGET_SIZES) - ?: "no sizes") - } - // Widgets are automatically responsive on Android 12, no need to do anything. updateAppWidget(name, RemoteViews(views)) } else { diff --git a/app/src/main/res/layout/widget_thin.xml b/app/src/main/res/layout/widget_thin.xml new file mode 100644 index 000000000..e1ae8224f --- /dev/null +++ b/app/src/main/res/layout/widget_thin.xml @@ -0,0 +1,116 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widget_tiny.xml b/app/src/main/res/layout/widget_tiny.xml index 2aa3a0b35..5fc01ab16 100644 --- a/app/src/main/res/layout/widget_tiny.xml +++ b/app/src/main/res/layout/widget_tiny.xml @@ -1,83 +1,99 @@ - + android:theme="@style/Theme.Widget" + android:orientation="horizontal" + android:baselineAligned="false"> - + + + + + + + - - + + + + + + + + android:contentDescription="@string/desc_skip_prev" + android:src="@drawable/ic_skip_prev" /> - + - + - - - - - - - - - - - + + +