refactor strings in a separate class, added alias and remote host sort types
This commit is contained in:
parent
bcfb649815
commit
f042ed44bd
@ -435,7 +435,6 @@ class PeerSortDropdown extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
||||||
final List<String> sort_names = ['Remote ID', 'Username', "Status"];
|
|
||||||
String _sortType = peerSort.value;
|
String _sortType = peerSort.value;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -449,7 +448,9 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
|||||||
decoration: deco,
|
decoration: deco,
|
||||||
child: DropdownButtonHideUnderline(
|
child: DropdownButtonHideUnderline(
|
||||||
child: DropdownButton2<String>(
|
child: DropdownButton2<String>(
|
||||||
value: sort_names.contains(_sortType) ? _sortType : sort_names[0],
|
value: PeerSortType.values.contains(_sortType)
|
||||||
|
? _sortType
|
||||||
|
: PeerSortType.remoteId,
|
||||||
onChanged: (v) async {
|
onChanged: (v) async {
|
||||||
if (v != null) {
|
if (v != null) {
|
||||||
setState(() => _sortType = v);
|
setState(() => _sortType = v);
|
||||||
@ -480,7 +481,7 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
|||||||
),
|
),
|
||||||
enabled: false,
|
enabled: false,
|
||||||
),
|
),
|
||||||
...sort_names
|
...PeerSortType.values
|
||||||
.map<DropdownMenuItem<String>>(
|
.map<DropdownMenuItem<String>>(
|
||||||
(String value) => DropdownMenuItem<String>(
|
(String value) => DropdownMenuItem<String>(
|
||||||
value: value,
|
value: value,
|
||||||
|
@ -16,6 +16,22 @@ import 'peer_card.dart';
|
|||||||
typedef PeerFilter = bool Function(Peer peer);
|
typedef PeerFilter = bool Function(Peer peer);
|
||||||
typedef PeerCardBuilder = Widget Function(Peer peer);
|
typedef PeerCardBuilder = Widget Function(Peer peer);
|
||||||
|
|
||||||
|
class PeerSortType {
|
||||||
|
static const String remoteId = 'Remote ID';
|
||||||
|
static const String remoteHost = 'Remote Host';
|
||||||
|
static const String alias = 'Alias';
|
||||||
|
static const String username = 'Username';
|
||||||
|
static const String status = 'Status';
|
||||||
|
|
||||||
|
static List<String> values = [
|
||||||
|
PeerSortType.remoteId,
|
||||||
|
PeerSortType.remoteHost,
|
||||||
|
PeerSortType.alias,
|
||||||
|
PeerSortType.username,
|
||||||
|
PeerSortType.status
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
/// for peer search text, global obs value
|
/// for peer search text, global obs value
|
||||||
final peerSearchText = "".obs;
|
final peerSearchText = "".obs;
|
||||||
|
|
||||||
@ -193,8 +209,8 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// fallback to id sorting
|
// fallback to id sorting
|
||||||
if (sortedBy.isEmpty) {
|
if (!PeerSortType.values.contains(sortedBy)) {
|
||||||
sortedBy = 'id';
|
sortedBy = PeerSortType.remoteId;
|
||||||
bind.setLocalFlutterConfig(
|
bind.setLocalFlutterConfig(
|
||||||
k: "peer-sorting",
|
k: "peer-sorting",
|
||||||
v: sortedBy,
|
v: sortedBy,
|
||||||
@ -203,14 +219,22 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
|
|||||||
|
|
||||||
if (widget.peers.loadEvent != 'load_recent_peers') {
|
if (widget.peers.loadEvent != 'load_recent_peers') {
|
||||||
switch (sortedBy) {
|
switch (sortedBy) {
|
||||||
case 'id':
|
case PeerSortType.remoteId:
|
||||||
peers.sort((p1, p2) => p1.id.compareTo(p2.id));
|
peers.sort((p1, p2) => p1.id.compareTo(p2.id));
|
||||||
break;
|
break;
|
||||||
case 'username':
|
case PeerSortType.remoteHost:
|
||||||
|
peers.sort((p1, p2) =>
|
||||||
|
p1.hostname.toLowerCase().compareTo(p2.hostname.toLowerCase()));
|
||||||
|
break;
|
||||||
|
case PeerSortType.alias:
|
||||||
|
peers.sort((p1, p2) =>
|
||||||
|
p1.alias.toLowerCase().compareTo(p2.alias.toLowerCase()));
|
||||||
|
break;
|
||||||
|
case PeerSortType.username:
|
||||||
peers.sort((p1, p2) =>
|
peers.sort((p1, p2) =>
|
||||||
p1.username.toLowerCase().compareTo(p2.username.toLowerCase()));
|
p1.username.toLowerCase().compareTo(p2.username.toLowerCase()));
|
||||||
break;
|
break;
|
||||||
case 'status':
|
case PeerSortType.status:
|
||||||
peers.sort((p1, p2) => p1.online ? -1 : 1);
|
peers.sort((p1, p2) => p1.online ? -1 : 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user