mirror of
https://github.com/rustdesk/rustdesk.git
synced 2025-08-26 02:04:25 +08:00
peer card batch operation
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
@ -131,6 +131,12 @@ class AbModel {
|
||||
peers.add(peer);
|
||||
}
|
||||
|
||||
void addPeers(List<Peer> ps) {
|
||||
for (var p in ps) {
|
||||
addPeer(p);
|
||||
}
|
||||
}
|
||||
|
||||
void addTag(String tag) async {
|
||||
if (tagContainBy(tag)) {
|
||||
return;
|
||||
@ -146,6 +152,14 @@ class AbModel {
|
||||
it.first.tags = tags;
|
||||
}
|
||||
|
||||
void changeTagForPeers(List<String> ids, List<dynamic> tags) {
|
||||
peers.map((e) {
|
||||
if (ids.contains(e.id)) {
|
||||
e.tags = tags;
|
||||
}
|
||||
}).toList();
|
||||
}
|
||||
|
||||
Future<void> pushAb() async {
|
||||
debugPrint("pushAb");
|
||||
final api = "${await bind.mainGetApiServer()}/api/ab";
|
||||
@ -192,6 +206,10 @@ class AbModel {
|
||||
peers.removeWhere((element) => element.id == id);
|
||||
}
|
||||
|
||||
void deletePeers(List<String> ids) {
|
||||
peers.removeWhere((e) => ids.contains(e.id));
|
||||
}
|
||||
|
||||
void deleteTag(String tag) {
|
||||
gFFI.abModel.selectedTags.remove(tag);
|
||||
tags.removeWhere((element) => element == tag);
|
||||
|
@ -1,10 +1,19 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_hbb/models/peer_model.dart';
|
||||
import 'package:flutter_hbb/models/platform_model.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
import '../common.dart';
|
||||
import 'model.dart';
|
||||
|
||||
const int groupTabIndex = 4;
|
||||
enum PeerTabIndex {
|
||||
recent,
|
||||
fav,
|
||||
lan,
|
||||
ab,
|
||||
group,
|
||||
}
|
||||
|
||||
const String defaultGroupTabname = 'Group';
|
||||
|
||||
class PeerTabModel with ChangeNotifier {
|
||||
@ -26,6 +35,11 @@ class PeerTabModel with ChangeNotifier {
|
||||
Icons.group,
|
||||
];
|
||||
List<int> get indexs => List.generate(tabNames.length, (index) => index);
|
||||
List<Peer> _selectedPeers = List.empty(growable: true);
|
||||
List<Peer> get selectedPeers => _selectedPeers;
|
||||
bool get multiSelectionMode => _selectedPeers.isNotEmpty;
|
||||
List<Peer> _currentTabCachedPeers = List.empty(growable: true);
|
||||
List<Peer> get currentTabCachedPeers => _currentTabCachedPeers;
|
||||
|
||||
PeerTabModel(this.parent) {
|
||||
// init currentTab
|
||||
@ -45,7 +59,7 @@ class PeerTabModel with ChangeNotifier {
|
||||
|
||||
String tabTooltip(int index, String groupName) {
|
||||
if (index >= 0 && index < tabNames.length) {
|
||||
if (index == groupTabIndex) {
|
||||
if (index == PeerTabIndex.group.index) {
|
||||
if (gFFI.userModel.isAdmin.value || groupName.isEmpty) {
|
||||
return translate(defaultGroupTabname);
|
||||
} else {
|
||||
@ -66,4 +80,39 @@ class PeerTabModel with ChangeNotifier {
|
||||
assert(false);
|
||||
return Icons.help;
|
||||
}
|
||||
|
||||
togglePeerSelect(Peer peer) {
|
||||
if (_selectedPeers.firstWhereOrNull((p) => p.id == peer.id) != null) {
|
||||
_selectedPeers.removeWhere((p) => p.id == peer.id);
|
||||
} else {
|
||||
_selectedPeers.add(peer);
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
onPeerCardTap(Peer peer) {
|
||||
if (!multiSelectionMode) return;
|
||||
togglePeerSelect(peer);
|
||||
}
|
||||
|
||||
closeSelection() {
|
||||
_selectedPeers.clear();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
setCurrentTabCachedPeers(List<Peer> peers) {
|
||||
Future.delayed(Duration.zero, () {
|
||||
_currentTabCachedPeers = peers;
|
||||
notifyListeners();
|
||||
});
|
||||
}
|
||||
|
||||
selectAll() {
|
||||
_selectedPeers = _currentTabCachedPeers.toList();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
bool isPeerSelected(String id) {
|
||||
return selectedPeers.firstWhereOrNull((p) => p.id == id) != null;
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ bool refreshingUser = false;
|
||||
class UserModel {
|
||||
final RxString userName = ''.obs;
|
||||
final RxBool isAdmin = false.obs;
|
||||
bool get isLogin => userName.isNotEmpty;
|
||||
WeakReference<FFI> parent;
|
||||
|
||||
UserModel(this.parent);
|
||||
|
Reference in New Issue
Block a user