|
@@ -35,6 +35,7 @@ import androidx.compose.material3.ExposedDropdownMenuBox
|
|
|
import androidx.compose.material3.ExposedDropdownMenuDefaults
|
|
import androidx.compose.material3.ExposedDropdownMenuDefaults
|
|
|
import androidx.compose.material3.animateFloatingActionButton
|
|
import androidx.compose.material3.animateFloatingActionButton
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.Composable
|
|
|
|
|
+import androidx.compose.runtime.DisposableEffect
|
|
|
import androidx.compose.runtime.LaunchedEffect
|
|
import androidx.compose.runtime.LaunchedEffect
|
|
|
import androidx.compose.runtime.State
|
|
import androidx.compose.runtime.State
|
|
|
import androidx.compose.runtime.getValue
|
|
import androidx.compose.runtime.getValue
|
|
@@ -47,12 +48,14 @@ import androidx.compose.ui.Modifier
|
|
|
import androidx.compose.ui.focus.onFocusChanged
|
|
import androidx.compose.ui.focus.onFocusChanged
|
|
|
import androidx.compose.ui.graphics.Color
|
|
import androidx.compose.ui.graphics.Color
|
|
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
|
|
|
|
+import androidx.compose.ui.platform.LocalContext
|
|
|
import androidx.compose.ui.platform.LocalDensity
|
|
import androidx.compose.ui.platform.LocalDensity
|
|
|
import androidx.compose.ui.platform.LocalFocusManager
|
|
import androidx.compose.ui.platform.LocalFocusManager
|
|
|
-import androidx.compose.ui.platform.LocalContext
|
|
|
|
|
|
|
+import androidx.compose.ui.platform.LocalSoftwareKeyboardController
|
|
|
import androidx.compose.ui.res.stringResource
|
|
import androidx.compose.ui.res.stringResource
|
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.unit.dp
|
|
|
import androidx.compose.ui.zIndex
|
|
import androidx.compose.ui.zIndex
|
|
|
|
|
+import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
|
import io.legado.app.R
|
|
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.AppFloatingActionButton
|
|
import io.legado.app.ui.widget.components.AppFloatingActionButton
|
|
@@ -69,11 +72,9 @@ import io.legado.app.ui.widget.components.topbar.GlassMediumFlexibleTopAppBar
|
|
|
import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults
|
|
import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults
|
|
|
import io.legado.app.ui.widget.components.topbar.TopBarActionButton
|
|
import io.legado.app.ui.widget.components.topbar.TopBarActionButton
|
|
|
import io.legado.app.ui.widget.components.topbar.TopBarNavigationButton
|
|
import io.legado.app.ui.widget.components.topbar.TopBarNavigationButton
|
|
|
-import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
|
|
|
-import kotlinx.coroutines.flow.Flow
|
|
|
|
|
|
|
+import io.legado.app.utils.toastOnUi
|
|
|
import kotlinx.coroutines.flow.collectLatest
|
|
import kotlinx.coroutines.flow.collectLatest
|
|
|
import org.koin.androidx.compose.koinViewModel
|
|
import org.koin.androidx.compose.koinViewModel
|
|
|
-import io.legado.app.utils.toastOnUi
|
|
|
|
|
|
|
|
|
|
@Composable
|
|
@Composable
|
|
|
fun keyboardAsState(): State<Boolean> {
|
|
fun keyboardAsState(): State<Boolean> {
|
|
@@ -118,8 +119,16 @@ fun ReplaceEditScreen(
|
|
|
var showMenu by remember { mutableStateOf(false) }
|
|
var showMenu by remember { mutableStateOf(false) }
|
|
|
val isKeyboardVisible by keyboardAsState()
|
|
val isKeyboardVisible by keyboardAsState()
|
|
|
val focusManager = LocalFocusManager.current
|
|
val focusManager = LocalFocusManager.current
|
|
|
|
|
+ val keyboardController = LocalSoftwareKeyboardController.current
|
|
|
|
|
+ DisposableEffect(Unit) {
|
|
|
|
|
+ onDispose {
|
|
|
|
|
+ focusManager.clearFocus(force = true)
|
|
|
|
|
+ keyboardController?.hide()
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
val onSave = {
|
|
val onSave = {
|
|
|
focusManager.clearFocus(force = true)
|
|
focusManager.clearFocus(force = true)
|
|
|
|
|
+ keyboardController?.hide()
|
|
|
onIntent(ReplaceEditIntent.Save)
|
|
onIntent(ReplaceEditIntent.Save)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -130,7 +139,13 @@ fun ReplaceEditScreen(
|
|
|
GlassMediumFlexibleTopAppBar(
|
|
GlassMediumFlexibleTopAppBar(
|
|
|
title = stringResource(if (state.id > 0) R.string.edit_replace_rule else R.string.add_replace_rule),
|
|
title = stringResource(if (state.id > 0) R.string.edit_replace_rule else R.string.add_replace_rule),
|
|
|
navigationIcon = {
|
|
navigationIcon = {
|
|
|
- TopBarNavigationButton(onClick = onBack)
|
|
|
|
|
|
|
+ TopBarNavigationButton(
|
|
|
|
|
+ onClick = {
|
|
|
|
|
+ focusManager.clearFocus(force = true)
|
|
|
|
|
+ keyboardController?.hide()
|
|
|
|
|
+ onBack()
|
|
|
|
|
+ }
|
|
|
|
|
+ )
|
|
|
},
|
|
},
|
|
|
actions = {
|
|
actions = {
|
|
|
AnimatedVisibility(
|
|
AnimatedVisibility(
|