Merge pull request #3283 from grummbeer/peer-card-submenu
Rework on PeerCard menu
This commit is contained in:
commit
ca991ff39f
@ -515,15 +515,31 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
String id, Future<void> Function() reloadFunc,
|
String id, Future<void> Function() reloadFunc,
|
||||||
{bool isLan = false}) {
|
{bool isLan = false}) {
|
||||||
return MenuEntryButton<String>(
|
return MenuEntryButton<String>(
|
||||||
childBuilder: (TextStyle? style) => Text(
|
childBuilder: (TextStyle? style) => Row(
|
||||||
translate('Remove'),
|
children: [
|
||||||
style: style,
|
Text(
|
||||||
|
translate('Delete'),
|
||||||
|
style: style?.copyWith(color: Colors.red),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Align(
|
||||||
|
alignment: Alignment.centerRight,
|
||||||
|
child: Transform.scale(
|
||||||
|
scale: 0.8,
|
||||||
|
child: Icon(Icons.delete_forever, color: Colors.red),
|
||||||
|
),
|
||||||
|
).marginOnly(right: 4)),
|
||||||
|
],
|
||||||
),
|
),
|
||||||
proc: () {
|
proc: () {
|
||||||
() async {
|
() async {
|
||||||
if (isLan) {
|
if (isLan) {
|
||||||
// TODO
|
// TODO
|
||||||
} else {
|
} else {
|
||||||
|
final favs = (await bind.mainGetFav()).toList();
|
||||||
|
if (favs.remove(id)) {
|
||||||
|
await bind.mainStoreFav(favs: favs);
|
||||||
|
}
|
||||||
await bind.mainRemovePeer(id: id);
|
await bind.mainRemovePeer(id: id);
|
||||||
}
|
}
|
||||||
removePreference(id);
|
removePreference(id);
|
||||||
@ -553,10 +569,22 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
@protected
|
@protected
|
||||||
MenuEntryBase<String> _addFavAction(String id) {
|
MenuEntryBase<String> _addFavAction(String id) {
|
||||||
return MenuEntryButton<String>(
|
return MenuEntryButton<String>(
|
||||||
childBuilder: (TextStyle? style) => Text(
|
childBuilder: (TextStyle? style) => Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
translate('Add to Favorites'),
|
translate('Add to Favorites'),
|
||||||
style: style,
|
style: style,
|
||||||
),
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Align(
|
||||||
|
alignment: Alignment.centerRight,
|
||||||
|
child: Transform.scale(
|
||||||
|
scale: 0.8,
|
||||||
|
child: Icon(Icons.star_outline),
|
||||||
|
),
|
||||||
|
).marginOnly(right: 4)),
|
||||||
|
],
|
||||||
|
),
|
||||||
proc: () {
|
proc: () {
|
||||||
() async {
|
() async {
|
||||||
final favs = (await bind.mainGetFav()).toList();
|
final favs = (await bind.mainGetFav()).toList();
|
||||||
@ -575,10 +603,22 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
MenuEntryBase<String> _rmFavAction(
|
MenuEntryBase<String> _rmFavAction(
|
||||||
String id, Future<void> Function() reloadFunc) {
|
String id, Future<void> Function() reloadFunc) {
|
||||||
return MenuEntryButton<String>(
|
return MenuEntryButton<String>(
|
||||||
childBuilder: (TextStyle? style) => Text(
|
childBuilder: (TextStyle? style) => Row(
|
||||||
|
children: [
|
||||||
|
Text(
|
||||||
translate('Remove from Favorites'),
|
translate('Remove from Favorites'),
|
||||||
style: style,
|
style: style,
|
||||||
),
|
),
|
||||||
|
Expanded(
|
||||||
|
child: Align(
|
||||||
|
alignment: Alignment.centerRight,
|
||||||
|
child: Transform.scale(
|
||||||
|
scale: 0.8,
|
||||||
|
child: Icon(Icons.star),
|
||||||
|
),
|
||||||
|
).marginOnly(right: 4)),
|
||||||
|
],
|
||||||
|
),
|
||||||
proc: () {
|
proc: () {
|
||||||
() async {
|
() async {
|
||||||
final favs = (await bind.mainGetFav()).toList();
|
final favs = (await bind.mainGetFav()).toList();
|
||||||
@ -642,8 +682,9 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
child: TextFormField(
|
child: TextFormField(
|
||||||
controller: controller,
|
controller: controller,
|
||||||
autofocus: true,
|
autofocus: true,
|
||||||
decoration:
|
decoration: InputDecoration(
|
||||||
const InputDecoration(border: OutlineInputBorder()),
|
border: OutlineInputBorder(),
|
||||||
|
labelText: translate('Name')),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
@ -677,6 +718,9 @@ class RecentPeerCard extends BasePeerCard {
|
|||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
final List favs = (await bind.mainGetFav()).toList();
|
||||||
|
|
||||||
if (isDesktop && peer.platform != 'Android') {
|
if (isDesktop && peer.platform != 'Android') {
|
||||||
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
}
|
}
|
||||||
@ -690,16 +734,29 @@ class RecentPeerCard extends BasePeerCard {
|
|||||||
}
|
}
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
menuItems.add(_renameAction(peer.id));
|
menuItems.add(_renameAction(peer.id));
|
||||||
menuItems.add(_removeAction(peer.id, () async {
|
|
||||||
await bind.mainLoadRecentPeers();
|
|
||||||
}));
|
|
||||||
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
||||||
menuItems.add(_unrememberPasswordAction(peer.id));
|
menuItems.add(_unrememberPasswordAction(peer.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!favs.contains(peer.id)) {
|
||||||
menuItems.add(_addFavAction(peer.id));
|
menuItems.add(_addFavAction(peer.id));
|
||||||
if (!gFFI.abModel.idContainBy(peer.id)) {
|
} else {
|
||||||
|
menuItems.add(_rmFavAction(peer.id, () async {}));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gFFI.userModel.userName.isNotEmpty) {
|
||||||
|
// if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
// menuItems.add(_addToAb(peer));
|
||||||
|
// } else {
|
||||||
|
// menuItems.add(_removeFromAb(peer));
|
||||||
|
// }
|
||||||
menuItems.add(_addToAb(peer));
|
menuItems.add(_addToAb(peer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuItems.add(MenuEntryDivider());
|
||||||
|
menuItems.add(_removeAction(peer.id, () async {
|
||||||
|
await bind.mainLoadRecentPeers();
|
||||||
|
}));
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -732,18 +789,26 @@ class FavoritePeerCard extends BasePeerCard {
|
|||||||
}
|
}
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
menuItems.add(_renameAction(peer.id));
|
menuItems.add(_renameAction(peer.id));
|
||||||
menuItems.add(_removeAction(peer.id, () async {
|
|
||||||
await bind.mainLoadFavPeers();
|
|
||||||
}));
|
|
||||||
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
||||||
menuItems.add(_unrememberPasswordAction(peer.id));
|
menuItems.add(_unrememberPasswordAction(peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_rmFavAction(peer.id, () async {
|
menuItems.add(_rmFavAction(peer.id, () async {
|
||||||
await bind.mainLoadFavPeers();
|
await bind.mainLoadFavPeers();
|
||||||
}));
|
}));
|
||||||
if (!gFFI.abModel.idContainBy(peer.id)) {
|
|
||||||
|
if (gFFI.userModel.userName.isNotEmpty) {
|
||||||
|
// if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
// menuItems.add(_addToAb(peer));
|
||||||
|
// } else {
|
||||||
|
// menuItems.add(_removeFromAb(peer));
|
||||||
|
// }
|
||||||
menuItems.add(_addToAb(peer));
|
menuItems.add(_addToAb(peer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuItems.add(MenuEntryDivider());
|
||||||
|
menuItems.add(_removeAction(peer.id, () async {
|
||||||
|
await bind.mainLoadFavPeers();
|
||||||
|
}));
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -763,6 +828,9 @@ class DiscoveredPeerCard extends BasePeerCard {
|
|||||||
_connectAction(context, peer),
|
_connectAction(context, peer),
|
||||||
_transferFileAction(context, peer.id),
|
_transferFileAction(context, peer.id),
|
||||||
];
|
];
|
||||||
|
|
||||||
|
final List favs = (await bind.mainGetFav()).toList();
|
||||||
|
|
||||||
if (isDesktop && peer.platform != 'Android') {
|
if (isDesktop && peer.platform != 'Android') {
|
||||||
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
menuItems.add(_tcpTunnelingAction(context, peer.id));
|
||||||
}
|
}
|
||||||
@ -774,11 +842,24 @@ class DiscoveredPeerCard extends BasePeerCard {
|
|||||||
if (Platform.isWindows) {
|
if (Platform.isWindows) {
|
||||||
menuItems.add(_createShortCutAction(peer.id));
|
menuItems.add(_createShortCutAction(peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(MenuEntryDivider());
|
|
||||||
menuItems.add(_removeAction(peer.id, () async {}));
|
if (!favs.contains(peer.id)) {
|
||||||
if (!gFFI.abModel.idContainBy(peer.id)) {
|
menuItems.add(_addFavAction(peer.id));
|
||||||
|
} else {
|
||||||
|
menuItems.add(_rmFavAction(peer.id, () async {}));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gFFI.userModel.userName.isNotEmpty) {
|
||||||
|
// if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
// menuItems.add(_addToAb(peer));
|
||||||
|
// } else {
|
||||||
|
// menuItems.add(_removeFromAb(peer));
|
||||||
|
// }
|
||||||
menuItems.add(_addToAb(peer));
|
menuItems.add(_addToAb(peer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuItems.add(MenuEntryDivider());
|
||||||
|
menuItems.add(_removeAction(peer.id, () async {}));
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -811,13 +892,15 @@ class AddressBookPeerCard extends BasePeerCard {
|
|||||||
}
|
}
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
menuItems.add(_renameAction(peer.id));
|
menuItems.add(_renameAction(peer.id));
|
||||||
menuItems.add(_removeAction(peer.id, () async {}));
|
|
||||||
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
if (await bind.mainPeerHasPassword(id: peer.id)) {
|
||||||
menuItems.add(_unrememberPasswordAction(peer.id));
|
menuItems.add(_unrememberPasswordAction(peer.id));
|
||||||
}
|
}
|
||||||
if (gFFI.abModel.tags.isNotEmpty) {
|
if (gFFI.abModel.tags.isNotEmpty) {
|
||||||
menuItems.add(_editTagAction(peer.id));
|
menuItems.add(_editTagAction(peer.id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
menuItems.add(MenuEntryDivider());
|
||||||
|
menuItems.add(_removeAction(peer.id, () async {}));
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user