mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2026-01-31 07:54:09 +01:00
Use MaterialDialogs input for dialogs
This commit is contained in:
@@ -47,7 +47,6 @@ import androidx.compose.material.ContentAlpha
|
||||
import androidx.compose.material.Icon
|
||||
import androidx.compose.material.LocalContentColor
|
||||
import androidx.compose.material.MaterialTheme
|
||||
import androidx.compose.material.OutlinedTextField
|
||||
import androidx.compose.material.RadioButton
|
||||
import androidx.compose.material.Surface
|
||||
import androidx.compose.material.Switch
|
||||
@@ -69,7 +68,6 @@ import androidx.compose.ui.draw.rotate
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.takeOrElse
|
||||
import androidx.compose.ui.graphics.vector.ImageVector
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import androidx.compose.ui.text.input.VisualTransformation
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
@@ -77,13 +75,14 @@ import androidx.compose.ui.unit.dp
|
||||
import ca.gosyer.jui.i18n.MR
|
||||
import ca.gosyer.jui.ui.base.dialog.getMaterialDialogProperties
|
||||
import ca.gosyer.jui.uicore.components.VerticalScrollbar
|
||||
import ca.gosyer.jui.uicore.components.keyboardHandler
|
||||
import ca.gosyer.jui.uicore.components.rememberScrollbarAdapter
|
||||
import ca.gosyer.jui.uicore.prefs.PreferenceMutableStateFlow
|
||||
import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import com.vanpra.composematerialdialogs.MaterialDialog
|
||||
import com.vanpra.composematerialdialogs.MaterialDialogButtons
|
||||
import com.vanpra.composematerialdialogs.MaterialDialogState
|
||||
import com.vanpra.composematerialdialogs.TextFieldStyle
|
||||
import com.vanpra.composematerialdialogs.input
|
||||
import com.vanpra.composematerialdialogs.rememberMaterialDialogState
|
||||
import com.vanpra.composematerialdialogs.title
|
||||
|
||||
@@ -183,6 +182,8 @@ fun EditTextPreference(
|
||||
icon: ImageVector? = null,
|
||||
changeListener: () -> Unit = {},
|
||||
enabled: Boolean = true,
|
||||
maxLines: Int = 1,
|
||||
singleLine: Boolean = true,
|
||||
visualTransformation: VisualTransformation = VisualTransformation.None
|
||||
) {
|
||||
val dialogState = rememberMaterialDialogState()
|
||||
@@ -196,12 +197,10 @@ fun EditTextPreference(
|
||||
enabled = enabled
|
||||
)
|
||||
val value by preference.collectAsState()
|
||||
var editText by remember(value) { mutableStateOf(TextFieldValue(preference.value)) }
|
||||
MaterialDialog(
|
||||
dialogState,
|
||||
buttons = {
|
||||
positiveButton(stringResource(MR.strings.action_ok)) {
|
||||
preference.value = editText.text
|
||||
changeListener()
|
||||
}
|
||||
negativeButton(stringResource(MR.strings.action_cancel))
|
||||
@@ -209,13 +208,14 @@ fun EditTextPreference(
|
||||
properties = getMaterialDialogProperties(),
|
||||
) {
|
||||
title(title)
|
||||
OutlinedTextField(
|
||||
editText,
|
||||
onValueChange = {
|
||||
editText = it
|
||||
},
|
||||
input(
|
||||
label = "",
|
||||
prefill = value,
|
||||
textFieldStyle = TextFieldStyle.Outlined,
|
||||
visualTransformation = visualTransformation,
|
||||
modifier = Modifier.keyboardHandler()
|
||||
onInput = { preference.value = it },
|
||||
maxLines = maxLines,
|
||||
singleLine = singleLine
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,21 +6,15 @@
|
||||
|
||||
package ca.gosyer.jui.ui.categories.components
|
||||
|
||||
import androidx.compose.material.TextField
|
||||
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.Modifier
|
||||
import androidx.compose.ui.text.input.TextFieldValue
|
||||
import ca.gosyer.jui.i18n.MR
|
||||
import ca.gosyer.jui.ui.base.dialog.getMaterialDialogProperties
|
||||
import ca.gosyer.jui.ui.categories.CategoriesScreenViewModel
|
||||
import ca.gosyer.jui.uicore.components.keyboardHandler
|
||||
import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import com.vanpra.composematerialdialogs.MaterialDialog
|
||||
import com.vanpra.composematerialdialogs.MaterialDialogState
|
||||
import com.vanpra.composematerialdialogs.TextFieldStyle
|
||||
import com.vanpra.composematerialdialogs.input
|
||||
import com.vanpra.composematerialdialogs.message
|
||||
import com.vanpra.composematerialdialogs.title
|
||||
|
||||
@@ -30,27 +24,22 @@ fun RenameDialog(
|
||||
category: CategoriesScreenViewModel.MenuCategory,
|
||||
onRename: (String) -> Unit
|
||||
) {
|
||||
var newName by remember { mutableStateOf(TextFieldValue(category.name)) }
|
||||
|
||||
MaterialDialog(
|
||||
state,
|
||||
buttons = {
|
||||
positiveButton(stringResource(MR.strings.action_rename)) {
|
||||
if (newName.text != category.name) {
|
||||
onRename(newName.text)
|
||||
}
|
||||
}
|
||||
positiveButton(stringResource(MR.strings.action_rename))
|
||||
negativeButton(stringResource(MR.strings.action_cancel))
|
||||
},
|
||||
properties = getMaterialDialogProperties(),
|
||||
) {
|
||||
title(stringResource(MR.strings.categories_rename))
|
||||
TextField(
|
||||
newName,
|
||||
onValueChange = {
|
||||
newName = it
|
||||
},
|
||||
modifier = Modifier.keyboardHandler(singleLine = true)
|
||||
input(
|
||||
label = "",
|
||||
prefill = category.name,
|
||||
textFieldStyle = TextFieldStyle.Outlined,
|
||||
onInput = { onRename(it) },
|
||||
maxLines = 1,
|
||||
singleLine = true
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -81,26 +70,21 @@ fun CreateDialog(
|
||||
state: MaterialDialogState,
|
||||
onCreate: (String) -> Unit
|
||||
) {
|
||||
var name by remember { mutableStateOf(TextFieldValue("")) }
|
||||
|
||||
MaterialDialog(
|
||||
state,
|
||||
buttons = {
|
||||
positiveButton(stringResource(MR.strings.action_create)) {
|
||||
onCreate(name.text)
|
||||
}
|
||||
positiveButton(stringResource(MR.strings.action_create))
|
||||
negativeButton(stringResource(MR.strings.action_cancel))
|
||||
},
|
||||
properties = getMaterialDialogProperties(),
|
||||
) {
|
||||
title(stringResource(MR.strings.categories_create))
|
||||
TextField(
|
||||
name,
|
||||
onValueChange = {
|
||||
name = it
|
||||
},
|
||||
singleLine = true,
|
||||
modifier = Modifier.keyboardHandler(singleLine = true)
|
||||
input(
|
||||
label = "",
|
||||
textFieldStyle = TextFieldStyle.Outlined,
|
||||
onInput = { onCreate(it) },
|
||||
maxLines = 1,
|
||||
singleLine = true
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,18 +14,14 @@ import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.foundation.lazy.rememberLazyListState
|
||||
import androidx.compose.material.Checkbox
|
||||
import androidx.compose.material.OutlinedTextField
|
||||
import androidx.compose.material.Scaffold
|
||||
import androidx.compose.material.Switch
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.collectAsState
|
||||
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.text.input.TextFieldValue
|
||||
import androidx.compose.ui.unit.dp
|
||||
import ca.gosyer.jui.i18n.MR
|
||||
import ca.gosyer.jui.presentation.build.BuildKonfig
|
||||
@@ -42,10 +38,11 @@ import ca.gosyer.jui.ui.sources.settings.model.SourceSettingsView.MultiSelect
|
||||
import ca.gosyer.jui.ui.sources.settings.model.SourceSettingsView.Switch
|
||||
import ca.gosyer.jui.ui.sources.settings.model.SourceSettingsView.TwoState
|
||||
import ca.gosyer.jui.uicore.components.VerticalScrollbar
|
||||
import ca.gosyer.jui.uicore.components.keyboardHandler
|
||||
import ca.gosyer.jui.uicore.components.rememberScrollbarAdapter
|
||||
import ca.gosyer.jui.uicore.resources.stringResource
|
||||
import com.vanpra.composematerialdialogs.MaterialDialog
|
||||
import com.vanpra.composematerialdialogs.TextFieldStyle
|
||||
import com.vanpra.composematerialdialogs.input
|
||||
import com.vanpra.composematerialdialogs.message
|
||||
import com.vanpra.composematerialdialogs.rememberMaterialDialogState
|
||||
import com.vanpra.composematerialdialogs.title
|
||||
@@ -189,13 +186,10 @@ private fun EditTextPreference(editText: EditText) {
|
||||
subtitle = subtitle,
|
||||
onClick = dialogState::show
|
||||
)
|
||||
var text by remember(state) { mutableStateOf(TextFieldValue(state)) }
|
||||
MaterialDialog(
|
||||
dialogState,
|
||||
buttons = {
|
||||
positiveButton(stringResource(MR.strings.action_ok)) {
|
||||
editText.updateState(text.text)
|
||||
}
|
||||
positiveButton(stringResource(MR.strings.action_ok))
|
||||
negativeButton(stringResource(MR.strings.action_cancel))
|
||||
},
|
||||
properties = getMaterialDialogProperties(),
|
||||
@@ -204,12 +198,10 @@ private fun EditTextPreference(editText: EditText) {
|
||||
if (editText.dialogMessage != null) {
|
||||
message(editText.dialogMessage)
|
||||
}
|
||||
OutlinedTextField(
|
||||
text,
|
||||
onValueChange = {
|
||||
text = it
|
||||
},
|
||||
modifier = Modifier.keyboardHandler(singleLine = true)
|
||||
input(
|
||||
label = "",
|
||||
textFieldStyle = TextFieldStyle.Outlined,
|
||||
onInput = { editText.updateState(it) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user