1 #ifndef __LIBRARY_CREATOR_H 2 #define __LIBRARY_CREATOR_H 3 4 #include <QObject> 5 #include <QString> 6 #include <QDir> 7 #include <QFile> 8 #include <QByteArray> 9 #include <QRegExp> 10 #include <QProcess> 11 #include <QtCore> 12 #include <QtGui> 13 #include <QMutex> 14 #include <QThread> 15 #include <QSqlDatabase> 16 #include <QModelIndex> 17 18 #include "folder.h" 19 #include "comic_db.h" 20 21 class LibraryCreator : public QThread 22 { 23 Q_OBJECT 24 public: 25 LibraryCreator(); 26 void createLibrary(const QString &source, const QString &target); 27 void updateLibrary(const QString &source, const QString &target); 28 void updateFolder(const QString &source, const QString &target, const QString &folder, const QModelIndex &dest); 29 void stop(); 30 31 private: 32 void processLibrary(const QString &source, const QString &target); 33 enum Mode { CREATOR, 34 UPDATER }; 35 //atributos "globales" durante el proceso de creación y actualización 36 enum Mode _mode; 37 QString _source; 38 QString _target; 39 QString _sourceFolder; //used for partial updates 40 QStringList _nameFilter; 41 QString _databaseConnection; 42 QList<Folder> _currentPathFolders; //lista de folders en el orden en el que están siendo explorados, el último es el folder actual 43 //recursive method 44 void create(QDir currentDirectory); 45 void update(QDir currentDirectory); 46 void run() override; 47 qulonglong insertFolders(); //devuelve el id del último folder añadido (último en la ruta) 48 bool checkCover(const QString &hash); 49 void insertComic(const QString &relativePath, const QFileInfo &fileInfo); 50 //qulonglong insertFolder(qulonglong parentId,const Folder & folder); 51 //qulonglong insertComic(const Comic & comic); 52 bool stopRunning; 53 //LibraryCreator está en modo creación si creation == true; 54 bool creation; 55 bool partialUpdate; 56 QModelIndex folderDestinationModelIndex; 57 58 signals: 59 void finished(); 60 void coverExtracted(QString); 61 void folderUpdated(QString); 62 void comicAdded(QString, QString); 63 void updated(); 64 void created(); 65 void failedCreatingDB(QString); 66 void failedOpeningDB(QString); 67 void updatedCurrentFolder(QModelIndex); 68 }; 69 70 class ThumbnailCreator : public QObject 71 { 72 Q_OBJECT 73 74 public: 75 ThumbnailCreator(QString fileSource, QString target = "", int coverPage = 1); 76 77 private: 78 QString _fileSource; 79 QString _target; 80 QString _currentName; 81 int _numPages; 82 QPair<int, int> _coverSize; 83 QImage _cover; 84 int _coverPage; 85 static bool crash; 86 87 public slots: 88 void create(); getNumPages()89 int getNumPages() { return _numPages; } getCover()90 QPixmap getCover() { return QPixmap::fromImage(_cover); } getOriginalCoverSize()91 QPair<int, int> getOriginalCoverSize() { return _coverSize; } 92 signals: 93 void openingError(QProcess::ProcessError error); 94 }; 95 96 #endif 97