mirror of
https://github.com/venera-app/venera.git
synced 2025-09-27 07:47:24 +00:00
add favorites option to importing comic dialog
This commit is contained in:
@@ -5,6 +5,7 @@ import 'package:venera/foundation/app.dart';
|
|||||||
import 'package:venera/foundation/comic_source/comic_source.dart';
|
import 'package:venera/foundation/comic_source/comic_source.dart';
|
||||||
import 'package:venera/foundation/comic_type.dart';
|
import 'package:venera/foundation/comic_type.dart';
|
||||||
import 'package:venera/foundation/consts.dart';
|
import 'package:venera/foundation/consts.dart';
|
||||||
|
import 'package:venera/foundation/favorites.dart';
|
||||||
import 'package:venera/foundation/history.dart';
|
import 'package:venera/foundation/history.dart';
|
||||||
import 'package:venera/foundation/image_provider/cached_image.dart';
|
import 'package:venera/foundation/image_provider/cached_image.dart';
|
||||||
import 'package:venera/foundation/local.dart';
|
import 'package:venera/foundation/local.dart';
|
||||||
@@ -384,6 +385,10 @@ class _ImportComicsWidgetState extends State<_ImportComicsWidget> {
|
|||||||
|
|
||||||
var height = 200.0;
|
var height = 200.0;
|
||||||
|
|
||||||
|
var folders = LocalFavoritesManager().folderNames;
|
||||||
|
|
||||||
|
String? selectedFolder;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
loading = false;
|
loading = false;
|
||||||
@@ -444,6 +449,19 @@ class _ImportComicsWidgetState extends State<_ImportComicsWidget> {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
ListTile(
|
||||||
|
title: Text("Add to favorites".tl),
|
||||||
|
trailing: Select(
|
||||||
|
current: selectedFolder,
|
||||||
|
values: folders,
|
||||||
|
minWidth: 112,
|
||||||
|
onTap: (v) {
|
||||||
|
setState(() {
|
||||||
|
selectedFolder = folders[v];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
),
|
||||||
|
).paddingHorizontal(8),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Text(info).paddingHorizontal(24),
|
Text(info).paddingHorizontal(24),
|
||||||
],
|
],
|
||||||
@@ -509,8 +527,18 @@ class _ImportComicsWidgetState extends State<_ImportComicsWidget> {
|
|||||||
try {
|
try {
|
||||||
var cache = FilePath.join(App.cachePath, xFile?.name ?? 'temp.cbz');
|
var cache = FilePath.join(App.cachePath, xFile?.name ?? 'temp.cbz');
|
||||||
await xFile!.saveTo(cache);
|
await xFile!.saveTo(cache);
|
||||||
await CBZ.import(File(cache));
|
var comic = await CBZ.import(File(cache));
|
||||||
await File(cache).delete();
|
if (selectedFolder != null) {
|
||||||
|
LocalFavoritesManager().addComic(selectedFolder!, FavoriteItem(
|
||||||
|
id: comic.id,
|
||||||
|
name: comic.title,
|
||||||
|
coverPath: comic.cover,
|
||||||
|
author: comic.subtitle,
|
||||||
|
type: comic.comicType,
|
||||||
|
tags: comic.tags,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
await File(cache).deleteIgnoreError();
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
Log.error("Import Comic", e.toString(), s);
|
Log.error("Import Comic", e.toString(), s);
|
||||||
context.showMessage(message: e.toString());
|
context.showMessage(message: e.toString());
|
||||||
@@ -581,6 +609,16 @@ class _ImportComicsWidgetState extends State<_ImportComicsWidget> {
|
|||||||
}
|
}
|
||||||
for (var comic in comics.values) {
|
for (var comic in comics.values) {
|
||||||
LocalManager().add(comic, LocalManager().findValidId(ComicType.local));
|
LocalManager().add(comic, LocalManager().findValidId(ComicType.local));
|
||||||
|
if (selectedFolder != null) {
|
||||||
|
LocalFavoritesManager().addComic(selectedFolder!, FavoriteItem(
|
||||||
|
id: comic.id,
|
||||||
|
name: comic.title,
|
||||||
|
coverPath: comic.cover,
|
||||||
|
author: comic.subtitle,
|
||||||
|
type: comic.comicType,
|
||||||
|
tags: comic.tags,
|
||||||
|
));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
context.pop();
|
context.pop();
|
||||||
context.showMessage(
|
context.showMessage(
|
||||||
|
@@ -69,7 +69,7 @@ class _LocalComicsPageState extends State<LocalComicsPage> {
|
|||||||
LocalManager().deleteComic(c as LocalComic);
|
LocalManager().deleteComic(c as LocalComic);
|
||||||
}),
|
}),
|
||||||
MenuEntry(
|
MenuEntry(
|
||||||
icon: Icons.delete,
|
icon: Icons.outbox_outlined,
|
||||||
text: "Export as cbz".tl,
|
text: "Export as cbz".tl,
|
||||||
onClick: () async {
|
onClick: () async {
|
||||||
var controller = showLoadingDialog(
|
var controller = showLoadingDialog(
|
||||||
|
@@ -59,7 +59,7 @@ class ComicChapter {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abstract class CBZ {
|
abstract class CBZ {
|
||||||
static Future<void> import(File file) async {
|
static Future<LocalComic> import(File file) async {
|
||||||
var cache = Directory(FilePath.join(App.cachePath, 'cbz_import'));
|
var cache = Directory(FilePath.join(App.cachePath, 'cbz_import'));
|
||||||
if (cache.existsSync()) cache.deleteSync(recursive: true);
|
if (cache.existsSync()) cache.deleteSync(recursive: true);
|
||||||
cache.createSync();
|
cache.createSync();
|
||||||
@@ -130,20 +130,21 @@ abstract class CBZ {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LocalManager().add(
|
var comic = LocalComic(
|
||||||
LocalComic(
|
id: LocalManager().findValidId(ComicType.local),
|
||||||
id: LocalManager().findValidId(ComicType.local),
|
title: metaData.title,
|
||||||
title: metaData.title,
|
subtitle: metaData.author,
|
||||||
subtitle: metaData.author,
|
tags: metaData.tags,
|
||||||
tags: metaData.tags,
|
comicType: ComicType.local,
|
||||||
comicType: ComicType.local,
|
directory: dest.name,
|
||||||
directory: dest.name,
|
chapters: cpMap,
|
||||||
chapters: cpMap,
|
downloadedChapters: cpMap?.keys.toList() ?? [],
|
||||||
downloadedChapters: cpMap?.keys.toList() ?? [],
|
cover: 'cover.${coverFile.path.split('.').last}',
|
||||||
cover: 'cover.${coverFile.path.split('.').last}',
|
createdAt: DateTime.now(),
|
||||||
createdAt: DateTime.now(),
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
|
LocalManager().add(comic);
|
||||||
|
await cache.delete(recursive: true);
|
||||||
|
return comic;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Future<File> export(LocalComic comic) async {
|
static Future<File> export(LocalComic comic) async {
|
||||||
|
Reference in New Issue
Block a user