Эх сурвалжийг харах

Glance widget fixes (#7706)

* Fix glance failing when there's too much children

* Adjust cover error placeholder
Ivan Iskandar 2 жил өмнө
parent
commit
16abfeeff0

+ 6 - 8
app/src/main/java/eu/kanade/tachiyomi/glance/UpdatesGridGlanceWidget.kt

@@ -164,8 +164,7 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
         Box(
             modifier = modifier
                 .size(width = CoverWidth, height = CoverHeight)
-                .appWidgetInnerRadius()
-                .background(ColorProvider(R.color.appwidget_surface_variant)),
+                .appWidgetInnerRadius(),
         ) {
             if (cover != null) {
                 Image(
@@ -179,11 +178,9 @@ class UpdatesGridGlanceWidget : GlanceAppWidget() {
             } else {
                 // Enjoy placeholder
                 Image(
-                    provider = ImageProvider(R.drawable.appwidget_cover_placeholder),
+                    provider = ImageProvider(R.drawable.appwidget_cover_error),
                     contentDescription = null,
-                    modifier = GlanceModifier
-                        .fillMaxSize()
-                        .padding(4.dp),
+                    modifier = GlanceModifier.fillMaxSize(),
                     contentScale = ContentScale.Crop,
                 )
             }
@@ -281,7 +278,8 @@ private val ContainerModifier = GlanceModifier
  */
 private fun DpSize.calculateRowAndColumnCount(): Pair<Int, Int> {
     // Hack: Size provided by Glance manager is not reliable so take at least 1 row and 1 column
-    val rowCount = (height.value / 95).toInt().coerceAtLeast(1)
-    val columnCount = (width.value / 64).toInt().coerceAtLeast(1)
+    // Set max to 10 children each direction because of Glance limitation
+    val rowCount = (height.value / 95).toInt().coerceIn(1, 10)
+    val columnCount = (width.value / 64).toInt().coerceIn(1, 10)
     return Pair(rowCount, columnCount)
 }

+ 24 - 0
app/src/main/res/drawable/appwidget_cover_error.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item>
+        <shape android:shape="rectangle">
+            <solid android:color="@color/cover_placeholder" />
+            <corners android:radius="@dimen/appwidget_inner_radius" />
+        </shape>
+    </item>
+    <item
+        android:top="24dp"
+        android:bottom="24dp"
+        android:left="24dp"
+        android:right="24dp">
+        <vector
+            android:width="24dp"
+            android:height="24dp"
+            android:viewportWidth="24"
+            android:viewportHeight="24">
+            <path
+                android:fillColor="@color/cover_placeholder"
+                android:pathData="M21,5v6.59l-2.29,-2.3c-0.39,-0.39 -1.03,-0.39 -1.42,0L14,12.59 10.71,9.3c-0.39,-0.39 -1.02,-0.39 -1.41,0L6,12.59 3,9.58L3,5c0,-1.1 0.9,-2 2,-2h14c1.1,0 2,0.9 2,2zM18,11.42l3,3.01L21,19c0,1.1 -0.9,2 -2,2L5,21c-1.1,0 -2,-0.9 -2,-2v-6.58l2.29,2.29c0.39,0.39 1.02,0.39 1.41,0l3.3,-3.3 3.29,3.29c0.39,0.39 1.02,0.39 1.41,0l3.3,-3.28z"/>
+        </vector>
+    </item>
+</layer-list>

+ 0 - 9
app/src/main/res/drawable/appwidget_cover_placeholder.xml

@@ -1,9 +0,0 @@
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-    <path
-        android:fillColor="@color/appwidget_background"
-        android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" />
-</vector>