From 437b5f2ca31fbcb4788d0e58604537b472048368 Mon Sep 17 00:00:00 2001 From: dignow Date: Tue, 4 Jul 2023 20:26:43 +0800 Subject: [PATCH] debug Signed-off-by: dignow --- flutter/lib/common/widgets/dialog.dart | 11 ++-- flutter/lib/common/widgets/toolbar.dart | 72 ++++++++++++++----------- 2 files changed, 50 insertions(+), 33 deletions(-) diff --git a/flutter/lib/common/widgets/dialog.dart b/flutter/lib/common/widgets/dialog.dart index ff1372039..9f4eb1427 100644 --- a/flutter/lib/common/widgets/dialog.dart +++ b/flutter/lib/common/widgets/dialog.dart @@ -944,6 +944,7 @@ showSetOSPassword( bool login, OverlayDialogManager dialogManager, String? osPassword, + Function()? closeCallback, ) async { final controller = TextEditingController(); osPassword ??= await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ?? ''; @@ -952,6 +953,10 @@ showSetOSPassword( ''; controller.text = osPassword; dialogManager.show((setState, close, context) { + closeWithCallback([dynamic]) { + close(); + if (closeCallback != null) closeCallback(); + } submit() { var text = controller.text.trim(); bind.sessionPeerOption( @@ -963,7 +968,7 @@ showSetOSPassword( if (text != '' && login) { bind.sessionInputOsPassword(sessionId: sessionId, value: text); } - close(); + closeWithCallback(); } return CustomAlertDialog( @@ -997,7 +1002,7 @@ showSetOSPassword( dialogButton( "Cancel", icon: Icon(Icons.close_rounded), - onPressed: close, + onPressed: closeWithCallback, isOutline: true, ), dialogButton( @@ -1007,7 +1012,7 @@ showSetOSPassword( ), ], onSubmit: submit, - onCancel: close, + onCancel: closeWithCallback, ); }); } diff --git a/flutter/lib/common/widgets/toolbar.dart b/flutter/lib/common/widgets/toolbar.dart index 3c36bd1a8..4cf6fd3ea 100644 --- a/flutter/lib/common/widgets/toolbar.dart +++ b/flutter/lib/common/widgets/toolbar.dart @@ -46,6 +46,28 @@ class TToggleMenu { {required this.child, required this.value, required this.onChanged}); } +handleOsPasswordEditIcon( + SessionID sessionId, OverlayDialogManager dialogManager) { + isEditOsPassword = true; + showSetOSPassword(sessionId, false, dialogManager, null, () => isEditOsPassword = false); +} + +handleOsPasswordAction( + SessionID sessionId, OverlayDialogManager dialogManager) async { + if (isEditOsPassword) { + isEditOsPassword = false; + return; + } + final password = + await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ?? + ''; + if (password.isEmpty) { + showSetOSPassword(sessionId, true, dialogManager, password, () => isEditOsPassword = false); + } else { + bind.sessionInputOsPassword(sessionId: sessionId, value: password); + } +} + List toolbarControls(BuildContext context, String id, FFI ffi) { final ffiModel = ffi.ffiModel; final pi = ffiModel.pi; @@ -65,36 +87,26 @@ List toolbarControls(BuildContext context, String id, FFI ffi) { // osAccount / osPassword v.add( TTextMenu( - child: Row(children: [ - Text(translate(pi.is_headless ? 'OS Account' : 'OS Password')), - Offstage( - offstage: isDesktop, - child: InkWell( - onTap: () => - showSetOSPassword(sessionId, false, ffi.dialogManager, null), - child: - Icon(Icons.edit, color: MyTheme.accent).marginOnly(left: 12), - ), - ) - ]), - trailingIcon: Transform.scale(scale: 0.8, child: Icon(Icons.edit)), - onPressed: () => pi.is_headless - ? showSetOSAccount(sessionId, ffi.dialogManager) - : () async { - if (isEditOsPassword) { - isEditOsPassword = false; - return; - } - final password = await bind.sessionGetOption( - sessionId: sessionId, arg: 'os-password') ?? - ''; - if (password.isEmpty) { - showSetOSPassword(sessionId, true, ffi.dialogManager, password); - } else { - bind.sessionInputOsPassword( - sessionId: sessionId, value: password); - } - }), + child: Row(children: [ + Text(translate(pi.is_headless ? 'OS Account' : 'OS Password')), + Offstage( + offstage: isDesktop, + child: Icon(Icons.edit, color: MyTheme.accent).marginOnly(left: 12), + ) + ]), + trailingIcon: Transform.scale( + scale: 0.8, + child: InkWell( + onTap: () => pi.is_headless + ? showSetOSAccount(sessionId, ffi.dialogManager) + : handleOsPasswordEditIcon(sessionId, ffi.dialogManager), + child: Icon(Icons.edit), + ), + ), + onPressed: () => pi.is_headless + ? showSetOSAccount(sessionId, ffi.dialogManager) + : handleOsPasswordAction(sessionId, ffi.dialogManager), + ), ); // paste if (isMobile && perms['keyboard'] != false && perms['clipboard'] != false) {