Sfoglia il codice sorgente

refactor: 移除文本选择菜单应用过滤相关

fansangg 4 mesi fa
parent
commit
bf3a6ff9f1

+ 0 - 1
app/src/main/java/io/legado/app/constant/PreferKey.kt

@@ -135,7 +135,6 @@ object PreferKey {
     const val nightBrightness = "nightBrightness"
     const val nightBrightness = "nightBrightness"
     const val expandTextMenu = "expandTextMenu"
     const val expandTextMenu = "expandTextMenu"
     const val showSelectMenuIcon = "showSelectMenuIcon"
     const val showSelectMenuIcon = "showSelectMenuIcon"
-    const val textSelectMenuFilter = "textSelectMenuFilter"
     const val textSelectMenuConfig = "textSelectMenuConfig"
     const val textSelectMenuConfig = "textSelectMenuConfig"
     const val doublePageHorizontal = "doubleHorizontalPage"
     const val doublePageHorizontal = "doubleHorizontalPage"
     const val readUrlOpenInBrowser = "readUrlInBrowser"
     const val readUrlOpenInBrowser = "readUrlInBrowser"

+ 0 - 6
app/src/main/java/io/legado/app/data/repository/ReadSettingsRepository.kt

@@ -53,7 +53,6 @@ data class ReadPreferences(
     val disableReturnKey: Boolean = false,
     val disableReturnKey: Boolean = false,
     val expandTextMenu: Boolean = false,
     val expandTextMenu: Boolean = false,
     val showSelectMenuIcon: Boolean = true,
     val showSelectMenuIcon: Boolean = true,
-    val textSelectMenuFilter: String = "",
     val showReadTitleAddition: Boolean = true,
     val showReadTitleAddition: Boolean = true,
     val autoReadSpeed: Int = 10,
     val autoReadSpeed: Int = 10,
     val prevKeys: String = "",
     val prevKeys: String = "",
@@ -239,9 +238,6 @@ class ReadSettingsRepository(
     suspend fun setShowSelectMenuIcon(value: Boolean) =
     suspend fun setShowSelectMenuIcon(value: Boolean) =
         settingsRepository.putBoolean(PreferKey.showSelectMenuIcon, value)
         settingsRepository.putBoolean(PreferKey.showSelectMenuIcon, value)
 
 
-    suspend fun setTextSelectMenuFilter(value: String) =
-        settingsRepository.putString(PreferKey.textSelectMenuFilter, value)
-
     suspend fun setShowReadTitleAddition(value: Boolean) =
     suspend fun setShowReadTitleAddition(value: Boolean) =
         settingsRepository.putBoolean(PreferKey.showReadTitleAddition, value)
         settingsRepository.putBoolean(PreferKey.showReadTitleAddition, value)
 
 
@@ -434,7 +430,6 @@ class ReadSettingsRepository(
             disableReturnKey = this[Keys.DisableReturnKey] ?: false,
             disableReturnKey = this[Keys.DisableReturnKey] ?: false,
             expandTextMenu = this[Keys.ExpandTextMenu] ?: false,
             expandTextMenu = this[Keys.ExpandTextMenu] ?: false,
             showSelectMenuIcon = this[Keys.ShowSelectMenuIcon] ?: true,
             showSelectMenuIcon = this[Keys.ShowSelectMenuIcon] ?: true,
-            textSelectMenuFilter = this[Keys.TextSelectMenuFilter] ?: "",
             showReadTitleAddition = this[Keys.ShowReadTitleAddition] ?: true,
             showReadTitleAddition = this[Keys.ShowReadTitleAddition] ?: true,
             autoReadSpeed = this[Keys.AutoReadSpeed] ?: 10,
             autoReadSpeed = this[Keys.AutoReadSpeed] ?: 10,
             prevKeys = this[Keys.PrevKeys] ?: "",
             prevKeys = this[Keys.PrevKeys] ?: "",
@@ -535,7 +530,6 @@ class ReadSettingsRepository(
         val DisableReturnKey = booleanPreferencesKey(PreferKey.disableReturnKey)
         val DisableReturnKey = booleanPreferencesKey(PreferKey.disableReturnKey)
         val ExpandTextMenu = booleanPreferencesKey(PreferKey.expandTextMenu)
         val ExpandTextMenu = booleanPreferencesKey(PreferKey.expandTextMenu)
         val ShowSelectMenuIcon = booleanPreferencesKey(PreferKey.showSelectMenuIcon)
         val ShowSelectMenuIcon = booleanPreferencesKey(PreferKey.showSelectMenuIcon)
-        val TextSelectMenuFilter = stringPreferencesKey(PreferKey.textSelectMenuFilter)
         val ShowReadTitleAddition = booleanPreferencesKey(PreferKey.showReadTitleAddition)
         val ShowReadTitleAddition = booleanPreferencesKey(PreferKey.showReadTitleAddition)
         val AutoReadSpeed = intPreferencesKey(PreferKey.autoReadSpeed)
         val AutoReadSpeed = intPreferencesKey(PreferKey.autoReadSpeed)
         val PrevKeys = stringPreferencesKey(PreferKey.prevKeys)
         val PrevKeys = stringPreferencesKey(PreferKey.prevKeys)

+ 0 - 4
app/src/main/java/io/legado/app/ui/book/read/ReadBookContract.kt

@@ -857,7 +857,6 @@ sealed interface ReadBookSheet {
     data object ParagraphIntervalConfig : ReadBookSheet
     data object ParagraphIntervalConfig : ReadBookSheet
     data object ClickActionConfig : ReadBookSheet
     data object ClickActionConfig : ReadBookSheet
     data object PageKeyConfig : ReadBookSheet
     data object PageKeyConfig : ReadBookSheet
-    data object TextSelectMenuFilterConfig : ReadBookSheet
     data object InfoConfig : ReadBookSheet
     data object InfoConfig : ReadBookSheet
     data class Dict(val word: String) : ReadBookSheet
     data class Dict(val word: String) : ReadBookSheet
     data class Bookmark(
     data class Bookmark(
@@ -1380,9 +1379,6 @@ sealed interface ConfigUpdate {
     data class ShowSelectMenuIcon(val value: Boolean) : ConfigUpdate {
     data class ShowSelectMenuIcon(val value: Boolean) : ConfigUpdate {
         override val actions = emptySet<ConfigUpdateAction>()
         override val actions = emptySet<ConfigUpdateAction>()
     }
     }
-    data class TextSelectMenuFilter(val value: String) : ConfigUpdate {
-        override val actions = emptySet<ConfigUpdateAction>()
-    }
     data class ShowReadTitleAddition(val value: Boolean) : ConfigUpdate {
     data class ShowReadTitleAddition(val value: Boolean) : ConfigUpdate {
         override val actions = emptySet<ConfigUpdateAction>()
         override val actions = emptySet<ConfigUpdateAction>()
     }
     }

+ 9 - 15
app/src/main/java/io/legado/app/ui/book/read/ReadBookController.kt

@@ -1,6 +1,8 @@
 package io.legado.app.ui.book.read
 package io.legado.app.ui.book.read
 
 
 import android.annotation.SuppressLint
 import android.annotation.SuppressLint
+import android.app.SearchManager
+import android.content.Intent
 import android.content.pm.ActivityInfo
 import android.content.pm.ActivityInfo
 import android.os.Build
 import android.os.Build
 import android.view.Gravity
 import android.view.Gravity
@@ -12,6 +14,7 @@ import android.view.WindowInsets
 import android.view.WindowManager
 import android.view.WindowManager
 import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.app.AppCompatActivity
 import androidx.core.content.ContextCompat
 import androidx.core.content.ContextCompat
+import androidx.core.net.toUri
 import androidx.core.view.HapticFeedbackConstantsCompat
 import androidx.core.view.HapticFeedbackConstantsCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.WindowInsetsCompat
 import androidx.core.view.doOnAttach
 import androidx.core.view.doOnAttach
@@ -51,27 +54,23 @@ import io.legado.app.utils.GSON
 import io.legado.app.utils.buildMainHandler
 import io.legado.app.utils.buildMainHandler
 import io.legado.app.utils.fromJsonObject
 import io.legado.app.utils.fromJsonObject
 import io.legado.app.utils.invisible
 import io.legado.app.utils.invisible
+import io.legado.app.utils.isAbsUrl
 import io.legado.app.utils.longToastOnUi
 import io.legado.app.utils.longToastOnUi
 import io.legado.app.utils.navigationBarGravity
 import io.legado.app.utils.navigationBarGravity
+import io.legado.app.utils.printOnDebug
+import io.legado.app.utils.sendToClip
 import io.legado.app.utils.setLightStatusBar
 import io.legado.app.utils.setLightStatusBar
 import io.legado.app.utils.setOnApplyWindowInsetsListenerCompat
 import io.legado.app.utils.setOnApplyWindowInsetsListenerCompat
+import io.legado.app.utils.share
 import io.legado.app.utils.sysBattery
 import io.legado.app.utils.sysBattery
 import io.legado.app.utils.sysScreenOffTime
 import io.legado.app.utils.sysScreenOffTime
 import io.legado.app.utils.throttle
 import io.legado.app.utils.throttle
 import io.legado.app.utils.toastOnUi
 import io.legado.app.utils.toastOnUi
 import io.legado.app.utils.visible
 import io.legado.app.utils.visible
-import io.legado.app.utils.sendToClip
-import io.legado.app.utils.share
-import io.legado.app.utils.isAbsUrl
-import io.legado.app.utils.printOnDebug
-import android.app.SearchManager
-import android.content.Context
-import android.content.Intent
-import androidx.core.net.toUri
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.IO
 import kotlinx.coroutines.Dispatchers.Main
 import kotlinx.coroutines.Dispatchers.Main
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.asStateFlow
 import kotlinx.coroutines.launch
 import kotlinx.coroutines.launch
 
 
 
 
@@ -648,14 +647,9 @@ class ReadBookController(
         val thirdPartyItems = mutableListOf<ActionMenuItem>()
         val thirdPartyItems = mutableListOf<ActionMenuItem>()
         kotlin.runCatching {
         kotlin.runCatching {
             val pm = activity.packageManager
             val pm = activity.packageManager
-            val filterSet = ReadConfig.textSelectMenuFilter.split(",").filter { it.isNotEmpty() }.toSet()
             val intent = Intent().setAction(Intent.ACTION_PROCESS_TEXT).setType("text/plain")
             val intent = Intent().setAction(Intent.ACTION_PROCESS_TEXT).setType("text/plain")
             val resolveInfos = pm.queryIntentActivities(intent, 0)
             val resolveInfos = pm.queryIntentActivities(intent, 0)
             for (resolveInfo in resolveInfos) {
             for (resolveInfo in resolveInfos) {
-                val componentName = "${resolveInfo.activityInfo.packageName}/${resolveInfo.activityInfo.name}"
-                if (filterSet.contains(componentName)) {
-                    continue
-                }
                 val processIntent = Intent()
                 val processIntent = Intent()
                     .setAction(Intent.ACTION_PROCESS_TEXT)
                     .setAction(Intent.ACTION_PROCESS_TEXT)
                     .putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false)
                     .putExtra(Intent.EXTRA_PROCESS_TEXT_READONLY, false)

+ 1 - 14
app/src/main/java/io/legado/app/ui/book/read/ReadBookScreen.kt

@@ -40,7 +40,6 @@ import io.legado.app.ui.book.read.sheet.SpeakEngineConfigSheet
 import io.legado.app.ui.book.read.sheet.TitleBarIconSheet
 import io.legado.app.ui.book.read.sheet.TitleBarIconSheet
 import io.legado.app.ui.book.read.sheet.ToolButtonConfigSheet
 import io.legado.app.ui.book.read.sheet.ToolButtonConfigSheet
 import io.legado.app.ui.book.read.sheet.UnderlineConfigSheet
 import io.legado.app.ui.book.read.sheet.UnderlineConfigSheet
-import io.legado.app.ui.config.readConfig.TextSelectMenuFilterSheet
 import io.legado.app.ui.dict.DictSheet
 import io.legado.app.ui.dict.DictSheet
 import io.legado.app.ui.widget.components.FontFolderState
 import io.legado.app.ui.widget.components.FontFolderState
 import io.legado.app.ui.widget.components.FontSelectSheet
 import io.legado.app.ui.widget.components.FontSelectSheet
@@ -283,10 +282,6 @@ fun ReadBookScreen(
             onIntent(ReadBookIntent.DismissSheet)
             onIntent(ReadBookIntent.DismissSheet)
             onIntent(ReadBookIntent.ShowSheet(ReadBookSheet.PageKeyConfig))
             onIntent(ReadBookIntent.ShowSheet(ReadBookSheet.PageKeyConfig))
         },
         },
-        onOpenTextSelectMenuFilterConfig = {
-            onIntent(ReadBookIntent.DismissSheet)
-            onIntent(ReadBookIntent.ShowSheet(ReadBookSheet.TextSelectMenuFilterConfig))
-        },
     )
     )
     ReadAloudConfigSheet(
     ReadAloudConfigSheet(
         show = state.activeSheet is ReadBookSheet.ReadAloudConfig,
         show = state.activeSheet is ReadBookSheet.ReadAloudConfig,
@@ -406,15 +401,7 @@ fun ReadBookScreen(
             )
             )
         }
         }
 
 
-        is ReadBookSheet.TextSelectMenuFilterConfig -> {
-            TextSelectMenuFilterSheet(
-                show = true,
-                onDismissRequest = dismissSheet,
-                onFilterChanged = {
-                    onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.TextSelectMenuFilter(it)))
-                }
-            )
-        }
+
 
 
         is ReadBookSheet.PageAnim -> {
         is ReadBookSheet.PageAnim -> {
             PageAnimConfigSheet(
             PageAnimConfigSheet(

+ 3 - 9
app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt

@@ -37,12 +37,12 @@ import io.legado.app.data.repository.ReadBookStyleConfigRepository
 import io.legado.app.data.repository.ReadPreferences
 import io.legado.app.data.repository.ReadPreferences
 import io.legado.app.data.repository.ReadSettingsRepository
 import io.legado.app.data.repository.ReadSettingsRepository
 import io.legado.app.data.repository.UploadRepository
 import io.legado.app.data.repository.UploadRepository
-import io.legado.app.domain.gateway.BookContentProcessGateway
 import io.legado.app.domain.gateway.AiPromptPresetGateway
 import io.legado.app.domain.gateway.AiPromptPresetGateway
-import io.legado.app.domain.model.TextProcessAction
-import io.legado.app.domain.model.TextProcessAnchor
+import io.legado.app.domain.gateway.BookContentProcessGateway
 import io.legado.app.domain.model.AiTaskType
 import io.legado.app.domain.model.AiTaskType
 import io.legado.app.domain.model.ReadingProgress
 import io.legado.app.domain.model.ReadingProgress
+import io.legado.app.domain.model.TextProcessAction
+import io.legado.app.domain.model.TextProcessAnchor
 import io.legado.app.domain.usecase.AiTextFactoryUseCase
 import io.legado.app.domain.usecase.AiTextFactoryUseCase
 import io.legado.app.domain.usecase.ChangeBookSourceUseCase
 import io.legado.app.domain.usecase.ChangeBookSourceUseCase
 import io.legado.app.domain.usecase.CleanSelectedTextUseCase
 import io.legado.app.domain.usecase.CleanSelectedTextUseCase
@@ -4970,12 +4970,6 @@ class ReadBookViewModel(
                     readSettingsRepository.setShowSelectMenuIcon(update.value)
                     readSettingsRepository.setShowSelectMenuIcon(update.value)
                 }
                 }
             }
             }
-            is ConfigUpdate.TextSelectMenuFilter -> {
-                ReadConfig.textSelectMenuFilter = update.value
-                viewModelScope.launch {
-                    readSettingsRepository.setTextSelectMenuFilter(update.value)
-                }
-            }
             is ConfigUpdate.ShowReadTitleAddition -> {
             is ConfigUpdate.ShowReadTitleAddition -> {
                 ReadConfig.showReadTitleAddition = update.value
                 ReadConfig.showReadTitleAddition = update.value
                 viewModelScope.launch {
                 viewModelScope.launch {

+ 23 - 7
app/src/main/java/io/legado/app/ui/book/read/TextActionSelectionMenu.kt

@@ -1,8 +1,20 @@
 package io.legado.app.ui.book.read
 package io.legado.app.ui.book.read
 
 
-import io.legado.app.R
 import androidx.compose.foundation.clickable
 import androidx.compose.foundation.clickable
-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.IntrinsicSize
+import androidx.compose.foundation.layout.Row
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.heightIn
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.width
+import androidx.compose.foundation.layout.widthIn
+import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.layout.wrapContentWidth
 import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.LazyRow
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.rememberScrollState
 import androidx.compose.foundation.rememberScrollState
@@ -11,9 +23,13 @@ import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material.icons.automirrored.filled.ArrowBack
 import androidx.compose.material.icons.filled.MoreHoriz
 import androidx.compose.material.icons.filled.MoreHoriz
 import androidx.compose.material.icons.filled.Settings
 import androidx.compose.material.icons.filled.Settings
-import androidx.compose.material3.VerticalDivider
 import androidx.compose.material3.Icon
 import androidx.compose.material3.Icon
-import androidx.compose.runtime.*
+import androidx.compose.material3.VerticalDivider
+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.Alignment
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.platform.LocalDensity
@@ -28,6 +44,7 @@ import androidx.compose.ui.window.Popup
 import androidx.compose.ui.window.PopupPositionProvider
 import androidx.compose.ui.window.PopupPositionProvider
 import androidx.compose.ui.window.PopupProperties
 import androidx.compose.ui.window.PopupProperties
 import coil.compose.AsyncImage
 import coil.compose.AsyncImage
+import io.legado.app.R
 import io.legado.app.ui.theme.LegadoTheme
 import io.legado.app.ui.theme.LegadoTheme
 import io.legado.app.ui.widget.components.card.NormalCard
 import io.legado.app.ui.widget.components.card.NormalCard
 import io.legado.app.ui.widget.components.text.AppText
 import io.legado.app.ui.widget.components.text.AppText
@@ -68,11 +85,10 @@ fun TextActionSelectionMenu(
             dismissOnClickOutside = true
             dismissOnClickOutside = true
         )
         )
     ) {
     ) {
-        val widthModifier = Modifier.widthIn(max = 300.dp)
 
 
         NormalCard(
         NormalCard(
-            modifier = widthModifier.wrapContentHeight(),
-            containerColor = LegadoTheme.colorScheme.surface,
+            modifier = Modifier.widthIn(max = 350.dp).wrapContentHeight(),
+            containerColor = LegadoTheme.colorScheme.surfaceBright,
             elevation = 6.dp,
             elevation = 6.dp,
             cornerRadius = 12.dp
             cornerRadius = 12.dp
         ) {
         ) {

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

@@ -31,7 +31,6 @@ fun MoreConfigSheet(
     onIntent: (ReadBookIntent) -> Unit,
     onIntent: (ReadBookIntent) -> Unit,
     onOpenClickRegionalConfig: () -> Unit,
     onOpenClickRegionalConfig: () -> Unit,
     onOpenPageKeyConfig: () -> Unit,
     onOpenPageKeyConfig: () -> Unit,
-    onOpenTextSelectMenuFilterConfig: () -> Unit,
 ) {
 ) {
     val readSettingsRepository: ReadSettingsRepository = koinInject()
     val readSettingsRepository: ReadSettingsRepository = koinInject()
     val preferences by readSettingsRepository.preferences.collectAsStateWithLifecycle(
     val preferences by readSettingsRepository.preferences.collectAsStateWithLifecycle(
@@ -145,7 +144,6 @@ fun MoreConfigSheet(
                 },
                 },
                 onOpenClickRegionalConfig = onOpenClickRegionalConfig,
                 onOpenClickRegionalConfig = onOpenClickRegionalConfig,
                 onOpenPageKeyConfig = onOpenPageKeyConfig,
                 onOpenPageKeyConfig = onOpenPageKeyConfig,
-                onOpenTextSelectMenuFilterConfig = onOpenTextSelectMenuFilterConfig,
                 onDisableReturnKeyChange = {
                 onDisableReturnKeyChange = {
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.DisableReturnKey(it)))
                     onIntent(ReadBookIntent.UpdateConfig(ConfigUpdate.DisableReturnKey(it)))
                 },
                 },
@@ -313,7 +311,6 @@ private fun OtherSettings(
     onOpenClickRegionalConfig: () -> Unit,
     onOpenClickRegionalConfig: () -> Unit,
     onDisableReturnKeyChange: (Boolean) -> Unit,
     onDisableReturnKeyChange: (Boolean) -> Unit,
     onOpenPageKeyConfig: () -> Unit,
     onOpenPageKeyConfig: () -> Unit,
-    onOpenTextSelectMenuFilterConfig: () -> Unit,
     onExpandTextMenuChange: (Boolean) -> Unit,
     onExpandTextMenuChange: (Boolean) -> Unit,
     onShowSelectMenuIconChange: (Boolean) -> Unit,
     onShowSelectMenuIconChange: (Boolean) -> Unit,
     onShowReadTitleAdditionChange: (Boolean) -> Unit,
     onShowReadTitleAdditionChange: (Boolean) -> Unit,
@@ -384,10 +381,6 @@ private fun OtherSettings(
         title = stringResource(R.string.custom_page_key),
         title = stringResource(R.string.custom_page_key),
         onClick = onOpenPageKeyConfig,
         onClick = onOpenPageKeyConfig,
     )
     )
-    TinyClickableSettingItem(
-        title = stringResource(R.string.text_select_menu_filter),
-        onClick = onOpenTextSelectMenuFilterConfig,
-    )
     TinySwitchSettingItem(
     TinySwitchSettingItem(
         title = stringResource(R.string.expand_text_menu),
         title = stringResource(R.string.expand_text_menu),
         checked = preferences.expandTextMenu,
         checked = preferences.expandTextMenu,

+ 0 - 4
app/src/main/java/io/legado/app/ui/config/readConfig/ReadConfig.kt

@@ -87,9 +87,6 @@ object ReadConfig {
     var showSelectMenuIcon
     var showSelectMenuIcon
         get() = ReadMenuConfig.showSelectMenuIcon
         get() = ReadMenuConfig.showSelectMenuIcon
         set(value) { ReadMenuConfig.showSelectMenuIcon = value }
         set(value) { ReadMenuConfig.showSelectMenuIcon = value }
-    var textSelectMenuFilter
-        get() = ReadMenuConfig.textSelectMenuFilter
-        set(value) { ReadMenuConfig.textSelectMenuFilter = value }
     var textSelectMenuConfig
     var textSelectMenuConfig
         get() = ReadMenuConfig.textSelectMenuConfig
         get() = ReadMenuConfig.textSelectMenuConfig
         set(value) { ReadMenuConfig.textSelectMenuConfig = value }
         set(value) { ReadMenuConfig.textSelectMenuConfig = value }
@@ -280,7 +277,6 @@ object ReadConfig {
             progressBarBehavior = preferences.progressBarBehavior
             progressBarBehavior = preferences.progressBarBehavior
             expandTextMenu = preferences.expandTextMenu
             expandTextMenu = preferences.expandTextMenu
             showSelectMenuIcon = preferences.showSelectMenuIcon
             showSelectMenuIcon = preferences.showSelectMenuIcon
-            textSelectMenuFilter = preferences.textSelectMenuFilter
             showReadTitleAddition = preferences.showReadTitleAddition
             showReadTitleAddition = preferences.showReadTitleAddition
             showMenuIcon = preferences.showMenuIcon
             showMenuIcon = preferences.showMenuIcon
             clickActionTL = preferences.clickActionTL
             clickActionTL = preferences.clickActionTL

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

@@ -37,7 +37,6 @@ data class ReadConfigUiState(
     val disableReturnKey: Boolean = false,
     val disableReturnKey: Boolean = false,
     val expandTextMenu: Boolean = false,
     val expandTextMenu: Boolean = false,
     val showSelectMenuIcon: Boolean = true,
     val showSelectMenuIcon: Boolean = true,
-    val textSelectMenuFilter: String = "",
     val showReadTitleAddition: Boolean = true,
     val showReadTitleAddition: Boolean = true,
     val autoReadSpeed: Int = 10,
     val autoReadSpeed: Int = 10,
     val prevKeys: String = "",
     val prevKeys: String = "",
@@ -80,7 +79,6 @@ sealed interface ReadConfigIntent {
     data class DisableReturnKeyChanged(val value: Boolean) : ReadConfigIntent
     data class DisableReturnKeyChanged(val value: Boolean) : ReadConfigIntent
     data class ExpandTextMenuChanged(val value: Boolean) : ReadConfigIntent
     data class ExpandTextMenuChanged(val value: Boolean) : ReadConfigIntent
     data class ShowSelectMenuIconChanged(val value: Boolean) : ReadConfigIntent
     data class ShowSelectMenuIconChanged(val value: Boolean) : ReadConfigIntent
-    data class TextSelectMenuFilterChanged(val value: String) : ReadConfigIntent
     data class ShowReadTitleAdditionChanged(val value: Boolean) : ReadConfigIntent
     data class ShowReadTitleAdditionChanged(val value: Boolean) : ReadConfigIntent
     data class ShowMenuIconChanged(val value: Boolean) : ReadConfigIntent
     data class ShowMenuIconChanged(val value: Boolean) : ReadConfigIntent
     data class AutoSuggestDayNightChanged(val value: Boolean) : ReadConfigIntent
     data class AutoSuggestDayNightChanged(val value: Boolean) : ReadConfigIntent

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

@@ -386,21 +386,7 @@ fun ReadConfigScreen(
                     }
                     }
                 )
                 )
 
 
-                var showSelectMenuFilterSheet by remember { mutableStateOf(false) }
 
 
-                ClickableSettingItem(
-                    title = stringResource(R.string.text_select_menu_filter),
-                    description = stringResource(R.string.text_select_menu_filter_desc),
-                    onClick = { showSelectMenuFilterSheet = true }
-                )
-
-                TextSelectMenuFilterSheet(
-                    show = showSelectMenuFilterSheet,
-                    onDismissRequest = { showSelectMenuFilterSheet = false },
-                    onFilterChanged = {
-                        viewModel.onIntent(ReadConfigIntent.TextSelectMenuFilterChanged(it))
-                    }
-                )
 
 
                 SwitchSettingItem(
                 SwitchSettingItem(
                     title = stringResource(R.string.show_read_title_addition),
                     title = stringResource(R.string.show_read_title_addition),

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

@@ -207,11 +207,6 @@ class ReadConfigViewModel(
                     readSettingsRepository.setShowSelectMenuIcon(intent.value)
                     readSettingsRepository.setShowSelectMenuIcon(intent.value)
                 }
                 }
 
 
-                is ReadConfigIntent.TextSelectMenuFilterChanged -> {
-                    ReadConfig.textSelectMenuFilter = intent.value
-                    readSettingsRepository.setTextSelectMenuFilter(intent.value)
-                }
-
                 is ReadConfigIntent.ShowReadTitleAdditionChanged -> {
                 is ReadConfigIntent.ShowReadTitleAdditionChanged -> {
                     ReadConfig.showReadTitleAddition = intent.value
                     ReadConfig.showReadTitleAddition = intent.value
                     readSettingsRepository.setShowReadTitleAddition(intent.value)
                     readSettingsRepository.setShowReadTitleAddition(intent.value)
@@ -280,7 +275,6 @@ class ReadConfigViewModel(
             disableReturnKey = disableReturnKey,
             disableReturnKey = disableReturnKey,
             expandTextMenu = expandTextMenu,
             expandTextMenu = expandTextMenu,
             showSelectMenuIcon = showSelectMenuIcon,
             showSelectMenuIcon = showSelectMenuIcon,
-            textSelectMenuFilter = textSelectMenuFilter,
             showReadTitleAddition = showReadTitleAddition,
             showReadTitleAddition = showReadTitleAddition,
             autoReadSpeed = autoReadSpeed,
             autoReadSpeed = autoReadSpeed,
             prevKeys = prevKeys,
             prevKeys = prevKeys,

+ 0 - 5
app/src/main/java/io/legado/app/ui/config/readConfig/ReadMenuConfig.kt

@@ -45,11 +45,6 @@ object ReadMenuConfig {
         true
         true
     )
     )
 
 
-    var textSelectMenuFilter by prefDelegate(
-        PreferKey.textSelectMenuFilter,
-        ""
-    )
-
     var textSelectMenuConfig by prefDelegate(
     var textSelectMenuConfig by prefDelegate(
         PreferKey.textSelectMenuConfig,
         PreferKey.textSelectMenuConfig,
         ""
         ""

+ 0 - 189
app/src/main/java/io/legado/app/ui/config/readConfig/TextSelectMenuFilterSheet.kt

@@ -1,189 +0,0 @@
-package io.legado.app.ui.config.readConfig
-
-import android.content.Intent
-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.fillMaxSize
-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.material.icons.Icons
-import androidx.compose.material.icons.filled.Check
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.LaunchedEffect
-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.platform.LocalContext
-import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.semantics.Role
-import androidx.compose.ui.semantics.clearAndSetSemantics
-import androidx.compose.ui.semantics.role
-import androidx.compose.ui.semantics.semantics
-import androidx.compose.ui.semantics.stateDescription
-import androidx.compose.ui.unit.dp
-import coil.compose.AsyncImage
-import io.legado.app.R
-import io.legado.app.ui.theme.LegadoTheme
-import io.legado.app.ui.widget.components.AdaptiveSwitch
-import io.legado.app.ui.widget.components.button.series.SmallPlainButton
-import io.legado.app.ui.widget.components.card.NormalCard
-import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
-import io.legado.app.ui.widget.components.text.AppText
-
-@OptIn(ExperimentalMaterial3Api::class)
-@Composable
-fun TextSelectMenuFilterSheet(
-    show: Boolean,
-    onDismissRequest: () -> Unit,
-    onFilterChanged: (String) -> Unit
-) {
-    val context = LocalContext.current
-    val pm = context.packageManager
-
-    // 查询所有注册了 ACTION_PROCESS_TEXT 的第三方 Activity
-    var apps by remember { mutableStateOf<List<TextSelectMenuAppInfo>>(emptyList()) }
-    LaunchedEffect(show) {
-        if (show) {
-            val list = kotlinx.coroutines.withContext(kotlinx.coroutines.Dispatchers.IO) {
-                val intent = Intent().setAction(Intent.ACTION_PROCESS_TEXT).setType("text/plain")
-                pm.queryIntentActivities(intent, 0).map { resolveInfo ->
-                    val title = resolveInfo.loadLabel(pm).toString()
-                    val componentName = "${resolveInfo.activityInfo.packageName}/${resolveInfo.activityInfo.name}"
-                    val icon = kotlin.runCatching { resolveInfo.loadIcon(pm) }.getOrNull()
-                    TextSelectMenuAppInfo(title, componentName, icon)
-                }
-            }
-            apps = list
-        } else {
-            apps = emptyList()
-        }
-    }
-
-    var pendingFilterString by remember(show) {
-        mutableStateOf(ReadConfig.textSelectMenuFilter)
-    }
-
-    val disabledSet = remember(pendingFilterString) {
-        pendingFilterString.split(",").filter { it.isNotEmpty() }.toSet()
-    }
-
-    AppModalBottomSheet(
-        show = show,
-        onDismissRequest = onDismissRequest,
-        title = stringResource(R.string.text_select_menu_filter),
-        endAction = {
-            SmallPlainButton(
-                icon = Icons.Default.Check,
-                onClick = {
-                    onFilterChanged(pendingFilterString)
-                    onDismissRequest()
-                }
-            )
-        },
-    ) {
-        Column(
-            modifier = Modifier
-                .fillMaxWidth()
-                .fillMaxHeight(0.8f)
-                .padding(horizontal = 16.dp, vertical = 8.dp)
-        ) {
-            if (apps.isEmpty()) {
-                Box(
-                    modifier = Modifier
-                        .fillMaxWidth()
-                        .weight(1f),
-                    contentAlignment = Alignment.Center
-                ) {
-                    AppText(text = stringResource(R.string.no_apps_found))
-                }
-            } else {
-                LazyColumn(
-                    modifier = Modifier.weight(1f),
-                    verticalArrangement = Arrangement.spacedBy(8.dp)
-                ) {
-                    items(apps) { app ->
-                        val isEnabled = !disabledSet.contains(app.componentName)
-                        val switchStateDescription = stringResource(
-                            if (isEnabled) R.string.a11y_on else R.string.a11y_off
-                        )
-                        NormalCard(
-                            onClick = {
-                                val nextSet = if (isEnabled) {
-                                    disabledSet + app.componentName
-                                } else {
-                                    disabledSet - app.componentName
-                                }
-                                pendingFilterString = nextSet.joinToString(",")
-                            },
-                            modifier = Modifier.semantics(mergeDescendants = true) {
-                                role = Role.Switch
-                                stateDescription = switchStateDescription
-                            },
-                            cornerRadius = 12.dp,
-                            containerColor = LegadoTheme.colorScheme.surfaceContainerHigh,
-                        ) {
-                            Row(
-                                modifier = Modifier
-                                    .fillMaxWidth()
-                                    .padding(horizontal = 8.dp, vertical = 12.dp),
-                                verticalAlignment = Alignment.CenterVertically
-                            ) {
-                                Box(
-                                    modifier = Modifier
-                                        .size(40.dp)
-                                        .padding(4.dp),
-                                    contentAlignment = Alignment.Center
-                                ) {
-                                    AsyncImage(
-                                        model = app.icon,
-                                        contentDescription = null,
-                                        modifier = Modifier.fillMaxSize()
-                                    )
-                                }
-                                Column(
-                                    modifier = Modifier
-                                        .weight(1f)
-                                        .padding(horizontal = 8.dp)
-                                ) {
-                                    AppText(
-                                        text = app.title,
-                                        style = LegadoTheme.typography.titleMedium
-                                    )
-                                }
-                                AdaptiveSwitch(
-                                    modifier = Modifier.clearAndSetSemantics { },
-                                    checked = isEnabled,
-                                    onCheckedChange = { checked ->
-                                        val nextSet = if (checked) {
-                                            disabledSet - app.componentName
-                                        } else {
-                                            disabledSet + app.componentName
-                                        }
-                                        pendingFilterString = nextSet.joinToString(",")
-                                    },
-                                    includeStateSemantics = false
-                                )
-                            }
-                        }
-                    }
-                }
-            }
-        }
-    }
-}
-
-data class TextSelectMenuAppInfo(
-    val title: String,
-    val componentName: String,
-    val icon: android.graphics.drawable.Drawable?
-)

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

@@ -1106,11 +1106,10 @@
     <string name="open_sys_doc_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="show_select_menu_icon">展示选择菜单图标</string>
     <string name="show_select_menu_icon">展示选择菜单图标</string>
-    <string name="text_select_menu_filter">选择菜单应用过滤</string>
-    <string name="text_select_menu_filter_desc">过滤文字选择操作菜单中显示的第三方应用</string>
+
     <string name="show_all">全部显示</string>
     <string name="show_all">全部显示</string>
     <string name="hide_all">全不显示</string>
     <string name="hide_all">全不显示</string>
-    <string name="no_apps_found">未找到支持文字处理的第三方应用</string>
+
     <string name="book_tree_uri_t">书籍保存位置</string>
     <string name="book_tree_uri_t">书籍保存位置</string>
     <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
     <string name="book_tree_uri_s">从其它应用打开的书籍保存位置</string>
     <string name="select_book_folder">选择保存书籍的文件夹</string>
     <string name="select_book_folder">选择保存书籍的文件夹</string>

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

@@ -1820,7 +1820,7 @@
     <string name="network_book_badge_setting">網路書籍標記</string>
     <string name="network_book_badge_setting">網路書籍標記</string>
     <string name="new_rule">新建規則</string>
     <string name="new_rule">新建規則</string>
     <string name="night_card_bg_color">夜間卡片背景色</string>
     <string name="night_card_bg_color">夜間卡片背景色</string>
-    <string name="no_apps_found">找不到支援文字操作的第三方應用</string>
+
     <string name="no_bookmark">無書籤</string>
     <string name="no_bookmark">無書籤</string>
     <string name="no_bookmarks_to_export">沒有可匯出的書籤</string>
     <string name="no_bookmarks_to_export">沒有可匯出的書籤</string>
     <string name="no_crash_logs">無崩潰日誌</string>
     <string name="no_crash_logs">無崩潰日誌</string>
@@ -2086,8 +2086,7 @@
     <string name="text_accent_color">強調色</string>
     <string name="text_accent_color">強調色</string>
     <string name="text_and_padding">字體與間距</string>
     <string name="text_and_padding">字體與間距</string>
     <string name="text_dottedline">圓點底線</string>
     <string name="text_dottedline">圓點底線</string>
-    <string name="text_select_menu_filter">文字選擇選單篩選</string>
-    <string name="text_select_menu_filter_desc">篩選選擇選單中顯示的第三方應用</string>
+
     <string name="text_shadow_color">陰影</string>
     <string name="text_shadow_color">陰影</string>
     <string name="text_shadow_radius">陰影半徑</string>
     <string name="text_shadow_radius">陰影半徑</string>
     <string name="text_shadow_set">陰影設定</string>
     <string name="text_shadow_set">陰影設定</string>

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

@@ -1544,11 +1544,10 @@
     <string name="open_by_browser">已切換到瀏覽器開啟</string>
     <string name="open_by_browser">已切換到瀏覽器開啟</string>
     <string name="open_by_webview">已切換到 WebView 開啟</string>
     <string name="open_by_webview">已切換到 WebView 開啟</string>
     <string name="show_select_menu_icon">顯示文字選擇選單圖示</string>
     <string name="show_select_menu_icon">顯示文字選擇選單圖示</string>
-    <string name="text_select_menu_filter">文字選擇選單篩選</string>
-    <string name="text_select_menu_filter_desc">篩選選擇選單中顯示的第三方應用</string>
+
     <string name="show_all">全部顯示</string>
     <string name="show_all">全部顯示</string>
     <string name="hide_all">全部隱藏</string>
     <string name="hide_all">全部隱藏</string>
-    <string name="no_apps_found">找不到支援文字操作的第三方應用</string>
+
     <string name="is_event_listener">事件監聽器</string>
     <string name="is_event_listener">事件監聽器</string>
     <string name="custom_button">自訂按鈕</string>
     <string name="custom_button">自訂按鈕</string>
     <string name="rule_call_back">回呼 JS(callBackJs)</string>
     <string name="rule_call_back">回呼 JS(callBackJs)</string>

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

@@ -1138,11 +1138,10 @@
     <string name="open_sys_doc_picker_error">Error opening system file selector, automatically open application file 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="expand_text_menu">Expand Text Selection Menu</string>
     <string name="show_select_menu_icon">Show Text Selection Menu Icons</string>
     <string name="show_select_menu_icon">Show Text Selection Menu Icons</string>
-    <string name="text_select_menu_filter">Text Selection Menu Filter</string>
-    <string name="text_select_menu_filter_desc">Filter the third-party apps displayed in the selection menu</string>
+
     <string name="show_all">Show All</string>
     <string name="show_all">Show All</string>
     <string name="hide_all">Hide All</string>
     <string name="hide_all">Hide All</string>
-    <string name="no_apps_found">No third-party apps supporting text actions found</string>
+
     <string name="book_tree_uri_t">Book Save Location</string>
     <string name="book_tree_uri_t">Book Save Location</string>
     <string name="book_tree_uri_s">Save location for books opened from other apps</string>
     <string name="book_tree_uri_s">Save location for books opened from other apps</string>
     <string name="select_book_folder">Select the folder where the books are saved</string>
     <string name="select_book_folder">Select the folder where the books are saved</string>