HapeLee 3 месяцев назад
Родитель
Сommit
b0f5b3e1a1

+ 3 - 3
app/src/main/java/io/legado/app/ui/main/MainScreen.kt

@@ -216,7 +216,7 @@ fun MainScreen(
         orientation = Orientation.Horizontal,
     )
     var bookshelfScrollToTopRequest by remember { mutableLongStateOf(0L) }
-    var homeSourceSetMenuRequest by remember { mutableLongStateOf(0L) }
+    var homeOverflowMenuRequest by remember { mutableLongStateOf(0L) }
     fun requestBookshelfScrollToTop() {
         bookshelfScrollToTopRequest++
     }
@@ -227,7 +227,7 @@ fun MainScreen(
             pagerState.currentPage == index &&
             pagerState.targetPage == index
         ) {
-            homeSourceSetMenuRequest++
+            homeOverflowMenuRequest++
             return
         }
         if (
@@ -515,7 +515,7 @@ fun MainScreen(
                         CompositionLocalProvider(LocalLifecycleOwner provides pageLifecycleOwner) {
                             when (destination) {
                             MainDestination.Home -> HomeRouteScreen(
-                                showSourceSetMenuRequest = homeSourceSetMenuRequest,
+                                showOverflowMenuRequest = homeOverflowMenuRequest,
                                 onOpenBook = { book ->
                                     context.startActivityForBook(book)
                                 },

+ 23 - 46
app/src/main/java/io/legado/app/ui/main/home/HomeScreen.kt

@@ -26,7 +26,6 @@ import androidx.compose.foundation.layout.offset
 import androidx.compose.foundation.layout.padding
 import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.width
-import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.itemsIndexed
 import androidx.compose.foundation.pager.HorizontalPager
@@ -109,16 +108,15 @@ import io.legado.app.ui.widget.components.book.SearchBookPreviewSheet
 import io.legado.app.ui.widget.components.button.series.MediumTonalButton
 import io.legado.app.ui.widget.components.button.series.SmallTonalButton
 import io.legado.app.ui.widget.components.card.GlassCard
-import io.legado.app.ui.widget.components.card.SelectionItemCard
 import io.legado.app.ui.widget.components.card.TextCard
+import io.legado.app.ui.widget.components.divider.PillDivider
 import io.legado.app.ui.widget.components.icon.AppIcon
 import io.legado.app.ui.widget.components.icon.AppIcons
 import io.legado.app.ui.widget.components.image.cover.BookshelfCover
-import io.legado.app.ui.widget.components.menuItem.MenuItemIcon
 import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu
 import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenuItem
 import io.legado.app.ui.widget.components.progressIndicator.AppContainedLoadingIndicator
-import io.legado.app.ui.widget.components.settingItem.CompactSwitchSettingItem
+import io.legado.app.ui.widget.components.settingItem.TinySwitchSettingItem
 import io.legado.app.ui.widget.components.text.AppText
 import io.legado.app.ui.widget.components.topbar.GlassMediumFlexibleTopAppBar
 import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults
@@ -137,7 +135,7 @@ import kotlin.math.roundToInt
 
 @Composable
 fun HomeRouteScreen(
-    showSourceSetMenuRequest: Long = 0L,
+    showOverflowMenuRequest: Long = 0L,
     onOpenBook: (Book) -> Unit,
     onNavigateToBookInfo: (
         name: String?,
@@ -336,7 +334,7 @@ fun HomeRouteScreen(
     }
 
     HomeScreen(
-        showSourceSetMenuRequest = showSourceSetMenuRequest,
+        showOverflowMenuRequest = showOverflowMenuRequest,
         state = state,
         homepageState = homepageState,
         homepageFeedActions = feedActions,
@@ -383,7 +381,7 @@ fun HomeRouteScreen(
 )
 @Composable
 fun HomeScreen(
-    showSourceSetMenuRequest: Long = 0L,
+    showOverflowMenuRequest: Long = 0L,
     state: HomeUiState,
     homepageState: HomepageUiState,
     homepageFeedActions: HomepageFeedActions,
@@ -409,16 +407,15 @@ fun HomeScreen(
     })
 
     var showPageMenu by remember { mutableStateOf(false) }
-    var showSourceSetSheet by remember { mutableStateOf(false) }
     var errorMessage by remember { mutableStateOf<String?>(null) }
 
     val currentPageSourceName by remember(selectedSets, pagerState) {
         derivedStateOf { selectedSets.getOrNull(pagerState.currentPage)?.sourceName }
     }
 
-    LaunchedEffect(showSourceSetMenuRequest) {
-        if (showSourceSetMenuRequest > 0L && selectedSets.isNotEmpty()) {
-            showSourceSetSheet = true
+    LaunchedEffect(showOverflowMenuRequest) {
+        if (showOverflowMenuRequest > 0L) {
+            showPageMenu = true
         }
     }
 
@@ -464,15 +461,25 @@ fun HomeScreen(
                             onDismissRequest = { showPageMenu = false },
                         ) {
                             RoundDropdownMenuItem(
-                                leadingIcon = {
-                                    MenuItemIcon(Icons.Default.Settings)
-                                },
                                 text = stringResource(R.string.home_dashboard_settings),
                                 onClick = {
                                     showPageMenu = false
                                     onIntent(HomeIntent.DashboardSettingsClick)
                                 },
                             )
+                            PillDivider()
+                            selectedSets.forEachIndexed { index, source ->
+                                RoundDropdownMenuItem(
+                                    text = source.sourceName,
+                                    isSelected = index == pagerState.currentPage,
+                                    onClick = {
+                                        showPageMenu = false
+                                        scope.launch {
+                                            pagerState.animateScrollToPage(index)
+                                        }
+                                    },
+                                )
+                            }
                         }
                     }
                 },
@@ -608,36 +615,6 @@ fun HomeScreen(
             visibleSections = state.visibleSections,
             onIntent = onIntent,
         )
-        AppModalBottomSheet(
-            show = showSourceSetSheet,
-            onDismissRequest = { showSourceSetSheet = false },
-            title = stringResource(R.string.homepage_select_items),
-        ) {
-            LazyColumn(
-                modifier = Modifier
-                    .fillMaxWidth()
-                    .heightIn(max = 480.dp),
-                verticalArrangement = Arrangement.spacedBy(8.dp),
-            ) {
-                itemsIndexed(
-                    items = selectedSets,
-                    key = { _, source -> source.sourceUrl },
-                ) { index, source ->
-                    SelectionItemCard(
-                        title = source.sourceName,
-                        isSelected = index == pagerState.currentPage,
-                        inSelectionMode = true,
-                        containerColor = LegadoTheme.colorScheme.onSheetContent,
-                        onToggleSelection = {
-                            showSourceSetSheet = false
-                            scope.launch {
-                                pagerState.animateScrollToPage(index)
-                            }
-                        },
-                    )
-                }
-            }
-        }
         AppAlertDialog(
             data = errorMessage,
             onDismissRequest = { errorMessage = null },
@@ -1307,11 +1284,11 @@ private fun HomeDashboardSettingsSheet(
         onDismissRequest = onDismissRequest,
     ) {
         Column(
-            modifier = Modifier.padding(horizontal = 16.dp, vertical = 8.dp),
+            modifier = Modifier.padding(vertical = 8.dp),
             verticalArrangement = Arrangement.spacedBy(4.dp),
         ) {
             for (section in HomeDashboardSection.entries) {
-                CompactSwitchSettingItem(
+                TinySwitchSettingItem(
                     title = stringResource(section.labelRes()),
                     checked = section in visibleSections,
                     onCheckedChange = { visible ->