Made rounded library covers configurable

This commit is contained in:
jobobby04 2020-04-13 17:38:32 -04:00 committed by Jobobby04
parent de5f43713f
commit fb3ce226b5
4 changed files with 52 additions and 1 deletions

View File

@ -1,15 +1,21 @@
package eu.kanade.tachiyomi.ui.browse.source.browse package eu.kanade.tachiyomi.ui.browse.source.browse
import android.util.TypedValue
import android.view.View import android.view.View
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.glide.GlideApp import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.data.glide.toMangaThumbnail import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.widget.StateImageViewTarget import eu.kanade.tachiyomi.widget.StateImageViewTarget
import kotlinx.android.synthetic.main.source_grid_item.card
import kotlinx.android.synthetic.main.source_grid_item.progress import kotlinx.android.synthetic.main.source_grid_item.progress
import kotlinx.android.synthetic.main.source_grid_item.thumbnail import kotlinx.android.synthetic.main.source_grid_item.thumbnail
import kotlinx.android.synthetic.main.source_grid_item.title import kotlinx.android.synthetic.main.source_grid_item.title
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/** /**
* Class used to hold the displayed data of a manga in the catalogue, like the cover or the title. * Class used to hold the displayed data of a manga in the catalogue, like the cover or the title.
@ -22,6 +28,8 @@ import kotlinx.android.synthetic.main.source_grid_item.title
class SourceGridHolder(private val view: View, private val adapter: FlexibleAdapter<*>) : class SourceGridHolder(private val view: View, private val adapter: FlexibleAdapter<*>) :
SourceHolder(view, adapter) { SourceHolder(view, adapter) {
private val preferences: PreferencesHelper = Injekt.get()
/** /**
* Method called from [CatalogueAdapter.onBindViewHolder]. It updates the data for this * Method called from [CatalogueAdapter.onBindViewHolder]. It updates the data for this
* holder with the given manga. * holder with the given manga.
@ -39,6 +47,12 @@ class SourceGridHolder(private val view: View, private val adapter: FlexibleAdap
// Set manga title // Set manga title
title.text = manga.title title.text = manga.title
card.radius = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
preferences.eh_library_corner_radius().getOrDefault().toFloat(),
view.context.resources.displayMetrics
)
GlideApp.with(view.context).clear(thumbnail) GlideApp.with(view.context).clear(thumbnail)
if (!manga.thumbnail_url.isNullOrEmpty()) { if (!manga.thumbnail_url.isNullOrEmpty()) {
GlideApp.with(view.context) GlideApp.with(view.context)

View File

@ -1,5 +1,6 @@
package eu.kanade.tachiyomi.ui.library package eu.kanade.tachiyomi.ui.library
import android.util.TypedValue
import android.view.View import android.view.View
import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.DiskCacheStrategy
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
@ -7,13 +8,18 @@ import androidx.recyclerview.widget.RecyclerView
import eu.davidea.flexibleadapter.items.IFlexible import eu.davidea.flexibleadapter.items.IFlexible
import eu.kanade.tachiyomi.data.glide.GlideApp import eu.kanade.tachiyomi.data.glide.GlideApp
import eu.kanade.tachiyomi.data.glide.toMangaThumbnail import eu.kanade.tachiyomi.data.glide.toMangaThumbnail
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.util.view.visibleIf import eu.kanade.tachiyomi.util.view.visibleIf
import kotlinx.android.synthetic.main.source_grid_item.card
import kotlinx.android.synthetic.main.source_grid_item.download_text import kotlinx.android.synthetic.main.source_grid_item.download_text
import kotlinx.android.synthetic.main.source_grid_item.local_text import kotlinx.android.synthetic.main.source_grid_item.local_text
import kotlinx.android.synthetic.main.source_grid_item.thumbnail import kotlinx.android.synthetic.main.source_grid_item.thumbnail
import kotlinx.android.synthetic.main.source_grid_item.title import kotlinx.android.synthetic.main.source_grid_item.title
import kotlinx.android.synthetic.main.source_grid_item.unread_text import kotlinx.android.synthetic.main.source_grid_item.unread_text
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
/** /**
* Class used to hold the displayed data of a manga in the library, like the cover or the title. * Class used to hold the displayed data of a manga in the library, like the cover or the title.
@ -28,7 +34,7 @@ class LibraryGridHolder(
private val view: View, private val view: View,
adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>> adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>
) : LibraryHolder(view, adapter) { ) : LibraryHolder(view, adapter) {
private val preferences: PreferencesHelper = Injekt.get()
/** /**
* Method called from [LibraryCategoryAdapter.onBindViewHolder]. It updates the data for this * Method called from [LibraryCategoryAdapter.onBindViewHolder]. It updates the data for this
* holder with the given manga. * holder with the given manga.
@ -52,6 +58,12 @@ class LibraryGridHolder(
// set local visibility if its local manga // set local visibility if its local manga
local_text.visibleIf { item.manga.source == LocalSource.ID } local_text.visibleIf { item.manga.source == LocalSource.ID }
card.radius = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
preferences.eh_library_corner_radius().getOrDefault().toFloat(),
view.context.resources.displayMetrics
)
// Update the cover. // Update the cover.
GlideApp.with(view.context).clear(thumbnail) GlideApp.with(view.context).clear(thumbnail)
GlideApp.with(view.context) GlideApp.with(view.context)

View File

@ -72,6 +72,17 @@ class SettingsLibraryController : SettingsController() {
"${context.getString(R.string.landscape)}: $landscape" "${context.getString(R.string.landscape)}: $landscape"
} }
} }
intListPreference {
key = Keys.eh_library_rounded_corners
title = "Rounded Corner Radius"
entriesRes = arrayOf(R.string.eh_rounded_corner_0, R.string.eh_rounded_corner_1,
R.string.eh_rounded_corner_2, R.string.eh_rounded_corner_3, R.string.eh_rounded_corner_4,
R.string.eh_rounded_corner_5, R.string.eh_rounded_corner_6, R.string.eh_rounded_corner_7,
R.string.eh_rounded_corner_8, R.string.eh_rounded_corner_9, R.string.eh_rounded_corner_10)
entryValues = arrayOf("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10")
defaultValue = "4"
summaryRes = R.string.eh_rounded_corners_desc
}
} }
val dbCategories = db.getCategories().executeAsBlocking() val dbCategories = db.getCategories().executeAsBlocking()

View File

@ -657,5 +657,19 @@
<string name="eh_autoscroll">Autoscroll</string> <string name="eh_autoscroll">Autoscroll</string>
<string name="eh_retry_all">Retry all</string> <string name="eh_retry_all">Retry all</string>
<string name="eh_boost_page">Boost page</string> <string name="eh_boost_page">Boost page</string>
<string name="eh_rounded_corner_0">No Rounded Corners</string>
<string name="eh_rounded_corner_1">Radius of 1</string>
<string name="eh_rounded_corner_2">Radius of 2</string>
<string name="eh_rounded_corner_3">Radius of 3</string>
<string name="eh_rounded_corner_4">Radius of 4</string>
<string name="eh_rounded_corner_5">Radius of 5</string>
<string name="eh_rounded_corner_6">Radius of 6</string>
<string name="eh_rounded_corner_7">Radius of 7</string>
<string name="eh_rounded_corner_8">Radius of 8</string>
<string name="eh_rounded_corner_9">Radius of 9</string>
<string name="eh_rounded_corner_10">Radius of 10</string>
<string name="eh_rounded_corners_desc">The level of radius that the corners are rounded to. Current value is: %s</string>
</resources> </resources>