Server detail page cards support sorting

This commit is contained in:
lollipopkit
2023-05-26 18:03:43 +08:00
parent 20ef9d4575
commit 00fdcb1ee8
7 changed files with 128 additions and 71 deletions

View File

@@ -8,8 +8,13 @@ class VirtualKey {
final IconData? icon;
final VirtualKeyFunc? func;
VirtualKey(this.text,
{this.key, this.toggleable = false, this.icon, this.func,});
VirtualKey(
this.text, {
this.key,
this.toggleable = false,
this.icon,
this.func,
});
}
enum VirtualKeyFunc { toggleIME, backspace, copy, paste, snippet }

View File

@@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:logging/logging.dart';
import '../../core/extension/order.dart';
import '../../core/extension/uint8list.dart';
import '../../core/provider_base.dart';
import '../../core/utils/server.dart';
@@ -18,31 +19,11 @@ import '../store/server.dart';
import '../store/setting.dart';
typedef ServersMap = Map<String, Server>;
typedef ServerOrder = List<String>;
extension ServerOrderX on ServerOrder {
void move(int oldIndex, int newIndex) {
if (oldIndex == newIndex) return;
if (oldIndex < newIndex) {
newIndex -= 1;
}
final item = this[oldIndex];
removeAt(oldIndex);
insert(newIndex, item);
locator<SettingStore>().serverOrder.put(this);
}
void update(String id, String newId) {
final index = indexOf(id);
if (index == -1) return;
this[index] = newId;
}
}
class ServerProvider extends BusyProvider {
final ServersMap _servers = {};
ServersMap get servers => _servers;
final ServerOrder serverOrder = [];
final StringOrder serverOrder = [];
final _limiter = TryLimiter();

View File

@@ -12,3 +12,14 @@ const maxDebugLogLines = 100;
/// Method Channels
const pkgName = 'tech.lolli.toolbox';
const bgRunChannel = MethodChannel('$pkgName/app_retain');
// default server details page cards order
const defaultDetailCardOrder = [
'uptime',
'cpu',
'mem',
'swap',
'disk',
'net',
'temp'
];

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:toolbox/core/persistant_store.dart';
import 'package:toolbox/core/utils/platform.dart';
import 'package:toolbox/data/res/misc.dart';
class SettingStore extends PersistentStore {
StoreProperty<int> get primaryColor => property(
@@ -42,11 +43,15 @@ class SettingStore extends PersistentStore {
/// Backgroud running (Android)
StoreProperty<bool> get bgRun => property('bgRun', defaultValue: isAndroid);
// Server order
/// Server order
StoreProperty<List<String>> get serverOrder =>
property('serverOrder', defaultValue: null);
// SSH term font size
/// Server details page cards order
StoreProperty<List<String>> get detailCardOrder =>
property('detailCardPrder', defaultValue: defaultDetailCardOrder);
/// SSH term font size
StoreProperty<double> get termFontSize =>
property('termFontSize', defaultValue: 13);