From 33bccd10fed5d6451a31b16af2a31493acaf702b Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 27 Jun 2022 14:44:43 +0300 Subject: [PATCH] Update widgets for Android 12 --- .../widget/recent/RecentListFactory.kt | 17 +++++++++++---- .../widget/shelf/ShelfConfigActivity.kt | 5 ----- .../kotatsu/widget/shelf/ShelfListFactory.kt | 16 +++++++++++--- .../main/res/drawable/bg_appwidget_card.xml | 7 +++++++ app/src/main/res/layout/item_recent.xml | 4 ++-- app/src/main/res/layout/item_shelf.xml | 21 +++++++++++-------- app/src/main/res/layout/widget_recent.xml | 2 +- app/src/main/res/layout/widget_shelf.xml | 9 ++++---- app/src/main/res/values-v31/dimens.xml | 4 ++++ app/src/main/res/values-v31/themes.xml | 6 ++++++ app/src/main/res/values/dimens.xml | 4 ++++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/themes.xml | 4 ++++ app/src/main/res/xml/widget_recent.xml | 1 + app/src/main/res/xml/widget_shelf.xml | 6 +++++- 15 files changed, 79 insertions(+), 29 deletions(-) create mode 100644 app/src/main/res/drawable/bg_appwidget_card.xml create mode 100644 app/src/main/res/values-v31/dimens.xml diff --git a/app/src/main/java/org/koitharu/kotatsu/widget/recent/RecentListFactory.kt b/app/src/main/java/org/koitharu/kotatsu/widget/recent/RecentListFactory.kt index 3e4125a21..bf8fbf202 100644 --- a/app/src/main/java/org/koitharu/kotatsu/widget/recent/RecentListFactory.kt +++ b/app/src/main/java/org/koitharu/kotatsu/widget/recent/RecentListFactory.kt @@ -7,6 +7,8 @@ import android.widget.RemoteViewsService import coil.ImageLoader import coil.executeBlocking import coil.request.ImageRequest +import coil.size.Size +import coil.transform.RoundedCornersTransformation import kotlinx.coroutines.runBlocking import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.domain.MangaIntent @@ -22,9 +24,15 @@ class RecentListFactory( ) : RemoteViewsService.RemoteViewsFactory { private val dataSet = ArrayList() + private val transformation = RoundedCornersTransformation( + context.resources.getDimension(R.dimen.appwidget_corner_radius_inner) + ) + private val coverSize = Size( + context.resources.getDimensionPixelSize(R.dimen.widget_cover_width), + context.resources.getDimensionPixelSize(R.dimen.widget_cover_height), + ) - override fun onCreate() { - } + override fun onCreate() = Unit override fun getLoadingView() = null @@ -45,6 +53,8 @@ class RecentListFactory( val cover = coil.executeBlocking( ImageRequest.Builder(context) .data(item.coverUrl) + .size(coverSize) + .transformations(transformation) .build() ).requireBitmap() views.setImageViewBitmap(R.id.imageView_cover, cover) @@ -61,6 +71,5 @@ class RecentListFactory( override fun getViewTypeCount() = 1 - override fun onDestroy() { - } + override fun onDestroy() = Unit } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt index b404b3286..44a2cc632 100644 --- a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt +++ b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfConfigActivity.kt @@ -10,8 +10,6 @@ import androidx.core.graphics.Insets import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.core.view.updatePadding -import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.divider.MaterialDividerItemDecoration import com.google.android.material.snackbar.Snackbar import org.koin.androidx.viewmodel.ext.android.viewModel import org.koitharu.kotatsu.R @@ -40,9 +38,6 @@ class ShelfConfigActivity : BaseActivity(), setHomeAsUpIndicator(materialR.drawable.abc_ic_clear_material) } adapter = CategorySelectAdapter(this) - binding.recyclerView.addItemDecoration( - MaterialDividerItemDecoration(this, RecyclerView.VERTICAL) - ) binding.recyclerView.adapter = adapter binding.buttonDone.isVisible = true binding.buttonDone.setOnClickListener(this) diff --git a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfListFactory.kt b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfListFactory.kt index 61fd0d9ab..2eb942ef5 100644 --- a/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfListFactory.kt +++ b/app/src/main/java/org/koitharu/kotatsu/widget/shelf/ShelfListFactory.kt @@ -7,6 +7,8 @@ import android.widget.RemoteViewsService import coil.ImageLoader import coil.executeBlocking import coil.request.ImageRequest +import coil.size.Size +import coil.transform.RoundedCornersTransformation import kotlinx.coroutines.runBlocking import org.koitharu.kotatsu.R import org.koitharu.kotatsu.base.domain.MangaIntent @@ -20,14 +22,20 @@ class ShelfListFactory( private val context: Context, private val favouritesRepository: FavouritesRepository, private val coil: ImageLoader, - widgetId: Int + widgetId: Int, ) : RemoteViewsService.RemoteViewsFactory { private val dataSet = ArrayList() private val config = AppWidgetConfig(context, widgetId) + private val transformation = RoundedCornersTransformation( + context.resources.getDimension(R.dimen.appwidget_corner_radius_inner) + ) + private val coverSize = Size( + context.resources.getDimensionPixelSize(R.dimen.widget_cover_width), + context.resources.getDimensionPixelSize(R.dimen.widget_cover_height), + ) - override fun onCreate() { - } + override fun onCreate() = Unit override fun getLoadingView() = null @@ -56,6 +64,8 @@ class ShelfListFactory( val cover = coil.executeBlocking( ImageRequest.Builder(context) .data(item.coverUrl) + .size(coverSize) + .transformations(transformation) .build() ).requireBitmap() views.setImageViewBitmap(R.id.imageView_cover, cover) diff --git a/app/src/main/res/drawable/bg_appwidget_card.xml b/app/src/main/res/drawable/bg_appwidget_card.xml new file mode 100644 index 000000000..35a460504 --- /dev/null +++ b/app/src/main/res/drawable/bg_appwidget_card.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_recent.xml b/app/src/main/res/layout/item_recent.xml index e5b884dd4..26cd12560 100644 --- a/app/src/main/res/layout/item_recent.xml +++ b/app/src/main/res/layout/item_recent.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/imageView_cover" - android:layout_width="92dp" - android:layout_height="128dp" + android:layout_width="@dimen/widget_cover_width" + android:layout_height="@dimen/widget_cover_height" android:scaleType="centerCrop" tools:ignore="ContentDescription" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_shelf.xml b/app/src/main/res/layout/item_shelf.xml index 657613c36..41ad4e865 100644 --- a/app/src/main/res/layout/item_shelf.xml +++ b/app/src/main/res/layout/item_shelf.xml @@ -3,21 +3,24 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:padding="4dp" + android:theme="@style/Theme.Kotatsu.AppWidgetContainer"> + tools:ignore="UnusedAttribute,UselessParent"> @@ -25,12 +28,12 @@ android:id="@+id/textView_title" android:layout_width="match_parent" android:layout_height="wrap_content" + android:elegantTextHeight="false" android:ellipsize="end" - android:gravity="center" android:lines="2" - android:shadowColor="@android:color/black" - android:shadowRadius="1" - android:textColor="@android:color/white" /> + android:paddingHorizontal="4dp" + android:paddingBottom="4dp" + android:textColor="?android:attr/textColorPrimary" /> diff --git a/app/src/main/res/layout/widget_recent.xml b/app/src/main/res/layout/widget_recent.xml index e10f76b3e..f65032b83 100644 --- a/app/src/main/res/layout/widget_recent.xml +++ b/app/src/main/res/layout/widget_recent.xml @@ -9,7 +9,7 @@ android:id="@+id/stackView" android:layout_width="match_parent" android:layout_height="match_parent" - tools:listitem="@layout/item_shelf" /> + tools:listitem="@layout/item_recent" /> + android:layout_height="match_parent" + android:background="?android:attr/colorBackground" + android:padding="4dp" + android:theme="@style/Theme.Kotatsu.AppWidgetContainer"> + android:textColor="?android:attr/textColorPrimary" /> \ No newline at end of file diff --git a/app/src/main/res/values-v31/dimens.xml b/app/src/main/res/values-v31/dimens.xml new file mode 100644 index 000000000..e99ffda56 --- /dev/null +++ b/app/src/main/res/values-v31/dimens.xml @@ -0,0 +1,4 @@ + + + @android:dimen/system_app_widget_inner_radius + \ No newline at end of file diff --git a/app/src/main/res/values-v31/themes.xml b/app/src/main/res/values-v31/themes.xml index fd0950ca4..c84e6787a 100644 --- a/app/src/main/res/values-v31/themes.xml +++ b/app/src/main/res/values-v31/themes.xml @@ -41,4 +41,10 @@ @color/m3_dynamic_dark_highlighted_text @color/m3_dynamic_default_color_primary_text + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index ad8250116..d563b55f8 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -24,10 +24,14 @@ 2dp 12dp 10dp + 116dp + 84dp 124dp 4dp 0dp 8dp + + 8dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1e1e316d5..79ec942ea 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -302,4 +302,6 @@ Send Disable all Use fingerprint if available + Manga from your favourites + Your recently read manga \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index f23f676ba..2d1ae4e76 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -103,4 +103,8 @@ @style/Theme.Kotatsu.ActionMode.CloseButton + diff --git a/app/src/main/res/xml/widget_recent.xml b/app/src/main/res/xml/widget_recent.xml index 4f4beea5a..7b6985481 100644 --- a/app/src/main/res/xml/widget_recent.xml +++ b/app/src/main/res/xml/widget_recent.xml @@ -1,6 +1,7 @@ + android:widgetCategory="home_screen" + android:widgetFeatures="reconfigurable" + tools:ignore="UnusedAttribute" />