From a39cc616f65fa4e26407cc000567e42ef45ce4d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sun, 9 Sep 2012 14:30:17 +0200 Subject: [PATCH] controlador de p?ginas corregido bug relacionado con los datos de sesi?n (delete comic) --- YACReader/comic.h | 1 + YACReaderLibrary/main.cpp | 6 ++- .../server/controllers/comiccontroller.cpp | 2 +- .../server/controllers/pagecontroller.cpp | 39 +++++++++++++++++++ .../server/controllers/pagecontroller.h | 20 ++++++++++ .../server/lib/bfHttpServer/httpsession.cpp | 1 + YACReaderLibrary/server/requestmapper.cpp | 3 +- YACReaderLibrary/server/static.cpp | 3 +- YACReaderLibrary/server_config_dialog.cpp | 18 ++++++--- 9 files changed, 83 insertions(+), 10 deletions(-) diff --git a/YACReader/comic.h b/YACReader/comic.h index b1227f10..b4b42b76 100644 --- a/YACReader/comic.h +++ b/YACReader/comic.h @@ -45,6 +45,7 @@ bool loaded(); QPixmap * operator[](unsigned int index); QVector * getRawData(){return &_pages;}; + QByteArray getRawPage(int page){return _pages[page];}; public slots: void loadImages(); void loadSizes(); diff --git a/YACReaderLibrary/main.cpp b/YACReaderLibrary/main.cpp index 2ccd3a87..b10e5107 100644 --- a/YACReaderLibrary/main.cpp +++ b/YACReaderLibrary/main.cpp @@ -18,12 +18,14 @@ int main( int argc, char ** argv ) app.installTranslator(&translator); app.setApplicationName("YACReaderLibrary"); + s = new Startup(); + s->start(); + mw = new LibraryWindow(); mw->resize(800,480); mw->showMaximized(); - s = new Startup(); - s->start(); + return app.exec(); } diff --git a/YACReaderLibrary/server/controllers/comiccontroller.cpp b/YACReaderLibrary/server/controllers/comiccontroller.cpp index 7dac879a..a8894b0d 100644 --- a/YACReaderLibrary/server/controllers/comiccontroller.cpp +++ b/YACReaderLibrary/server/controllers/comiccontroller.cpp @@ -41,7 +41,7 @@ void ComicController::service(HttpRequest& request, HttpResponse& response) } else { - delete comicFile; + //delete comicFile; response.setStatus(404,"not found"); response.write("404 not found",true); } diff --git a/YACReaderLibrary/server/controllers/pagecontroller.cpp b/YACReaderLibrary/server/controllers/pagecontroller.cpp index e69de29b..3393d54b 100644 --- a/YACReaderLibrary/server/controllers/pagecontroller.cpp +++ b/YACReaderLibrary/server/controllers/pagecontroller.cpp @@ -0,0 +1,39 @@ +#include "pagecontroller.h" + +#include "../static.h" + +#include "comic.h" + +PageController::PageController() {} + +void PageController::service(HttpRequest& request, HttpResponse& response) +{ + + + HttpSession session=Static::sessionStore->getSession(request,response); + + QStringList pathElements = ((QString)request.getPath()).split('/'); + QString libraryName = pathElements.at(2); + qulonglong comicId = pathElements.at(4).toULongLong(); + quint16 page = pathElements.at(6).toUInt(); + + Comic * comicFile = session.getCurrentComic(); + if((comicFile != 0) && comicId == session.getCurrentComicId()) + { + response.setHeader("Content-Type", "image/page"); + QByteArray pageData = comicFile->getRawPage(page); + response.write(pageData); + } + else + { + delete comicFile; + response.setStatus(404,"not found"); + response.write("404 not found",true); + } + + + + + //response.write(t.toLatin1(),true); + +} \ No newline at end of file diff --git a/YACReaderLibrary/server/controllers/pagecontroller.h b/YACReaderLibrary/server/controllers/pagecontroller.h index e69de29b..64540bc3 100644 --- a/YACReaderLibrary/server/controllers/pagecontroller.h +++ b/YACReaderLibrary/server/controllers/pagecontroller.h @@ -0,0 +1,20 @@ +#ifndef PAGECONTROLLER_H +#define PAGECONTROLLER_H + +#include "httprequest.h" +#include "httpresponse.h" +#include "httprequesthandler.h" + +class PageController : public HttpRequestHandler { + Q_OBJECT + Q_DISABLE_COPY(PageController); +public: + + /** Constructor */ + PageController(); + + /** Generates the response */ + void service(HttpRequest& request, HttpResponse& response); +}; + +#endif // PAGECONTROLLER_H diff --git a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp index f4d92460..5c7abcbf 100644 --- a/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp +++ b/YACReaderLibrary/server/lib/bfHttpServer/httpsession.cpp @@ -12,6 +12,7 @@ HttpSession::HttpSession(bool canStore) { if (canStore) { dataPtr=new HttpSessionData(); + dataPtr->yacreaderSessionData.comic = 0; dataPtr->refCount=1; dataPtr->lastAccess=QDateTime::currentMSecsSinceEpoch(); dataPtr->id=QUuid::createUuid().toString().toAscii(); diff --git a/YACReaderLibrary/server/requestmapper.cpp b/YACReaderLibrary/server/requestmapper.cpp index 7a949194..0410ed40 100644 --- a/YACReaderLibrary/server/requestmapper.cpp +++ b/YACReaderLibrary/server/requestmapper.cpp @@ -17,6 +17,7 @@ #include "controllers/covercontroller.h" #include "controllers/comiccontroller.h" #include "controllers/folderinfocontroller.h" +#include "controllers/pagecontroller.h" RequestMapper::RequestMapper(QObject* parent) :HttpRequestHandler(parent) {} @@ -50,7 +51,7 @@ void RequestMapper::service(HttpRequest& request, HttpResponse& response) { } else if(path.contains("page")) { - + PageController().service(request,response); } else { diff --git a/YACReaderLibrary/server/static.cpp b/YACReaderLibrary/server/static.cpp index dd1bc4e9..b724cfeb 100644 --- a/YACReaderLibrary/server/static.cpp +++ b/YACReaderLibrary/server/static.cpp @@ -53,7 +53,8 @@ QString Static::getConfigDir() { foreach (QString dir, searchList) { qWarning("%s/%s not found",qPrintable(dir),qPrintable(configFileName)); } - qFatal("Cannot find config file %s",qPrintable(configFileName)); + qWarning("Cannot find config file %s",qPrintable(configFileName)); //TODO establecer los valores por defecto + return 0; } diff --git a/YACReaderLibrary/server_config_dialog.cpp b/YACReaderLibrary/server_config_dialog.cpp index 8da03373..d374a230 100644 --- a/YACReaderLibrary/server_config_dialog.cpp +++ b/YACReaderLibrary/server_config_dialog.cpp @@ -21,8 +21,8 @@ ServerConfigDialog::ServerConfigDialog(QWidget * parent) mainLayout->addWidget(accept,0,0); mainLayout->addWidget(qrCode,0,1); - this->setLayout(mainLayout); + generateQR(); } void ServerConfigDialog::generateQR() @@ -42,11 +42,19 @@ void ServerConfigDialog::generateQR() QList list = QHostInfo::fromName( QHostInfo::localHostName() ).addresses(); foreach(QHostAddress add, list) { - dir = add.toString(); - if(dir.contains(".")) + QString tmp = add.toString(); + if(tmp.contains(".") && tmp != "127.0.0.1") + { + dir = tmp; break; + } + } + if(!dir.isEmpty()) + generateQR(dir+":"+s->getPort()); + else + { + } - generateQR(dir+":"+s->getPort()); //qrCode->setText(dir+":8080"); } @@ -58,7 +66,7 @@ void ServerConfigDialog::generateQR(const QString & serverAddress) attributes << "-o" << QCoreApplication::applicationDirPath()+"/utils/tmp.png" << "-s" << "8" << "-l" << "H" << serverAddress; connect(qrGenerator,SIGNAL(finished(int,QProcess::ExitStatus)),this,SLOT(updateImage(void))); connect(qrGenerator,SIGNAL(error(QProcess::ProcessError)),this,SLOT(openingError(QProcess::ProcessError))); - qrGenerator->start(QCoreApplication::applicationDirPath()+"/utils/qrcode",attributes); + qrGenerator->start(QCoreApplication::applicationDirPath()+"/utils/qrencode",attributes); } void ServerConfigDialog::updateImage()