Просмотр исходного кода

refactor: 展开文本选择菜单和展示选择菜单图标从更多设置内统一到文字选择菜单配置

fansangg 4 месяцев назад
Родитель
Сommit
30bf112e46

+ 9 - 1
app/src/main/java/io/legado/app/ui/book/read/ReadBookRouteScreen.kt

@@ -43,6 +43,7 @@ import io.legado.app.ui.book.info.BookInfoActivity
 import io.legado.app.ui.book.read.page.ContentTextView
 import io.legado.app.ui.book.read.page.ReadView
 import io.legado.app.ui.book.read.page.entities.PageDirection
+import io.legado.app.ui.book.read.sheet.TextSelectMenuConfigSheet
 import io.legado.app.ui.book.searchContent.SearchContentResult
 import io.legado.app.ui.book.source.edit.BookSourceEditActivity
 import io.legado.app.ui.book.toc.TocActivityResult
@@ -50,7 +51,6 @@ import io.legado.app.ui.browser.WebViewActivity
 import io.legado.app.ui.login.SourceLoginActivity
 import io.legado.app.ui.replace.ReplaceEditRoute
 import io.legado.app.ui.replace.ReplaceRuleActivity
-import io.legado.app.ui.book.read.sheet.TextSelectMenuConfigSheet
 import io.legado.app.utils.StartActivityContract
 import io.legado.app.utils.takePersistablePermissionSafely
 import io.legado.app.utils.toastOnUi
@@ -508,6 +508,14 @@ fun ReadBookRouteScreen(
             TextSelectMenuConfigSheet(
                 show = showSelectMenuConfigSheet,
                 items = configItems,
+                expandTextMenu = readPreferences.expandTextMenu,
+                showSelectMenuIcon = readPreferences.showSelectMenuIcon,
+                onExpandTextMenuChange = {
+                    viewModel.onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ExpandTextMenu(it)))
+                },
+                onShowSelectMenuIconChange = {
+                    viewModel.onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ShowSelectMenuIcon(it)))
+                },
                 onDismissRequest = { showSelectMenuConfigSheet = false },
                 onSaved = { items -> controller.saveMenuConfig(items) }
             )

+ 0 - 18
app/src/main/java/io/legado/app/ui/book/read/sheet/MoreConfigSheet.kt

@@ -147,12 +147,6 @@ fun MoreConfigSheet(
                 onDisableReturnKeyChange = {
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.DisableReturnKey(it)))
                 },
-                onExpandTextMenuChange = {
-                    onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ExpandTextMenu(it)))
-                },
-                onShowSelectMenuIconChange = {
-                    onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ShowSelectMenuIcon(it)))
-                },
                 onShowReadTitleAdditionChange = {
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.ShowReadTitleAddition(it)))
                 },
