mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2026-02-20 15:15:15 +01:00
Option in settings to disable SFTP folders-first
This commit is contained in:
@@ -197,6 +197,9 @@ class SettingStore extends PersistentStore {
|
||||
/// Open SFTP with last viewed path
|
||||
late final sftpOpenLastPath = property('sftpOpenLastPath', true);
|
||||
|
||||
/// Show folders first in SFTP file browser
|
||||
late final sftpShowFoldersFirst = property('sftpShowFoldersFirst', true);
|
||||
|
||||
/// Show tip of suspend
|
||||
late final showSuspendTip = property('showSuspendTip', true);
|
||||
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "Einstellungen",
|
||||
"sftpDlPrepare": "Verbindung vorbereiten...",
|
||||
"sftpRmrDirSummary": "Verwenden Sie \"rm -r\", um das Verzeichnis in SFTP zu löschen.",
|
||||
"sftpShowFoldersFirst": "Ordner zuerst anzeigen",
|
||||
"sftpSSHConnected": "SFTP Verbunden",
|
||||
"showDistLogo": "Distributionslogo anzeigen",
|
||||
"shutdown": "Abschaltung",
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "Settings",
|
||||
"sftpDlPrepare": "Preparing to connect...",
|
||||
"sftpRmrDirSummary": "Use `rm -r` to delete a folder in SFTP.",
|
||||
"sftpShowFoldersFirst": "Disply folders first",
|
||||
"sftpSSHConnected": "SFTP Connected",
|
||||
"showDistLogo": "Show distribution logo",
|
||||
"shutdown": "Shutdown",
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "Paramètres",
|
||||
"sftpDlPrepare": "Préparation de la connexion...",
|
||||
"sftpRmrDirSummary": "Utilisez `rm -r` pour supprimer un dossier dans SFTP.",
|
||||
"sftpShowFoldersFirst": "Dossiers d'abord lors du tri",
|
||||
"sftpSSHConnected": "SFTP connecté",
|
||||
"showDistLogo": "Afficher le logo de la distribution",
|
||||
"shutdown": "Éteindre",
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "Pengaturan",
|
||||
"sftpDlPrepare": "Bersiap untuk terhubung ...",
|
||||
"sftpRmrDirSummary": "Gunakan `rm -r` untuk menghapus dir di SFTP",
|
||||
"sftpShowFoldersFirst": "Folder ditampilkan lebih dulu",
|
||||
"sftpSSHConnected": "Sftp terhubung",
|
||||
"showDistLogo": "Tampilkan logo distribusi",
|
||||
"shutdown": "Matikan",
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "设置",
|
||||
"sftpDlPrepare": "准备连接至服务器...",
|
||||
"sftpRmrDirSummary": "在 SFTP 中使用 `rm -r` 来删除文件夹",
|
||||
"sftpShowFoldersFirst": "排序时文件夹显示在前",
|
||||
"sftpSSHConnected": "SFTP 已连接...",
|
||||
"showDistLogo": "显示发行版 Logo",
|
||||
"shutdown": "关机",
|
||||
|
||||
@@ -207,6 +207,7 @@
|
||||
"setting": "設置",
|
||||
"sftpDlPrepare": "準備連接至服務器...",
|
||||
"sftpRmrDirSummary": "在 SFTP 中使用 `rm -r` 來刪除文件夾",
|
||||
"sftpShowFoldersFirst": "排序時文件夾顯示在前",
|
||||
"sftpSSHConnected": "SFTP 已連接...",
|
||||
"showDistLogo": "顯示發行版 Logo",
|
||||
"shutdown": "关机",
|
||||
|
||||
@@ -855,6 +855,7 @@ class _SettingPageState extends State<SettingPage> {
|
||||
children: [
|
||||
_buildSftpRmrDir(),
|
||||
_buildSftpOpenLastPath(),
|
||||
_buildSftpShowFoldersFirst(),
|
||||
].map((e) => CardX(child: e)).toList(),
|
||||
);
|
||||
}
|
||||
@@ -867,6 +868,13 @@ class _SettingPageState extends State<SettingPage> {
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildSftpShowFoldersFirst() {
|
||||
return ListTile(
|
||||
title: Text(l10n.sftpShowFoldersFirst),
|
||||
trailing: StoreSwitch(prop: _setting.sftpShowFoldersFirst),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildNetViewType() {
|
||||
final items = NetViewType.values
|
||||
.map((e) => PopupMenuItem(
|
||||
|
||||
@@ -15,6 +15,7 @@ import 'package:toolbox/data/res/logger.dart';
|
||||
import 'package:toolbox/data/res/misc.dart';
|
||||
import 'package:toolbox/data/res/provider.dart';
|
||||
import 'package:toolbox/data/res/store.dart';
|
||||
import 'package:toolbox/data/store/setting.dart';
|
||||
import 'package:toolbox/view/widget/omit_start_text.dart';
|
||||
import 'package:toolbox/view/widget/cardx.dart';
|
||||
|
||||
@@ -820,11 +821,14 @@ enum _SortType {
|
||||
;
|
||||
|
||||
List<SftpName> sort(List<SftpName> files, {bool reversed = false}) {
|
||||
var comparator = ChainComparator<SftpName>.create();
|
||||
if (Stores.setting.sftpShowFoldersFirst.fetch()) {
|
||||
comparator = comparator.thenTrueFirst((x) => x.attr.isDirectory);
|
||||
}
|
||||
switch (this) {
|
||||
case _SortType.name:
|
||||
files.sort(
|
||||
ChainComparator<SftpName>.create()
|
||||
.thenTrueFirst((x) => x.attr.isDirectory)
|
||||
comparator
|
||||
.thenWithComparator(
|
||||
(a, b) => Comparators.compareStringCaseInsensitive()(
|
||||
a.filename, b.filename),
|
||||
@@ -835,8 +839,7 @@ enum _SortType {
|
||||
break;
|
||||
case _SortType.time:
|
||||
files.sort(
|
||||
ChainComparator<SftpName>.create()
|
||||
.thenTrueFirst((x) => x.attr.isDirectory)
|
||||
comparator
|
||||
.thenCompareBy<num>(
|
||||
(x) => x.attr.modifyTime ?? 0,
|
||||
reversed: reversed,
|
||||
@@ -846,8 +849,7 @@ enum _SortType {
|
||||
break;
|
||||
case _SortType.size:
|
||||
files.sort(
|
||||
ChainComparator<SftpName>.create()
|
||||
.thenTrueFirst((x) => x.attr.isDirectory)
|
||||
comparator
|
||||
.thenCompareBy<num>(
|
||||
(x) => x.attr.size ?? 0,
|
||||
reversed: reversed,
|
||||
|
||||
Reference in New Issue
Block a user