flutter_desktop: WOL & menu, mid commit

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou
2022-09-06 02:08:59 -07:00
parent c474ac01cc
commit a50482af5c
12 changed files with 311 additions and 124 deletions

View File

@@ -427,7 +427,7 @@ abstract class BasePeerCard extends StatelessWidget {
alignment: Alignment.centerRight,
child: IconButton(
padding: EdgeInsets.zero,
icon: Icon(Icons.edit),
icon: const Icon(Icons.edit),
onPressed: () => _rdpDialog(id),
),
))
@@ -440,6 +440,20 @@ abstract class BasePeerCard extends StatelessWidget {
);
}
@protected
MenuEntryBase<String> _wolAction(String id) {
return MenuEntryButton<String>(
childBuilder: (TextStyle? style) => Text(
translate('WOL'),
style: style,
),
proc: () {
bind.mainWol(id: id);
},
dismissOnClicked: true,
);
}
@protected
Future<MenuEntryBase<String>> _forceAlwaysRelayAction(String id) async {
const option = 'force-always-relay';
@@ -620,11 +634,16 @@ class RecentPeerCard extends BasePeerCard {
_transferFileAction(context, peer.id),
_tcpTunnelingAction(context, peer.id),
];
MenuEntryBase<String>? rdpAction;
if (peer.platform == 'Windows') {
menuItems.add(_rdpAction(context, peer.id));
rdpAction = _rdpAction(context, peer.id);
}
menuItems.add(MenuEntryDivider());
menuItems.add(await _forceAlwaysRelayAction(peer.id));
if (rdpAction != null) {
menuItems.add(rdpAction);
}
menuItems.add(_wolAction(peer.id));
menuItems.add(MenuEntryDivider());
menuItems.add(_renameAction(peer.id, false));
menuItems.add(_removeAction(peer.id, () async {
await bind.mainLoadRecentPeers();
@@ -647,10 +666,16 @@ class FavoritePeerCard extends BasePeerCard {
_transferFileAction(context, peer.id),
_tcpTunnelingAction(context, peer.id),
];
MenuEntryBase<String>? rdpAction;
if (peer.platform == 'Windows') {
menuItems.add(_rdpAction(context, peer.id));
rdpAction = _rdpAction(context, peer.id);
}
menuItems.add(await _forceAlwaysRelayAction(peer.id));
if (rdpAction != null) {
menuItems.add(rdpAction);
}
menuItems.add(_wolAction(peer.id));
menuItems.add(MenuEntryDivider());
menuItems.add(_renameAction(peer.id, false));
menuItems.add(_removeAction(peer.id, () async {
await bind.mainLoadFavPeers();
@@ -673,10 +698,16 @@ class DiscoveredPeerCard extends BasePeerCard {
_transferFileAction(context, peer.id),
_tcpTunnelingAction(context, peer.id),
];
MenuEntryBase<String>? rdpAction;
if (peer.platform == 'Windows') {
menuItems.add(_rdpAction(context, peer.id));
rdpAction = _rdpAction(context, peer.id);
}
menuItems.add(await _forceAlwaysRelayAction(peer.id));
if (rdpAction != null) {
menuItems.add(rdpAction);
}
menuItems.add(_wolAction(peer.id));
menuItems.add(MenuEntryDivider());
menuItems.add(_renameAction(peer.id, false));
menuItems.add(_removeAction(peer.id, () async {
await bind.mainLoadLanPeers();
@@ -698,10 +729,16 @@ class AddressBookPeerCard extends BasePeerCard {
_transferFileAction(context, peer.id),
_tcpTunnelingAction(context, peer.id),
];
MenuEntryBase<String>? rdpAction;
if (peer.platform == 'Windows') {
menuItems.add(_rdpAction(context, peer.id));
rdpAction = _rdpAction(context, peer.id);
}
menuItems.add(await _forceAlwaysRelayAction(peer.id));
if (rdpAction != null) {
menuItems.add(rdpAction);
}
menuItems.add(_wolAction(peer.id));
menuItems.add(MenuEntryDivider());
menuItems.add(_renameAction(peer.id, false));
menuItems.add(_removeAction(peer.id, () async {}));
menuItems.add(_unrememberPasswordAction(peer.id));

View File

@@ -325,8 +325,10 @@ typedef SwitchSetter = Future<void> Function(bool);
abstract class MenuEntrySwitchBase<T> extends MenuEntryBase<T> {
final String text;
final Rx<TextStyle>? textStyle;
MenuEntrySwitchBase({required this.text, required dismissOnClicked})
MenuEntrySwitchBase(
{required this.text, required dismissOnClicked, this.textStyle})
: super(dismissOnClicked: dismissOnClicked);
RxBool get curOption;
@@ -344,14 +346,23 @@ abstract class MenuEntrySwitchBase<T> extends MenuEntryBase<T> {
alignment: AlignmentDirectional.centerStart,
height: conf.height,
child: Row(children: [
// const SizedBox(width: MenuConfig.midPadding),
Text(
text,
style: TextStyle(
color: MyTheme.color(context).text,
fontSize: MenuConfig.fontSize,
fontWeight: FontWeight.normal),
),
() {
if (textStyle != null) {
final style = textStyle!;
return Obx(() => Text(
text,
style: style.value,
));
} else {
return Text(
text,
style: const TextStyle(
color: Colors.black,
fontSize: MenuConfig.fontSize,
fontWeight: FontWeight.normal),
);
}
}(),
Expanded(
child: Align(
alignment: Alignment.centerRight,
@@ -388,8 +399,12 @@ class MenuEntrySwitch<T> extends MenuEntrySwitchBase<T> {
{required String text,
required this.getter,
required this.setter,
Rx<TextStyle>? textStyle,
dismissOnClicked = false})
: super(text: text, dismissOnClicked: dismissOnClicked) {
: super(
text: text,
textStyle: textStyle,
dismissOnClicked: dismissOnClicked) {
() async {
_curOption.value = await getter();
}();
@@ -418,8 +433,12 @@ class MenuEntrySwitch2<T> extends MenuEntrySwitchBase<T> {
{required String text,
required this.getter,
required this.setter,
Rx<TextStyle>? textStyle,
dismissOnClicked = false})
: super(text: text, dismissOnClicked: dismissOnClicked);
: super(
text: text,
textStyle: textStyle,
dismissOnClicked: dismissOnClicked);
@override
RxBool get curOption => getter();

View File

@@ -75,20 +75,20 @@ class _RemoteMenubarState extends State<RemoteMenubar> {
final List<Widget> menubarItems = [];
if (!isWebDesktop) {
menubarItems.add(_buildFullscreen(context));
if (widget.ffi.ffiModel.isPeerAndroid) {
menubarItems.add(IconButton(
tooltip: translate('Mobile Actions'),
color: _MenubarTheme.commonColor,
icon: const Icon(Icons.build),
onPressed: () {
if (mobileActionsOverlayEntry == null) {
showMobileActionsOverlay();
} else {
hideMobileActionsOverlay();
}
},
));
}
//if (widget.ffi.ffiModel.isPeerAndroid) {
menubarItems.add(IconButton(
tooltip: translate('Mobile Actions'),
color: _MenubarTheme.commonColor,
icon: const Icon(Icons.build),
onPressed: () {
if (mobileActionsOverlayEntry == null) {
showMobileActionsOverlay();
} else {
hideMobileActionsOverlay();
}
},
));
//}
}
menubarItems.add(_buildMonitor(context));
menubarItems.add(_buildControl(context));