mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
added sync back reading progress for remote reading
added covers to remote folders (it could cause performance issues) added read next/previous to remote reading
This commit is contained in:
parent
093b2b0cb1
commit
d584fc2879
@ -28,8 +28,7 @@ LIBS += -lpoppler-qt4
|
|||||||
INCLUDEPATH += ../dependencies/poppler/include/qt4
|
INCLUDEPATH += ../dependencies/poppler/include/qt4
|
||||||
}
|
}
|
||||||
|
|
||||||
QMAKE_CXXFLAGS_RELEASE += /MP /Ob2 /Oi /Ot /GT /GL
|
|
||||||
QMAKE_LFLAGS_RELEASE += /LTCG
|
|
||||||
CONFIG -= embed_manifest_exe
|
CONFIG -= embed_manifest_exe
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "qnaturalsorting.h"
|
#include "qnaturalsorting.h"
|
||||||
|
|
||||||
|
#include "QsLog.h"
|
||||||
//server
|
//server
|
||||||
|
|
||||||
YACReaderLibraries DBHelper::getLibraries()
|
YACReaderLibraries DBHelper::getLibraries()
|
||||||
@ -296,6 +297,21 @@ void DBHelper::update(const Folder & folder, QSqlDatabase &db)
|
|||||||
updateFolderInfo.bindValue(":id", folder.id);
|
updateFolderInfo.bindValue(":id", folder.id);
|
||||||
updateFolderInfo.exec();
|
updateFolderInfo.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DBHelper::updateProgress(qulonglong libraryId, const ComicInfo &comicInfo)
|
||||||
|
{
|
||||||
|
QString libraryPath = DBHelper::getLibraries().getPath(libraryId);
|
||||||
|
QSqlDatabase db = DataBaseManagement::loadDatabase(libraryPath+"/.yacreaderlibrary");
|
||||||
|
|
||||||
|
ComicDB comic = DBHelper::loadComic(comicInfo.id,db);
|
||||||
|
comic.info.currentPage = comicInfo.currentPage;
|
||||||
|
comic.info.hasBeenOpened = true;
|
||||||
|
|
||||||
|
DBHelper::update(&comic.info,db);
|
||||||
|
|
||||||
|
db.close();
|
||||||
|
QSqlDatabase::removeDatabase(libraryPath);
|
||||||
|
}
|
||||||
//inserts
|
//inserts
|
||||||
qulonglong DBHelper::insert(Folder * folder, QSqlDatabase & db)
|
qulonglong DBHelper::insert(Folder * folder, QSqlDatabase & db)
|
||||||
{
|
{
|
||||||
|
@ -42,6 +42,7 @@ public:
|
|||||||
static void update(ComicInfo * comicInfo, QSqlDatabase & db);
|
static void update(ComicInfo * comicInfo, QSqlDatabase & db);
|
||||||
static void updateRead(ComicInfo * comicInfo, QSqlDatabase & db);
|
static void updateRead(ComicInfo * comicInfo, QSqlDatabase & db);
|
||||||
static void update(const Folder & folder, QSqlDatabase & db);
|
static void update(const Folder & folder, QSqlDatabase & db);
|
||||||
|
static void updateProgress(qulonglong libraryId,const ComicInfo & comicInfo); //TODO change libraryName by libraryId in all methods.
|
||||||
//queries
|
//queries
|
||||||
static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true);
|
static QList<LibraryItem *> getFoldersFromParent(qulonglong parentId, QSqlDatabase & db, bool sort = true);
|
||||||
static QList<ComicDB> getSortedComicsFromParent(qulonglong parentId, QSqlDatabase & db);
|
static QList<ComicDB> getSortedComicsFromParent(qulonglong parentId, QSqlDatabase & db);
|
||||||
|
@ -100,6 +100,8 @@
|
|||||||
<file>../images/comic_vine/downArrow.png</file>
|
<file>../images/comic_vine/downArrow.png</file>
|
||||||
<file>../images/comic_vine/upArrow.png</file>
|
<file>../images/comic_vine/upArrow.png</file>
|
||||||
<file>../images/find_folder.png</file>
|
<file>../images/find_folder.png</file>
|
||||||
|
<file>../images/f.png</file>
|
||||||
|
<file>../images/f_retina.png</file>
|
||||||
<!--<file>../images/busy_background.png</file>-->
|
<!--<file>../images/busy_background.png</file>-->
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
@ -97,9 +97,9 @@ void ComicController::service(HttpRequest& request, HttpResponse& response)
|
|||||||
{
|
{
|
||||||
//ERROR
|
//ERROR
|
||||||
}
|
}
|
||||||
response.writeText(comic.toTXT(),true);
|
|
||||||
qDeleteAll(siblings);
|
qDeleteAll(siblings);
|
||||||
}
|
}
|
||||||
|
response.writeText(comic.toTXT(),true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,8 @@ void CoverController::service(HttpRequest& request, HttpResponse& response)
|
|||||||
QString libraryName = DBHelper::getLibraryName(pathElements.at(2).toInt());
|
QString libraryName = DBHelper::getLibraryName(pathElements.at(2).toInt());
|
||||||
QString fileName = pathElements.at(4);
|
QString fileName = pathElements.at(4);
|
||||||
|
|
||||||
|
bool folderCover = request.getParameter("folderCover").length()>0;
|
||||||
|
|
||||||
//response.writeText(path+"<br/>");
|
//response.writeText(path+"<br/>");
|
||||||
//response.writeText(libraryName+"<br/>");
|
//response.writeText(libraryName+"<br/>");
|
||||||
//response.writeText(libraries.value(libraryName)+"/.yacreaderlibrary/covers/"+fileName+"<br/>");
|
//response.writeText(libraries.value(libraryName)+"/.yacreaderlibrary/covers/"+fileName+"<br/>");
|
||||||
@ -62,6 +64,14 @@ void CoverController::service(HttpRequest& request, HttpResponse& response)
|
|||||||
|
|
||||||
p.drawImage((width-img.width())/2,(height-img.height())/2,img);
|
p.drawImage((width-img.width())/2,(height-img.height())/2,img);
|
||||||
|
|
||||||
|
if(folderCover)
|
||||||
|
{
|
||||||
|
if(session.getDisplayType()=="@2x")
|
||||||
|
p.drawImage(0,0,QImage(":/images/f_retina.png"));
|
||||||
|
else
|
||||||
|
p.drawImage(0,0,QImage(":/images/f.png"));
|
||||||
|
}
|
||||||
|
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
QBuffer buffer(&ba);
|
QBuffer buffer(&ba);
|
||||||
buffer.open(QIODevice::WriteOnly);
|
buffer.open(QIODevice::WriteOnly);
|
||||||
|
@ -180,7 +180,15 @@ void FolderController::service(HttpRequest& request, HttpResponse& response)
|
|||||||
if(item->isDir())
|
if(item->isDir())
|
||||||
{
|
{
|
||||||
t.setVariable(QString("element%1.class").arg(i),"folder");
|
t.setVariable(QString("element%1.class").arg(i),"folder");
|
||||||
t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png");
|
|
||||||
|
QList<LibraryItem *> children = DBHelper::getFolderComicsFromLibrary(libraryName, item->id);
|
||||||
|
if(children.length()>0)
|
||||||
|
{
|
||||||
|
const ComicDB * comic = static_cast<ComicDB*>(children.at(0));
|
||||||
|
t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg?folderCover=true").arg(libraryId).arg(comic->info.hash));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png");
|
||||||
|
|
||||||
t.setVariable(QString("element%1.browse").arg(i),QString("<a class =\"browseButton\" href=\"%1\">browse</a>").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id)));
|
t.setVariable(QString("element%1.browse").arg(i),QString("<a class =\"browseButton\" href=\"%1\">browse</a>").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id)));
|
||||||
|
|
||||||
@ -217,7 +225,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response)
|
|||||||
if(comic->info.hasBeenOpened)
|
if(comic->info.hasBeenOpened)
|
||||||
t.setVariable(QString("element%1.pages").arg(i),QString("<span class=\"numPages\">%1/%2 pages</span>").arg(comic->info.currentPage).arg(comic->info.numPages.toInt()));
|
t.setVariable(QString("element%1.pages").arg(i),QString("<span class=\"numPages\">%1/%2 pages</span>").arg(comic->info.currentPage).arg(comic->info.numPages.toInt()));
|
||||||
else
|
else
|
||||||
t.setVariable(QString("element%1.pages").arg(i),QString("<span class=\"numPages\">%1</span>").arg(comic->info.numPages.toInt()));
|
t.setVariable(QString("element%1.pages").arg(i),QString("<span class=\"numPages\">%1 pages</span>").arg(comic->info.numPages.toInt()));
|
||||||
|
|
||||||
if(comic->info.read)
|
if(comic->info.read)
|
||||||
t.setVariable(QString("element%1.status").arg(i), QString("<div class=\"mark\"><img src=\"/images/readMark.png\" style = \"width: 15px\"/> </div>"));
|
t.setVariable(QString("element%1.status").arg(i), QString("<div class=\"mark\"><img src=\"/images/readMark.png\" style = \"width: 15px\"/> </div>"));
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
#include "updatecomiccontroller.h"
|
||||||
|
|
||||||
|
#include "db_helper.h"
|
||||||
|
#include "yacreader_libraries.h"
|
||||||
|
|
||||||
|
#include "template.h"
|
||||||
|
#include "../static.h"
|
||||||
|
|
||||||
|
#include "comic_db.h"
|
||||||
|
#include "comic.h"
|
||||||
|
|
||||||
|
#include "QsLog.h"
|
||||||
|
|
||||||
|
UpdateComicController::UpdateComicController(){}
|
||||||
|
|
||||||
|
void UpdateComicController::service(HttpRequest &request, HttpResponse &response)
|
||||||
|
{
|
||||||
|
HttpSession session=Static::sessionStore->getSession(request,response,false);
|
||||||
|
|
||||||
|
QString path = QUrl::fromPercentEncoding(request.getPath()).toLatin1();
|
||||||
|
QStringList pathElements = path.split('/');
|
||||||
|
qulonglong libraryId = pathElements.at(2).toULongLong();
|
||||||
|
QString libraryName = DBHelper::getLibraryName(libraryId);
|
||||||
|
qulonglong comicId = pathElements.at(4).toULongLong();
|
||||||
|
|
||||||
|
QString postData = QString::fromUtf8(request.getBody());
|
||||||
|
|
||||||
|
QLOG_INFO() << "POST DATA: " << postData;
|
||||||
|
|
||||||
|
if(postData.length()>0) {
|
||||||
|
QList<QString> data = postData.split("\n");
|
||||||
|
int currentPage = data.at(0).split(":").at(1).toInt();
|
||||||
|
ComicInfo info;
|
||||||
|
info.currentPage = currentPage;
|
||||||
|
info.id = comicId;
|
||||||
|
DBHelper::updateProgress(libraryId,info);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
response.setStatus(412,"No comic info received");
|
||||||
|
response.writeText("",true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
response.write("OK",true);
|
||||||
|
}
|
22
YACReaderLibrary/server/controllers/updatecomiccontroller.h
Normal file
22
YACReaderLibrary/server/controllers/updatecomiccontroller.h
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
#ifndef UPDATECOMICCONTROLLER_H
|
||||||
|
#define UPDATECOMICCONTROLLER_H
|
||||||
|
|
||||||
|
|
||||||
|
#include "httprequest.h"
|
||||||
|
#include "httpresponse.h"
|
||||||
|
#include "httprequesthandler.h"
|
||||||
|
|
||||||
|
|
||||||
|
class UpdateComicController : public HttpRequestHandler
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_DISABLE_COPY(UpdateComicController);
|
||||||
|
|
||||||
|
public:
|
||||||
|
UpdateComicController();
|
||||||
|
|
||||||
|
/** Generates the response */
|
||||||
|
void service(HttpRequest& request, HttpResponse& response);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // UPDATECOMICCONTROLLER_H
|
@ -18,6 +18,7 @@
|
|||||||
#include "controllers/comiccontroller.h"
|
#include "controllers/comiccontroller.h"
|
||||||
#include "controllers/folderinfocontroller.h"
|
#include "controllers/folderinfocontroller.h"
|
||||||
#include "controllers/pagecontroller.h"
|
#include "controllers/pagecontroller.h"
|
||||||
|
#include "controllers/updatecomiccontroller.h"
|
||||||
#include "controllers/errorcontroller.h"
|
#include "controllers/errorcontroller.h"
|
||||||
|
|
||||||
#include "db_helper.h"
|
#include "db_helper.h"
|
||||||
@ -34,6 +35,7 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
|
|||||||
QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info
|
QRegExp folderInfo("/library/.+/folder/[0-9]+/info/?"); //get folder info
|
||||||
QRegExp comic("/library/.+/comic/[0-9]+/?"); //get comic info
|
QRegExp comic("/library/.+/comic/[0-9]+/?"); //get comic info
|
||||||
QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic
|
QRegExp comicOpen("/library/.+/comic/[0-9]+/remote/?"); //the server will open for reading the comic
|
||||||
|
QRegExp comicUpdate("/library/.+/comic/[0-9]+/update/?"); //get comic info
|
||||||
QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory
|
QRegExp comicClose("/library/.+/comic/[0-9]+/close/?"); //the server will close the comic and free memory
|
||||||
QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation)
|
QRegExp cover("/library/.+/cover/[0-9a-f]+.jpg"); //get comic cover (navigation)
|
||||||
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
|
QRegExp comicPage("/library/.+/comic/[0-9]+/page/[0-9]+/?"); //get comic page
|
||||||
@ -76,7 +78,11 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) {
|
|||||||
else if(comicPage.exactMatch(path))
|
else if(comicPage.exactMatch(path))
|
||||||
{
|
{
|
||||||
PageController().service(request,response);
|
PageController().service(request,response);
|
||||||
}
|
}
|
||||||
|
else if(comicUpdate.exactMatch(path))
|
||||||
|
{
|
||||||
|
UpdateComicController().service(request, response);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -12,7 +12,8 @@ HEADERS += \
|
|||||||
$$PWD/controllers/librariescontroller.h \
|
$$PWD/controllers/librariescontroller.h \
|
||||||
$$PWD/controllers/pagecontroller.h \
|
$$PWD/controllers/pagecontroller.h \
|
||||||
$$PWD/controllers/sessionmanager.h \
|
$$PWD/controllers/sessionmanager.h \
|
||||||
$$PWD/controllers/covercontroller.h
|
$$PWD/controllers/covercontroller.h \
|
||||||
|
server/controllers/updatecomiccontroller.h
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
$$PWD/static.cpp \
|
$$PWD/static.cpp \
|
||||||
@ -25,7 +26,8 @@ SOURCES += \
|
|||||||
$$PWD/controllers/librariescontroller.cpp \
|
$$PWD/controllers/librariescontroller.cpp \
|
||||||
$$PWD/controllers/pagecontroller.cpp \
|
$$PWD/controllers/pagecontroller.cpp \
|
||||||
$$PWD/controllers/sessionmanager.cpp \
|
$$PWD/controllers/sessionmanager.cpp \
|
||||||
$$PWD/controllers/covercontroller.cpp
|
$$PWD/controllers/covercontroller.cpp \
|
||||||
|
server/controllers/updatecomiccontroller.cpp
|
||||||
|
|
||||||
include(lib/bfLogging/bfLogging.pri)
|
include(lib/bfLogging/bfLogging.pri)
|
||||||
include(lib/bfHttpServer/bfHttpServer.pri)
|
include(lib/bfHttpServer/bfHttpServer.pri)
|
||||||
|
BIN
images/f.png
Normal file
BIN
images/f.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 710 B |
BIN
images/f_retina.png
Normal file
BIN
images/f_retina.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
Loading…
x
Reference in New Issue
Block a user