mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
Add sorting folders feature
This commit is contained in:
@@ -204,7 +204,8 @@
|
||||
"Select in range": "区间选择",
|
||||
"Finished": "已完成",
|
||||
"Updating": "更新中",
|
||||
"Update Comics Info": "更新漫画信息"
|
||||
"Update Comics Info": "更新漫画信息",
|
||||
"Create Folder": "新建文件夹"
|
||||
},
|
||||
"zh_TW": {
|
||||
"Home": "首頁",
|
||||
@@ -411,6 +412,7 @@
|
||||
"Select in range": "區間選擇",
|
||||
"Finished": "已完成",
|
||||
"Updating": "更新中",
|
||||
"Update Comics Info": "更新漫畫信息"
|
||||
"Update Comics Info": "更新漫畫信息",
|
||||
"Create Folder": "新建文件夾"
|
||||
}
|
||||
}
|
@@ -238,12 +238,12 @@ class LocalFavoritesManager with ChangeNotifier {
|
||||
return folders;
|
||||
}
|
||||
|
||||
void updateOrder(Map<String, int> order) {
|
||||
for (var folder in order.keys) {
|
||||
void updateOrder(List<String> folders) {
|
||||
for (int i = 0; i < folders.length; i++) {
|
||||
_db.execute("""
|
||||
insert or replace into folder_order (folder_name, order_value)
|
||||
values (?, ?);
|
||||
""", [folder, order[folder]]);
|
||||
""", [folders[i], i]);
|
||||
}
|
||||
notifyListeners();
|
||||
}
|
||||
|
@@ -240,3 +240,51 @@ Future<List<FavoriteItem>> updateComicsInfo(String folder) async {
|
||||
|
||||
return comics;
|
||||
}
|
||||
|
||||
Future<void> sortFolders() async {
|
||||
var folders = LocalFavoritesManager().folderNames;
|
||||
|
||||
await showPopUpWidget(
|
||||
App.rootContext,
|
||||
StatefulBuilder(builder: (context, setState) {
|
||||
return PopUpWidgetScaffold(
|
||||
title: "Sort".tl,
|
||||
tailing: [
|
||||
Tooltip(
|
||||
message: "Help".tl,
|
||||
child: IconButton(
|
||||
icon: const Icon(Icons.help_outline),
|
||||
onPressed: () {
|
||||
showInfoDialog(
|
||||
context: context,
|
||||
title: "Reorder".tl,
|
||||
content: "Long press and drag to reorder.".tl,
|
||||
);
|
||||
},
|
||||
),
|
||||
)
|
||||
],
|
||||
body: ReorderableListView.builder(
|
||||
onReorder: (oldIndex, newIndex) {
|
||||
if (oldIndex < newIndex) {
|
||||
newIndex--;
|
||||
}
|
||||
setState(() {
|
||||
var item = folders.removeAt(oldIndex);
|
||||
folders.insert(newIndex, item);
|
||||
});
|
||||
},
|
||||
itemCount: folders.length,
|
||||
itemBuilder: (context, index) {
|
||||
return ListTile(
|
||||
key: ValueKey(folders[index]),
|
||||
title: Text(folders[index]),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}),
|
||||
);
|
||||
|
||||
LocalFavoritesManager().updateOrder(folders);
|
||||
}
|
||||
|
@@ -80,7 +80,6 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||
child: Row(
|
||||
children: [
|
||||
const SizedBox(width: 16),
|
||||
Icon(
|
||||
Icons.local_activity,
|
||||
color: context.colorScheme.secondary,
|
||||
@@ -88,17 +87,19 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
||||
const SizedBox(width: 12),
|
||||
Text("Local".tl),
|
||||
const Spacer(),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.search),
|
||||
color: context.colorScheme.primary,
|
||||
onPressed: () {
|
||||
MenuButton(
|
||||
entries: [
|
||||
MenuEntry(
|
||||
icon: Icons.search,
|
||||
text: 'Search'.tl,
|
||||
onClick: () {
|
||||
context.to(() => const LocalSearchPage());
|
||||
},
|
||||
),
|
||||
IconButton(
|
||||
icon: const Icon(Icons.add),
|
||||
color: context.colorScheme.primary,
|
||||
onPressed: () {
|
||||
MenuEntry(
|
||||
icon: Icons.add,
|
||||
text: 'Create Folder'.tl,
|
||||
onClick: () {
|
||||
newFolder().then((value) {
|
||||
setState(() {
|
||||
folders = LocalFavoritesManager().folderNames;
|
||||
@@ -106,9 +107,21 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
||||
});
|
||||
},
|
||||
),
|
||||
const SizedBox(width: 16),
|
||||
MenuEntry(
|
||||
icon: Icons.reorder,
|
||||
text: 'Sort'.tl,
|
||||
onClick: () {
|
||||
sortFolders().then((value) {
|
||||
setState(() {
|
||||
folders = LocalFavoritesManager().folderNames;
|
||||
});
|
||||
});
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
],
|
||||
).paddingHorizontal(16),
|
||||
);
|
||||
}
|
||||
index--;
|
||||
|
Reference in New Issue
Block a user