diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n.dart b/.dart_tool/flutter_gen/gen_l10n/l10n.dart index ec919b4a..c3db0897 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n.dart @@ -416,6 +416,12 @@ abstract class S { /// **'{count} container running.'** String dockerStatusRunningFmt(Object count); + /// No description provided for @doubleColumnMode. + /// + /// In en, this message translates to: + /// **'Double column mode'** + String get doubleColumnMode; + /// No description provided for @download. /// /// 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 446f987c..bb2220a9 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_de.dart @@ -171,6 +171,9 @@ class SDe extends S { return '$count Container aktiv'; } + @override + String get doubleColumnMode => 'Doppelspaltiger Modus'; + @override String get download => 'Download'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart index c2dc35b6..eabdb9c9 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_en.dart @@ -171,6 +171,9 @@ class SEn extends S { return '$count container running.'; } + @override + String get doubleColumnMode => 'Double column mode'; + @override String get download => 'Download'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart index a47719d0..e96a80de 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_id.dart @@ -171,6 +171,9 @@ class SId extends S { return '$count wadah berjalan.'; } + @override + String get doubleColumnMode => 'Mode kolom ganda'; + @override String get download => 'Unduh'; diff --git a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart index 24cfae9d..e2d27bde 100644 --- a/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart +++ b/.dart_tool/flutter_gen/gen_l10n/l10n_zh.dart @@ -171,6 +171,9 @@ class SZh extends S { return '$count个容器正在运行'; } + @override + String get doubleColumnMode => '双列模式'; + @override String get download => '下载'; @@ -897,6 +900,9 @@ class SZhTw extends SZh { return '$count個容器正在運行'; } + @override + String get doubleColumnMode => '雙列模式'; + @override String get download => '下載'; diff --git a/lib/data/store/setting.dart b/lib/data/store/setting.dart index d318996d..46c6125f 100644 --- a/lib/data/store/setting.dart +++ b/lib/data/store/setting.dart @@ -27,6 +27,8 @@ class SettingStore extends PersistentStore { 'timeOut', 5, ); + /// Duration of [timeout] + Duration get timeoutD => Duration(seconds: timeout.fetch()); /// Record history of SFTP path and etc. late final recordHistory = StoreProperty( @@ -64,9 +66,6 @@ class SettingStore extends PersistentStore { defaultLaunchPageIdx, ); - // Version of store db - late final storeVersion = StoreProperty(box, 'storeVersion', 0); - late final termColorIdx = StoreProperty(box, 'termColorIdx', 0); // Max retry count when connect to server @@ -184,6 +183,17 @@ class SettingStore extends PersistentStore { false, ); - /// Duration of [timeout] - Duration get timeoutD => Duration(seconds: timeout.fetch()); + /// Use double column servers page on Desktop + late final doubleColumnServersPage = StoreProperty( + box, + 'doubleColumnServersPage', + isDesktop, + ); + + // Never show these settings for users + // ------BEGIN------ + + /// Version of store db + late final storeVersion = StoreProperty(box, 'storeVersion', 0); + // ------END------ } diff --git a/lib/l10n/app_de.arb b/lib/l10n/app_de.arb index 8a9c5787..2a1cbda5 100644 --- a/lib/l10n/app_de.arb +++ b/lib/l10n/app_de.arb @@ -53,6 +53,7 @@ "dockerNotInstalled": "Docker ist nicht installiert", "dockerStatusRunningAndStoppedFmt": "{runningCount} aktiv, {stoppedCount} container gestoppt.", "dockerStatusRunningFmt": "{count} Container aktiv", + "doubleColumnMode": "Doppelspaltiger Modus", "download": "Download", "edit": "Bearbeiten", "editVirtKeys": "Virtuelle Tasten bearbeiten", diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 0829ab56..2873039a 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -53,6 +53,7 @@ "dockerNotInstalled": "Docker not installed", "dockerStatusRunningAndStoppedFmt": "{runningCount} running, {stoppedCount} container stopped.", "dockerStatusRunningFmt": "{count} container running.", + "doubleColumnMode": "Double column mode", "download": "Download", "edit": "Edit", "editVirtKeys": "Edit virtual keys", diff --git a/lib/l10n/app_id.arb b/lib/l10n/app_id.arb index f94c6a78..5bcdc4ce 100644 --- a/lib/l10n/app_id.arb +++ b/lib/l10n/app_id.arb @@ -53,6 +53,7 @@ "dockerNotInstalled": "Docker tidak terpasang", "dockerStatusRunningAndStoppedFmt": "{runningCount} running, {stoppedCount} container stopped.", "dockerStatusRunningFmt": "{count} wadah berjalan.", + "doubleColumnMode": "Mode kolom ganda", "download": "Unduh", "edit": "Edit", "editVirtKeys": "Edit kunci virtual", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index cd632599..9cb96310 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -53,6 +53,7 @@ "dockerNotInstalled": "Docker 未安装", "dockerStatusRunningAndStoppedFmt": "{runningCount}个正在运行, {stoppedCount}个已停止", "dockerStatusRunningFmt": "{count}个容器正在运行", + "doubleColumnMode": "双列模式", "download": "下载", "edit": "编辑", "editVirtKeys": "编辑虚拟按键", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index af14e4ad..d20fac47 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -53,6 +53,7 @@ "dockerNotInstalled": "Docker 未安裝", "dockerStatusRunningAndStoppedFmt": "{runningCount}個正在運行, {stoppedCount}個已停止", "dockerStatusRunningFmt": "{count}個容器正在運行", + "doubleColumnMode": "雙列模式", "download": "下載", "edit": "編輯", "editVirtKeys": "編輯虛擬按鍵", diff --git a/lib/view/page/server/tab.dart b/lib/view/page/server/tab.dart index 5fa8cb38..82c2ccea 100644 --- a/lib/view/page/server/tab.dart +++ b/lib/view/page/server/tab.dart @@ -36,22 +36,15 @@ class ServerPage extends StatefulWidget { class _ServerPageState extends State with AutomaticKeepAliveClientMixin, AfterLayoutMixin { late MediaQueryData _media; - late ServerProvider _serverProvider; - late SettingStore _settingStore; late S _s; final _flipedCardIds = {}; + final _serverProvider = locator(); + final _setting = locator(); String? _tag; bool _useDoubleColumn = false; - @override - void initState() { - super.initState(); - _serverProvider = locator(); - _settingStore = locator(); - } - @override void didChangeDependencies() { super.didChangeDependencies(); @@ -90,7 +83,7 @@ class _ServerPageState extends State } final filtered = _filterServers(pro); - if (_useDoubleColumn) { + if (_useDoubleColumn && _setting.doubleColumnServersPage.fetch()) { return _buildBodyMedium(pro); } return _buildBodySmall(provider: pro, filtered: filtered); @@ -297,9 +290,9 @@ class _ServerPageState extends State ), ), height13, - if (_settingStore.moveOutServerTabFuncBtns.fetch() && + if (_setting.moveOutServerTabFuncBtns.fetch() && // Discussion #146 - !_settingStore.serverTabUseOldUI.fetch()) + !_setting.serverTabUseOldUI.fetch()) SizedBox( height: 27, child: ServerFuncBtns(spi: spi, s: _s), @@ -325,7 +318,7 @@ class _ServerPageState extends State ), ), ); - } else if (_settingStore.serverTabUseOldUI.fetch()) { + } else if (_setting.serverTabUseOldUI.fetch()) { rightCorner = ServerFuncBtnsTopRight(spi: spi, s: _s); } return Padding( @@ -400,7 +393,7 @@ class _ServerPageState extends State Widget _buildNet(ServerStatus ss) { return ValueListenableBuilder( - valueListenable: _settingStore.netViewType.listenable(), + valueListenable: _setting.netViewType.listenable(), builder: (_, val, __) { final data = val.build(ss); return AnimatedSwitcher( @@ -518,9 +511,9 @@ class _ServerPageState extends State if (_flipedCardIds.contains(id)) { return 77.0; } - if (_settingStore.moveOutServerTabFuncBtns.fetch() && + if (_setting.moveOutServerTabFuncBtns.fetch() && // Discussion #146 - !_settingStore.serverTabUseOldUI.fetch()) { + !_setting.serverTabUseOldUI.fetch()) { return 132; } return 107; diff --git a/lib/view/page/setting/entry.dart b/lib/view/page/setting/entry.dart index 071ae8f3..1e903dbc 100644 --- a/lib/view/page/setting/entry.dart +++ b/lib/view/page/setting/entry.dart @@ -204,6 +204,7 @@ class _SettingPageState extends State { _buildMaxRetry(), _buildDiskIgnorePath(), _buildDeleteServers(), + if (isDesktop) _buildDoubleColumnServersPage(), ].map((e) => RoundRectCard(e)).toList(), ); } @@ -1057,4 +1058,11 @@ class _SettingPageState extends State { trailing: buildSwitch(context, _setting.sftpRmrfDir), ); } + + Widget _buildDoubleColumnServersPage() { + return ListTile( + title: Text(_s.doubleColumnMode), + trailing: buildSwitch(context, _setting.doubleColumnServersPage), + ); + } }