@@ -31,6 +31,18 @@ import androidx.compose.material.icons.filled.Delete
3131import androidx.compose.material.icons.filled.Refresh
3232import androidx.compose.material.icons.filled.Visibility
3333import androidx.compose.material.icons.filled.VisibilityOff
34+ import androidx.compose.material.icons.filled.Settings
35+ import androidx.compose.foundation.layout.PaddingValues
36+ import androidx.compose.foundation.layout.width
37+ import androidx.compose.foundation.layout.wrapContentHeight
38+ import androidx.compose.material3.AlertDialogDefaults
39+ import androidx.compose.material3.BasicAlertDialog
40+ import androidx.compose.material3.Surface
41+ import androidx.compose.material3.TextButton
42+ import androidx.compose.ui.platform.LocalView
43+ import androidx.compose.ui.window.DialogProperties
44+ import androidx.compose.ui.window.DialogWindowProvider
45+ import me.bmax.apatch.util.ui.APDialogBlurBehindUtils
3446import androidx.compose.material3.Button
3547import androidx.compose.material3.CardDefaults
3648import androidx.compose.material3.CircularProgressIndicator
@@ -268,11 +280,84 @@ private fun StartButton(text: String, onClick: () -> Unit) {
268280 }
269281}
270282
283+ @OptIn(ExperimentalMaterial3Api ::class )
284+ @Composable
285+ private fun ExtraConfigDialog (kpmInfo : KPModel .KPMInfo , onDismiss : () -> Unit ) {
286+ var event by remember { mutableStateOf(kpmInfo.event) }
287+ var args by remember { mutableStateOf(kpmInfo.args) }
288+
289+ BasicAlertDialog (
290+ onDismissRequest = onDismiss,
291+ properties = DialogProperties (
292+ decorFitsSystemWindows = true ,
293+ usePlatformDefaultWidth = false ,
294+ )
295+ ) {
296+ Surface (
297+ modifier = Modifier
298+ .width(310 .dp)
299+ .wrapContentHeight(),
300+ shape = RoundedCornerShape (30 .dp),
301+ tonalElevation = AlertDialogDefaults .TonalElevation ,
302+ color = AlertDialogDefaults .containerColor,
303+ ) {
304+ Column (modifier = Modifier .padding(PaddingValues (all = 24 .dp))) {
305+ Text (
306+ text = stringResource(id = R .string.kpm_control_dialog_title),
307+ style = MaterialTheme .typography.headlineSmall,
308+ modifier = Modifier .padding(bottom = 16 .dp)
309+ )
310+
311+ OutlinedTextField (
312+ value = event,
313+ onValueChange = {
314+ event = it
315+ kpmInfo.event = it
316+ },
317+ label = { Text (stringResource(id = R .string.patch_item_extra_event)) },
318+ modifier = Modifier .fillMaxWidth()
319+ )
320+
321+ Spacer (modifier = Modifier .height(16 .dp))
322+
323+ OutlinedTextField (
324+ value = args,
325+ onValueChange = {
326+ args = it
327+ kpmInfo.args = it
328+ },
329+ label = { Text (stringResource(id = R .string.patch_item_extra_args)) },
330+ modifier = Modifier .fillMaxWidth()
331+ )
332+
333+ Spacer (modifier = Modifier .height(24 .dp))
334+
335+ Row (
336+ modifier = Modifier .fillMaxWidth(),
337+ horizontalArrangement = Arrangement .End
338+ ) {
339+ TextButton (onClick = onDismiss) {
340+ Text (stringResource(id = android.R .string.ok))
341+ }
342+ }
343+ }
344+ }
345+ val dialogWindowProvider = LocalView .current.parent as DialogWindowProvider
346+ APDialogBlurBehindUtils .setupWindowBlurListener(dialogWindowProvider.window)
347+ }
348+ }
349+
271350@Composable
272351private fun ExtraItem (extra : KPModel .IExtraInfo , existed : Boolean , onDelete : () -> Unit ) {
352+ var showConfigDialog by remember { mutableStateOf(false ) }
353+
354+ if (showConfigDialog && extra is KPModel .KPMInfo ) {
355+ ExtraConfigDialog (extra, onDismiss = { showConfigDialog = false })
356+ }
357+
273358 ElevatedCard (
274359 colors = CardDefaults .elevatedCardColors(containerColor = run {
275- MaterialTheme .colorScheme.secondaryContainer
360+ MaterialTheme .colorScheme.secondaryContainer.copy(alpha = 1f )
276361 }),
277362 ) {
278363 Column (
@@ -292,6 +377,15 @@ private fun ExtraItem(extra: KPModel.IExtraInfo, existed: Boolean, onDelete: ()
292377 .weight(1f )
293378 .wrapContentWidth(Alignment .CenterHorizontally )
294379 )
380+ if (extra.type == KPModel .ExtraType .KPM ) {
381+ Icon (
382+ imageVector = Icons .Default .Settings ,
383+ contentDescription = " Config" ,
384+ modifier = Modifier
385+ .padding(end = 8 .dp)
386+ .clickable { showConfigDialog = true }
387+ )
388+ }
295389 Icon (
296390 imageVector = Icons .Default .Delete ,
297391 contentDescription = " Delete" ,
@@ -321,46 +415,6 @@ private fun ExtraItem(extra: KPModel.IExtraInfo, existed: Boolean, onDelete: ()
321415 text = " ${stringResource(id = R .string.patch_item_extra_kpm_desciption) + " " } ${kpmInfo.description} " ,
322416 style = MaterialTheme .typography.bodyMedium
323417 )
324- var event by remember { mutableStateOf(kpmInfo.event) }
325- Row (
326- modifier = Modifier
327- .fillMaxWidth()
328- .background(Color .LightGray )
329- ) {
330- Text (
331- text = stringResource(id = R .string.patch_item_extra_event) + " " ,
332- style = MaterialTheme .typography.bodyMedium
333- )
334- BasicTextField (
335- modifier = Modifier .fillMaxWidth(),
336- value = event,
337- textStyle = MaterialTheme .typography.bodyMedium,
338- onValueChange = {
339- event = it
340- kpmInfo.event = it
341- },
342- )
343- }
344- var args by remember { mutableStateOf(kpmInfo.args) }
345- Row (
346- modifier = Modifier
347- .fillMaxWidth()
348- .background(Color .LightGray )
349- ) {
350- Text (
351- text = stringResource(id = R .string.patch_item_extra_args) + " " ,
352- style = MaterialTheme .typography.bodyMedium
353- )
354- BasicTextField (
355- modifier = Modifier .fillMaxWidth(),
356- value = args,
357- textStyle = MaterialTheme .typography.bodyMedium,
358- onValueChange = {
359- args = it
360- kpmInfo.args = it
361- },
362- )
363- }
364418 }
365419 }
366420 }
0 commit comments