Added a new class for storing specific YACReader's http session data.

This commit is contained in:
Luis Ángel San Martín 2016-06-21 21:56:52 +02:00
parent d2b7487149
commit e67d34a511
3 changed files with 240 additions and 2 deletions

View File

@ -19,7 +19,8 @@ HEADERS += \
#v2
$$PWD/controllers/versioncontroller.h \
$$PWD/controllers/foldercontentcontroller.h \
$$PWD/controllers/tagscontroller.h
$$PWD/controllers/tagscontroller.h \
$$PWD/yacreader_http_session.h
SOURCES += \
$$PWD/static.cpp \
@ -39,7 +40,8 @@ SOURCES += \
#v2
$$PWD/controllers/versioncontroller.cpp \
$$PWD/controllers/foldercontentcontroller.cpp \
$$PWD/controllers/tagscontroller.cpp
$$PWD/controllers/tagscontroller.cpp \
$$PWD/yacreader_http_session.cpp
include(lib/logging/logging.pri)
include(lib/httpserver/httpserver.pri)

View File

@ -0,0 +1,165 @@
#include "yacreader_http_session.h"
YACReaderHttpSession::YACReaderHttpSession(QObject *parent)
: QObject(parent), comic(nullptr), remoteComic(nullptr), comicId(0), remoteComicId(0)
{
}
bool YACReaderHttpSession::isComicOnDevice(const QString & hash)
{
return comicsOnDevice.contains(hash);
}
bool YACReaderHttpSession::isComicDownloaded(const QString & hash)
{
return downloadedComics.contains(hash);
}
void YACReaderHttpSession::setComicOnDevice(const QString & hash)
{
comicsOnDevice.insert(hash);
}
void YACReaderHttpSession::setComicsOnDevice(const QSet<QString> & set)
{
comicsOnDevice = set;
}
void YACReaderHttpSession::setDownloadedComic(const QString & hash)
{
downloadedComics.insert(hash);
}
QSet<QString> YACReaderHttpSession::getComicsOnDevice()
{
return comicsOnDevice ;
}
QSet<QString> YACReaderHttpSession::getDownloadedComics()
{
return downloadedComics ;
}
void YACReaderHttpSession::clearComics()
{
comicsOnDevice.clear();
downloadedComics.clear();
}
//current comic (import)
qulonglong YACReaderHttpSession::getCurrentComicId()
{
return comicId;
}
Comic* YACReaderHttpSession::getCurrentComic()
{
comic;
}
void YACReaderHttpSession::dismissCurrentComic()
{
if(comic != nullptr)
{
comic->deleteLater();
comic = nullptr;
}
}
void YACReaderHttpSession::setCurrentComic(qulonglong id, Comic * comic)
{
dismissCurrentComic();
comicId = id;
comic = comic;
}
//current comic (read)
qulonglong YACReaderHttpSession::getCurrentRemoteComicId()
{
return remoteComicId ;
}
Comic* YACReaderHttpSession::getCurrentRemoteComic()
{
return remoteComic ;
}
void YACReaderHttpSession::dismissCurrentRemoteComic()
{
if(remoteComic != nullptr)
{
remoteComic->deleteLater();
remoteComic = nullptr;
}
}
void YACReaderHttpSession::setCurrentRemoteComic(qulonglong id, Comic * comic)
{
dismissCurrentRemoteComic();
remoteComicId = id;
remoteComic = comic;
}
QString YACReaderHttpSession::getDeviceType()
{
return device;
}
QString YACReaderHttpSession::getDisplayType()
{
return display;
}
void YACReaderHttpSession::setDeviceType(const QString & device)
{
//comicsOnDevice.clear(); //TODO crear un m<>todo clear que limpie la sesi<73>n completamente
//downloadedComics.clear();
device = device;
}
void YACReaderHttpSession::setDisplayType(const QString & display)
{
display = display;
}
void YACReaderHttpSession::clearNavigationPath()
{
navigationPath.clear();
}
QPair<qulonglong, quint32> YACReaderHttpSession::popNavigationItem()
{
if(navigationPath.isEmpty() == false)
return navigationPath.pop();
return QPair<qulonglong, quint32>();
}
QPair<qulonglong, quint32> YACReaderHttpSession::topNavigationItem()
{
if(navigationPath.isEmpty() == false)
return navigationPath.top();
return QPair<qulonglong, quint32>();
}
void YACReaderHttpSession::pushNavigationItem(const QPair<qulonglong, quint32> &item)
{
navigationPath.push(item);
}
void YACReaderHttpSession::updateTopItem(const QPair<qulonglong, quint32> &item)
{
if(navigationPath.isEmpty() == false)
{
navigationPath.pop();
navigationPath.push(item);
}
else
{
navigationPath.push(item);
}
}
QStack<QPair<qulonglong, quint32> > YACReaderHttpSession::getNavigationPath()
{
return navigationPath;
}

View File

@ -0,0 +1,71 @@
#ifndef YACREADERHTTPSESSION_H
#define YACREADERHTTPSESSION_H
#include <QObject>
#include "comic.h"
class YACReaderHttpSession : public QObject
{
Q_OBJECT
public:
explicit YACReaderHttpSession(QObject *parent = 0);
void setComicsOnDevice(const QSet<QString> & set);
void setComicOnDevice(const QString & hash);
void setDownloadedComic(const QString & hash);
bool isComicOnDevice(const QString & hash);
bool isComicDownloaded(const QString & hash);
QSet<QString> getComicsOnDevice();
QSet<QString> getDownloadedComics();
void clearComics();
//current comic (import)
qulonglong getCurrentComicId();
Comic * getCurrentComic();
void dismissCurrentComic();
void setCurrentComic(qulonglong id, Comic * comic);
//current comic (read)
qulonglong getCurrentRemoteComicId();
Comic * getCurrentRemoteComic();
void dismissCurrentRemoteComic();
void setCurrentRemoteComic(qulonglong id, Comic * comic);
//device identification
QString getDeviceType();
QString getDisplayType();
void setDeviceType(const QString & device);
void setDisplayType(const QString & display);
void clearNavigationPath();
QPair<qulonglong, quint32> popNavigationItem();
QPair<qulonglong, quint32> topNavigationItem();
void pushNavigationItem(const QPair<qulonglong, quint32> & item);
void updateTopItem(const QPair<qulonglong, quint32> & item);
//TODO replace QPair by a custom class for storing folderId, page and folderName(save some DB accesses)
QStack<QPair<qulonglong, quint32> > getNavigationPath();
signals:
public slots:
private:
QSet<QString> comicsOnDevice;
QSet<QString> downloadedComics;
QString device;
QString display;
qulonglong comicId;
qulonglong remoteComicId;
Comic * comic;
Comic * remoteComic;
QStack<QPair<qulonglong, quint32> > navigationPath; /* folder_id, page_number */
};
#endif // YACREADERHTTPSESSION_H