mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-30 22:07:57 +01:00 
			
		
		
		
	Remove card backgrounds from browse lists
This commit is contained in:
		| @@ -1,70 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.base.holder | ||||
|  | ||||
| import android.view.View | ||||
| import android.view.ViewGroup | ||||
| import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.davidea.flexibleadapter.items.ISectionable | ||||
| import eu.kanade.tachiyomi.util.system.dpToPx | ||||
| import io.github.mthli.slice.Slice | ||||
|  | ||||
| interface SlicedHolder { | ||||
|  | ||||
|     val slice: Slice | ||||
|  | ||||
|     val adapter: FlexibleAdapter<IFlexible<*>> | ||||
|  | ||||
|     val viewToSlice: View | ||||
|  | ||||
|     fun setCardEdges(item: ISectionable<*, *>) { | ||||
|         // Position of this item in its header. Defaults to 0 when header is null. | ||||
|         var position = 0 | ||||
|  | ||||
|         // Number of items in the header of this item. Defaults to 1 when header is null. | ||||
|         var count = 1 | ||||
|  | ||||
|         if (item.header != null) { | ||||
|             val sectionItems = adapter.getSectionItems(item.header) | ||||
|             position = sectionItems.indexOf(item) | ||||
|             count = sectionItems.size | ||||
|         } | ||||
|  | ||||
|         when { | ||||
|             // Only one item in the card | ||||
|             count == 1 -> applySlice(2f, topRect = false, bottomRect = false, topShadow = true, bottomShadow = true) | ||||
|             // First item of the card | ||||
|             position == 0 -> applySlice(2f, topRect = false, bottomRect = true, topShadow = true, bottomShadow = false) | ||||
|             // Last item of the card | ||||
|             position == count - 1 -> applySlice(2f, topRect = true, bottomRect = false, topShadow = false, bottomShadow = true) | ||||
|             // Middle item | ||||
|             else -> applySlice(0f, topRect = false, bottomRect = false, topShadow = false, bottomShadow = false) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private fun applySlice( | ||||
|         radius: Float, | ||||
|         topRect: Boolean, | ||||
|         bottomRect: Boolean, | ||||
|         topShadow: Boolean, | ||||
|         bottomShadow: Boolean | ||||
|     ) { | ||||
|         val margin = margin | ||||
|  | ||||
|         slice.setRadius(radius) | ||||
|         slice.showLeftTopRect(topRect) | ||||
|         slice.showRightTopRect(topRect) | ||||
|         slice.showLeftBottomRect(bottomRect) | ||||
|         slice.showRightBottomRect(bottomRect) | ||||
|         setMargins(margin, if (topShadow) margin else 0, margin, if (bottomShadow) margin else 0) | ||||
|     } | ||||
|  | ||||
|     private fun setMargins(left: Int, top: Int, right: Int, bottom: Int) { | ||||
|         if (viewToSlice.layoutParams is ViewGroup.MarginLayoutParams) { | ||||
|             val p = viewToSlice.layoutParams as ViewGroup.MarginLayoutParams | ||||
|             p.setMargins(left, top, right, bottom) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     val margin | ||||
|         get() = 8.dpToPx | ||||
| } | ||||
| @@ -1,48 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.browse | ||||
|  | ||||
| import android.content.Context | ||||
| import android.graphics.Canvas | ||||
| import android.graphics.Rect | ||||
| import android.graphics.drawable.Drawable | ||||
| import android.view.View | ||||
| import androidx.core.view.marginBottom | ||||
| import androidx.recyclerview.widget.RecyclerView | ||||
|  | ||||
| class SourceDividerItemDecoration(context: Context) : RecyclerView.ItemDecoration() { | ||||
|  | ||||
|     private val divider: Drawable | ||||
|  | ||||
|     init { | ||||
|         val a = context.obtainStyledAttributes(intArrayOf(android.R.attr.listDivider)) | ||||
|         divider = a.getDrawable(0)!! | ||||
|         a.recycle() | ||||
|     } | ||||
|  | ||||
|     override fun onDraw(c: Canvas, parent: RecyclerView, state: RecyclerView.State) { | ||||
|         val childCount = parent.childCount | ||||
|         for (i in 0 until childCount - 1) { | ||||
|             val child = parent.getChildAt(i) | ||||
|             val holder = parent.getChildViewHolder(child) | ||||
|             if (holder is SourceListItem && | ||||
|                 parent.getChildViewHolder(parent.getChildAt(i + 1)) is SourceListItem | ||||
|             ) { | ||||
|                 val top = child.bottom + child.marginBottom | ||||
|                 val bottom = top + divider.intrinsicHeight | ||||
|                 val left = parent.paddingStart + holder.margin | ||||
|                 val right = parent.width - parent.paddingEnd - holder.margin | ||||
|  | ||||
|                 divider.setBounds(left, top, right, bottom) | ||||
|                 divider.draw(c) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     override fun getItemOffsets( | ||||
|         outRect: Rect, | ||||
|         view: View, | ||||
|         parent: RecyclerView, | ||||
|         state: RecyclerView.State | ||||
|     ) { | ||||
|         outRect.set(0, 0, 0, divider.intrinsicHeight) | ||||
|     } | ||||
| } | ||||
| @@ -1,5 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.ui.browse | ||||
|  | ||||
| import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder | ||||
|  | ||||
| interface SourceListItem : SlicedHolder | ||||
| @@ -18,7 +18,6 @@ import eu.kanade.tachiyomi.extension.model.Extension | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.browse.BrowseController | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration | ||||
| import eu.kanade.tachiyomi.ui.browse.extension.details.ExtensionDetailsController | ||||
| import kotlinx.coroutines.flow.filter | ||||
| import kotlinx.coroutines.flow.launchIn | ||||
| @@ -76,7 +75,6 @@ open class ExtensionController : | ||||
|         // Create recycler and set adapter. | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
|         binding.recycler.adapter = adapter | ||||
|         binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context)) | ||||
|         adapter?.fastScroller = binding.fastScroller | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -6,11 +6,7 @@ import eu.kanade.tachiyomi.data.glide.GlideApp | ||||
| import eu.kanade.tachiyomi.extension.model.Extension | ||||
| import eu.kanade.tachiyomi.extension.model.InstallStep | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceListItem | ||||
| import eu.kanade.tachiyomi.util.system.LocaleHelper | ||||
| import io.github.mthli.slice.Slice | ||||
| import kotlinx.android.synthetic.main.extension_card_item.card | ||||
| import kotlinx.android.synthetic.main.extension_card_item.ext_button | ||||
| import kotlinx.android.synthetic.main.extension_card_item.ext_title | ||||
| import kotlinx.android.synthetic.main.extension_card_item.image | ||||
| @@ -18,17 +14,8 @@ import kotlinx.android.synthetic.main.extension_card_item.lang | ||||
| import kotlinx.android.synthetic.main.extension_card_item.version | ||||
| import kotlinx.android.synthetic.main.extension_card_item.warning | ||||
|  | ||||
| class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter), | ||||
|     SourceListItem, | ||||
|     SlicedHolder { | ||||
|  | ||||
|     override val slice = Slice(card).apply { | ||||
|         setColor(adapter.cardBackground) | ||||
|     } | ||||
|  | ||||
|     override val viewToSlice: View | ||||
|         get() = card | ||||
| class ExtensionHolder(view: View, val adapter: ExtensionAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter) { | ||||
|  | ||||
|     init { | ||||
|         ext_button.setOnClickListener { | ||||
| @@ -38,7 +25,6 @@ class ExtensionHolder(view: View, override val adapter: ExtensionAdapter) : | ||||
|  | ||||
|     fun bind(item: ExtensionItem) { | ||||
|         val extension = item.extension | ||||
|         setCardEdges(item) | ||||
|  | ||||
|         ext_title.text = extension.name | ||||
|         version.text = extension.versionName | ||||
|   | ||||
| @@ -10,7 +10,6 @@ import eu.davidea.flexibleadapter.items.IFlexible | ||||
| import eu.kanade.tachiyomi.databinding.MigrationMangaControllerBinding | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration | ||||
| import eu.kanade.tachiyomi.ui.browse.migration.search.SearchController | ||||
|  | ||||
| class MigrationMangaController : | ||||
| @@ -54,7 +53,6 @@ class MigrationMangaController : | ||||
|         adapter = FlexibleAdapter<IFlexible<*>>(null, this) | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
|         binding.recycler.adapter = adapter | ||||
|         binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context)) | ||||
|         adapter?.fastScroller = binding.fastScroller | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,6 @@ import eu.davidea.flexibleadapter.FlexibleAdapter | ||||
| import eu.kanade.tachiyomi.databinding.MigrationSourcesControllerBinding | ||||
| import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration | ||||
| import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationMangaController | ||||
|  | ||||
| class MigrationSourcesController : | ||||
| @@ -32,7 +31,6 @@ class MigrationSourcesController : | ||||
|         adapter = SourceAdapter(this) | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
|         binding.recycler.adapter = adapter | ||||
|         binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context)) | ||||
|         adapter?.fastScroller = binding.fastScroller | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -3,28 +3,14 @@ package eu.kanade.tachiyomi.ui.browse.migration.sources | ||||
| import android.view.View | ||||
| import eu.kanade.tachiyomi.source.icon | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceListItem | ||||
| import io.github.mthli.slice.Slice | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.title | ||||
|  | ||||
| class SourceHolder(view: View, override val adapter: SourceAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter), | ||||
|     SourceListItem, | ||||
|     SlicedHolder { | ||||
|  | ||||
|     override val slice = Slice(card).apply { | ||||
|         setColor(adapter.cardBackground) | ||||
|     } | ||||
|  | ||||
|     override val viewToSlice: View | ||||
|         get() = card | ||||
| class SourceHolder(view: View, val adapter: SourceAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter) { | ||||
|  | ||||
|     fun bind(item: SourceItem) { | ||||
|         val source = item.source | ||||
|         setCardEdges(item) | ||||
|  | ||||
|         // Set source name | ||||
|         title.text = source.name | ||||
|   | ||||
| @@ -30,7 +30,6 @@ import eu.kanade.tachiyomi.ui.base.controller.NucleusController | ||||
| import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe | ||||
| import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction | ||||
| import eu.kanade.tachiyomi.ui.browse.BrowseController | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceDividerItemDecoration | ||||
| import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController | ||||
| import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController | ||||
| import eu.kanade.tachiyomi.ui.browse.source.latest.LatestUpdatesController | ||||
| @@ -93,7 +92,6 @@ class SourceController : | ||||
|         // Create recycler and set adapter. | ||||
|         binding.recycler.layoutManager = LinearLayoutManager(view.context) | ||||
|         binding.recycler.adapter = adapter | ||||
|         binding.recycler.addItemDecoration(SourceDividerItemDecoration(view.context)) | ||||
|         adapter?.fastScroller = binding.fastScroller | ||||
|  | ||||
|         requestPermissionsSafe(arrayOf(WRITE_EXTERNAL_STORAGE), 301) | ||||
|   | ||||
| @@ -6,28 +6,15 @@ import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.source.LocalSource | ||||
| import eu.kanade.tachiyomi.source.icon | ||||
| import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder | ||||
| import eu.kanade.tachiyomi.ui.base.holder.SlicedHolder | ||||
| import eu.kanade.tachiyomi.ui.browse.SourceListItem | ||||
| import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| import eu.kanade.tachiyomi.util.view.setVectorCompat | ||||
| import io.github.mthli.slice.Slice | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.card | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.image | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.pin | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.source_latest | ||||
| import kotlinx.android.synthetic.main.source_main_controller_card_item.title | ||||
|  | ||||
| class SourceHolder(private val view: View, override val adapter: SourceAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter), | ||||
|     SourceListItem, | ||||
|     SlicedHolder { | ||||
|  | ||||
|     override val slice = Slice(card).apply { | ||||
|         setColor(adapter.cardBackground) | ||||
|     } | ||||
|  | ||||
|     override val viewToSlice: View | ||||
|         get() = card | ||||
| class SourceHolder(private val view: View, val adapter: SourceAdapter) : | ||||
|     BaseFlexibleViewHolder(view, adapter) { | ||||
|  | ||||
|     init { | ||||
|         source_latest.setOnClickListener { | ||||
| @@ -41,7 +28,6 @@ class SourceHolder(private val view: View, override val adapter: SourceAdapter) | ||||
|  | ||||
|     fun bind(item: SourceItem) { | ||||
|         val source = item.source | ||||
|         setCardEdges(item) | ||||
|  | ||||
|         // Set source name | ||||
|         title.text = source.name | ||||
|   | ||||
		Reference in New Issue
	
	Block a user