@@ -311,8 +305,6 @@ private fun OtherSettings(
     onOpenClickRegionalConfig: () -> Unit,
     onDisableReturnKeyChange: (Boolean) -> Unit,
     onOpenPageKeyConfig: () -> Unit,
-    onExpandTextMenuChange: (Boolean) -> Unit,
-    onShowSelectMenuIconChange: (Boolean) -> Unit,
     onShowReadTitleAdditionChange: (Boolean) -> Unit,
     onShowMenuIconChange: (Boolean) -> Unit,
 ) {
@@ -381,16 +373,6 @@ private fun OtherSettings(
         title = stringResource(R.string.custom_page_key),
         onClick = onOpenPageKeyConfig,
     )
-    TinySwitchSettingItem(
-        title = stringResource(R.string.expand_text_menu),
-        checked = preferences.expandTextMenu,
-        onCheckedChange = onExpandTextMenuChange,
-    )
-    TinySwitchSettingItem(
-        title = stringResource(R.string.show_select_menu_icon),
-        checked = preferences.showSelectMenuIcon,
-        onCheckedChange = onShowSelectMenuIconChange,
-    )
     TinySwitchSettingItem(
         title = stringResource(R.string.show_read_title_addition),
         checked = preferences.showReadTitleAddition,

+ 79 - 2
app/src/main/java/io/legado/app/ui/book/read/sheet/TextSelectMenuConfigSheet.kt

@@ -1,7 +1,14 @@
 package io.legado.app.ui.book.read.sheet
 
 import androidx.compose.animation.core.animateDpAsState
-import androidx.compose.foundation.layout.*
+import androidx.compose.foundation.layout.Arrangement
+import androidx.compose.foundation.layout.Box
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxHeight
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.lazy.LazyColumn
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.rememberLazyListState
@@ -12,16 +19,22 @@ import androidx.compose.material.icons.filled.VisibilityOff
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.Icon
 import androidx.compose.material3.IconButton
-import androidx.compose.runtime.*
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.mutableStateOf
+import androidx.compose.runtime.remember
+import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.text.style.TextOverflow
 import androidx.compose.ui.unit.dp
 import androidx.compose.ui.unit.sp
 import coil.compose.AsyncImage
 import io.legado.app.R
 import io.legado.app.ui.book.read.ActionMenuItem
 import io.legado.app.ui.theme.LegadoTheme
+import io.legado.app.ui.widget.components.TinySwitch
 import io.legado.app.ui.widget.components.button.ConfirmDismissButtonsRow
 import io.legado.app.ui.widget.components.card.NormalCard
 import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
@@ -34,6 +47,10 @@ import sh.calvin.reorderable.rememberReorderableLazyListState
 fun TextSelectMenuConfigSheet(
     show: Boolean,
     items: List<ActionMenuItem>,
+    expandTextMenu: Boolean,
+    showSelectMenuIcon: Boolean,
+    onExpandTextMenuChange: (Boolean) -> Unit,
+    onShowSelectMenuIconChange: (Boolean) -> Unit,
     onDismissRequest: () -> Unit,
     onSaved: (List<ActionMenuItem>) -> Unit
 ) {
@@ -90,6 +107,66 @@ fun TextSelectMenuConfigSheet(
                 }
             }
 
+            Row(
+                modifier = Modifier
+                    .fillMaxWidth()
+                    .padding(start = 16.dp, end = 16.dp, top = 8.dp, bottom = 4.dp),
+                horizontalArrangement = Arrangement.spacedBy(8.dp),
+                verticalAlignment = Alignment.CenterVertically
+            ) {
+                NormalCard(
+                    cornerRadius = 12.dp,
+                    containerColor = LegadoTheme.colorScheme.surfaceContainerLow,
+                    modifier = Modifier.weight(1f),
+                    onClick = { onExpandTextMenuChange(!expandTextMenu) }
+                ) {
+                    Row(
+                        modifier = Modifier
+                            .fillMaxWidth()
+                            .padding(horizontal = 12.dp, vertical = 12.dp),
+                        verticalAlignment = Alignment.CenterVertically
+                    ) {
+                        AppText(
+                            text = stringResource(R.string.expand_text_menu),
+                            style = LegadoTheme.typography.titleSmallEmphasized,
+                            modifier = Modifier.weight(1f),
+                            maxLines = 1,
+                            overflow = TextOverflow.Ellipsis
+                        )
+                        TinySwitch(
+                            checked = expandTextMenu,
+                            onCheckedChange = onExpandTextMenuChange
+                        )
+                    }
+                }
+
+                NormalCard(
+                    cornerRadius = 12.dp,
+                    containerColor = LegadoTheme.colorScheme.surfaceContainerLow,
+                    modifier = Modifier.weight(1f),
+                    onClick = { onShowSelectMenuIconChange(!showSelectMenuIcon) }
+                ) {
+                    Row(
+                        modifier = Modifier
+                            .fillMaxWidth()
+                            .padding(horizontal = 12.dp, vertical = 12.dp),
+                        verticalAlignment = Alignment.CenterVertically
+                    ) {
+                        AppText(
+                            text = stringResource(R.string.show_select_menu_icon),
+                            style = LegadoTheme.typography.titleSmallEmphasized,
+                            modifier = Modifier.weight(1f),
+                            maxLines = 1,
+                            overflow = TextOverflow.Ellipsis
+                        )
+                        TinySwitch(
+                            checked = showSelectMenuIcon,
+                            onCheckedChange = onShowSelectMenuIconChange
+                        )
+                    }
+                }
+            }
+
             ConfirmDismissButtonsRow(
                 onDismiss = onDismissRequest,
                 onConfirm = {

+ 0 - 2
app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigContract.kt

@@ -77,8 +77,6 @@ sealed interface ReadConfigIntent {
     data class ClickImgWayChanged(val value: String) : ReadConfigIntent
     data class OptimizeRenderChanged(val value: Boolean) : ReadConfigIntent
     data class DisableReturnKeyChanged(val value: Boolean) : ReadConfigIntent
-    data class ExpandTextMenuChanged(val value: Boolean) : ReadConfigIntent
-    data class ShowSelectMenuIconChanged(val value: Boolean) : ReadConfigIntent
     data class ShowReadTitleAdditionChanged(val value: Boolean) : ReadConfigIntent
     data class ShowMenuIconChanged(val value: Boolean) : ReadConfigIntent
     data class AutoSuggestDayNightChanged(val value: Boolean) : ReadConfigIntent

+ 0 - 18
app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigScreen.kt

@@ -370,24 +370,6 @@ fun ReadConfigScreen(
                     onClick = { showPageKeySheet = true }
                 )
 
-                SwitchSettingItem(
-                    title = stringResource(R.string.expand_text_menu),
-                    checked = state.expandTextMenu,
-                    onCheckedChange = {
-                        viewModel.onIntent(ReadConfigIntent.ExpandTextMenuChanged(it))
-                    }
-                )
-
-                SwitchSettingItem(
-                    title = stringResource(R.string.show_select_menu_icon),
-                    checked = state.showSelectMenuIcon,
-                    onCheckedChange = {
-                        viewModel.onIntent(ReadConfigIntent.ShowSelectMenuIconChanged(it))
-                    }
-                )
-
-
-
                 SwitchSettingItem(
                     title = stringResource(R.string.show_read_title_addition),
                     checked = state.showReadTitleAddition,

+ 0 - 10
app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfigViewModel.kt

@@ -197,16 +197,6 @@ class ReadConfigViewModel(
                     readSettingsRepository.setDisableReturnKey(intent.value)
                 }
 
-                is ReadConfigIntent.ExpandTextMenuChanged -> {
-                    ReadConfig.expandTextMenu = intent.value
-                    readSettingsRepository.setExpandTextMenu(intent.value)
-                }
-
-                is ReadConfigIntent.ShowSelectMenuIconChanged -> {
-                    ReadConfig.showSelectMenuIcon = intent.value
-                    readSettingsRepository.setShowSelectMenuIcon(intent.value)
-                }
-
                 is ReadConfigIntent.ShowReadTitleAdditionChanged -> {
                     ReadConfig.showReadTitleAddition = intent.value
                     readSettingsRepository.setShowReadTitleAddition(intent.value)

+ 2 - 2
app/src/main/res/values-zh-rCN/strings.xml

@@ -1104,8 +1104,8 @@
     <string name="tts_speech_add">语速加</string>
     <string name="open_sys_dir_picker_error">打开系统文件夹选择器出错,将自动打开应用文件夹选择器</string>
     <string name="open_sys_doc_picker_error">打开系统文件选择器出错,将自动打开应用文件选择器</string>
-    <string name="expand_text_menu">展开文本选择菜单</string>
-    <string name="show_select_menu_icon">展示选择菜单图标</string>
+    <string name="expand_text_menu">多行展示</string>
+    <string name="show_select_menu_icon">展示图标</string>
 
     <string name="show_all">全部显示</string>
     <string name="hide_all">全不显示</string>

+ 2 - 2
app/src/main/res/values-zh-rHK/strings.xml

@@ -966,7 +966,7 @@
     <string name="tts_speech_add">語速加</string>
     <string name="open_sys_dir_picker_error">打开系统文件夹选择器出错,自动打开应用文件夹选择器</string>
     <string name="open_sys_doc_picker_error">打开系统文件选择器出错,自动打开应用文件选择器</string>
-    <string name="expand_text_menu">展开文本选择菜单</string>
+    <string name="expand_text_menu">多行展示</string>
     <string name="book_tree_uri_t">书籍保存位置</string>
     <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
     <string name="select_book_folder">选择保存书籍的文件夹</string>
@@ -2021,7 +2021,7 @@
     <string name="show_more_info">顯示更多資訊</string>
     <string name="show_original">顯示原文</string>
     <string name="show_password">顯示密碼</string>
-    <string name="show_select_menu_icon">顯示文字選擇選單圖標</string>
+    <string name="show_select_menu_icon">展示圖標</string>
     <string name="show_status">顯示狀態欄</string>
     <string name="show_swipe_animation">滑動時啟用動畫</string>
     <string name="show_synopsis">顯示簡介</string>

+ 2 - 2
app/src/main/res/values-zh-rTW/strings.xml

@@ -967,7 +967,7 @@
     <string name="tts_speech_add">語速加</string>
     <string name="open_sys_dir_picker_error">打開系統資料夾選擇器出錯,自動打開應用程式資料夾選擇器</string>
     <string name="open_sys_doc_picker_error">打開系統檔案選擇器出錯,自動打開應用文件選擇器</string>
-    <string name="expand_text_menu">展開文字選擇選單</string>
+    <string name="expand_text_menu">多行展示</string>
     <string name="search_content_size">搜尋結果</string>
     <string name="search_content_empty">搜索内容为空,检查净化/简繁设置</string>
     <string name="book_tree_uri_t">書籍儲存位置</string>
@@ -1543,7 +1543,7 @@
     <string name="cannot_open_url">無法直接開啟此 URL</string>
     <string name="open_by_browser">已切換到瀏覽器開啟</string>
     <string name="open_by_webview">已切換到 WebView 開啟</string>
-    <string name="show_select_menu_icon">顯示文字選擇選單圖示</string>
+    <string name="show_select_menu_icon">展示圖示</string>
 
     <string name="show_all">全部顯示</string>
     <string name="hide_all">全部隱藏</string>

+ 2 - 2
app/src/main/res/values/strings.xml

@@ -1136,8 +1136,8 @@
     <string name="tts_speech_add">Increase speech speed</string>
     <string name="open_sys_dir_picker_error">Error opening system folder selector, automatically open application folder selector</string>
     <string name="open_sys_doc_picker_error">Error opening system file selector, automatically open application file selector</string>
-    <string name="expand_text_menu">Expand Text Selection Menu</string>
-    <string name="show_select_menu_icon">Show Text Selection Menu Icons</string>
+    <string name="expand_text_menu">Multiline Show</string>
+    <string name="show_select_menu_icon">Show Icons</string>
 
     <string name="show_all">Show All</string>
     <string name="hide_all">Hide All</string>