UI tuning

master
Koitharu 1 year ago
parent 4fdb781622
commit 5373e58807
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -353,6 +353,7 @@ class AppRouter private constructor(
fun showTagDialog(tag: MangaTag) { fun showTagDialog(tag: MangaTag) {
buildAlertDialog(contextOrNull() ?: return) { buildAlertDialog(contextOrNull() ?: return) {
setIcon(R.drawable.ic_tag)
setTitle(tag.title) setTitle(tag.title)
setItems( setItems(
arrayOf( arrayOf(
@ -372,6 +373,7 @@ class AppRouter private constructor(
fun showAuthorDialog(author: String, source: MangaSource) { fun showAuthorDialog(author: String, source: MangaSource) {
buildAlertDialog(contextOrNull() ?: return) { buildAlertDialog(contextOrNull() ?: return) {
setIcon(R.drawable.ic_user)
setTitle(author) setTitle(author)
setItems( setItems(
arrayOf( arrayOf(

@ -29,6 +29,7 @@ import androidx.core.view.GravityCompat
import androidx.core.view.ancestors import androidx.core.view.ancestors
import androidx.core.view.isGone import androidx.core.view.isGone
import androidx.core.view.isVisible import androidx.core.view.isVisible
import androidx.core.view.updateLayoutParams
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import org.koitharu.kotatsu.R import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.util.ext.getThemeColor import org.koitharu.kotatsu.core.util.ext.getThemeColor
@ -245,8 +246,8 @@ class FastScroller @JvmOverloads constructor(
*/ */
fun setLayoutParams(viewGroup: ViewGroup) { fun setLayoutParams(viewGroup: ViewGroup) {
val recyclerViewId = recyclerView?.id ?: NO_ID val recyclerViewId = recyclerView?.id ?: NO_ID
val marginTop = resources.getDimensionPixelSize(R.dimen.fastscroll_scrollbar_margin_top) val offsetTop = resources.getDimensionPixelSize(R.dimen.fastscroll_scrollbar_margin_top)
val marginBottom = resources.getDimensionPixelSize(R.dimen.fastscroll_scrollbar_margin_bottom) val offsetBottom = resources.getDimensionPixelSize(R.dimen.fastscroll_scrollbar_margin_bottom)
require(recyclerViewId != NO_ID) { "RecyclerView must have a view ID" } require(recyclerViewId != NO_ID) { "RecyclerView must have a view ID" }
@ -263,31 +264,43 @@ class FastScroller @JvmOverloads constructor(
applyTo(viewGroup) applyTo(viewGroup)
} }
layoutParams = (layoutParams as ConstraintLayout.LayoutParams).apply { updateLayoutParams<ConstraintLayout.LayoutParams> {
height = 0 height = 0
setMargins(offset, marginTop, offset, marginBottom) marginStart = offset
marginEnd = offset
topMargin = offsetTop
bottomMargin = offsetBottom
} }
} }
is CoordinatorLayout -> layoutParams = (layoutParams as CoordinatorLayout.LayoutParams).apply { is CoordinatorLayout -> updateLayoutParams<CoordinatorLayout.LayoutParams> {
height = LayoutParams.MATCH_PARENT height = LayoutParams.MATCH_PARENT
anchorGravity = GravityCompat.END anchorGravity = GravityCompat.END
anchorId = recyclerViewId anchorId = recyclerViewId
setMargins(offset, marginTop, offset, marginBottom) marginStart = offset
marginEnd = offset
topMargin = offsetTop
bottomMargin = offsetBottom
} }
is FrameLayout -> layoutParams = (layoutParams as FrameLayout.LayoutParams).apply { is FrameLayout -> updateLayoutParams<FrameLayout.LayoutParams> {
height = LayoutParams.MATCH_PARENT height = LayoutParams.MATCH_PARENT
gravity = GravityCompat.END gravity = GravityCompat.END
setMargins(offset, marginTop, offset, marginBottom) marginStart = offset
marginEnd = offset
topMargin = offsetTop
bottomMargin = offsetBottom
} }
is RelativeLayout -> layoutParams = (layoutParams as RelativeLayout.LayoutParams).apply { is RelativeLayout -> updateLayoutParams<RelativeLayout.LayoutParams> {
height = 0 height = 0
addRule(RelativeLayout.ALIGN_TOP, recyclerViewId) addRule(RelativeLayout.ALIGN_TOP, recyclerViewId)
addRule(RelativeLayout.ALIGN_BOTTOM, recyclerViewId) addRule(RelativeLayout.ALIGN_BOTTOM, recyclerViewId)
addRule(RelativeLayout.ALIGN_END, recyclerViewId) addRule(RelativeLayout.ALIGN_END, recyclerViewId)
setMargins(offset, marginTop, offset, marginBottom) marginStart = offset
marginEnd = offset
topMargin = offsetTop
bottomMargin = offsetBottom
} }
else -> throw IllegalArgumentException("Parent ViewGroup must be a ConstraintLayout, CoordinatorLayout, FrameLayout, or RelativeLayout") else -> throw IllegalArgumentException("Parent ViewGroup must be a ConstraintLayout, CoordinatorLayout, FrameLayout, or RelativeLayout")

@ -31,6 +31,7 @@ class FavouriteTabPopupMenuProvider(
R.id.action_hide -> viewModel.hide(categoryId) R.id.action_hide -> viewModel.hide(categoryId)
R.id.action_edit -> router.openFavoriteCategoryEdit(categoryId) R.id.action_edit -> router.openFavoriteCategoryEdit(categoryId)
R.id.action_delete -> confirmDelete() R.id.action_delete -> confirmDelete()
R.id.action_manage -> router.openFavoriteCategories()
else -> return false else -> return false
} }
return true return true

@ -16,6 +16,8 @@ class FavouritesTabConfigurationStrategy(
val item = adapter.getItem(position) val item = adapter.getItem(position)
tab.text = item.title ?: tab.view.context.getString(R.string.all_favourites) tab.text = item.title ?: tab.view.context.getString(R.string.all_favourites)
tab.tag = item tab.tag = item
PopupMenuMediator(FavouriteTabPopupMenuProvider(tab.view.context, router, viewModel, item.id)).attach(tab.view) PopupMenuMediator(
FavouriteTabPopupMenuProvider(tab.view.context, router, viewModel, item.id)
).attach(tab.view)
} }
} }

@ -88,12 +88,12 @@ class FeedFragment :
override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat { override fun onApplyWindowInsets(v: View, insets: WindowInsetsCompat): WindowInsetsCompat {
val typeMask = WindowInsetsCompat.Type.systemBars() val typeMask = WindowInsetsCompat.Type.systemBars()
val barsInsets = insets.getInsets(typeMask) val barsInsets = insets.getInsets(typeMask)
val basePadding = v.resources.getDimensionPixelOffset(R.dimen.list_spacing_normal) val paddingVertical = resources.getDimensionPixelSize(R.dimen.list_spacing_normal)
viewBinding?.recyclerView?.setPadding( viewBinding?.recyclerView?.setPadding(
left = barsInsets.left + basePadding, left = barsInsets.left,
top = basePadding, top = paddingVertical,
right = barsInsets.right + basePadding, right = barsInsets.right,
bottom = barsInsets.bottom + basePadding, bottom = barsInsets.bottom + paddingVertical,
) )
return insets.consumeAll(typeMask) return insets.consumeAll(typeMask)
} }

@ -73,8 +73,10 @@
android:singleLine="true" android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodySmall" android:textAppearance="?attr/textAppearanceBodySmall"
android:theme="@style/ThemeOverlay.Material3.Dark" android:theme="@style/ThemeOverlay.Material3.Dark"
android:visibility="gone"
app:layout_dodgeInsetEdges="bottom" app:layout_dodgeInsetEdges="bottom"
tools:text="@string/loading_" /> tools:text="@string/loading_"
tools:visibility="visible" />
<LinearLayout <LinearLayout
android:id="@+id/layout_loading" android:id="@+id/layout_loading"

@ -82,8 +82,10 @@
android:singleLine="true" android:singleLine="true"
android:textAppearance="?attr/textAppearanceBodySmall" android:textAppearance="?attr/textAppearanceBodySmall"
android:theme="@style/ThemeOverlay.Material3.Dark" android:theme="@style/ThemeOverlay.Material3.Dark"
android:visibility="gone"
app:layout_dodgeInsetEdges="bottom" app:layout_dodgeInsetEdges="bottom"
tools:text="@string/loading_" /> tools:text="@string/loading_"
tools:visibility="visible" />
<LinearLayout <LinearLayout
android:id="@+id/layout_loading" android:id="@+id/layout_loading"

@ -40,7 +40,8 @@
app:tabIndicatorGravity="stretch" app:tabIndicatorGravity="stretch"
app:tabInlineLabel="true" app:tabInlineLabel="true"
app:tabMinWidth="0dp" app:tabMinWidth="0dp"
app:tabMode="scrollable" /> app:tabMode="scrollable"
app:tabUnboundedRipple="true" />
<com.google.android.material.button.MaterialSplitButton <com.google.android.material.button.MaterialSplitButton
android:id="@+id/split_button_read" android:id="@+id/split_button_read"

@ -6,4 +6,8 @@
android:id="@+id/action_hide" android:id="@+id/action_hide"
android:title="@string/hide" /> android:title="@string/hide" />
<item
android:id="@+id/action_manage"
android:title="@string/manage" />
</menu> </menu>

Loading…
Cancel
Save