mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 15:57:25 +00:00
Add a button for managing network folders.
This commit is contained in:
@@ -16,6 +16,7 @@ import 'package:venera/foundation/res.dart';
|
|||||||
import 'package:venera/network/download.dart';
|
import 'package:venera/network/download.dart';
|
||||||
import 'package:venera/pages/comic_page.dart';
|
import 'package:venera/pages/comic_page.dart';
|
||||||
import 'package:venera/pages/reader/reader.dart';
|
import 'package:venera/pages/reader/reader.dart';
|
||||||
|
import 'package:venera/pages/settings/settings_page.dart';
|
||||||
import 'package:venera/utils/io.dart';
|
import 'package:venera/utils/io.dart';
|
||||||
import 'package:venera/utils/translations.dart';
|
import 'package:venera/utils/translations.dart';
|
||||||
|
|
||||||
|
@@ -20,22 +20,35 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
|||||||
|
|
||||||
var networkFolders = <String>[];
|
var networkFolders = <String>[];
|
||||||
|
|
||||||
|
void findNetworkFolders() {
|
||||||
|
networkFolders.clear();
|
||||||
|
var all = ComicSource.all()
|
||||||
|
.where((e) => e.favoriteData != null)
|
||||||
|
.map((e) => e.favoriteData!.key)
|
||||||
|
.toList();
|
||||||
|
var settings = appdata.settings['favorites'] as List;
|
||||||
|
for (var p in settings) {
|
||||||
|
if (all.contains(p) && !networkFolders.contains(p)) {
|
||||||
|
networkFolders.add(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
favPage = widget.favPage ??
|
favPage = widget.favPage ??
|
||||||
context.findAncestorStateOfType<_FavoritesPageState>()!;
|
context.findAncestorStateOfType<_FavoritesPageState>()!;
|
||||||
favPage.folderList = this;
|
favPage.folderList = this;
|
||||||
folders = LocalFavoritesManager().folderNames;
|
folders = LocalFavoritesManager().folderNames;
|
||||||
networkFolders = ComicSource.all()
|
findNetworkFolders();
|
||||||
.where((e) => e.favoriteData != null && e.isLogged)
|
appdata.settings.addListener(updateFolders);
|
||||||
.map((e) => e.favoriteData!.key)
|
|
||||||
.toList();
|
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
appdata.settings.removeListener(updateFolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -102,7 +115,8 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
|||||||
onClick: () {
|
onClick: () {
|
||||||
newFolder().then((value) {
|
newFolder().then((value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
folders = LocalFavoritesManager().folderNames;
|
folders =
|
||||||
|
LocalFavoritesManager().folderNames;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -113,7 +127,8 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
|||||||
onClick: () {
|
onClick: () {
|
||||||
sortFolders().then((value) {
|
sortFolders().then((value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
folders = LocalFavoritesManager().folderNames;
|
folders =
|
||||||
|
LocalFavoritesManager().folderNames;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -143,15 +158,24 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
|||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
const SizedBox(width: 16),
|
|
||||||
Icon(
|
Icon(
|
||||||
Icons.cloud,
|
Icons.cloud,
|
||||||
color: context.colorScheme.secondary,
|
color: context.colorScheme.secondary,
|
||||||
),
|
),
|
||||||
const SizedBox(width: 12),
|
const SizedBox(width: 12),
|
||||||
Text("Network".tl),
|
Text("Network".tl),
|
||||||
|
const Spacer(),
|
||||||
|
IconButton(
|
||||||
|
icon: const Icon(Icons.settings),
|
||||||
|
onPressed: () {
|
||||||
|
showPopUpWidget(
|
||||||
|
App.rootContext,
|
||||||
|
setFavoritesPagesWidget(),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
).paddingHorizontal(16),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
index--;
|
index--;
|
||||||
@@ -241,10 +265,7 @@ class _LeftBarState extends State<_LeftBar> implements FolderList {
|
|||||||
if (!mounted) return;
|
if (!mounted) return;
|
||||||
setState(() {
|
setState(() {
|
||||||
folders = LocalFavoritesManager().folderNames;
|
folders = LocalFavoritesManager().folderNames;
|
||||||
networkFolders = ComicSource.all()
|
findNetworkFolders();
|
||||||
.where((e) => e.favoriteData != null)
|
|
||||||
.map((e) => e.favoriteData!.key)
|
|
||||||
.toList();
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -38,19 +38,7 @@ class _ExploreSettingsState extends State<ExploreSettings> {
|
|||||||
).toSliver(),
|
).toSliver(),
|
||||||
_PopupWindowSetting(
|
_PopupWindowSetting(
|
||||||
title: "Network Favorite Pages".tl,
|
title: "Network Favorite Pages".tl,
|
||||||
builder: () {
|
builder: setFavoritesPagesWidget,
|
||||||
var pages = <String, String>{};
|
|
||||||
for (var c in ComicSource.all()) {
|
|
||||||
if (c.favoriteData != null) {
|
|
||||||
pages[c.favoriteData!.key] = c.favoriteData!.title;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return _MultiPagesFilter(
|
|
||||||
title: "Network Favorite Pages".tl,
|
|
||||||
settingsIndex: "favorites",
|
|
||||||
pages: pages,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
).toSliver(),
|
).toSliver(),
|
||||||
_SwitchSetting(
|
_SwitchSetting(
|
||||||
title: "Show favorite status on comic tile".tl,
|
title: "Show favorite status on comic tile".tl,
|
||||||
@@ -209,3 +197,17 @@ Widget setCategoryPagesWidget() {
|
|||||||
pages: pages,
|
pages: pages,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Widget setFavoritesPagesWidget() {
|
||||||
|
var pages = <String, String>{};
|
||||||
|
for (var c in ComicSource.all()) {
|
||||||
|
if (c.favoriteData != null) {
|
||||||
|
pages[c.favoriteData!.key] = c.favoriteData!.title;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _MultiPagesFilter(
|
||||||
|
title: "Network Favorite Pages".tl,
|
||||||
|
settingsIndex: "favorites",
|
||||||
|
pages: pages,
|
||||||
|
);
|
||||||
|
}
|
Reference in New Issue
Block a user