1 #include "console_ui_library_creator.h"
2
3 #include <iostream>
4
5 #include "library_creator.h"
6 #include "yacreader_libraries.h"
7
ConsoleUILibraryCreator(QObject * parent)8 ConsoleUILibraryCreator::ConsoleUILibraryCreator(QObject *parent)
9 : QObject(parent), numComicsProcessed(0)
10 {
11 }
12
createLibrary(const QString & name,const QString & path)13 void ConsoleUILibraryCreator::createLibrary(const QString &name, const QString &path)
14 {
15 QDir pathDir(path);
16 if (!pathDir.exists()) {
17 std::cout << "Directory not found." << std::endl;
18 return;
19 }
20
21 QEventLoop eventLoop;
22 LibraryCreator *libraryCreator = new LibraryCreator();
23 QString cleanPath = QDir::cleanPath(pathDir.absolutePath());
24
25 YACReaderLibraries yacreaderLibraries;
26 yacreaderLibraries.load();
27 if (yacreaderLibraries.contains(name)) {
28 std::cout << "A Library named \"" << name.toUtf8().constData() << "\" already exists in database." << std::endl;
29 delete libraryCreator;
30 return;
31 }
32
33 libraryCreator->createLibrary(cleanPath, QDir::cleanPath(pathDir.absolutePath() + "/.yacreaderlibrary"));
34
35 connect(libraryCreator, &LibraryCreator::finished, this, &ConsoleUILibraryCreator::done);
36 connect(libraryCreator, &LibraryCreator::comicAdded, this, &ConsoleUILibraryCreator::newComic);
37 connect(libraryCreator, &LibraryCreator::failedCreatingDB, this, &ConsoleUILibraryCreator::manageCreatingError);
38
39 connect(libraryCreator, &LibraryCreator::finished, &eventLoop, &QEventLoop::quit);
40
41 std::cout << "Processing comics";
42
43 libraryCreator->start();
44 eventLoop.exec();
45
46 yacreaderLibraries.addLibrary(name, cleanPath);
47 yacreaderLibraries.save();
48 }
49
updateLibrary(const QString & path)50 void ConsoleUILibraryCreator::updateLibrary(const QString &path)
51 {
52 QDir pathDir(path);
53 if (!pathDir.exists()) {
54 std::cout << "Directory not found." << std::endl;
55 return;
56 }
57
58 QEventLoop eventLoop;
59 LibraryCreator *libraryCreator = new LibraryCreator();
60 QString cleanPath = QDir::cleanPath(pathDir.absolutePath());
61
62 libraryCreator->updateLibrary(cleanPath, QDir::cleanPath(pathDir.absolutePath() + "/.yacreaderlibrary"));
63
64 connect(libraryCreator, &LibraryCreator::finished, this, &ConsoleUILibraryCreator::done);
65 connect(libraryCreator, &LibraryCreator::comicAdded, this, &ConsoleUILibraryCreator::newComic);
66 connect(libraryCreator, &LibraryCreator::failedOpeningDB, this, &ConsoleUILibraryCreator::manageUpdatingError);
67
68 connect(libraryCreator, &LibraryCreator::finished, &eventLoop, &QEventLoop::quit);
69
70 std::cout << "Processing comics";
71
72 libraryCreator->start();
73 eventLoop.exec();
74 }
75
addExistingLibrary(const QString & name,const QString & path)76 void ConsoleUILibraryCreator::addExistingLibrary(const QString &name, const QString &path)
77 {
78 QDir pathDir(path);
79 if (!pathDir.exists()) {
80 std::cout << "Directory not found." << std::endl;
81 return;
82 }
83 QString cleanPath = QDir::cleanPath(pathDir.absolutePath());
84
85 if (!QDir(cleanPath + "/.yacreaderlibrary").exists()) {
86 std::cout << "No library database found in directory." << std::endl;
87 return;
88 }
89
90 YACReaderLibraries yacreaderLibraries;
91 yacreaderLibraries.load();
92 if (yacreaderLibraries.contains(name)) {
93 std::cout << "A Library named \"" << name.toUtf8().constData() << "\" already exists in the database." << std::endl;
94 return;
95 }
96 yacreaderLibraries.addLibrary(name, cleanPath);
97 yacreaderLibraries.save();
98
99 std::cout << "Library added : " << name.toUtf8().constData() << " at " << cleanPath.toUtf8().constData() << std::endl;
100 }
101
removeLibrary(const QString & name)102 void ConsoleUILibraryCreator::removeLibrary(const QString &name)
103 {
104 //TODO add error handling
105 YACReaderLibraries yacreaderLibraries;
106 yacreaderLibraries.load();
107 if (!yacreaderLibraries.contains(name)) {
108 std::cout << "No Library named \"" << name.toUtf8().constData() << "\" in database." << std::endl;
109 return;
110 }
111 yacreaderLibraries.remove(name);
112 yacreaderLibraries.save();
113
114 std::cout << "Library removed : " << name.toUtf8().constData() << std::endl;
115 }
116
newComic(const QString &,const QString &)117 void ConsoleUILibraryCreator::newComic(const QString & /*relativeComicPath*/, const QString & /*coverPath*/)
118 {
119 numComicsProcessed++;
120 std::cout << ".";
121 }
122
manageCreatingError(const QString & error)123 void ConsoleUILibraryCreator::manageCreatingError(const QString &error)
124 {
125 std::cout << std::endl
126 << "Error creating library! " << error.toUtf8().constData() << std::endl;
127 }
128
manageUpdatingError(const QString & error)129 void ConsoleUILibraryCreator::manageUpdatingError(const QString &error)
130 {
131 std::cout << std::endl
132 << "Error updating library! " << error.toUtf8().constData() << std::endl;
133 }
134
done()135 void ConsoleUILibraryCreator::done()
136 {
137 std::cout << "Done!" << std::endl;
138
139 if (numComicsProcessed > 0)
140 std::cout << "Number of comics processed = " << numComicsProcessed << std::endl;
141 }
142