diff --git a/YACReader/comic.cpp b/YACReader/comic.cpp index e0e89a75..81abf591 100644 --- a/YACReader/comic.cpp +++ b/YACReader/comic.cpp @@ -6,7 +6,7 @@ #include #include #include -#include "bookmarks.h" +#include "bookmarks.h" //TODO desacoplar la dependencia con bookmarks #include "qnaturalsorting.h" #define EXTENSIONS << "*.jpg" << "*.jpeg" << "*.png" << "*.gif" << "*.tiff" << "*.tif" << "*.bmp" diff --git a/YACReaderLibrary/YACReaderLibrary.pro b/YACReaderLibrary/YACReaderLibrary.pro index 6546ed88..3255faec 100644 --- a/YACReaderLibrary/YACReaderLibrary.pro +++ b/YACReaderLibrary/YACReaderLibrary.pro @@ -34,12 +34,14 @@ HEADERS += comic_flow.h \ ./db/treemodel.h \ ./db/tablemodel.h \ ./db/tableitem.h \ - ./db/comic.h \ + ./db/comic_db.h \ ./db/folder.h \ ./db/library_item.h \ export_comics_info_dialog.h \ import_comics_info_dialog.h \ - ../common/check_new_version.h + ../common/check_new_version.h \ + ../YACReader/comic.h \ + ../YACReader/bookmarks.h SOURCES += comic_flow.cpp \ create_library_dialog.cpp \ @@ -62,12 +64,14 @@ SOURCES += comic_flow.cpp \ ./db/treemodel.cpp \ ./db/tablemodel.cpp \ ./db/tableitem.cpp \ - ./db/comic.cpp \ + ./db/comic_db.cpp \ ./db/folder.cpp \ ./db/library_item.cpp \ export_comics_info_dialog.cpp \ import_comics_info_dialog.cpp \ - ../common/check_new_version.cpp + ../common/check_new_version.cpp \ + ../YACReader/comic.cpp \ + ../YACReader/bookmarks.cpp include(./server/server.pri) diff --git a/YACReaderLibrary/db/comic.cpp b/YACReaderLibrary/db/comic_db.cpp similarity index 91% rename from YACReaderLibrary/db/comic.cpp rename to YACReaderLibrary/db/comic_db.cpp index 5a4866d2..43c9295d 100644 --- a/YACReaderLibrary/db/comic.cpp +++ b/YACReaderLibrary/db/comic_db.cpp @@ -1,4 +1,4 @@ -#include "comic.h" +#include "comic_db.h" #include #include @@ -7,12 +7,12 @@ //----------------------------------------------------------------------------- //COMIC------------------------------------------------------------------------ //----------------------------------------------------------------------------- -Comic::Comic() +ComicDB::ComicDB() { } -Comic::Comic(qulonglong cparentId, QString cname, QString cpath, QString chash, QSqlDatabase & database) +ComicDB::ComicDB(qulonglong cparentId, QString cname, QString cpath, QString chash, QSqlDatabase & database) { parentId = cparentId; name = cname; @@ -28,7 +28,7 @@ Comic::Comic(qulonglong cparentId, QString cname, QString cpath, QString chash, _hasCover = true; } -QList Comic::getComicsFromParent(qulonglong parentId, QSqlDatabase & db) +QList ComicDB::getComicsFromParent(qulonglong parentId, QSqlDatabase & db) { QList list; @@ -37,7 +37,7 @@ QList Comic::getComicsFromParent(qulonglong parentId, QSqlDatabas selectQuery.bindValue(":parentId", parentId); selectQuery.exec(); - Comic * currentItem; + ComicDB * currentItem; while (selectQuery.next()) { QList data; @@ -45,7 +45,7 @@ QList Comic::getComicsFromParent(qulonglong parentId, QSqlDatabas for(int i=0;iid = record.value("id").toULongLong(); currentItem->parentId = record.value(1).toULongLong(); currentItem->name = record.value(2).toString(); @@ -56,7 +56,7 @@ QList Comic::getComicsFromParent(qulonglong parentId, QSqlDatabas list.append(currentItem); else { - Comic * last = static_cast(list.back()); + ComicDB * last = static_cast(list.back()); QString nameLast = last->name; QString nameCurrent = currentItem->name; QList::iterator i; @@ -78,7 +78,7 @@ QList Comic::getComicsFromParent(qulonglong parentId, QSqlDatabas return list; } -bool Comic::load(qulonglong idc, QSqlDatabase & db) +bool ComicDB::load(qulonglong idc, QSqlDatabase & db) { QSqlQuery selectQuery(db); @@ -102,7 +102,7 @@ bool Comic::load(qulonglong idc, QSqlDatabase & db) } -qulonglong Comic::insert(QSqlDatabase & db) +qulonglong ComicDB::insert(QSqlDatabase & db) { //TODO cambiar por info.insert(db) @@ -131,12 +131,12 @@ qulonglong Comic::insert(QSqlDatabase & db) return query.lastInsertId().toULongLong(); } -void Comic::update(QSqlDatabase & db) +void ComicDB::update(QSqlDatabase & db) { } -void Comic::removeFromDB(QSqlDatabase & db) +void ComicDB::removeFromDB(QSqlDatabase & db) { QSqlQuery query(db); query.prepare("DELETE FROM comic WHERE id = :id"); @@ -145,7 +145,7 @@ void Comic::removeFromDB(QSqlDatabase & db) //query.finish(); } -bool Comic::isDir() +bool ComicDB::isDir() { return false; } diff --git a/YACReaderLibrary/db/comic.h b/YACReaderLibrary/db/comic_db.h similarity index 91% rename from YACReaderLibrary/db/comic.h rename to YACReaderLibrary/db/comic_db.h index 8824dd15..83775310 100644 --- a/YACReaderLibrary/db/comic.h +++ b/YACReaderLibrary/db/comic_db.h @@ -114,13 +114,13 @@ private: void copyField(bool * & field, bool * value); }; -class Comic : public LibraryItem +class ComicDB : public LibraryItem { private: bool _hasCover; public: - Comic(); - Comic(qulonglong cparentId, QString cname, QString cpath, QString chash, QSqlDatabase & database); + ComicDB(); + ComicDB(qulonglong cparentId, QString cname, QString cpath, QString chash, QSqlDatabase & database); //Comic(QString fn, QString fp):name(fn),path(fp),knownParent(false), knownId(false){}; static QList getComicsFromParent(qulonglong parentId, QSqlDatabase & db); diff --git a/YACReaderLibrary/db/tableitem.h b/YACReaderLibrary/db/tableitem.h index 969c53af..3911889f 100644 --- a/YACReaderLibrary/db/tableitem.h +++ b/YACReaderLibrary/db/tableitem.h @@ -3,7 +3,7 @@ #include #include -#include "comic.h" +#include "comic_db.h" //! [0] class TableItem diff --git a/YACReaderLibrary/db/tablemodel.cpp b/YACReaderLibrary/db/tablemodel.cpp index 8b90b528..1acdeb46 100644 --- a/YACReaderLibrary/db/tablemodel.cpp +++ b/YACReaderLibrary/db/tablemodel.cpp @@ -274,9 +274,9 @@ void TableModel::setupModelData(QSqlQuery &sqlquery) } } -Comic TableModel::getComic(const QModelIndex & mi) +ComicDB TableModel::getComic(const QModelIndex & mi) { - Comic c; + ComicDB c; QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); c.load(_data.at(mi.row())->data(ID).toULongLong(),db); @@ -286,9 +286,9 @@ Comic TableModel::getComic(const QModelIndex & mi) return c; } -Comic TableModel::_getComic(const QModelIndex & mi) +ComicDB TableModel::_getComic(const QModelIndex & mi) { - Comic c; + ComicDB c; QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); c.load(_data.at(mi.row())->data(ID).toULongLong(),db); @@ -320,7 +320,7 @@ QVector TableModel::setAllComicsRead(bool read) { readList[i] = read; _data.value(i)->data(READ) = QVariant(true); - Comic c; + ComicDB c; c.load(_data.value(i)->data(ID).toULongLong(),db); c.info.read = read; c.info.update(db); @@ -332,9 +332,9 @@ QVector TableModel::setAllComicsRead(bool read) return readList; } -QList TableModel::getComics(QList list) +QList TableModel::getComics(QList list) { - QList comics; + QList comics; QSqlDatabase db = DataBaseManagement::loadDatabase(_databasePath); db.transaction(); diff --git a/YACReaderLibrary/db/tablemodel.h b/YACReaderLibrary/db/tablemodel.h index ebdd0847..da29c83a 100644 --- a/YACReaderLibrary/db/tablemodel.h +++ b/YACReaderLibrary/db/tablemodel.h @@ -7,7 +7,7 @@ #include #include -#include "comic.h" +#include "comic_db.h" class TableItem; @@ -35,17 +35,17 @@ public: //Métodos de conveniencia QStringList getPaths(const QString & _source); QString getComicPath(QModelIndex mi); - Comic getComic(const QModelIndex & mi); //--> para la edición + ComicDB getComic(const QModelIndex & mi); //--> para la edición QVector getReadList(); QVector setAllComicsRead(bool read); - QList getComics(QList list); //--> recupera la información común a los comics seleccionados + QList getComics(QList list); //--> recupera la información común a los comics seleccionados QModelIndex getIndexFromId(quint64 id); //setcomicInfo(QModelIndex & mi); --> inserta en la base datos //setComicInfoForAllComics(); --> inserta la información común a todos los cómics de una sola vez. //setComicInfoForSelectedComis(QList list); -->inserta la información común para los comics seleccionados private: void setupModelData( QSqlQuery &sqlquery); - Comic _getComic(const QModelIndex & mi); + ComicDB _getComic(const QModelIndex & mi); QList _data; QString _databasePath; diff --git a/YACReaderLibrary/library_creator.cpp b/YACReaderLibrary/library_creator.cpp index 171b2d75..05ff1789 100644 --- a/YACReaderLibrary/library_creator.cpp +++ b/YACReaderLibrary/library_creator.cpp @@ -224,7 +224,7 @@ void LibraryCreator::insertComic(const QString & relativePath,const QFileInfo & file.close(); //hash Sha1 del primer 0.5MB + filesize QString hash = QString(crypto.result().toHex().constData()) + QString::number(fileInfo.size()); - Comic comic(_currentPathFolders.last().id,fileInfo.fileName(),relativePath,hash,_database); + ComicDB comic(_currentPathFolders.last().id,fileInfo.fileName(),relativePath,hash,_database); int numPages; if(! ( comic.hasCover() && checkCover(hash))) @@ -246,7 +246,7 @@ void LibraryCreator::update(QDir dirS) QFileInfoList listS = dirS.entryInfoList(); QList folders = Folder::getFoldersFromParent(_currentPathFolders.last().id,_database); - QList comics = Comic::getComicsFromParent(_currentPathFolders.last().id,_database); + QList comics = ComicDB::getComicsFromParent(_currentPathFolders.last().id,_database); QList listD; listD.append(folders); diff --git a/YACReaderLibrary/library_creator.h b/YACReaderLibrary/library_creator.h index 5f17f5e1..c2518d27 100644 --- a/YACReaderLibrary/library_creator.h +++ b/YACReaderLibrary/library_creator.h @@ -15,7 +15,7 @@ #include #include "folder.h" -#include "comic.h" +#include "comic_db.h" class LibraryCreator : public QThread diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index a124c51b..a83f2905 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -841,7 +841,7 @@ void LibraryWindow::setCurrentComicReaded() comicFlow->markSlide(comicFlow->centerIndex()); comicFlow->updateMarks(); - Comic c = dmCV->getComic(comicView->currentIndex()); + ComicDB c = dmCV->getComic(comicView->currentIndex()); c.info.read = true; QSqlDatabase db = DataBaseManagement::loadDatabase(dm->getDatabase()); db.open(); @@ -861,7 +861,7 @@ void LibraryWindow::setCurrentComicUnreaded() comicFlow->unmarkSlide(comicFlow->centerIndex()); comicFlow->updateMarks(); - Comic c = dmCV->getComic(comicView->currentIndex()); + ComicDB c = dmCV->getComic(comicView->currentIndex()); c.info.read = false; QSqlDatabase db = DataBaseManagement::loadDatabase(dm->getDatabase()); db.open(); @@ -1158,8 +1158,8 @@ void LibraryWindow::showProperties() { QModelIndexList indexList = comicView->selectionModel()->selectedRows(); - QList comics = dmCV->getComics(indexList); - Comic c = comics[0]; + QList comics = dmCV->getComics(indexList); + ComicDB c = comics[0]; _comicIdEdited = c.id;//static_cast(indexList[0].internalPointer())->data(4).toULongLong(); //QModelIndex mi = comicView->currentIndex(); @@ -1184,8 +1184,8 @@ void LibraryWindow::asignNumbers() { QModelIndexList indexList = comicView->selectionModel()->selectedRows(); - QList comics = dmCV->getComics(indexList); - Comic c = comics[0]; + QList comics = dmCV->getComics(indexList); + ComicDB c = comics[0]; _comicIdEdited = c.id; int startingNumber = dmCV->getIndexFromId(comics[0].id).row()+1; @@ -1205,7 +1205,7 @@ void LibraryWindow::asignNumbers() for(int i = 0;i LibraryWindow::getFolderComicsFromLibrary(const QString & l { QSqlDatabase db = DataBaseManagement::loadDatabase(libraries.value(libraryName)+"/.yacreaderlibrary"); - QList list = Comic::getComicsFromParent(folderId,db); + QList list = ComicDB::getComicsFromParent(folderId,db); db.close(); QSqlDatabase::removeDatabase(libraries.value(libraryName)); @@ -1365,4 +1365,16 @@ qulonglong LibraryWindow::getParentFromComicFolderId(const QString & libraryName db.close(); QSqlDatabase::removeDatabase(libraries.value(libraryName)); return f.parentId; +} + +ComicDB LibraryWindow::getComicInfo(const QString & libraryName, qulonglong id) +{ + QSqlDatabase db = DataBaseManagement::loadDatabase(libraries.value(libraryName)+"/.yacreaderlibrary"); + + ComicDB comic; + comic.load(id,db); + + db.close(); + QSqlDatabase::removeDatabase(libraries.value(libraryName)); + return comic; } \ No newline at end of file diff --git a/YACReaderLibrary/library_window.h b/YACReaderLibrary/library_window.h index 0364d017..5e77d420 100644 --- a/YACReaderLibrary/library_window.h +++ b/YACReaderLibrary/library_window.h @@ -205,6 +205,7 @@ public: QList getFolderContentFromLibrary(const QString & libraryName, qulonglong folderId); QList getFolderComicsFromLibrary(const QString & libraryName, qulonglong folderId); qulonglong getParentFromComicFolderId(const QString & libraryName, qulonglong id); + ComicDB getComicInfo(const QString & libraryName, qulonglong id); }; #endif diff --git a/YACReaderLibrary/properties_dialog.cpp b/YACReaderLibrary/properties_dialog.cpp index c8cd94d6..d89cecee 100644 --- a/YACReaderLibrary/properties_dialog.cpp +++ b/YACReaderLibrary/properties_dialog.cpp @@ -258,11 +258,11 @@ void PropertiesDialog::createButtonBox() -void PropertiesDialog::setComics(QList comics) +void PropertiesDialog::setComics(QList comics) { this->comics = comics; - Comic comic = comics.at(0); + ComicDB comic = comics.at(0); if(comic.info.title != NULL) title->setText(*comic.info.title); @@ -344,7 +344,7 @@ void PropertiesDialog::setComics(QList comics) this->setWindowTitle(tr("Edit selected comics information")); setCover(QPixmap(":/images/editComic.png")); - QList::iterator itr; + QList::iterator itr; for(itr = ++comics.begin();itr!=comics.end();itr++) { if(itr->info.title == NULL || *(itr->info.title) != title->text()) @@ -425,7 +425,7 @@ void PropertiesDialog::updateComics() QSqlDatabase db = DataBaseManagement::loadDatabase(databasePath); db.open(); db.transaction(); - QList::iterator itr; + QList::iterator itr; for(itr = comics.begin();itr!=comics.end();itr++) { if(itr->info.edited) @@ -483,7 +483,7 @@ void PropertiesDialog::setSize(float sizeFloat) void PropertiesDialog::save() { - QList::iterator itr; + QList::iterator itr; for(itr = comics.begin();itr!=comics.end();itr++) { //Comic & comic = comics[0]; diff --git a/YACReaderLibrary/properties_dialog.h b/YACReaderLibrary/properties_dialog.h index addfeb9a..1952223f 100644 --- a/YACReaderLibrary/properties_dialog.h +++ b/YACReaderLibrary/properties_dialog.h @@ -12,7 +12,7 @@ #include #include -#include "comic.h" +#include "comic_db.h" #include "custom_widgets.h" class PropertiesDialog : public QDialog @@ -94,7 +94,7 @@ void setDisableUniqueValues(bool disabled); - QList comics; + QList comics; void closeEvent ( QCloseEvent * e ); public: PropertiesDialog(QWidget * parent = 0); @@ -102,7 +102,7 @@ QString basePath; public slots: - void setComics(QList comics); + void setComics(QList comics); void updateComics(); void save(); //Deprecated diff --git a/YACReaderLibrary/server/controllers/comiccontroller.cpp b/YACReaderLibrary/server/controllers/comiccontroller.cpp index e69de29b..1123163b 100644 --- a/YACReaderLibrary/server/controllers/comiccontroller.cpp +++ b/YACReaderLibrary/server/controllers/comiccontroller.cpp @@ -0,0 +1,31 @@ +#include "comiccontroller.h" +#include "library_window.h" + +extern LibraryWindow * mw; + +#include "template.h" +#include "../static.h" + +#include "comic_db.h" + +ComicController::ComicController() {} + +void ComicController::service(HttpRequest& request, HttpResponse& response) +{ + response.setHeader("Content-Type", "plain/text; charset=ISO-8859-1"); + + QStringList pathElements = ((QString)request.getPath()).split('/'); + QString libraryName = pathElements.at(2); + qulonglong comicId = pathElements.at(4).toULongLong(); + + ComicDB comic = mw->getComicInfo(libraryName, comicId); + + response.writeText(QString("comicid:%1\n").arg(comic.id)); + response.writeText(QString("hash:%1\n").arg(comic.info.hash)); + response.writeText(QString("path:%1\n").arg(comic.path)); + response.writeText(QString("numpages:%1\n").arg(*comic.info.numPages)); + response.writeText(QString("library:%1\n").arg(libraryName),true); + + //response.write(t.toLatin1(),true); + +} \ No newline at end of file diff --git a/YACReaderLibrary/server/controllers/comiccontroller.h b/YACReaderLibrary/server/controllers/comiccontroller.h index e69de29b..11f3a88a 100644 --- a/YACReaderLibrary/server/controllers/comiccontroller.h +++ b/YACReaderLibrary/server/controllers/comiccontroller.h @@ -0,0 +1,20 @@ +#ifndef COMICCONTROLLER_H +#define COMICCONTROLLER_H + +#include "httprequest.h" +#include "httpresponse.h" +#include "httprequesthandler.h" + +class ComicController : public HttpRequestHandler { + Q_OBJECT + Q_DISABLE_COPY(ComicController); +public: + + /** Constructor */ + ComicController(); + + /** Generates the response */ + void service(HttpRequest& request, HttpResponse& response); +}; + +#endif // COMICCONTROLLER_H diff --git a/YACReaderLibrary/server/controllers/foldercontroller.cpp b/YACReaderLibrary/server/controllers/foldercontroller.cpp index 824755c6..3d29d1e3 100644 --- a/YACReaderLibrary/server/controllers/foldercontroller.cpp +++ b/YACReaderLibrary/server/controllers/foldercontroller.cpp @@ -103,7 +103,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) while(jinfo.title == 0 || comic->info.title->isEmpty()) t.setVariable(QString("elementcomic%1.name").arg(j),comic->name); //else diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp index 59755b33..63507f39 100644 --- a/YACReaderLibrary/server/requestmapper.cpp +++ b/YACReaderLibrary/server/requestmapper.cpp @@ -15,6 +15,7 @@ #include "controllers/librariescontroller.h" #include "controllers/foldercontroller.h" #include "controllers/covercontroller.h" +#include "controllers/comiccontroller.h" RequestMapper::RequestMapper(QObject* parent) :HttpRequestHandler(parent) {} @@ -30,40 +31,26 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { } //listar el contenido del folder - if(path.contains("folder") && !path.contains("info")) + else if(path.contains("folder") && !path.contains("info")) { FolderController().service(request, response); } - if(path.contains("cover") ) + else if(path.contains("cover") ) { CoverController().service(request, response); + } + else if(path.contains("comic") && !path.contains("page")) + { + ComicController().service(request, response); + } + else if(path.contains("page")) + { + } else { - if (path.startsWith("/dump")) { - DumpController().service(request, response); - } - - else if (path.startsWith("/template")) { - TemplateController().service(request, response); - } - - else if (path.startsWith("/form")) { - FormController().service(request, response); - } - - else if (path.startsWith("/file")) { - FileUploadController().service(request, response); - } - - else if (path.startsWith("/session")) { - SessionController().service(request, response); - } - - // All other pathes are mapped to the static file controller. - else { Static::staticFileController->service(request, response); - } } + }