Browse Source

Tweaks on Library screen (#7597)

- Toolbar not having padding in landscape
- Fix library always refreshing everything even though user is refreshing category
- Tab text using primary color
- Fix Grid having to big of a top padding
- Fix Pager crashing when initial page is greater than the number of categories
Andreas 2 years ago
parent
commit
bc1f6ba517

+ 3 - 2
app/src/main/java/eu/kanade/presentation/library/LibraryScreen.kt

@@ -2,6 +2,7 @@ package eu.kanade.presentation.library
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
+import eu.kanade.domain.category.model.Category
 import eu.kanade.presentation.components.LibraryBottomActionMenu
 import eu.kanade.presentation.components.Scaffold
 import eu.kanade.presentation.library.components.LibraryContent
@@ -23,7 +24,7 @@ fun LibraryScreen(
     onClickSelectAll: () -> Unit,
     onClickInvertSelection: () -> Unit,
     onClickFilter: () -> Unit,
-    onClickRefresh: () -> Unit,
+    onClickRefresh: (Category?) -> Unit,
 ) {
     Scaffold(
         topBar = {
@@ -35,7 +36,7 @@ fun LibraryScreen(
                 onClickSelectAll = onClickSelectAll,
                 onClickInvertSelection = onClickInvertSelection,
                 onClickFilter = onClickFilter,
-                onClickRefresh = onClickRefresh,
+                onClickRefresh = { onClickRefresh(null) },
             )
         },
         bottomBar = {

+ 1 - 1
app/src/main/java/eu/kanade/presentation/library/components/LazyLibraryGrid.kt

@@ -29,7 +29,7 @@ fun LazyLibraryGrid(
     LazyVerticalGrid(
         modifier = modifier,
         columns = if (columns == 0) GridCells.Adaptive(128.dp) else GridCells.Fixed(columns),
-        contentPadding = bottomNavPaddingValues + PaddingValues(12.dp) + WindowInsets.navigationBars.asPaddingValues(),
+        contentPadding = bottomNavPaddingValues + PaddingValues(12.dp, 2.dp) + WindowInsets.navigationBars.asPaddingValues(),
         verticalArrangement = Arrangement.spacedBy(12.dp),
         horizontalArrangement = Arrangement.spacedBy(12.dp),
         content = content,

+ 5 - 4
app/src/main/java/eu/kanade/presentation/library/components/LibraryContent.kt

@@ -12,6 +12,7 @@ import com.google.accompanist.pager.rememberPagerState
 import com.google.accompanist.swiperefresh.SwipeRefresh
 import com.google.accompanist.swiperefresh.rememberSwipeRefreshState
 import eu.kanade.core.prefs.PreferenceMutableState
+import eu.kanade.domain.category.model.Category
 import eu.kanade.presentation.components.EmptyScreen
 import eu.kanade.presentation.components.LoadingScreen
 import eu.kanade.presentation.components.SwipeRefreshIndicator
@@ -35,17 +36,17 @@ fun LibraryContent(
     onChangeCurrentPage: (Int) -> Unit,
     onMangaClicked: (Long) -> Unit,
     onToggleSelection: (LibraryManga) -> Unit,
-    onRefresh: () -> Unit,
+    onRefresh: (Category?) -> Unit,
     onGlobalSearchClicked: () -> Unit,
     getNumberOfMangaForCategory: @Composable (Long) -> State<Int?>,
     getDisplayModeForPage: @Composable (Int) -> State<DisplayModeSetting>,
     getColumnsForOrientation: (Boolean) -> PreferenceMutableState<Int>,
     getLibraryForPage: @Composable (Int) -> State<List<LibraryItem>>,
 ) {
-    val pagerState = rememberPagerState(currentPage)
-
     val categories = state.categories
 
+    val pagerState = rememberPagerState(currentPage.coerceAtMost(categories.lastIndex))
+
     if (categories.isEmpty()) {
         LoadingScreen()
         return
@@ -78,7 +79,7 @@ fun LibraryContent(
 
         SwipeRefresh(
             state = rememberSwipeRefreshState(isRefreshing = false),
-            onRefresh = onRefresh,
+            onRefresh = { onRefresh(categories[currentPage]) },
             indicator = { s, trigger ->
                 SwipeRefreshIndicator(
                     state = s,

+ 4 - 1
app/src/main/java/eu/kanade/presentation/library/components/LibraryTabs.kt

@@ -54,7 +54,10 @@ fun LibraryTabs(
                         Row(
                             verticalAlignment = Alignment.CenterVertically,
                         ) {
-                            Text(text = category.name)
+                            Text(
+                                text = category.name,
+                                color = if (state.currentPage == index) MaterialTheme.colorScheme.primary else MaterialTheme.colorScheme.onBackground,
+                            )
                             if (count != null) {
                                 Pill(
                                     text = "$count",

+ 4 - 4
app/src/main/java/eu/kanade/presentation/library/components/LibraryToolbar.kt

@@ -3,7 +3,7 @@ package eu.kanade.presentation.library.components
 import androidx.compose.foundation.isSystemInDarkTheme
 import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.statusBarsPadding
+import androidx.compose.foundation.layout.safeDrawingPadding
 import androidx.compose.foundation.text.BasicTextField
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.outlined.ArrowBack
@@ -79,7 +79,7 @@ fun LibraryRegularToolbar(
     val pillAlpha = if (isSystemInDarkTheme()) 0.12f else 0.08f
     val filterTint = if (hasFilters) MaterialTheme.colorScheme.active else LocalContentColor.current
     SmallTopAppBar(
-        modifier = Modifier.statusBarsPadding(),
+        modifier = Modifier.safeDrawingPadding(),
         title = {
             Row(verticalAlignment = Alignment.CenterVertically) {
                 Text(
@@ -124,7 +124,7 @@ fun LibrarySelectionToolbar(
             .drawBehind {
                 drawRect(backgroundColor.copy(alpha = 1f))
             }
-            .statusBarsPadding(),
+            .safeDrawingPadding(),
         navigationIcon = {
             IconButton(onClick = onClickUnselectAll) {
                 Icon(Icons.Outlined.Close, contentDescription = "close")
@@ -156,7 +156,7 @@ fun LibrarySearchToolbar(
 ) {
     val focusRequester = remember { FocusRequester.Default }
     SmallTopAppBar(
-        modifier = Modifier.statusBarsPadding(),
+        modifier = Modifier.safeDrawingPadding(),
         navigationIcon = {
             IconButton(onClick = onClickCloseSearch) {
                 Icon(Icons.Outlined.ArrowBack, contentDescription = "back")

+ 1 - 1
app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt

@@ -62,7 +62,7 @@ class LibraryController(
             onDeleteClicked = ::showDeleteMangaDialog,
             onClickFilter = ::showSettingsSheet,
             onClickRefresh = {
-                if (LibraryUpdateService.start(context)) {
+                if (LibraryUpdateService.start(context, it)) {
                     context.toast(R.string.updating_library)
                 }
             },