mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-12-12 19:17:58 +00:00
@@ -1,6 +1,7 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../../common.dart';
|
||||
import '../../models/model.dart';
|
||||
@@ -367,6 +368,247 @@ void showServerSettingsWithValue(
|
||||
});
|
||||
}
|
||||
|
||||
void showWaitUacDialog(String id, OverlayDialogManager dialogManager) {
|
||||
dialogManager.dismissAll();
|
||||
dialogManager.show(
|
||||
tag: '$id-wait-uac',
|
||||
(setState, close) => CustomAlertDialog(
|
||||
title: Text(translate('Wait')),
|
||||
content: Text(translate('wait_accept_uac_tip')).marginAll(10),
|
||||
));
|
||||
}
|
||||
|
||||
void _showRequestElevationDialog(
|
||||
String id, OverlayDialogManager dialogManager) {
|
||||
RxString groupValue = ''.obs;
|
||||
RxString errUser = ''.obs;
|
||||
RxString errPwd = ''.obs;
|
||||
TextEditingController userController = TextEditingController();
|
||||
TextEditingController pwdController = TextEditingController();
|
||||
|
||||
void onRadioChanged(String? value) {
|
||||
if (value != null) {
|
||||
groupValue.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
const minTextStyle = TextStyle(fontSize: 14);
|
||||
|
||||
var content = Obx(() => Column(children: [
|
||||
Row(
|
||||
children: [
|
||||
Radio(
|
||||
value: '',
|
||||
groupValue: groupValue.value,
|
||||
onChanged: onRadioChanged),
|
||||
Expanded(
|
||||
child:
|
||||
Text(translate('Ask the remote user for authentication'))),
|
||||
],
|
||||
),
|
||||
Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
translate(
|
||||
'Choose this if the remote account is administrator'),
|
||||
style: TextStyle(fontSize: 13))
|
||||
.marginOnly(left: 40),
|
||||
).marginOnly(bottom: 15),
|
||||
Row(
|
||||
children: [
|
||||
Radio(
|
||||
value: 'logon',
|
||||
groupValue: groupValue.value,
|
||||
onChanged: onRadioChanged),
|
||||
Expanded(
|
||||
child: Text(translate(
|
||||
'Transmit the username and password of administrator')),
|
||||
)
|
||||
],
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Text(
|
||||
'${translate('Username')}:',
|
||||
style: minTextStyle,
|
||||
).marginOnly(right: 10)),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: TextField(
|
||||
controller: userController,
|
||||
style: minTextStyle,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 15),
|
||||
hintText: 'eg: admin',
|
||||
errorText: errUser.isEmpty ? null : errUser.value),
|
||||
onChanged: (s) {
|
||||
if (s.isNotEmpty) {
|
||||
errUser.value = '';
|
||||
}
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
).marginOnly(left: 40),
|
||||
Row(
|
||||
children: [
|
||||
Expanded(
|
||||
flex: 1,
|
||||
child: Text(
|
||||
'${translate('Password')}:',
|
||||
style: minTextStyle,
|
||||
).marginOnly(right: 10)),
|
||||
Expanded(
|
||||
flex: 3,
|
||||
child: TextField(
|
||||
controller: pwdController,
|
||||
obscureText: true,
|
||||
style: minTextStyle,
|
||||
decoration: InputDecoration(
|
||||
isDense: true,
|
||||
contentPadding: EdgeInsets.symmetric(vertical: 15),
|
||||
errorText: errPwd.isEmpty ? null : errPwd.value),
|
||||
onChanged: (s) {
|
||||
if (s.isNotEmpty) {
|
||||
errPwd.value = '';
|
||||
}
|
||||
},
|
||||
),
|
||||
),
|
||||
],
|
||||
).marginOnly(left: 40),
|
||||
Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(translate('still_click_uac_tip'),
|
||||
style: TextStyle(fontSize: 13, fontWeight: FontWeight.bold))
|
||||
.marginOnly(top: 20)),
|
||||
]));
|
||||
|
||||
dialogManager.dismissAll();
|
||||
dialogManager.show(tag: '$id-request-elevation', (setState, close) {
|
||||
void submit() {
|
||||
if (groupValue.value == 'logon') {
|
||||
if (userController.text.isEmpty) {
|
||||
errUser.value = translate('Empty Username');
|
||||
return;
|
||||
}
|
||||
if (pwdController.text.isEmpty) {
|
||||
errPwd.value = translate('Empty Password');
|
||||
return;
|
||||
}
|
||||
bind.sessionElevateWithLogon(
|
||||
id: id,
|
||||
username: userController.text,
|
||||
password: pwdController.text);
|
||||
} else {
|
||||
bind.sessionElevateDirect(id: id);
|
||||
}
|
||||
}
|
||||
|
||||
return CustomAlertDialog(
|
||||
title: Text(translate('Request Elevation')),
|
||||
content: content,
|
||||
actions: [
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(elevation: 0),
|
||||
onPressed: submit,
|
||||
child: Text(translate('OK')),
|
||||
),
|
||||
OutlinedButton(
|
||||
onPressed: () {
|
||||
close();
|
||||
},
|
||||
child: Text(translate('Cancel')),
|
||||
),
|
||||
],
|
||||
onSubmit: submit,
|
||||
onCancel: close,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
void showOnBlockDialog(
|
||||
String id,
|
||||
String type,
|
||||
String title,
|
||||
String text,
|
||||
OverlayDialogManager dialogManager,
|
||||
) {
|
||||
if (dialogManager.existing('$id-wait-uac') ||
|
||||
dialogManager.existing('$id-request-elevation')) {
|
||||
return;
|
||||
}
|
||||
var content = Column(children: [
|
||||
Align(
|
||||
alignment: Alignment.centerLeft,
|
||||
child: Text(
|
||||
"${translate(text)}${type.contains('uac') ? '\n' : '\n\n'}${translate('request_elevation_tip')}",
|
||||
textAlign: TextAlign.left,
|
||||
style: TextStyle(fontWeight: FontWeight.w400),
|
||||
).marginSymmetric(vertical: 15),
|
||||
),
|
||||
]);
|
||||
dialogManager.show(tag: '$id-$type', (setState, close) {
|
||||
void submit() {
|
||||
close();
|
||||
_showRequestElevationDialog(id, dialogManager);
|
||||
}
|
||||
|
||||
return CustomAlertDialog(
|
||||
title: Text(translate(title)),
|
||||
content: content,
|
||||
actions: [
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(elevation: 0),
|
||||
onPressed: submit,
|
||||
child: Text(translate('Request Elevation')),
|
||||
),
|
||||
OutlinedButton(
|
||||
onPressed: () {
|
||||
close();
|
||||
},
|
||||
child: Text(translate('Wait')),
|
||||
),
|
||||
],
|
||||
onSubmit: submit,
|
||||
onCancel: close,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
void showElevationError(String id, String type, String title, String text,
|
||||
OverlayDialogManager dialogManager) {
|
||||
dialogManager.show(tag: '$id-$type', (setState, close) {
|
||||
void submit() {
|
||||
close();
|
||||
_showRequestElevationDialog(id, dialogManager);
|
||||
}
|
||||
|
||||
return CustomAlertDialog(
|
||||
title: Text(translate(title)),
|
||||
content: Text(translate(text)),
|
||||
actions: [
|
||||
ElevatedButton(
|
||||
style: ElevatedButton.styleFrom(elevation: 0),
|
||||
onPressed: submit,
|
||||
child: Text(translate('Retry')),
|
||||
),
|
||||
OutlinedButton(
|
||||
onPressed: () {
|
||||
close();
|
||||
},
|
||||
child: Text(translate('Cancel')),
|
||||
),
|
||||
],
|
||||
onSubmit: submit,
|
||||
onCancel: close,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Future<String?> validateAsync(String value) async {
|
||||
value = value.trim();
|
||||
if (value.isEmpty) {
|
||||
|
||||
Reference in New Issue
Block a user