Merge pull request #4859 from dignow/fix/toolbar_os_password
Fix/toolbar os password
This commit is contained in:
commit
65924cb134
@ -943,16 +943,20 @@ showSetOSPassword(
|
|||||||
SessionID sessionId,
|
SessionID sessionId,
|
||||||
bool login,
|
bool login,
|
||||||
OverlayDialogManager dialogManager,
|
OverlayDialogManager dialogManager,
|
||||||
|
String? osPassword,
|
||||||
|
Function()? closeCallback,
|
||||||
) async {
|
) async {
|
||||||
final controller = TextEditingController();
|
final controller = TextEditingController();
|
||||||
var password =
|
osPassword ??= await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ?? '';
|
||||||
await bind.sessionGetOption(sessionId: sessionId, arg: 'os-password') ??
|
|
||||||
'';
|
|
||||||
var autoLogin =
|
var autoLogin =
|
||||||
await bind.sessionGetOption(sessionId: sessionId, arg: 'auto-login') !=
|
await bind.sessionGetOption(sessionId: sessionId, arg: 'auto-login') !=
|
||||||
'';
|
'';
|
||||||
controller.text = password;
|
controller.text = osPassword;
|
||||||
dialogManager.show((setState, close, context) {
|
dialogManager.show((setState, close, context) {
|
||||||
|
closeWithCallback([dynamic]) {
|
||||||
|
close();
|
||||||
|
if (closeCallback != null) closeCallback();
|
||||||
|
}
|
||||||
submit() {
|
submit() {
|
||||||
var text = controller.text.trim();
|
var text = controller.text.trim();
|
||||||
bind.sessionPeerOption(
|
bind.sessionPeerOption(
|
||||||
@ -964,7 +968,7 @@ showSetOSPassword(
|
|||||||
if (text != '' && login) {
|
if (text != '' && login) {
|
||||||
bind.sessionInputOsPassword(sessionId: sessionId, value: text);
|
bind.sessionInputOsPassword(sessionId: sessionId, value: text);
|
||||||
}
|
}
|
||||||
close();
|
closeWithCallback();
|
||||||
}
|
}
|
||||||
|
|
||||||
return CustomAlertDialog(
|
return CustomAlertDialog(
|
||||||
@ -998,7 +1002,7 @@ showSetOSPassword(
|
|||||||
dialogButton(
|
dialogButton(
|
||||||
"Cancel",
|
"Cancel",
|
||||||
icon: Icon(Icons.close_rounded),
|
icon: Icon(Icons.close_rounded),
|
||||||
onPressed: close,
|
onPressed: closeWithCallback,
|
||||||
isOutline: true,
|
isOutline: true,
|
||||||
),
|
),
|
||||||
dialogButton(
|
dialogButton(
|
||||||
@ -1008,7 +1012,7 @@ showSetOSPassword(
|
|||||||
),
|
),
|
||||||
],
|
],
|
||||||
onSubmit: submit,
|
onSubmit: submit,
|
||||||
onCancel: close,
|
onCancel: closeWithCallback,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ import 'package:flutter_hbb/models/model.dart';
|
|||||||
import 'package:flutter_hbb/models/platform_model.dart';
|
import 'package:flutter_hbb/models/platform_model.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
|
||||||
|
bool isEditOsPassword = false;
|
||||||
|
|
||||||
class TTextMenu {
|
class TTextMenu {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
@ -44,6 +46,28 @@ class TToggleMenu {
|
|||||||
{required this.child, required this.value, required this.onChanged});
|
{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<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
|
List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
|
||||||
final ffiModel = ffi.ffiModel;
|
final ffiModel = ffi.ffiModel;
|
||||||
final pi = ffiModel.pi;
|
final pi = ffiModel.pi;
|
||||||
@ -63,17 +87,26 @@ List<TTextMenu> toolbarControls(BuildContext context, String id, FFI ffi) {
|
|||||||
// osAccount / osPassword
|
// osAccount / osPassword
|
||||||
v.add(
|
v.add(
|
||||||
TTextMenu(
|
TTextMenu(
|
||||||
child: Row(children: [
|
child: Row(children: [
|
||||||
Text(translate(pi.is_headless ? 'OS Account' : 'OS Password')),
|
Text(translate(pi.is_headless ? 'OS Account' : 'OS Password')),
|
||||||
Offstage(
|
Offstage(
|
||||||
offstage: isDesktop,
|
offstage: isDesktop,
|
||||||
child:
|
child: Icon(Icons.edit, color: MyTheme.accent).marginOnly(left: 12),
|
||||||
Icon(Icons.edit, color: MyTheme.accent).marginOnly(left: 12))
|
)
|
||||||
]),
|
]),
|
||||||
trailingIcon: Transform.scale(scale: 0.8, child: Icon(Icons.edit)),
|
trailingIcon: Transform.scale(
|
||||||
onPressed: () => pi.is_headless
|
scale: 0.8,
|
||||||
? showSetOSAccount(sessionId, ffi.dialogManager)
|
child: InkWell(
|
||||||
: showSetOSPassword(sessionId, false, ffi.dialogManager)),
|
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
|
// paste
|
||||||
if (isMobile && perms['keyboard'] != false && perms['clipboard'] != false) {
|
if (isMobile && perms['keyboard'] != false && perms['clipboard'] != false) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user