fix RecordingModel get size & add mobile screen record (remote)

This commit is contained in:
csf 2022-10-25 11:27:34 +09:00
parent 0c30d34cc2
commit bf4ed4b727
2 changed files with 31 additions and 6 deletions

View File

@ -582,13 +582,35 @@ class _RemotePageState extends State<RemotePage> {
value: 'block-input')); value: 'block-input'));
} }
} }
if (gFFI.ffiModel.permissions["restart"] != false && if (perms["restart"] != false &&
(pi.platform == "Linux" || (pi.platform == "Linux" ||
pi.platform == "Windows" || pi.platform == "Windows" ||
pi.platform == "Mac OS")) { pi.platform == "Mac OS")) {
more.add(PopupMenuItem<String>( more.add(PopupMenuItem<String>(
child: Text(translate('Restart Remote Device')), value: 'restart')); child: Text(translate('Restart Remote Device')), value: 'restart'));
} }
// Currently only support VP9
if (gFFI.recordingModel.start ||
(perms["recording"] != false &&
gFFI.qualityMonitorModel.data.codecFormat == "VP9")) {
more.add(PopupMenuItem<String>(
child: Row(
children: [
Text(translate(gFFI.recordingModel.start
? 'Stop session recording'
: 'Start session recording')),
Padding(
padding: EdgeInsets.only(left: 12),
child: Icon(
gFFI.recordingModel.start
? Icons.pause_circle_filled
: Icons.videocam_outlined,
color: MyTheme.accent),
)
],
),
value: 'record'));
}
() async { () async {
var value = await showMenu( var value = await showMenu(
context: context, context: context,
@ -630,6 +652,8 @@ class _RemotePageState extends State<RemotePage> {
gFFI.cursorModel.reset(); gFFI.cursorModel.reset();
} else if (value == 'restart') { } else if (value == 'restart') {
showRestartRemoteDevice(pi, widget.id, gFFI.dialogManager); showRestartRemoteDevice(pi, widget.id, gFFI.dialogManager);
} else if (value == 'record') {
gFFI.recordingModel.toggle();
} }
}(); }();
} }

View File

@ -231,7 +231,8 @@ class FfiModel with ChangeNotifier {
} else if (type == 'input-password') { } else if (type == 'input-password') {
enterPasswordDialog(id, dialogManager); enterPasswordDialog(id, dialogManager);
} else if (type == 'restarting') { } else if (type == 'restarting') {
showMsgBox(id, type, title, text, link, false, dialogManager, hasCancel: false); showMsgBox(id, type, title, text, link, false, dialogManager,
hasCancel: false);
} else { } else {
var hasRetry = evt['hasRetry'] == 'true'; var hasRetry = evt['hasRetry'] == 'true';
showMsgBox(id, type, title, text, link, hasRetry, dialogManager); showMsgBox(id, type, title, text, link, hasRetry, dialogManager);
@ -1003,16 +1004,16 @@ class RecordingModel with ChangeNotifier {
get start => _start; get start => _start;
onSwitchDisplay() { onSwitchDisplay() {
if (!isDesktop || !_start) return; if (isIOS || !_start) return;
var id = parent.target?.id; var id = parent.target?.id;
int? width = parent.target?.canvasModel.getDisplayWidth(); int? width = parent.target?.canvasModel.getDisplayWidth();
int? height = parent.target?.canvasModel.getDisplayWidth(); int? height = parent.target?.canvasModel.getDisplayHeight();
if (id == null || width == null || height == null) return; if (id == null || width == null || height == null) return;
bind.sessionRecordScreen(id: id, start: true, width: width, height: height); bind.sessionRecordScreen(id: id, start: true, width: width, height: height);
} }
toggle() { toggle() {
if (!isDesktop) return; if (isIOS) return;
var id = parent.target?.id; var id = parent.target?.id;
if (id == null) return; if (id == null) return;
_start = !_start; _start = !_start;
@ -1025,7 +1026,7 @@ class RecordingModel with ChangeNotifier {
} }
onClose() { onClose() {
if (!isDesktop) return; if (isIOS) return;
var id = parent.target?.id; var id = parent.target?.id;
if (id == null) return; if (id == null) return;
_start = false; _start = false;