diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index 33e650d8..a8b5ee05 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -1190,6 +1190,12 @@ abstract class S { /// **'s'** String get second; + /// No description provided for @sequence. + /// + /// In en, this message translates to: + /// **'Sequence'** + String get sequence; + /// No description provided for @server. /// /// In en, this message translates to: diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart index ba5b2abf..d93f022e 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -576,6 +576,9 @@ class SDe extends S { @override String get second => 's'; + @override + String get sequence => 'Sequenz'; + @override String get server => 'Server'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index 2b031613..a1212674 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -576,6 +576,9 @@ class SEn extends S { @override String get second => 's'; + @override + String get sequence => 'Sequence'; + @override String get server => 'Server'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart index 4e147951..40c9e2ec 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart @@ -576,6 +576,9 @@ class SId extends S { @override String get second => 'S'; + @override + String get sequence => 'Urutan'; + @override String get server => 'Server'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index 8f1a3c72..87f74921 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -576,6 +576,9 @@ class SZh extends S { @override String get second => '秒'; + @override + String get sequence => '顺序'; + @override String get server => '服务器'; @@ -1347,6 +1350,9 @@ class SZhTw extends SZh { @override String get second => '秒'; + @override + String get sequence => '順序'; + @override String get server => '服務器'; diff --git a/lib/data/res/default.dart b/lib/data/res/default.dart index 162e6bc5..450d2ffa 100644 --- a/lib/data/res/default.dart +++ b/lib/data/res/default.dart @@ -23,6 +23,7 @@ class Defaults { 'overlay', 'run', 'none', + 'shm', ]; static const sshVirtKeys = [ diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 7d8945d8..a0c9bf07 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -182,6 +182,7 @@ "save": "Speichern", "saved": "Gerettet", "second": "s", + "sequence": "Sequenz", "server": "Server", "serverDetailOrder": "Reihenfolge der Widgets auf der Detailseite", "serverOrder": "Server-Bestellung", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 9123525c..a1cd9179 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -182,6 +182,7 @@ "save": "Save", "saved": "Saved", "second": "s", + "sequence": "Sequence", "server": "Server", "serverDetailOrder": "Detail page widget order", "serverOrder": "Server order", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index f6b2c5a6..3bbe4c4f 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -182,6 +182,7 @@ "save": "Menyimpan", "saved": "Diselamatkan", "second": "S", + "sequence": "Urutan", "server": "Server", "serverDetailOrder": "Detail pesanan widget halaman", "serverOrder": "Pesanan server", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index 28eb9afb..5948caab 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -182,6 +182,7 @@ "save": "保存", "saved": "已保存", "second": "秒", + "sequence": "顺序", "server": "服务器", "serverDetailOrder": "详情页部件顺序", "serverOrder": "服务器顺序", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 64959e04..921cb097 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -182,6 +182,7 @@ "save": "保存", "saved": "已保存", "second": "秒", + "sequence": "順序", "server": "服務器", "serverDetailOrder": "詳情頁部件順序", "serverOrder": "服務器順序", diff --git a/lib/view/page/server/detail.dart b/lib/view/page/server/detail.dart index 3b641763..b3e63d7a 100644 --- a/lib/view/page/server/detail.dart +++ b/lib/view/page/server/detail.dart @@ -329,6 +329,11 @@ class _ServerDetailPageState extends State Widget _buildDiskItem(Disk disk, ServerStatus ss) { final (read, write) = ss.diskIO.getReadSpeed(disk.dev); + final text = () { + final use = '${disk.usedPercent}% of ${disk.size}'; + if (read == null || write == null) return use; + return '$use\n↑ $read | ↓ $write'; + }(); return ListTile( title: Text( disk.dev, @@ -337,7 +342,7 @@ class _ServerDetailPageState extends State ), contentPadding: const EdgeInsets.symmetric(vertical: 3, horizontal: 17), subtitle: Text( - '${disk.usedPercent}% of ${disk.size}\n↑ $read | ↓ $write', + text, style: UIs.textSize11, textScaleFactor: _textFactor, ), @@ -374,7 +379,27 @@ class _ServerDetailPageState extends State build: () { return CardX( ExpandTile( - title: Text(l10n.net), + title: Row( + children: [ + Text(l10n.net), + UIs.width13, + InkWell( + onTap: () { + _netSortType.value = _netSortType.value.next; + }, + child: Row( + children: [ + const Icon(Icons.sort, size: 17), + UIs.width7, + Text( + _netSortType.value.name, + style: UIs.textSize11Grey, + ), + ], + ), + ) + ], + ), leading: const Icon(Icons.device_hub, size: 17), initiallyExpanded: children.length <= 7, children: children, @@ -458,6 +483,17 @@ enum _NetSortType { bool get isIn => this == _NetSortType.recv; bool get isOut => this == _NetSortType.trans; + _NetSortType get next { + switch (this) { + case device: + return trans; + case _NetSortType.trans: + return recv; + case recv: + return device; + } + } + int Function(String, String) getSortFunc(NetSpeed ns) { switch (this) { case _NetSortType.device: diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 27fe6ae6..faed7e00 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -212,7 +212,7 @@ class _SettingPageState extends State { return Column( children: [ _buildMoveOutServerFuncBtns(), - _buildServerOrder(), + _buildSequence(), _buildNetViewType(), _buildUpdateInterval(), _buildMaxRetry(), @@ -934,11 +934,11 @@ class _SettingPageState extends State { ); } - Widget _buildServerOrder() { + Widget _buildSequence() { return ExpandTile( - title: Text(l10n.serverOrder), + title: Text(l10n.sequence), subtitle: Text( - '${l10n.serverOrder} / ${l10n.serverDetailOrder}', + '${l10n.serverOrder} / ${l10n.serverDetailOrder} ...', style: UIs.textGrey, ), children: [