Using a smaller item view for only updates mode

This commit is contained in:
Jays2Kings 2021-04-12 23:33:45 -04:00
parent 6f78187cb9
commit bbf3fcab18
4 changed files with 69 additions and 19 deletions

View File

@ -21,6 +21,9 @@ class RecentMangaAdapter(val delegate: RecentsInterface) :
var showRemoveHistory = true var showRemoveHistory = true
var showTitleFirst = false var showTitleFirst = false
val viewType: Int
get() = delegate.getViewType()
fun updateItems(items: List<IFlexible<*>>?) { fun updateItems(items: List<IFlexible<*>>?) {
updateDataSet(items) updateDataSet(items)
} }
@ -55,6 +58,7 @@ class RecentMangaAdapter(val delegate: RecentsInterface) :
fun markAsRead(position: Int) fun markAsRead(position: Int)
fun isSearching(): Boolean fun isSearching(): Boolean
fun scope(): CoroutineScope fun scope(): CoroutineScope
fun getViewType(): Int
} }
override fun onItemSwiped(position: Int, direction: Int) { override fun onItemSwiped(position: Int, direction: Int) {

View File

@ -2,7 +2,9 @@ package eu.kanade.tachiyomi.ui.recents
import android.app.Activity import android.app.Activity
import android.view.View import android.view.View
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.image.coil.loadLibraryManga import eu.kanade.tachiyomi.data.image.coil.loadLibraryManga
@ -10,6 +12,7 @@ import eu.kanade.tachiyomi.databinding.RecentMangaItemBinding
import eu.kanade.tachiyomi.ui.manga.chapter.BaseChapterHolder import eu.kanade.tachiyomi.ui.manga.chapter.BaseChapterHolder
import eu.kanade.tachiyomi.util.chapter.ChapterUtil import eu.kanade.tachiyomi.util.chapter.ChapterUtil
import eu.kanade.tachiyomi.util.isLocal import eu.kanade.tachiyomi.util.isLocal
import eu.kanade.tachiyomi.util.system.dpToPx
import eu.kanade.tachiyomi.util.system.timeSpanFromNow import eu.kanade.tachiyomi.util.system.timeSpanFromNow
class RecentMangaHolder( class RecentMangaHolder(
@ -32,6 +35,35 @@ class RecentMangaHolder(
RecentMangaAdapter.ShowRecentsDLs.All -> true RecentMangaAdapter.ShowRecentsDLs.All -> true
} && !item.mch.manga.isLocal() } && !item.mch.manga.isLocal()
val isUpdates = adapter.viewType == RecentsPresenter.VIEW_TYPE_ONLY_UPDATES
binding.cardLayout.updateLayoutParams<ConstraintLayout.LayoutParams> {
height = (if (isUpdates) 40 else 80).dpToPx
width = (if (isUpdates) 40 else 60).dpToPx
}
listOf(binding.title, binding.subtitle).forEach {
it.updateLayoutParams<ConstraintLayout.LayoutParams> {
if (isUpdates) {
if (it == binding.title) topMargin = 5.dpToPx
endToStart = R.id.button_layout
endToEnd = -1
} else {
if (it == binding.title) topMargin = 2.dpToPx
endToStart = -1
endToEnd = R.id.front_view
}
}
}
binding.buttonLayout.updateLayoutParams<ConstraintLayout.LayoutParams> {
if (isUpdates) {
topToBottom = -1
topToTop = R.id.front_view
} else {
topToTop = -1
topToBottom = R.id.subtitle
}
}
binding.subtitle.updateLayoutParams<ConstraintLayout.LayoutParams> {
}
binding.removeHistory.isVisible = item.mch.history.id != null && showRemoveHistory binding.removeHistory.isVisible = item.mch.history.id != null && showRemoveHistory
binding.title.apply { binding.title.apply {
text = if (!showTitleFirst) { text = if (!showTitleFirst) {
@ -50,11 +82,13 @@ class RecentMangaHolder(
setTextColor(ChapterUtil.readColor(context, item)) setTextColor(ChapterUtil.readColor(context, item))
} }
val notValidNum = item.mch.chapter.chapter_number <= 0 val notValidNum = item.mch.chapter.chapter_number <= 0
binding.body.isVisible = !isUpdates
binding.body.text = when { binding.body.text = when {
item.mch.chapter.id == null -> binding.body.context.getString( item.mch.chapter.id == null -> binding.body.context.getString(
R.string.added_, R.string.added_,
item.mch.manga.date_added.timeSpanFromNow item.mch.manga.date_added.timeSpanFromNow
) )
adapter.viewType == RecentsPresenter.VIEW_TYPE_ONLY_UPDATES -> ""
item.mch.history.id == null -> binding.body.context.getString( item.mch.history.id == null -> binding.body.context.getString(
R.string.updated_, R.string.updated_,
item.chapter.date_upload.timeSpanFromNow item.chapter.date_upload.timeSpanFromNow

View File

@ -464,6 +464,8 @@ class RecentsController(bundle: Bundle? = null) :
} }
} }
override fun getViewType(): Int = presenter.viewType
override fun scope() = adapterScope override fun scope() = adapterScope
override fun onItemClick(view: View?, position: Int): Boolean { override fun onItemClick(view: View?, position: Int): Boolean {

View File

@ -59,8 +59,8 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="match_parent" android:layout_height="match_parent"
android:adjustViewBounds="true" android:adjustViewBounds="true"
android:foreground="?android:attr/selectableItemBackground"
android:background="?android:attr/colorBackground" android:background="?android:attr/colorBackground"
android:foreground="?android:attr/selectableItemBackground"
android:maxHeight="60dp" android:maxHeight="60dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
@ -85,10 +85,13 @@
android:textColor="?android:attr/textColorPrimary" android:textColor="?android:attr/textColorPrimary"
android:textSize="16sp" android:textSize="16sp"
app:layout_constrainedWidth="true" app:layout_constrainedWidth="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/subtitle"
app:layout_constraintVertical_chainStyle="packed"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/card_layout" app:flow_verticalBias="0.0"
app:layout_constraintStart_toEndOf="@id/card_layout"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
tools:text="New Chapter" /> tools:text="New Chapter" />
@ -98,7 +101,6 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="16dp" android:layout_marginEnd="16dp"
android:layout_marginBottom="14dp"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:singleLine="true" android:singleLine="true"
@ -109,7 +111,7 @@
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/title" app:layout_constraintStart_toStartOf="@+id/title"
app:layout_constraintTop_toBottomOf="@+id/title" app:layout_constraintTop_toBottomOf="@+id/title"
app:layout_constraintVertical_bias="0.0" app:layout_constraintBottom_toTopOf="@id/body"
tools:text="Manga title" /> tools:text="Manga title" />
<com.google.android.material.textview.MaterialTextView <com.google.android.material.textview.MaterialTextView
@ -118,20 +120,27 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginEnd="6dp" android:layout_marginEnd="6dp"
android:layout_marginBottom="14dp"
android:ellipsize="end" android:ellipsize="end"
android:lineSpacingExtra="2dp" android:lineSpacingExtra="2dp"
android:maxLines="2" android:maxLines="2"
android:textColor="?android:attr/textColorSecondary" android:textColor="?android:attr/textColorSecondary"
android:textSize="14sp" android:textSize="14sp"
app:layout_constrainedWidth="true" app:layout_constrainedWidth="true"
app:layout_constraintBottom_toTopOf="@id/space"
app:layout_constraintEnd_toStartOf="@id/button_layout" app:layout_constraintEnd_toStartOf="@id/button_layout"
app:layout_constraintHorizontal_bias="0.0" app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="@+id/title" app:layout_constraintStart_toStartOf="@+id/title"
app:layout_constraintTop_toBottomOf="@+id/subtitle" app:layout_constraintTop_toBottomOf="@id/subtitle"
app:layout_constraintVertical_bias="0.0" app:layout_constraintVertical_bias="0.0"
tools:text="3 Days ago" /> tools:text="3 Days ago" />
<Space
android:id="@+id/space"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@id/bottom_line"
app:layout_constraintTop_toBottomOf="@id/body" />
<ProgressBar <ProgressBar
android:id="@+id/progress" android:id="@+id/progress"
style="?android:attr/progressBarStyleHorizontal" style="?android:attr/progressBarStyleHorizontal"
@ -149,7 +158,7 @@
app:layout_constraintStart_toStartOf="@id/title" app:layout_constraintStart_toStartOf="@id/title"
app:layout_constraintTop_toBottomOf="@id/subtitle" /> app:layout_constraintTop_toBottomOf="@id/subtitle" />
<LinearLayout <LinearLayout
android:id="@+id/button_layout" android:id="@+id/button_layout"
android:layout_width="wrap_content" android:layout_width="wrap_content"
@ -157,8 +166,8 @@
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/subtitle" > app:layout_constraintTop_toBottomOf="@id/subtitle">
<ImageButton <ImageButton
android:id="@+id/remove_history" android:id="@+id/remove_history"
android:layout_width="45dp" android:layout_width="45dp"
@ -166,15 +175,16 @@
android:background="?selectableItemBackgroundBorderless" android:background="?selectableItemBackgroundBorderless"
android:contentDescription="@string/next_title" android:contentDescription="@string/next_title"
android:padding="8dp" android:padding="8dp"
app:tint="@color/holo_red"
app:layout_constraintHorizontal_chainStyle="spread"
android:tooltipText="@string/reset_chapter_history" android:tooltipText="@string/reset_chapter_history"
app:srcCompat="@drawable/ic_eye_remove_outline_24dp" /> app:layout_constraintHorizontal_chainStyle="spread"
<include app:srcCompat="@drawable/ic_eye_remove_outline_24dp"
layout="@layout/download_button" app:tint="@color/holo_red" />
android:id="@+id/download_button"
android:layout_width="45dp" <include
android:layout_height="match_parent" /> android:id="@+id/download_button"
layout="@layout/download_button"
android:layout_width="45dp"
android:layout_height="match_parent" />
</LinearLayout> </LinearLayout>
<androidx.constraintlayout.widget.Barrier <androidx.constraintlayout.widget.Barrier
@ -184,7 +194,7 @@
android:layout_margin="6dp" android:layout_margin="6dp"
android:orientation="horizontal" android:orientation="horizontal"
app:barrierDirection="bottom" app:barrierDirection="bottom"
app:constraint_referenced_ids="card_layout,body" /> app:constraint_referenced_ids="space,card_layout" />
<View <View
android:id="@+id/padding" android:id="@+id/padding"