Format code using clang-format

This commit is contained in:
Luis Ángel San Martín
2019-05-30 19:46:37 +02:00
parent e0eb94e3ae
commit e3ec56aa43
356 changed files with 19824 additions and 21874 deletions

View File

@ -9,40 +9,38 @@
#include "bookmarks.h" #include "bookmarks.h"
BookmarksDialog::BookmarksDialog(QWidget * parent) BookmarksDialog::BookmarksDialog(QWidget *parent)
:QDialog(parent) : QDialog(parent)
{ {
setModal(true); setModal(true);
//animation = new QPropertyAnimation(this,"windowOpacity"); //animation = new QPropertyAnimation(this,"windowOpacity");
//animation->setDuration(150); //animation->setDuration(150);
QHBoxLayout * layout = new QHBoxLayout(); QHBoxLayout *layout = new QHBoxLayout();
//bookmarks //bookmarks
QGridLayout * bookmarksL = new QGridLayout(); QGridLayout *bookmarksL = new QGridLayout();
pages.push_back(new QLabel(tr("Lastest Page"))); pages.push_back(new QLabel(tr("Lastest Page")));
for(int i=0;i<3;i++) for (int i = 0; i < 3; i++)
pages.push_back(new QLabel("-")); pages.push_back(new QLabel("-"));
QString labelsStyle = "QLabel {color:white;}"; QString labelsStyle = "QLabel {color:white;}";
foreach(QLabel * label,pages) foreach (QLabel *label, pages) {
{
label->setStyleSheet(labelsStyle); label->setStyleSheet(labelsStyle);
} }
int heightDesktopResolution = QApplication::desktop()->screenGeometry().height(); int heightDesktopResolution = QApplication::desktop()->screenGeometry().height();
int height,width; int height, width;
height = heightDesktopResolution*0.50; height = heightDesktopResolution * 0.50;
width = height*0.65; width = height * 0.65;
coverSize = QSize(width,height); coverSize = QSize(width, height);
for(int i=0;i<4;i++) for (int i = 0; i < 4; i++) {
{ QLabel *l = new QLabel();
QLabel * l = new QLabel();
l->setFixedSize(coverSize); l->setFixedSize(coverSize);
l->setScaledContents(false); l->setScaledContents(false);
//l->setPixmap(QPixmap(":/images/notCover.png")); //l->setPixmap(QPixmap(":/images/notCover.png"));
@ -50,37 +48,36 @@ BookmarksDialog::BookmarksDialog(QWidget * parent)
images.push_back(l); images.push_back(l);
} }
for(int i=0;i<3;i++) for (int i = 0; i < 3; i++)
bookmarksL->addWidget(pages.at(i+1),0,i,Qt::AlignCenter); bookmarksL->addWidget(pages.at(i + 1), 0, i, Qt::AlignCenter);
for(int i=0;i<3;i++)
bookmarksL->addWidget(images.at(i+1),1,i,Qt::AlignCenter);
for (int i = 0; i < 3; i++)
bookmarksL->addWidget(images.at(i + 1), 1, i, Qt::AlignCenter);
//last page //last page
QGridLayout * lp = new QGridLayout(); QGridLayout *lp = new QGridLayout();
lp->addWidget(pages.at(0),0,0,Qt::AlignCenter); lp->addWidget(pages.at(0), 0, 0, Qt::AlignCenter);
lp->addWidget(images.at(0),1,0,Qt::AlignCenter); lp->addWidget(images.at(0), 1, 0, Qt::AlignCenter);
layout->addLayout(bookmarksL); layout->addLayout(bookmarksL);
QFrame *f = new QFrame( this ); QFrame *f = new QFrame(this);
f->setFrameStyle( QFrame::VLine | QFrame::Sunken ); f->setFrameStyle(QFrame::VLine | QFrame::Sunken);
layout->addWidget(f); layout->addWidget(f);
layout->addLayout(lp); layout->addLayout(lp);
QHBoxLayout * buttons = new QHBoxLayout(); QHBoxLayout *buttons = new QHBoxLayout();
cancel = new QPushButton(tr("Close")); cancel = new QPushButton(tr("Close"));
cancel->setFlat(true); cancel->setFlat(true);
connect(cancel,SIGNAL(clicked()),this,SLOT(hide())); connect(cancel, SIGNAL(clicked()), this, SLOT(hide()));
buttons->addStretch(); buttons->addStretch();
buttons->addWidget(cancel); buttons->addWidget(cancel);
cancel->setStyleSheet("QPushButton {border: 1px solid #242424; background: #2e2e2e; color:white; padding: 5px 26px 5px 26px; font-size:12px;font-family:Arial; font-weight:bold;}"); cancel->setStyleSheet("QPushButton {border: 1px solid #242424; background: #2e2e2e; color:white; padding: 5px 26px 5px 26px; font-size:12px;font-family:Arial; font-weight:bold;}");
QVBoxLayout * l = new QVBoxLayout(); QVBoxLayout *l = new QVBoxLayout();
l->addWidget(new QLabel("<font color=\"#FFFFFF\">"+tr("Click on any image to go to the bookmark")+"</font>"),0,Qt::AlignCenter); l->addWidget(new QLabel("<font color=\"#FFFFFF\">" + tr("Click on any image to go to the bookmark") + "</font>"), 0, Qt::AlignCenter);
l->addLayout(layout); l->addLayout(layout);
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
l->addLayout(buttons); l->addLayout(buttons);
@ -95,73 +92,56 @@ BookmarksDialog::BookmarksDialog(QWidget * parent)
setLayout(l); setLayout(l);
} }
void BookmarksDialog::setBookmarks(const Bookmarks & bm) void BookmarksDialog::setBookmarks(const Bookmarks &bm)
{ {
lastPage = bm.getLastPage(); lastPage = bm.getLastPage();
if (lastPage > 0) if (lastPage > 0) {
{
QPixmap p = QPixmap::fromImage(bm.getLastPagePixmap()); QPixmap p = QPixmap::fromImage(bm.getLastPagePixmap());
if(p.isNull()) if (p.isNull()) {
{ images.at(0)->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
images.at(0)->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
images.at(0)->setText(tr("Loading...")); images.at(0)->setText(tr("Loading..."));
} else {
images.at(0)->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
images.at(0)->setPixmap(p.scaled(coverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation));
} }
else } else {
{ images.at(0)->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
images.at(0)->setAlignment(Qt::AlignHCenter|Qt::AlignBottom); images.at(0)->setPixmap(QPixmap(":/images/notCover.png").scaled(coverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation));
images.at(0)->setPixmap(p.scaled(coverSize,Qt::KeepAspectRatio,Qt::SmoothTransformation));
}
}
else
{
images.at(0)->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
images.at(0)->setPixmap(QPixmap(":/images/notCover.png").scaled(coverSize,Qt::KeepAspectRatio,Qt::SmoothTransformation));
} }
QList<int> l = bm.getBookmarkPages(); QList<int> l = bm.getBookmarkPages();
int s = l.count(); int s = l.count();
for(int i=0;i<s;i++) for (int i = 0; i < s; i++) {
{ pages.at(i + 1)->setText(QString::number(l.at(i) + 1));
pages.at(i+1)->setText(QString::number(l.at(i)+1));
QPixmap p = QPixmap::fromImage(bm.getBookmarkPixmap(l.at(i))); QPixmap p = QPixmap::fromImage(bm.getBookmarkPixmap(l.at(i)));
if(p.isNull()) if (p.isNull()) {
{ images.at(i + 1)->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
images.at(i+1)->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); images.at(i + 1)->setText(tr("Loading..."));
images.at(i+1)->setText(tr("Loading...")); } else {
} images.at(i + 1)->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
else images.at(i + 1)->setPixmap(p.scaled(coverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation));
{
images.at(i+1)->setAlignment(Qt::AlignHCenter|Qt::AlignBottom);
images.at(i+1)->setPixmap(p.scaled(coverSize,Qt::KeepAspectRatio,Qt::SmoothTransformation));
} }
} }
for(int i=s;i<3;i++) for (int i = s; i < 3; i++) {
{ pages.at(i + 1)->setText("-");
pages.at(i+1)->setText("-"); images.at(i + 1)->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
images.at(i+1)->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); images.at(i + 1)->setPixmap(QPixmap(":/images/notCover.png").scaled(coverSize, Qt::KeepAspectRatio, Qt::SmoothTransformation));
images.at(i+1)->setPixmap(QPixmap(":/images/notCover.png").scaled(coverSize,Qt::KeepAspectRatio,Qt::SmoothTransformation));
} }
} }
bool BookmarksDialog::eventFilter(QObject *obj, QEvent *event) bool BookmarksDialog::eventFilter(QObject *obj, QEvent *event)
{ {
if(event->type() == QEvent::MouseButtonPress) if (event->type() == QEvent::MouseButtonPress) {
{ if (obj == images.at(0)) {
if (obj == images.at(0))
{
emit(goToPage(lastPage)); emit(goToPage(lastPage));
close(); close();
event->accept(); event->accept();
} }
for(int i=1;i<=3;i++) for (int i = 1; i <= 3; i++) {
{ if (obj == images.at(i)) {
if(obj == images.at(i))
{
bool b; bool b;
int page = pages.at(i)->text().toInt(&b)-1; int page = pages.at(i)->text().toInt(&b) - 1;
if(b) if (b) {
{
emit(goToPage(page)); emit(goToPage(page));
close(); close();
} }
@ -173,9 +153,9 @@ bool BookmarksDialog::eventFilter(QObject *obj, QEvent *event)
return QDialog::eventFilter(obj, event); return QDialog::eventFilter(obj, event);
} }
void BookmarksDialog::keyPressEvent(QKeyEvent * event) void BookmarksDialog::keyPressEvent(QKeyEvent *event)
{ {
if(event->key() == Qt::Key_M) if (event->key() == Qt::Key_M)
hide(); hide();
} }
/* /*

View File

@ -11,35 +11,35 @@
#include "bookmarks.h" #include "bookmarks.h"
class BookmarksDialog : public QDialog class BookmarksDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
protected: protected:
QList<QLabel *> pages; QList<QLabel *> pages;
QList<QLabel *> images; QList<QLabel *> images;
int lastPage; int lastPage;
QPushButton * accept; QPushButton *accept;
QPushButton * cancel; QPushButton *cancel;
QSize coverSize; QSize coverSize;
bool eventFilter(QObject *obj, QEvent *event); bool eventFilter(QObject *obj, QEvent *event);
void keyPressEvent(QKeyEvent * event); void keyPressEvent(QKeyEvent *event);
//QPropertyAnimation * animation; //QPropertyAnimation * animation;
public: public:
BookmarksDialog(QWidget * parent = 0); BookmarksDialog(QWidget *parent = 0);
public slots: public slots:
void setBookmarks(const Bookmarks & bookmarks); void setBookmarks(const Bookmarks &bookmarks);
//void show(); //void show();
//void hide(); //void hide();
signals: signals:
void goToPage(unsigned int page); void goToPage(unsigned int page);
}; };
#endif // BOOKMARKS_DIALOG_H #endif // BOOKMARKS_DIALOG_H

View File

@ -25,36 +25,36 @@ QSettings *Configuration::getSettings()
//nothing //nothing
}*/ }*/
void Configuration::load(QSettings * settings) void Configuration::load(QSettings *settings)
{ {
this->settings = settings; this->settings = settings;
//TODO set defaults //TODO set defaults
if(!settings->contains(PATH)) if (!settings->contains(PATH))
settings->setValue(PATH,"."); settings->setValue(PATH, ".");
if(!settings->contains(GO_TO_FLOW_SIZE)) if (!settings->contains(GO_TO_FLOW_SIZE))
settings->setValue(GO_TO_FLOW_SIZE,QSize(126,200)); settings->setValue(GO_TO_FLOW_SIZE, QSize(126, 200));
if(!settings->contains(MAG_GLASS_SIZE)) if (!settings->contains(MAG_GLASS_SIZE))
settings->setValue(MAG_GLASS_SIZE,QSize(350,175)); settings->setValue(MAG_GLASS_SIZE, QSize(350, 175));
if(!settings->contains(ZOOM_LEVEL)) if (!settings->contains(ZOOM_LEVEL))
settings->setValue(MAG_GLASS_SIZE,QSize(350,175)); settings->setValue(MAG_GLASS_SIZE, QSize(350, 175));
if(!settings->contains(FLOW_TYPE)) if (!settings->contains(FLOW_TYPE))
settings->setValue(FLOW_TYPE,0); settings->setValue(FLOW_TYPE, 0);
if(!settings->contains(FULLSCREEN)) if (!settings->contains(FULLSCREEN))
settings->setValue(FULLSCREEN,false); settings->setValue(FULLSCREEN, false);
if(!settings->contains(Y_WINDOW_SIZE)) if (!settings->contains(Y_WINDOW_SIZE))
settings->setValue(Y_WINDOW_SIZE,QSize(0,0)); settings->setValue(Y_WINDOW_SIZE, QSize(0, 0));
if(!settings->contains(MAXIMIZED)) if (!settings->contains(MAXIMIZED))
settings->setValue(MAXIMIZED,false); settings->setValue(MAXIMIZED, false);
if(!settings->contains(DOUBLE_PAGE)) if (!settings->contains(DOUBLE_PAGE))
settings->setValue(DOUBLE_PAGE,false); settings->setValue(DOUBLE_PAGE, false);
if(!settings->contains(BACKGROUND_COLOR)) if (!settings->contains(BACKGROUND_COLOR))
settings->setValue(BACKGROUND_COLOR,QColor(40,40,40)); settings->setValue(BACKGROUND_COLOR, QColor(40, 40, 40));
if(!settings->contains(ALWAYS_ON_TOP)) if (!settings->contains(ALWAYS_ON_TOP))
settings->setValue(ALWAYS_ON_TOP,false); settings->setValue(ALWAYS_ON_TOP, false);
if(!settings->contains(SHOW_TOOLBARS)) if (!settings->contains(SHOW_TOOLBARS))
settings->setValue(SHOW_TOOLBARS, true); settings->setValue(SHOW_TOOLBARS, true);
if(!settings->contains(QUICK_NAVI_MODE)) if (!settings->contains(QUICK_NAVI_MODE))
settings->setValue(QUICK_NAVI_MODE, false); settings->setValue(QUICK_NAVI_MODE, false);
//old fit stuff //old fit stuff
/*if(!settings->contains(FIT)) /*if(!settings->contains(FIT))
@ -64,15 +64,14 @@ void Configuration::load(QSettings * settings)
if(!settings->contains(ADJUST_TO_FULL_SIZE)) if(!settings->contains(ADJUST_TO_FULL_SIZE))
settings->setValue(ADJUST_TO_FULL_SIZE,false); settings->setValue(ADJUST_TO_FULL_SIZE,false);
*/ */
} }
void Configuration::updateOpenRecentList (QString path) void Configuration::updateOpenRecentList(QString path)
{ {
QStringList list = openRecentList(); QStringList list = openRecentList();
list.removeAll(path); list.removeAll(path);
list.prepend(path); list.prepend(path);
//TODO: Make list lenght configurable //TODO: Make list lenght configurable
while (list.length() > getOpenRecentSize()) while (list.length() > getOpenRecentSize()) {
{
list.removeLast(); list.removeLast();
} }
settings->setValue("recentFiles", list); settings->setValue("recentFiles", list);

View File

@ -15,12 +15,12 @@
using namespace YACReader; using namespace YACReader;
class Configuration : public QObject class Configuration : public QObject
{ {
Q_OBJECT Q_OBJECT
private: private:
QSettings * settings; QSettings *settings;
QString defaultPath; QString defaultPath;
//configuration properties //configuration properties
@ -42,34 +42,33 @@ using namespace YACReader;
Configuration(); Configuration();
//Configuration(const Configuration & conf); //Configuration(const Configuration & conf);
void load(const QString & path = CONF_FILE_PATH); void load(const QString &path = CONF_FILE_PATH);
public:
public: static Configuration &getConfiguration()
static Configuration & getConfiguration()
{ {
static Configuration configuration; static Configuration configuration;
return configuration; return configuration;
}; };
QSettings *getSettings(); QSettings *getSettings();
void load(QSettings * settings); void load(QSettings *settings);
QString getDefaultPath() { return settings->value(PATH).toString(); } QString getDefaultPath() { return settings->value(PATH).toString(); }
void setDefaultPath(QString defaultPath){settings->setValue(PATH,defaultPath);} void setDefaultPath(QString defaultPath) { settings->setValue(PATH, defaultPath); }
QSize getMagnifyingGlassSize() { return settings->value(MAG_GLASS_SIZE).toSize();} QSize getMagnifyingGlassSize() { return settings->value(MAG_GLASS_SIZE).toSize(); }
void setMagnifyingGlassSize(const QSize & mgs) { settings->setValue(MAG_GLASS_SIZE,mgs);} void setMagnifyingGlassSize(const QSize &mgs) { settings->setValue(MAG_GLASS_SIZE, mgs); }
QSize getGotoSlideSize() { return settings->value(GO_TO_FLOW_SIZE).toSize();} QSize getGotoSlideSize() { return settings->value(GO_TO_FLOW_SIZE).toSize(); }
void setGotoSlideSize(const QSize & gss) { settings->setValue(GO_TO_FLOW_SIZE,gss);} void setGotoSlideSize(const QSize &gss) { settings->setValue(GO_TO_FLOW_SIZE, gss); }
float getZoomLevel() { return settings->value(ZOOM_LEVEL).toFloat();} float getZoomLevel() { return settings->value(ZOOM_LEVEL).toFloat(); }
void setZoomLevel(float zl) { settings->setValue(ZOOM_LEVEL,zl);} void setZoomLevel(float zl) { settings->setValue(ZOOM_LEVEL, zl); }
//Unified enum based fitmode //Unified enum based fitmode
YACReader::FitMode getFitMode() { return static_cast<YACReader::FitMode>(settings->value(FITMODE, YACReader::FitMode::FullPage).toInt()); } YACReader::FitMode getFitMode() { return static_cast<YACReader::FitMode>(settings->value(FITMODE, YACReader::FitMode::FullPage).toInt()); }
void setFitMode ( YACReader::FitMode fitMode ){ settings->setValue(FITMODE, static_cast<int>(fitMode)); } void setFitMode(YACReader::FitMode fitMode) { settings->setValue(FITMODE, static_cast<int>(fitMode)); }
//openRecent //openRecent
int getOpenRecentSize() { return settings->value("recentSize", 25).toInt();} int getOpenRecentSize() { return settings->value("recentSize", 25).toInt(); }
QStringList openRecentList() { return settings->value("recentFiles").toStringList(); } QStringList openRecentList() { return settings->value("recentFiles").toStringList(); }
void updateOpenRecentList (QString path); void updateOpenRecentList(QString path);
void clearOpenRecentList() { settings->remove("recentFiles"); } void clearOpenRecentList() { settings->remove("recentFiles"); }
//Old fitmodes //Old fitmodes
@ -82,36 +81,36 @@ using namespace YACReader;
void setAdjustToFullSize(bool b){settings->setValue(ADJUST_TO_FULL_SIZE,b);} void setAdjustToFullSize(bool b){settings->setValue(ADJUST_TO_FULL_SIZE,b);}
*/ */
FlowType getFlowType(){return (FlowType)settings->value(FLOW_TYPE_SW).toInt();} FlowType getFlowType() { return (FlowType)settings->value(FLOW_TYPE_SW).toInt(); }
void setFlowType(FlowType type){settings->setValue(FLOW_TYPE_SW,type);} void setFlowType(FlowType type) { settings->setValue(FLOW_TYPE_SW, type); }
bool getFullScreen(){return settings->value(FULLSCREEN).toBool();} bool getFullScreen() { return settings->value(FULLSCREEN).toBool(); }
void setFullScreen(bool f){settings->setValue(FULLSCREEN,f);} void setFullScreen(bool f) { settings->setValue(FULLSCREEN, f); }
QPoint getPos(){return settings->value(Y_WINDOW_POS).toPoint();} QPoint getPos() { return settings->value(Y_WINDOW_POS).toPoint(); }
void setPos(QPoint p){settings->setValue(Y_WINDOW_POS,p);} void setPos(QPoint p) { settings->setValue(Y_WINDOW_POS, p); }
QSize getSize(){return settings->value(Y_WINDOW_SIZE).toSize();} QSize getSize() { return settings->value(Y_WINDOW_SIZE).toSize(); }
void setSize(QSize s){settings->setValue(Y_WINDOW_SIZE,s);} void setSize(QSize s) { settings->setValue(Y_WINDOW_SIZE, s); }
bool getMaximized(){return settings->value(MAXIMIZED).toBool();} bool getMaximized() { return settings->value(MAXIMIZED).toBool(); }
void setMaximized(bool b){settings->setValue(MAXIMIZED,b);} void setMaximized(bool b) { settings->setValue(MAXIMIZED, b); }
bool getDoublePage(){return settings->value(DOUBLE_PAGE).toBool();} bool getDoublePage() { return settings->value(DOUBLE_PAGE).toBool(); }
void setDoublePage(bool b){settings->setValue(DOUBLE_PAGE,b);} void setDoublePage(bool b) { settings->setValue(DOUBLE_PAGE, b); }
bool getDoubleMangaPage(){return settings->value(DOUBLE_MANGA_PAGE).toBool();} bool getDoubleMangaPage() { return settings->value(DOUBLE_MANGA_PAGE).toBool(); }
void setDoubleMangaPage(bool b){settings->setValue(DOUBLE_MANGA_PAGE,b);} void setDoubleMangaPage(bool b) { settings->setValue(DOUBLE_MANGA_PAGE, b); }
QColor getBackgroundColor(){return settings->value(BACKGROUND_COLOR).value<QColor>();} QColor getBackgroundColor() { return settings->value(BACKGROUND_COLOR).value<QColor>(); }
void setBackgroundColor(const QColor& color){settings->value(BACKGROUND_COLOR,color);} void setBackgroundColor(const QColor &color) { settings->value(BACKGROUND_COLOR, color); }
bool getAlwaysOnTop(){return settings->value(ALWAYS_ON_TOP).toBool();} bool getAlwaysOnTop() { return settings->value(ALWAYS_ON_TOP).toBool(); }
void setAlwaysOnTop(bool b){ settings->setValue(ALWAYS_ON_TOP,b);} void setAlwaysOnTop(bool b) { settings->setValue(ALWAYS_ON_TOP, b); }
bool getShowToolbars(){return settings->value(SHOW_TOOLBARS).toBool();} bool getShowToolbars() { return settings->value(SHOW_TOOLBARS).toBool(); }
void setShowToolbars(bool b){settings->setValue(SHOW_TOOLBARS,b);} void setShowToolbars(bool b) { settings->setValue(SHOW_TOOLBARS, b); }
bool getShowInformation(){return settings->value(SHOW_INFO,false).toBool();} bool getShowInformation() { return settings->value(SHOW_INFO, false).toBool(); }
void setShowInformation(bool b){settings->setValue(SHOW_INFO,b);} void setShowInformation(bool b) { settings->setValue(SHOW_INFO, b); }
QDate getLastVersionCheck(){return settings->value(LAST_VERSION_CHECK).toDate();} QDate getLastVersionCheck() { return settings->value(LAST_VERSION_CHECK).toDate(); }
void setLastVersionCheck(const QDate & date){ settings->setValue(LAST_VERSION_CHECK,date);} void setLastVersionCheck(const QDate &date) { settings->setValue(LAST_VERSION_CHECK, date); }
int getNumDaysBetweenVersionChecks() {return settings->value(NUM_DAYS_BETWEEN_VERSION_CHECKS,1).toInt();} int getNumDaysBetweenVersionChecks() { return settings->value(NUM_DAYS_BETWEEN_VERSION_CHECKS, 1).toInt(); }
void setNumDaysBetweenVersionChecks(int days) {return settings->setValue(NUM_DAYS_BETWEEN_VERSION_CHECKS,days);} void setNumDaysBetweenVersionChecks(int days) { return settings->setValue(NUM_DAYS_BETWEEN_VERSION_CHECKS, days); }
bool getQuickNaviMode(){return settings->value(QUICK_NAVI_MODE).toBool();} bool getQuickNaviMode() { return settings->value(QUICK_NAVI_MODE).toBool(); }
bool getDisableShowOnMouseOver(){return settings->value(DISABLE_MOUSE_OVER_GOTO_FLOW).toBool();} bool getDisableShowOnMouseOver() { return settings->value(DISABLE_MOUSE_OVER_GOTO_FLOW).toBool(); }
}; };
#endif #endif

View File

@ -4,10 +4,8 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QIntValidator> #include <QIntValidator>
GoToDialog::GoToDialog(QWidget *parent)
: QDialog(parent)
GoToDialog::GoToDialog(QWidget * parent)
:QDialog(parent)
{ {
setupUI(); setupUI();
} }
@ -20,12 +18,12 @@ void GoToDialog::setupUI()
v->setBottom(1); v->setBottom(1);
pageNumber->setValidator(v); pageNumber->setValidator(v);
textLabel->setBuddy(pageNumber); textLabel->setBuddy(pageNumber);
textLabel->setAlignment(Qt::AlignRight|Qt::AlignVCenter); textLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
accept = new QPushButton(tr("Go To")); accept = new QPushButton(tr("Go To"));
connect(accept,SIGNAL(clicked()),this,SLOT(goTo())); connect(accept, SIGNAL(clicked()), this, SLOT(goTo()));
cancel = new QPushButton(tr("Cancel")); cancel = new QPushButton(tr("Cancel"));
connect(cancel,SIGNAL(clicked()),this,SLOT(close())); connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
QHBoxLayout *topLayout = new QHBoxLayout; QHBoxLayout *topLayout = new QHBoxLayout;
@ -44,7 +42,7 @@ void GoToDialog::setupUI()
mainLayout->addLayout(bottomLayout); mainLayout->addLayout(bottomLayout);
QHBoxLayout *imgMainLayout = new QHBoxLayout; QHBoxLayout *imgMainLayout = new QHBoxLayout;
QLabel * imgLabel = new QLabel(); QLabel *imgLabel = new QLabel();
QPixmap p(":/images/goto.png"); QPixmap p(":/images/goto.png");
imgLabel->setPixmap(p); imgLabel->setPixmap(p);
imgMainLayout->addWidget(imgLabel); imgMainLayout->addWidget(imgLabel);
@ -53,7 +51,7 @@ void GoToDialog::setupUI()
setLayout(imgMainLayout); setLayout(imgMainLayout);
setWindowTitle(tr("Go to...")); setWindowTitle(tr("Go to..."));
setModal (true); setModal(true);
pageNumber->setFocusPolicy(Qt::StrongFocus); pageNumber->setFocusPolicy(Qt::StrongFocus);
pageNumber->setFocus(); pageNumber->setFocus();
@ -64,16 +62,15 @@ void GoToDialog::goTo()
unsigned int page = pageNumber->text().toInt(); unsigned int page = pageNumber->text().toInt();
pageNumber->clear(); pageNumber->clear();
if(page >= 1) if (page >= 1)
emit(goToPage(page-1)); emit(goToPage(page - 1));
close(); close();
} }
void GoToDialog::setNumPages(unsigned int numPages) void GoToDialog::setNumPages(unsigned int numPages)
{ {
numPagesLabel->setText(tr("Total pages : ")+QString::number(numPages)); numPagesLabel->setText(tr("Total pages : ") + QString::number(numPages));
v->setTop(numPages); v->setTop(numPages);
} }

View File

@ -7,26 +7,26 @@
#include <QPushButton> #include <QPushButton>
#include <QIntValidator> #include <QIntValidator>
class GoToDialog : public QDialog class GoToDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
GoToDialog(QWidget * parent = 0); GoToDialog(QWidget *parent = 0);
private:
QLabel * numPagesLabel; private:
QLabel * textLabel; QLabel *numPagesLabel;
QLineEdit * pageNumber; QLabel *textLabel;
QIntValidator * v; QLineEdit *pageNumber;
QPushButton * accept; QIntValidator *v;
QPushButton * cancel; QPushButton *accept;
QPushButton *cancel;
void setupUI(); void setupUI();
public slots: public slots:
void goTo(); void goTo();
void setNumPages(unsigned int numPages); void setNumPages(unsigned int numPages);
void open(); void open();
signals: signals:
void goToPage(unsigned int page); void goToPage(unsigned int page);
}; };
#endif #endif

View File

@ -25,30 +25,29 @@
#include "goto_flow_toolbar.h" #include "goto_flow_toolbar.h"
GoToFlow::GoToFlow(QWidget *parent, FlowType flowType)
GoToFlow::GoToFlow(QWidget *parent,FlowType flowType) : GoToFlowWidget(parent), ready(false)
:GoToFlowWidget(parent),ready(false)
{ {
updateTimer = new QTimer; updateTimer = new QTimer;
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateImageData())); connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateImageData()));
worker = new PageLoader(&mutexGoToFlow); worker = new PageLoader(&mutexGoToFlow);
flow = new YACReaderFlow(this,flowType); flow = new YACReaderFlow(this, flowType);
flow->setReflectionEffect(PictureFlow::PlainReflection); flow->setReflectionEffect(PictureFlow::PlainReflection);
imageSize = Configuration::getConfiguration().getGotoSlideSize(); imageSize = Configuration::getConfiguration().getGotoSlideSize();
flow->setSlideSize(imageSize); flow->setSlideSize(imageSize);
connect(flow,SIGNAL(centerIndexChanged(int)),this,SLOT(setPageNumber(int))); connect(flow, SIGNAL(centerIndexChanged(int)), this, SLOT(setPageNumber(int)));
connect(flow,SIGNAL(selected(unsigned int)),this,SIGNAL(goToPage(unsigned int))); connect(flow, SIGNAL(selected(unsigned int)), this, SIGNAL(goToPage(unsigned int)));
connect(toolBar,SIGNAL(goTo(unsigned int)),this,SIGNAL(goToPage(unsigned int))); connect(toolBar, SIGNAL(goTo(unsigned int)), this, SIGNAL(goToPage(unsigned int)));
connect(toolBar,SIGNAL(setCenter(unsigned int)),flow,SLOT(showSlide(unsigned int))); connect(toolBar, SIGNAL(setCenter(unsigned int)), flow, SLOT(showSlide(unsigned int)));
mainLayout->addWidget(flow); mainLayout->addWidget(flow);
toolBar->raise(); toolBar->raise();
resize(static_cast<int>(5*imageSize.width()),toolBar->height() + static_cast<int>(imageSize.height()*1.7)); resize(static_cast<int>(5 * imageSize.width()), toolBar->height() + static_cast<int>(imageSize.height() * 1.7));
this->setCursor(QCursor(Qt::ArrowCursor)); this->setCursor(QCursor(Qt::ArrowCursor));
} }
@ -62,10 +61,11 @@ GoToFlow::~GoToFlow()
void GoToFlow::keyPressEvent(QKeyEvent *event) void GoToFlow::keyPressEvent(QKeyEvent *event)
{ {
switch (event->key()) switch (event->key()) {
{ case Qt::Key_Left:
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up: case Qt::Key_Right:
QApplication::sendEvent(flow,event); case Qt::Key_Up:
QApplication::sendEvent(flow, event);
return; return;
default: default:
break; break;
@ -82,13 +82,11 @@ void GoToFlow::resizeEvent(QResizeEvent *event)
toolBar->setFixedWidth(width()); toolBar->setFixedWidth(width());
} }
void GoToFlow::centerSlide(int slide) void GoToFlow::centerSlide(int slide)
{ {
if(flow->centerIndex()!=slide) if (flow->centerIndex() != slide) {
{
flow->setCenterIndex(slide); flow->setCenterIndex(slide);
if(ready)// load images if pages are loaded. if (ready) // load images if pages are loaded.
{ {
//worker->reset(); //BUG FIXED : image didn't load if worker was working //worker->reset(); //BUG FIXED : image didn't load if worker was working
preload(); preload();
@ -101,7 +99,7 @@ void GoToFlow::setNumSlides(unsigned int slides)
// numPagesLabel->setText(tr("Total pages : ")+QString::number(slides)); // numPagesLabel->setText(tr("Total pages : ")+QString::number(slides));
// numPagesLabel->adjustSize(); // numPagesLabel->adjustSize();
imagesReady.clear(); imagesReady.clear();
imagesReady.fill(false,slides); imagesReady.fill(false, slides);
rawImages.clear(); rawImages.clear();
rawImages.resize(slides); rawImages.resize(slides);
@ -109,10 +107,10 @@ void GoToFlow::setNumSlides(unsigned int slides)
toolBar->setTop(slides); toolBar->setTop(slides);
imagesLoaded.clear(); imagesLoaded.clear();
imagesLoaded.fill(false,slides); imagesLoaded.fill(false, slides);
imagesSetted.clear(); imagesSetted.clear();
imagesSetted.fill(false,slides); imagesSetted.fill(false, slides);
numImagesLoaded = 0; numImagesLoaded = 0;
@ -123,7 +121,7 @@ void GoToFlow::setNumSlides(unsigned int slides)
worker->reset(); worker->reset();
flow->clear(); flow->clear();
for(unsigned int i=0;i<slides;i++) for (unsigned int i = 0; i < slides; i++)
flow->addSlide(QImage()); flow->addSlide(QImage());
flow->setCenterIndex(0); flow->setCenterIndex(0);
} }
@ -138,72 +136,67 @@ void GoToFlow::reset()
ready = false; ready = false;
} }
void GoToFlow::setImageReady(int index,const QByteArray & image) void GoToFlow::setImageReady(int index, const QByteArray &image)
{ {
rawImages[index]=image; rawImages[index] = image;
imagesReady[index]=true; imagesReady[index] = true;
preload(); preload();
} }
void GoToFlow::preload() void GoToFlow::preload()
{ {
if(numImagesLoaded < imagesLoaded.size()) if (numImagesLoaded < imagesLoaded.size())
updateTimer->start(30); //TODO comprobar rendimiento, antes era 70 updateTimer->start(30); //TODO comprobar rendimiento, antes era 70
} }
void GoToFlow::updateImageData() void GoToFlow::updateImageData()
{ {
// can't do anything, wait for the next possibility // can't do anything, wait for the next possibility
if(worker->busy()) if (worker->busy())
return; return;
// set image of last one // set image of last one
int idx = worker->index(); int idx = worker->index();
if( idx >= 0 && !worker->result().isNull()) if (idx >= 0 && !worker->result().isNull()) {
{ if (!imagesSetted[idx]) {
if(!imagesSetted[idx])
{
flow->setSlide(idx, worker->result()); flow->setSlide(idx, worker->result());
imagesSetted[idx] = true; imagesSetted[idx] = true;
numImagesLoaded++; numImagesLoaded++;
rawImages[idx].clear();; //release memory rawImages[idx].clear();
imagesLoaded[idx]=true; ; //release memory
imagesLoaded[idx] = true;
} }
} }
// try to load only few images on the left and right side // try to load only few images on the left and right side
// i.e. all visible ones plus some extra // i.e. all visible ones plus some extra
#define COUNT 8 #define COUNT 8
int indexes[2*COUNT+1]; int indexes[2 * COUNT + 1];
int center = flow->centerIndex(); int center = flow->centerIndex();
indexes[0] = center; indexes[0] = center;
for(int j = 0; j < COUNT; j++) for (int j = 0; j < COUNT; j++) {
{ indexes[j * 2 + 1] = center + j + 1;
indexes[j*2+1] = center+j+1; indexes[j * 2 + 2] = center - j - 1;
indexes[j*2+2] = center-j-1;
} }
for(int c = 0; c < 2*COUNT+1; c++) for (int c = 0; c < 2 * COUNT + 1; c++) {
{
int i = indexes[c]; int i = indexes[c];
if((i >= 0) && (i < flow->slideCount())) if ((i >= 0) && (i < flow->slideCount()))
if(!imagesLoaded[i]&&imagesReady[i])//slide(i).isNull()) if (!imagesLoaded[i] && imagesReady[i]) //slide(i).isNull())
{ {
// schedule thumbnail generation // schedule thumbnail generation
worker->generate(i, flow->slideSize(),rawImages[i]); worker->generate(i, flow->slideSize(), rawImages[i]);
return; return;
} }
} }
// no need to generate anything? stop polling... // no need to generate anything? stop polling...
updateTimer->stop(); updateTimer->stop();
} }
void GoToFlow::wheelEvent(QWheelEvent * event) void GoToFlow::wheelEvent(QWheelEvent *event)
{ {
if(event->delta()<0) if (event->delta() < 0)
flow->showNext(); flow->showNext();
else else
flow->showPrevious(); flow->showPrevious();
@ -215,13 +208,13 @@ void GoToFlow::setFlowType(FlowType flowType)
flow->setFlowType(flowType); flow->setFlowType(flowType);
} }
void GoToFlow::updateConfig(QSettings * settings) void GoToFlow::updateConfig(QSettings *settings)
{ {
GoToFlowWidget::updateConfig(settings); GoToFlowWidget::updateConfig(settings);
imageSize = Configuration::getConfiguration().getGotoSlideSize(); imageSize = Configuration::getConfiguration().getGotoSlideSize();
flow->setFlowType(Configuration::getConfiguration().getFlowType()); flow->setFlowType(Configuration::getConfiguration().getFlowType());
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7); resize(5 * imageSize.width(), toolBar->height() + imageSize.height() * 1.7);
updateSize(); updateSize();
} }
@ -234,8 +227,8 @@ void GoToFlow::setFlowRightToLeft(bool b)
//PageLoader //PageLoader
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
PageLoader::PageLoader(QMutex * m): PageLoader::PageLoader(QMutex *m)
QThread(),mutex(m), restart(false), working(false), idx(-1) : QThread(), mutex(m), restart(false), working(false), idx(-1)
{ {
} }
@ -254,7 +247,7 @@ bool PageLoader::busy() const
return isRunning() ? working : false; return isRunning() ? working : false;
} }
void PageLoader::generate(int index, QSize size,const QByteArray & rImage) void PageLoader::generate(int index, QSize size, const QByteArray &rImage)
{ {
mutex->lock(); mutex->lock();
this->idx = index; this->idx = index;
@ -265,8 +258,7 @@ void PageLoader::generate(int index, QSize size,const QByteArray & rImage)
if (!isRunning()) if (!isRunning())
start(); start();
else else {
{
mutex->lock(); mutex->lock();
// already running, wake up whenever ready // already running, wake up whenever ready
restart = true; restart = true;
@ -277,18 +269,16 @@ void PageLoader::generate(int index, QSize size,const QByteArray & rImage)
void PageLoader::run() void PageLoader::run()
{ {
for(;;) for (;;) {
{
// copy necessary data // copy necessary data
mutex->lock(); mutex->lock();
this->working = true; this->working = true;
//int idx = this->idx; //int idx = this->idx;
QImage image; QImage image;
image.loadFromData(this->rawImage); image.loadFromData(this->rawImage);
// let everyone knows it is ready // let everyone knows it is ready
image = image.scaled(this->size,Qt::KeepAspectRatio,Qt::SmoothTransformation); image = image.scaled(this->size, Qt::KeepAspectRatio, Qt::SmoothTransformation);
mutex->unlock(); mutex->unlock();

View File

@ -19,7 +19,6 @@ class QWaitCondition;
class QEvent; class QEvent;
class QLabel; class QLabel;
class Comic; class Comic;
class PageLoader; class PageLoader;
class YACReaderFlow; class YACReaderFlow;
@ -30,12 +29,12 @@ class GoToFlow : public GoToFlowWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
GoToFlow(QWidget* parent = 0,FlowType flowType = CoverFlowLike); GoToFlow(QWidget *parent = 0, FlowType flowType = CoverFlowLike);
~GoToFlow(); ~GoToFlow();
bool ready; //comic is ready for read. bool ready; //comic is ready for read.
private: private:
YACReaderFlow * flow; YACReaderFlow *flow;
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
//Comic * comic; //Comic * comic;
QSize imageSize; QSize imageSize;
@ -44,9 +43,9 @@ private:
int numImagesLoaded; int numImagesLoaded;
QVector<bool> imagesReady; QVector<bool> imagesReady;
QVector<QByteArray> rawImages; QVector<QByteArray> rawImages;
QTimer* updateTimer; QTimer *updateTimer;
PageLoader* worker; PageLoader *worker;
virtual void wheelEvent(QWheelEvent * event); virtual void wheelEvent(QWheelEvent *event);
QMutex mutexGoToFlow; QMutex mutexGoToFlow;
private slots: private slots:
@ -54,18 +53,17 @@ private slots:
void updateImageData(); void updateImageData();
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
public slots: public slots:
void centerSlide(int slide); void centerSlide(int slide);
void reset(); void reset();
void setNumSlides(unsigned int slides); void setNumSlides(unsigned int slides);
void setImageReady(int index,const QByteArray & image); void setImageReady(int index, const QByteArray &image);
void setFlowType(FlowType flowType); void setFlowType(FlowType flowType);
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void setFlowRightToLeft(bool b); void setFlowRightToLeft(bool b);
signals: signals:
void goToPage(unsigned int page); void goToPage(unsigned int page);
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -74,18 +72,20 @@ signals:
class PageLoader : public QThread class PageLoader : public QThread
{ {
public: public:
PageLoader(QMutex * m); PageLoader(QMutex *m);
~PageLoader(); ~PageLoader();
// returns FALSE if worker is still busy and can't take the task // returns FALSE if worker is still busy and can't take the task
bool busy() const; bool busy() const;
void generate(int index, QSize size,const QByteArray & rImage); void generate(int index, QSize size, const QByteArray &rImage);
void reset(){idx = -1;}; void reset() { idx = -1; };
int index() const { return idx; } int index() const { return idx; }
QImage result() const { return img; } QImage result() const { return img; }
protected: protected:
void run(); void run();
private: private:
QMutex * mutex; QMutex *mutex;
QWaitCondition condition; QWaitCondition condition;
bool restart; bool restart;

View File

@ -11,9 +11,8 @@
#include "goto_flow_toolbar.h" #include "goto_flow_toolbar.h"
GoToFlowGL::GoToFlowGL(QWidget *parent, FlowType flowType)
GoToFlowGL::GoToFlowGL(QWidget* parent, FlowType flowType) : GoToFlowWidget(parent)
:GoToFlowWidget(parent)
{ {
Q_UNUSED(flowType) Q_UNUSED(flowType)
flow = new YACReaderPageFlowGL(this); flow = new YACReaderPageFlowGL(this);
@ -22,16 +21,16 @@ GoToFlowGL::GoToFlowGL(QWidget* parent, FlowType flowType)
imageSize = Configuration::getConfiguration().getGotoSlideSize(); imageSize = Configuration::getConfiguration().getGotoSlideSize();
flow->setSlideSize(imageSize); flow->setSlideSize(imageSize);
connect(flow,SIGNAL(centerIndexChanged(int)),this,SLOT(setPageNumber(int))); connect(flow, SIGNAL(centerIndexChanged(int)), this, SLOT(setPageNumber(int)));
connect(flow,SIGNAL(selected(unsigned int)),this,SIGNAL(goToPage(unsigned int))); connect(flow, SIGNAL(selected(unsigned int)), this, SIGNAL(goToPage(unsigned int)));
connect(toolBar,SIGNAL(goTo(unsigned int)),this,SIGNAL(goToPage(unsigned int))); connect(toolBar, SIGNAL(goTo(unsigned int)), this, SIGNAL(goToPage(unsigned int)));
connect(toolBar,SIGNAL(setCenter(unsigned int)),flow,SLOT(setCenterIndex(unsigned int))); connect(toolBar, SIGNAL(setCenter(unsigned int)), flow, SLOT(setCenterIndex(unsigned int)));
mainLayout->addWidget(flow); mainLayout->addWidget(flow);
toolBar->raise(); toolBar->raise();
resize(static_cast<int>(5*imageSize.width()),toolBar->height() + static_cast<int>(imageSize.height()*1.7)); resize(static_cast<int>(5 * imageSize.width()), toolBar->height() + static_cast<int>(imageSize.height() * 1.7));
this->setCursor(QCursor(Qt::ArrowCursor)); this->setCursor(QCursor(Qt::ArrowCursor));
} }
@ -48,19 +47,18 @@ void GoToFlowGL::reset()
void GoToFlowGL::centerSlide(int slide) void GoToFlowGL::centerSlide(int slide)
{ {
if(flow->centerIndex()!=slide) if (flow->centerIndex() != slide) {
{
flow->setCenterIndex(slide); flow->setCenterIndex(slide);
} }
} }
void GoToFlowGL::setFlowType(FlowType flowType) void GoToFlowGL::setFlowType(FlowType flowType)
{ {
if(flowType == CoverFlowLike) if (flowType == CoverFlowLike)
flow->setPreset(presetYACReaderFlowClassicConfig); flow->setPreset(presetYACReaderFlowClassicConfig);
else if(flowType == Strip) else if (flowType == Strip)
flow->setPreset(presetYACReaderFlowStripeConfig); flow->setPreset(presetYACReaderFlowStripeConfig);
else if(flowType == StripOverlapped) else if (flowType == StripOverlapped)
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig); flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
else else
flow->setPreset(defaultYACReaderFlowConfig); flow->setPreset(defaultYACReaderFlowConfig);
@ -71,19 +69,18 @@ void GoToFlowGL::setNumSlides(unsigned int slides)
flow->populate(slides); flow->populate(slides);
toolBar->setTop(slides); toolBar->setTop(slides);
} }
void GoToFlowGL::setImageReady(int index,const QByteArray & imageData) void GoToFlowGL::setImageReady(int index, const QByteArray &imageData)
{ {
flow->rawImages[index] = imageData; flow->rawImages[index] = imageData;
flow->imagesReady[index] = true; flow->imagesReady[index] = true;
} }
void GoToFlowGL::updateConfig(QSettings * settings) void GoToFlowGL::updateConfig(QSettings *settings)
{ {
GoToFlowWidget::updateConfig(settings); GoToFlowWidget::updateConfig(settings);
Performance performance = medium; Performance performance = medium;
switch (settings->value(PERFORMANCE).toInt()) switch (settings->value(PERFORMANCE).toInt()) {
{
case 0: case 0:
performance = low; performance = low;
break; break;
@ -99,13 +96,12 @@ void GoToFlowGL::updateConfig(QSettings * settings)
} }
imageSize = Configuration::getConfiguration().getGotoSlideSize(); imageSize = Configuration::getConfiguration().getGotoSlideSize();
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7); resize(5 * imageSize.width(), toolBar->height() + imageSize.height() * 1.7);
updateSize(); updateSize();
flow->setPerformance(performance); flow->setPerformance(performance);
switch (settings->value(FLOW_TYPE_GL).toInt()) switch (settings->value(FLOW_TYPE_GL).toInt()) {
{
case FlowType::CoverFlowLike: case FlowType::CoverFlowLike:
flow->setPreset(presetYACReaderFlowClassicConfig); flow->setPreset(presetYACReaderFlowClassicConfig);
break; break;
@ -139,12 +135,13 @@ void GoToFlowGL::updateConfig(QSettings * settings)
flow->setFadeOutDist(20); flow->setFadeOutDist(20);
} }
void GoToFlowGL::keyPressEvent(QKeyEvent* event) void GoToFlowGL::keyPressEvent(QKeyEvent *event)
{ {
switch (event->key()) switch (event->key()) {
{ case Qt::Key_Left:
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up: case Qt::Key_Right:
QApplication::sendEvent(flow,event); case Qt::Key_Up:
QApplication::sendEvent(flow, event);
return; return;
default: default:
break; break;

View File

@ -16,22 +16,23 @@ class GoToFlowGL : public GoToFlowWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
GoToFlowGL(QWidget* parent = 0,FlowType flowType = CoverFlowLike); GoToFlowGL(QWidget *parent = 0, FlowType flowType = CoverFlowLike);
~GoToFlowGL(); ~GoToFlowGL();
void reset(); void reset();
void centerSlide(int slide); void centerSlide(int slide);
void setFlowType(FlowType flowType); void setFlowType(FlowType flowType);
void setNumSlides(unsigned int slides); void setNumSlides(unsigned int slides);
void setImageReady(int index,const QByteArray & image); void setImageReady(int index, const QByteArray &image);
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void setFlowRightToLeft(bool b); void setFlowRightToLeft(bool b);
signals: signals:
void goToPage(unsigned int page); void goToPage(unsigned int page);
private: private:
YACReaderPageFlowGL * flow; YACReaderPageFlowGL *flow;
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
void resizeEvent(QResizeEvent *event); void resizeEvent(QResizeEvent *event);
//Comic * comic; //Comic * comic;
QSize imageSize; QSize imageSize;

View File

@ -4,20 +4,20 @@
#include "configuration.h" #include "configuration.h"
GoToFlowToolBar::GoToFlowToolBar(QWidget * parent) GoToFlowToolBar::GoToFlowToolBar(QWidget *parent)
:QStackedWidget(parent) : QStackedWidget(parent)
{ {
//elementos interactivos //elementos interactivos
QWidget * normal = new QWidget(this); // container widget QWidget *normal = new QWidget(this); // container widget
QWidget * quickNavi = new QWidget(this); // container widget QWidget *quickNavi = new QWidget(this); // container widget
addWidget(normal); addWidget(normal);
addWidget(quickNavi); addWidget(quickNavi);
QHBoxLayout * normalLayout = new QHBoxLayout(normal); QHBoxLayout *normalLayout = new QHBoxLayout(normal);
QHBoxLayout * naviLayout = new QHBoxLayout(quickNavi); QHBoxLayout *naviLayout = new QHBoxLayout(quickNavi);
normal->setLayout(normalLayout); normal->setLayout(normalLayout);
quickNavi->setLayout(naviLayout); quickNavi->setLayout(naviLayout);
slider = new QSlider(Qt::Horizontal,this); slider = new QSlider(Qt::Horizontal, this);
slider->setStyleSheet( slider->setStyleSheet(
"QSlider::groove:horizontal {" "QSlider::groove:horizontal {"
" border: 1px solid #22FFFFFF;" " border: 1px solid #22FFFFFF;"
@ -30,26 +30,25 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
" background: #55FFFFFF;" " background: #55FFFFFF;"
" width: 48px;" " width: 48px;"
" border-radius: 1px;" " border-radius: 1px;"
"}" "}");
);
connect(slider, &QSlider::valueChanged, this, [&](int v) { emit(setCenter(v)); }); connect(slider, &QSlider::valueChanged, this, [&](int v) { emit(setCenter(v)); });
pageHint = new QLabel("<b>" + tr("Page : ") + "</b>",this); pageHint = new QLabel("<b>" + tr("Page : ") + "</b>", this);
v = new QIntValidator(this); v = new QIntValidator(this);
v->setBottom(1); v->setBottom(1);
edit = new QLineEdit(this); edit = new QLineEdit(this);
edit->setValidator(v); edit->setValidator(v);
edit->setAlignment(Qt::AlignRight|Qt::AlignVCenter); edit->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
edit->setStyleSheet("QLineEdit {border: 1px solid #77000000; background: #55000000; color: white; padding: 3px 5px 5px 5px; margin: 13px 5px 12px 5px; font-weight:bold}"); edit->setStyleSheet("QLineEdit {border: 1px solid #77000000; background: #55000000; color: white; padding: 3px 5px 5px 5px; margin: 13px 5px 12px 5px; font-weight:bold}");
QPixmap p(":/images/imgEdit.png"); QPixmap p(":/images/imgEdit.png");
edit->setFixedSize(54,50); edit->setFixedSize(54, 50);
edit->setAttribute(Qt::WA_MacShowFocusRect,false); edit->setAttribute(Qt::WA_MacShowFocusRect, false);
//edit->setAttribute(Qt::WA_LayoutUsesWidgetRect,true); //edit->setAttribute(Qt::WA_LayoutUsesWidgetRect,true);
//edit->resize(QSize(54,50)); //edit->resize(QSize(54,50));
edit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed)); edit->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
//edit->setAutoFillBackground(false); //edit->setAutoFillBackground(false);
connect(edit,SIGNAL(returnPressed()),this,SLOT(goTo())); connect(edit, SIGNAL(returnPressed()), this, SLOT(goTo()));
QString centerButtonCSS = "QPushButton {background-image: url(:/images/imgCenterSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} " QString centerButtonCSS = "QPushButton {background-image: url(:/images/imgCenterSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} "
"QPushButton:focus { border: none; outline: none;}" "QPushButton:focus { border: none; outline: none;}"
@ -57,9 +56,9 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
centerButton = new QPushButton(this); centerButton = new QPushButton(this);
//centerButton->setIcon(QIcon(":/images/center.png")); //centerButton->setIcon(QIcon(":/images/center.png"));
centerButton->setStyleSheet(centerButtonCSS); centerButton->setStyleSheet(centerButtonCSS);
centerButton->setFixedSize(26,50); centerButton->setFixedSize(26, 50);
centerButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true); centerButton->setAttribute(Qt::WA_LayoutUsesWidgetRect, true);
connect(centerButton,SIGNAL(clicked()),this,SLOT(centerSlide())); connect(centerButton, SIGNAL(clicked()), this, SLOT(centerSlide()));
QString goToButtonCSS = "QPushButton {background-image: url(:/images/imgGoToSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} " QString goToButtonCSS = "QPushButton {background-image: url(:/images/imgGoToSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} "
"QPushButton:focus { border: none; outline: none;}" "QPushButton:focus { border: none; outline: none;}"
@ -67,10 +66,10 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
goToButton = new QPushButton(this); goToButton = new QPushButton(this);
//goToButton->setIcon(QIcon(":/images/goto.png")); //goToButton->setIcon(QIcon(":/images/goto.png"));
goToButton->setStyleSheet(goToButtonCSS); goToButton->setStyleSheet(goToButtonCSS);
goToButton->setFixedSize(32,50); goToButton->setFixedSize(32, 50);
goToButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true); goToButton->setAttribute(Qt::WA_LayoutUsesWidgetRect, true);
connect(goToButton,SIGNAL(clicked()),this,SLOT(goTo())); connect(goToButton, SIGNAL(clicked()), this, SLOT(goTo()));
normalLayout->setMargin(0); normalLayout->setMargin(0);
normalLayout->setSpacing(0); normalLayout->setSpacing(0);
@ -94,31 +93,31 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
void GoToFlowToolBar::paintEvent(QPaintEvent *) void GoToFlowToolBar::paintEvent(QPaintEvent *)
{ {
QPainter painter(this); QPainter painter(this);
painter.fillRect(0,0,width(),height(),QColor("#99000000")); painter.fillRect(0, 0, width(), height(), QColor("#99000000"));
} }
void GoToFlowToolBar::setPage(int pageNumber) void GoToFlowToolBar::setPage(int pageNumber)
{ {
edit->setText(QString::number(pageNumber+1)); edit->setText(QString::number(pageNumber + 1));
slider->setValue(pageNumber); slider->setValue(pageNumber);
} }
void GoToFlowToolBar::setTop(int numPages) void GoToFlowToolBar::setTop(int numPages)
{ {
v->setTop(numPages); v->setTop(numPages);
slider->setMaximum(numPages-1); // min is 0 slider->setMaximum(numPages - 1); // min is 0
} }
void GoToFlowToolBar::goTo() void GoToFlowToolBar::goTo()
{ {
if(edit->text().toInt()!=0) if (edit->text().toInt() != 0)
emit(goTo(edit->text().toInt()-1)); emit(goTo(edit->text().toInt() - 1));
} }
void GoToFlowToolBar::centerSlide() void GoToFlowToolBar::centerSlide()
{ {
if(edit->text().toInt()!=0) if (edit->text().toInt() != 0)
emit(setCenter(edit->text().toInt()-1)); emit(setCenter(edit->text().toInt() - 1));
} }
void GoToFlowToolBar::updateOptions() void GoToFlowToolBar::updateOptions()

View File

@ -13,26 +13,26 @@ class QLabel;
class GoToFlowToolBar : public QStackedWidget class GoToFlowToolBar : public QStackedWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
QLineEdit * edit; QLineEdit *edit;
QSlider * slider; QSlider *slider;
QIntValidator * v; QIntValidator *v;
QPushButton * centerButton; QPushButton *centerButton;
QPushButton * goToButton; QPushButton *goToButton;
QLabel * pageHint; QLabel *pageHint;
QWidget * bar; QWidget *bar;
void paintEvent(QPaintEvent *); void paintEvent(QPaintEvent *);
public: public:
GoToFlowToolBar(QWidget * parent = 0); GoToFlowToolBar(QWidget *parent = 0);
public slots: public slots:
void setPage(int pageNumber); void setPage(int pageNumber);
void setTop(int numPages); void setTop(int numPages);
void goTo(); void goTo();
void centerSlide(); void centerSlide();
void updateOptions(); void updateOptions();
signals: signals:
void setCenter(unsigned int); void setCenter(unsigned int);
void goTo(unsigned int); void goTo(unsigned int);
}; };

View File

@ -8,8 +8,8 @@
#include "goto_flow_toolbar.h" #include "goto_flow_toolbar.h"
#include "configuration.h" #include "configuration.h"
GoToFlowWidget::GoToFlowWidget(QWidget * parent) GoToFlowWidget::GoToFlowWidget(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
mainLayout = new QVBoxLayout; mainLayout = new QVBoxLayout;
mainLayout->setMargin(0); mainLayout->setMargin(0);
@ -22,7 +22,8 @@ GoToFlowWidget::GoToFlowWidget(QWidget * parent)
//toolBar->installEventFilter(this); //toolBar->installEventFilter(this);
} }
GoToFlowWidget::~GoToFlowWidget() { GoToFlowWidget::~GoToFlowWidget()
{
delete toolBar; delete toolBar;
delete mainLayout; delete mainLayout;
} }
@ -32,11 +33,11 @@ void GoToFlowWidget::setPageNumber(int page)
toolBar->setPage(page); toolBar->setPage(page);
} }
void GoToFlowWidget::keyPressEvent(QKeyEvent* event) void GoToFlowWidget::keyPressEvent(QKeyEvent *event)
{ {
switch (event->key()) switch (event->key()) {
{ case Qt::Key_Return:
case Qt::Key_Return: case Qt::Key_Enter: case Qt::Key_Enter:
toolBar->goTo(); toolBar->goTo();
toolBar->centerSlide(); toolBar->centerSlide();
break; break;
@ -44,14 +45,14 @@ void GoToFlowWidget::keyPressEvent(QKeyEvent* event)
toolBar->centerSlide(); toolBar->centerSlide();
break; break;
case Qt::Key_S: case Qt::Key_S:
QCoreApplication::sendEvent(this->parent(),event); QCoreApplication::sendEvent(this->parent(), event);
break; break;
} }
event->accept(); event->accept();
} }
void GoToFlowWidget::updateConfig(QSettings * settings) void GoToFlowWidget::updateConfig(QSettings *settings)
{ {
Q_UNUSED(settings) Q_UNUSED(settings)
toolBar->updateOptions(); toolBar->updateOptions();
@ -63,7 +64,7 @@ void GoToFlowWidget::updateSize()
// no need to update width when QuickNaviMode disabled // no need to update width when QuickNaviMode disabled
// height is set in updateConfig // height is set in updateConfig
if (Configuration::getConfiguration().getQuickNaviMode() && parentWidget() != nullptr) if (Configuration::getConfiguration().getQuickNaviMode() && parentWidget() != nullptr)
resize(parentWidget()->width(),height()); resize(parentWidget()->width(), height());
} }
/*bool GoToFlowWidget::eventFilter(QObject * target, QEvent * event) /*bool GoToFlowWidget::eventFilter(QObject * target, QEvent * event)

View File

@ -15,10 +15,11 @@ class GoToFlowWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
protected: protected:
QVBoxLayout * mainLayout; QVBoxLayout *mainLayout;
GoToFlowToolBar * toolBar; GoToFlowToolBar *toolBar;
public: public:
GoToFlowWidget(QWidget * paret = 0); GoToFlowWidget(QWidget *paret = 0);
virtual ~GoToFlowWidget() = 0; virtual ~GoToFlowWidget() = 0;
public slots: public slots:
virtual void reset() = 0; virtual void reset() = 0;
@ -26,15 +27,14 @@ public slots:
virtual void setPageNumber(int page); virtual void setPageNumber(int page);
virtual void setFlowType(FlowType flowType) = 0; virtual void setFlowType(FlowType flowType) = 0;
virtual void setNumSlides(unsigned int slides) = 0; virtual void setNumSlides(unsigned int slides) = 0;
virtual void setImageReady(int index,const QByteArray & image) = 0; virtual void setImageReady(int index, const QByteArray &image) = 0;
virtual void updateSize(); virtual void updateSize();
virtual void updateConfig(QSettings * settings); virtual void updateConfig(QSettings *settings);
virtual void setFlowRightToLeft(bool b) = 0; virtual void setFlowRightToLeft(bool b) = 0;
protected: protected:
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
//bool eventFilter(QObject *, QEvent *); //bool eventFilter(QObject *, QEvent *);
}; };
#endif #endif

View File

@ -5,27 +5,27 @@
#include <QScrollBar> #include <QScrollBar>
MagnifyingGlass::MagnifyingGlass(int w, int h, QWidget * parent) MagnifyingGlass::MagnifyingGlass(int w, int h, QWidget *parent)
:QLabel(parent),zoomLevel(0.5) : QLabel(parent), zoomLevel(0.5)
{ {
setup(QSize(w,h)); setup(QSize(w, h));
} }
MagnifyingGlass::MagnifyingGlass(const QSize & size, QWidget * parent) MagnifyingGlass::MagnifyingGlass(const QSize &size, QWidget *parent)
:QLabel(parent),zoomLevel(0.5) : QLabel(parent), zoomLevel(0.5)
{ {
setup(size); setup(size);
} }
void MagnifyingGlass::setup(const QSize & size) void MagnifyingGlass::setup(const QSize &size)
{ {
resize(size); resize(size);
setScaledContents(true); setScaledContents(true);
setMouseTracking(true); setMouseTracking(true);
setCursor(QCursor(QBitmap(1,1),QBitmap(1,1))); setCursor(QCursor(QBitmap(1, 1), QBitmap(1, 1)));
} }
void MagnifyingGlass::mouseMoveEvent(QMouseEvent * event) void MagnifyingGlass::mouseMoveEvent(QMouseEvent *event)
{ {
updateImage(); updateImage();
event->accept(); event->accept();
@ -36,153 +36,134 @@ void MagnifyingGlass::updateImage(int x, int y)
//image section augmented //image section augmented
int zoomWidth = static_cast<int>(width() * zoomLevel); int zoomWidth = static_cast<int>(width() * zoomLevel);
int zoomHeight = static_cast<int>(height() * zoomLevel); int zoomHeight = static_cast<int>(height() * zoomLevel);
Viewer * p = (Viewer *)parent(); Viewer *p = (Viewer *)parent();
int currentPos = p->verticalScrollBar()->sliderPosition(); int currentPos = p->verticalScrollBar()->sliderPosition();
const QPixmap * image = p->pixmap(); const QPixmap *image = p->pixmap();
int iWidth = image->width(); int iWidth = image->width();
int iHeight = image->height(); int iHeight = image->height();
float wFactor = static_cast<float>(iWidth) / p->widget()->width(); float wFactor = static_cast<float>(iWidth) / p->widget()->width();
float hFactor = static_cast<float>(iHeight) / p->widget()->height(); float hFactor = static_cast<float>(iHeight) / p->widget()->height();
zoomWidth *= wFactor; zoomWidth *= wFactor;
zoomHeight *= hFactor; zoomHeight *= hFactor;
if(p->verticalScrollBar()->minimum()==p->verticalScrollBar()->maximum()) if (p->verticalScrollBar()->minimum() == p->verticalScrollBar()->maximum()) {
{ int xp = static_cast<int>(((x - p->widget()->pos().x()) * wFactor) - zoomWidth / 2);
int xp = static_cast<int>(((x-p->widget()->pos().x())*wFactor)-zoomWidth/2); int yp = static_cast<int>((y - p->widget()->pos().y() + currentPos) * hFactor - zoomHeight / 2);
int yp = static_cast<int>((y-p->widget()->pos().y()+currentPos)*hFactor-zoomHeight/2); int xOffset = 0;
int xOffset=0; int yOffset = 0;
int yOffset=0; int zw = zoomWidth;
int zw=zoomWidth; int zh = zoomHeight;
int zh=zoomHeight;
//int wOffset,hOffset=0; //int wOffset,hOffset=0;
bool outImage = false; bool outImage = false;
if(xp<0) if (xp < 0) {
{
xOffset = -xp; xOffset = -xp;
xp=0; xp = 0;
zw = zw - xOffset; zw = zw - xOffset;
outImage = true; outImage = true;
} }
if(yp<0) if (yp < 0) {
{
yOffset = -yp; yOffset = -yp;
yp=0; yp = 0;
zh = zh - yOffset; zh = zh - yOffset;
outImage = true; outImage = true;
} }
if(xp+zoomWidth >= image->width()) if (xp + zoomWidth >= image->width()) {
{ zw -= xp + zw - image->width();
zw -= xp+zw - image->width();
outImage = true; outImage = true;
} }
if(yp+zoomHeight >= image->height()) if (yp + zoomHeight >= image->height()) {
{ zh -= yp + zh - image->height();
zh -= yp+zh - image->height();
outImage = true; outImage = true;
} }
if(outImage) if (outImage) {
{ QImage img(zoomWidth, zoomHeight, QImage::Format_RGB32);
QImage img(zoomWidth,zoomHeight,QImage::Format_RGB32);
img.fill(Configuration::getConfiguration().getBackgroundColor()); img.fill(Configuration::getConfiguration().getBackgroundColor());
if(zw>0&&zh>0) if (zw > 0 && zh > 0) {
{
QPainter painter(&img); QPainter painter(&img);
painter.drawPixmap(xOffset,yOffset,p->pixmap()->copy(xp,yp,zw,zh)); painter.drawPixmap(xOffset, yOffset, p->pixmap()->copy(xp, yp, zw, zh));
} }
setPixmap(QPixmap().fromImage(img)); setPixmap(QPixmap().fromImage(img));
} } else
else setPixmap(p->pixmap()->copy(xp, yp, zoomWidth, zoomHeight));
setPixmap(p->pixmap()->copy(xp,yp,zoomWidth,zoomHeight)); } else {
} int xp = static_cast<int>(((x - p->widget()->pos().x()) * wFactor) - zoomWidth / 2);
else int yp = static_cast<int>((y + currentPos) * hFactor - zoomHeight / 2);
{ int xOffset = 0;
int xp = static_cast<int>(((x-p->widget()->pos().x())*wFactor)-zoomWidth/2); int yOffset = 0;
int yp = static_cast<int>((y+currentPos)*hFactor-zoomHeight/2); int zw = zoomWidth;
int xOffset=0; int zh = zoomHeight;
int yOffset=0;
int zw=zoomWidth;
int zh=zoomHeight;
//int wOffset,hOffset=0; //int wOffset,hOffset=0;
bool outImage = false; bool outImage = false;
if(xp<0) if (xp < 0) {
{
xOffset = -xp; xOffset = -xp;
xp=0; xp = 0;
zw = zw - xOffset; zw = zw - xOffset;
outImage = true; outImage = true;
} }
if(yp<0) if (yp < 0) {
{
yOffset = -yp; yOffset = -yp;
yp=0; yp = 0;
zh = zh - yOffset; zh = zh - yOffset;
outImage = true; outImage = true;
} }
if(xp+zoomWidth >= image->width()) if (xp + zoomWidth >= image->width()) {
{ zw -= xp + zw - image->width();
zw -= xp+zw - image->width();
outImage = true; outImage = true;
} }
if(yp+zoomHeight >= image->height()) if (yp + zoomHeight >= image->height()) {
{ zh -= yp + zh - image->height();
zh -= yp+zh - image->height();
outImage = true; outImage = true;
} }
if(outImage) if (outImage) {
{ QImage img(zoomWidth, zoomHeight, QImage::Format_RGB32);
QImage img(zoomWidth,zoomHeight,QImage::Format_RGB32);
img.fill(Configuration::getConfiguration().getBackgroundColor()); img.fill(Configuration::getConfiguration().getBackgroundColor());
if(zw>0&&zh>0) if (zw > 0 && zh > 0) {
{
QPainter painter(&img); QPainter painter(&img);
painter.drawPixmap(xOffset,yOffset,p->pixmap()->copy(xp,yp,zw,zh)); painter.drawPixmap(xOffset, yOffset, p->pixmap()->copy(xp, yp, zw, zh));
} }
setPixmap(QPixmap().fromImage(img)); setPixmap(QPixmap().fromImage(img));
} else
setPixmap(p->pixmap()->copy(xp, yp, zoomWidth, zoomHeight));
} }
else move(static_cast<int>(x - float(width()) / 2), static_cast<int>(y - float(height()) / 2));
setPixmap(p->pixmap()->copy(xp,yp,zoomWidth,zoomHeight));
}
move(static_cast<int>(x-float(width())/2),static_cast<int>(y-float(height())/2));
} }
void MagnifyingGlass::updateImage() void MagnifyingGlass::updateImage()
{ {
if(isVisible()) if (isVisible()) {
{ QPoint p = QPoint(cursor().pos().x(), cursor().pos().y());
QPoint p = QPoint(cursor().pos().x(),cursor().pos().y());
p = this->parentWidget()->mapFromGlobal(p); p = this->parentWidget()->mapFromGlobal(p);
updateImage(p.x(),p.y()); updateImage(p.x(), p.y());
} }
} }
void MagnifyingGlass::wheelEvent(QWheelEvent * event) void MagnifyingGlass::wheelEvent(QWheelEvent *event)
{ {
switch(event->modifiers()) switch (event->modifiers()) {
{
//size //size
case Qt::NoModifier: case Qt::NoModifier:
if(event->delta()<0) if (event->delta() < 0)
sizeUp(); sizeUp();
else else
sizeDown(); sizeDown();
break; break;
//size height //size height
case Qt::ControlModifier: case Qt::ControlModifier:
if(event->delta()<0) if (event->delta() < 0)
heightUp(); heightUp();
else else
heightDown(); heightDown();
break; break;
//size width //size width
case Qt::AltModifier: case Qt::AltModifier:
if(event->delta()<0) if (event->delta() < 0)
widthUp(); widthUp();
else else
widthDown(); widthDown();
break; break;
//zoom level //zoom level
case Qt::ShiftModifier: case Qt::ShiftModifier:
if(event->delta()<0) if (event->delta() < 0)
zoomIn(); zoomIn();
else else
zoomOut(); zoomOut();
@ -193,53 +174,53 @@ void MagnifyingGlass::wheelEvent(QWheelEvent * event)
} }
void MagnifyingGlass::zoomIn() void MagnifyingGlass::zoomIn()
{ {
if(zoomLevel>0.2f) if (zoomLevel > 0.2f)
zoomLevel -= 0.025f; zoomLevel -= 0.025f;
} }
void MagnifyingGlass::zoomOut() void MagnifyingGlass::zoomOut()
{ {
if(zoomLevel<0.9f) if (zoomLevel < 0.9f)
zoomLevel += 0.025f; zoomLevel += 0.025f;
} }
void MagnifyingGlass::sizeUp() void MagnifyingGlass::sizeUp()
{ {
Viewer * p = (Viewer *)parent(); Viewer *p = (Viewer *)parent();
if(width()<(p->width()*0.90f)) if (width() < (p->width() * 0.90f))
resize(width()+30,height()+15); resize(width() + 30, height() + 15);
} }
void MagnifyingGlass::sizeDown() void MagnifyingGlass::sizeDown()
{ {
if(width()>175) if (width() > 175)
resize(width()-30,height()-15); resize(width() - 30, height() - 15);
} }
void MagnifyingGlass::heightUp() void MagnifyingGlass::heightUp()
{ {
Viewer * p = (Viewer *)parent(); Viewer *p = (Viewer *)parent();
if(height()<(p->height()*0.90f)) if (height() < (p->height() * 0.90f))
resize(width(),height()+15); resize(width(), height() + 15);
} }
void MagnifyingGlass::heightDown() void MagnifyingGlass::heightDown()
{ {
if(height()>80) if (height() > 80)
resize(width(),height()-15); resize(width(), height() - 15);
} }
void MagnifyingGlass::widthUp() void MagnifyingGlass::widthUp()
{ {
Viewer * p = (Viewer *)parent(); Viewer *p = (Viewer *)parent();
if(width()<(p->width()*0.90f)) if (width() < (p->width() * 0.90f))
resize(width()+30,height()); resize(width() + 30, height());
} }
void MagnifyingGlass::widthDown() void MagnifyingGlass::widthDown()
{ {
if(width()>175) if (width() > 175)
resize(width()-30,height()); resize(width() - 30, height());
} }
void MagnifyingGlass::keyPressEvent(QKeyEvent *event) void MagnifyingGlass::keyPressEvent(QKeyEvent *event)
@ -249,7 +230,7 @@ void MagnifyingGlass::keyPressEvent(QKeyEvent *event)
int _key = event->key(); int _key = event->key();
Qt::KeyboardModifiers modifiers = event->modifiers(); Qt::KeyboardModifiers modifiers = event->modifiers();
if(modifiers & Qt::ShiftModifier) if (modifiers & Qt::ShiftModifier)
_key |= Qt::SHIFT; _key |= Qt::SHIFT;
if (modifiers & Qt::ControlModifier) if (modifiers & Qt::ControlModifier)
_key |= Qt::CTRL; _key |= Qt::CTRL;
@ -260,32 +241,27 @@ void MagnifyingGlass::keyPressEvent(QKeyEvent *event)
QKeySequence key(_key); QKeySequence key(_key);
if (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_UP_MGLASS_ACTION_Y)) if (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_UP_MGLASS_ACTION_Y)) {
{
sizeUp(); sizeUp();
validKey = true; validKey = true;
} }
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_DOWN_MGLASS_ACTION_Y)) else if (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_DOWN_MGLASS_ACTION_Y)) {
{
sizeDown(); sizeDown();
validKey = true; validKey = true;
} }
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_IN_MGLASS_ACTION_Y)) else if (key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_IN_MGLASS_ACTION_Y)) {
{
zoomIn(); zoomIn();
validKey = true; validKey = true;
} }
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_OUT_MGLASS_ACTION_Y)) else if (key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_OUT_MGLASS_ACTION_Y)) {
{
zoomOut(); zoomOut();
validKey = true; validKey = true;
} }
if(validKey) if (validKey) {
{
updateImage(); updateImage();
event->setAccepted(true); event->setAccepted(true);
} }

View File

@ -6,21 +6,22 @@
#include <QMouseEvent> #include <QMouseEvent>
#include <QWidget> #include <QWidget>
class MagnifyingGlass : public QLabel class MagnifyingGlass : public QLabel
{ {
Q_OBJECT Q_OBJECT
private: private:
float zoomLevel; float zoomLevel;
void setup(const QSize & size); void setup(const QSize &size);
void keyPressEvent(QKeyEvent * event); void keyPressEvent(QKeyEvent *event);
public:
MagnifyingGlass(int width,int height,QWidget * parent); public:
MagnifyingGlass(const QSize & size, QWidget * parent); MagnifyingGlass(int width, int height, QWidget *parent);
void mouseMoveEvent(QMouseEvent * event); MagnifyingGlass(const QSize &size, QWidget *parent);
public slots: void mouseMoveEvent(QMouseEvent *event);
public slots:
void updateImage(int x, int y); void updateImage(int x, int y);
void updateImage(); void updateImage();
void wheelEvent(QWheelEvent * event); void wheelEvent(QWheelEvent *event);
void zoomIn(); void zoomIn();
void zoomOut(); void zoomOut();
void sizeUp(); void sizeUp();
@ -29,6 +30,6 @@
void heightDown(); void heightDown();
void widthUp(); void widthUp();
void widthDown(); void widthDown();
}; };
#endif #endif

View File

@ -13,32 +13,33 @@
using namespace QsLogging; using namespace QsLogging;
#if defined(WIN32) && defined(_DEBUG) #if defined(WIN32) && defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC #define _CRTDBG_MAP_ALLOC
#include <stdlib.h> #include <stdlib.h>
#include <crtdbg.h> #include <crtdbg.h>
#define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ ) #define DEBUG_NEW new (_NORMAL_BLOCK, __FILE__, __LINE__)
#define new DEBUG_NEW #define new DEBUG_NEW
#endif #endif
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
#include <QEvent> #include <QEvent>
#include <QFileOpenEvent> #include <QFileOpenEvent>
class YACReaderApplication: public QApplication class YACReaderApplication : public QApplication
{ {
public: public:
YACReaderApplication(int & argc, char ** argv) : QApplication(argc,argv) YACReaderApplication(int &argc, char **argv)
{} : QApplication(argc, argv)
{
}
void setWindow(MainWindowViewer * w) void setWindow(MainWindowViewer *w)
{ {
window = w; window = w;
} }
protected: protected:
bool event(QEvent * event) bool event(QEvent *event)
{
switch(event->type())
{ {
switch (event->type()) {
case QEvent::FileOpen: case QEvent::FileOpen:
window->openComicFromPath(static_cast<QFileOpenEvent *>(event)->file()); window->openComicFromPath(static_cast<QFileOpenEvent *>(event)->file());
return true; return true;
@ -46,20 +47,21 @@ class YACReaderApplication: public QApplication
return QApplication::event(event); return QApplication::event(event);
} }
} }
private:
MainWindowViewer * window; private:
MainWindowViewer *window;
}; };
#endif #endif
int main(int argc, char * argv[]) int main(int argc, char *argv[])
{ {
#if defined(_MSC_VER) && defined(_DEBUG) #if defined(_MSC_VER) && defined(_DEBUG)
_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
#endif #endif
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
YACReaderApplication app(argc,argv); YACReaderApplication app(argc, argv);
#else #else
QApplication app(argc, argv); QApplication app(argc, argv);
#endif #endif
@ -82,24 +84,24 @@ int main(int argc, char * argv[])
parser.addPositionalArgument("[File|Directory]", "File or directory to open."); parser.addPositionalArgument("[File|Directory]", "File or directory to open.");
QCommandLineOption comicId("comicId", "", "comicId"); QCommandLineOption comicId("comicId", "", "comicId");
QCommandLineOption libraryId("libraryId", "", "libraryId"); QCommandLineOption libraryId("libraryId", "", "libraryId");
// hide comicId and libraryId from help // hide comicId and libraryId from help
#if QT_VERSION >= 0x050800 #if QT_VERSION >= 0x050800
comicId.setFlags(QCommandLineOption::HiddenFromHelp); comicId.setFlags(QCommandLineOption::HiddenFromHelp);
libraryId.setFlags(QCommandLineOption::HiddenFromHelp); libraryId.setFlags(QCommandLineOption::HiddenFromHelp);
#else #else
comicId.setHidden(true); comicId.setHidden(true);
libraryId.setHidden(true); libraryId.setHidden(true);
#endif #endif
// process // process
parser.addOption(comicId); parser.addOption(comicId);
parser.addOption(libraryId); parser.addOption(libraryId);
parser.process(app); parser.process(app);
QString destLog = YACReader::getSettingsPath()+"/yacreader.log"; QString destLog = YACReader::getSettingsPath() + "/yacreader.log";
QDir().mkpath(YACReader::getSettingsPath()); QDir().mkpath(YACReader::getSettingsPath());
Logger& logger = Logger::instance(); Logger &logger = Logger::instance();
logger.setLoggingLevel(QsLogging::InfoLevel); logger.setLoggingLevel(QsLogging::InfoLevel);
DestinationPtr fileDestination(DestinationFactory::MakeFileDestination( DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(
@ -111,21 +113,18 @@ int main(int argc, char * argv[])
QTranslator translator; QTranslator translator;
QString sufix = QLocale::system().name(); QString sufix = QLocale::system().name();
#if defined Q_OS_UNIX && !defined Q_OS_MAC #if defined Q_OS_UNIX && !defined Q_OS_MAC
translator.load(QString(DATADIR)+"/yacreader/languages/yacreader_"+sufix); translator.load(QString(DATADIR) + "/yacreader/languages/yacreader_" + sufix);
#else #else
translator.load(QCoreApplication::applicationDirPath()+"/languages/yacreader_"+sufix); translator.load(QCoreApplication::applicationDirPath() + "/languages/yacreader_" + sufix);
#endif #endif
app.installTranslator(&translator); app.installTranslator(&translator);
MainWindowViewer * mwv = new MainWindowViewer(); MainWindowViewer *mwv = new MainWindowViewer();
// some arguments need to be parsed after MainWindowViewer creation // some arguments need to be parsed after MainWindowViewer creation
QStringList arglist = parser.positionalArguments(); QStringList arglist = parser.positionalArguments();
if (parser.isSet(comicId) && parser.isSet(libraryId) && arglist.count() >=1) if (parser.isSet(comicId) && parser.isSet(libraryId) && arglist.count() >= 1) {
{
mwv->open(arglist.at(0), parser.value(comicId).toULongLong(), parser.value(libraryId).toULongLong()); mwv->open(arglist.at(0), parser.value(comicId).toULongLong(), parser.value(libraryId).toULongLong());
} } else if (arglist.count() >= 1) {
else if (arglist.count() >= 1)
{
mwv->openComicFromPath(arglist.at(0)); mwv->openComicFromPath(arglist.at(0));
} }

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,7 @@
#include <QSettings> #include <QSettings>
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
#include "yacreader_macosx_toolbar.h" #include "yacreader_macosx_toolbar.h"
#endif #endif
#include "comic_db.h" #include "comic_db.h"
@ -25,13 +25,13 @@ class YACReaderSliderAction;
class YACReaderSlider; class YACReaderSlider;
class EditShortcutsDialog; class EditShortcutsDialog;
class MainWindowViewer : public QMainWindow class MainWindowViewer : public QMainWindow
{ {
Q_OBJECT Q_OBJECT
public slots: public slots:
void open(); void open();
void open(QString path, ComicDB & comic, QList<ComicDB> & siblings); void open(QString path, ComicDB &comic, QList<ComicDB> &siblings);
void open(QString path, qint64 comicId, qint64 libraryId); void open(QString path, qint64 comicId, qint64 libraryId);
void openFolder(); void openFolder();
void openRecent(); void openRecent();
@ -76,8 +76,7 @@ class EditShortcutsDialog;
void next(); void next();
void updatePage();*/ void updatePage();*/
private:
private:
//!State //!State
bool fullscreen; bool fullscreen;
bool toolbars; bool toolbars;
@ -91,25 +90,25 @@ class EditShortcutsDialog;
QString currentDirectory; QString currentDirectory;
QString currentDirectoryImgDest; QString currentDirectoryImgDest;
//!Widgets //!Widgets
Viewer * viewer; Viewer *viewer;
//GoToDialog * goToDialog; //GoToDialog * goToDialog;
OptionsDialog * optionsDialog; OptionsDialog *optionsDialog;
HelpAboutDialog * had; HelpAboutDialog *had;
//ShortcutsDialog * shortcutsDialog; //ShortcutsDialog * shortcutsDialog;
EditShortcutsDialog * editShortcutsDialog; EditShortcutsDialog *editShortcutsDialog;
//! ToolBars //! ToolBars
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
YACReaderMacOSXToolbar * comicToolBar; YACReaderMacOSXToolbar *comicToolBar;
#else #else
QToolBar * comicToolBar; QToolBar *comicToolBar;
#endif #endif
//! Actions //! Actions
QAction *openAction; QAction *openAction;
QAction *openFolderAction; QAction *openFolderAction;
QAction *openLatestComicAction; QAction *openLatestComicAction;
QList<QAction*> recentFilesActionList; QList<QAction *> recentFilesActionList;
QAction *clearRecentFilesAction; QAction *clearRecentFilesAction;
QAction *saveImageAction; QAction *saveImageAction;
QAction *openPreviousComicAction; QAction *openPreviousComicAction;
@ -143,9 +142,9 @@ class EditShortcutsDialog;
QAction *showEditShortcutsAction; QAction *showEditShortcutsAction;
YACReaderSlider * zoomSliderAction; YACReaderSlider *zoomSliderAction;
HttpVersionChecker * versionChecker; HttpVersionChecker *versionChecker;
QString previousComicPath; QString previousComicPath;
QString nextComicPath; QString nextComicPath;
//! Método que inicializa el interfaz. //! Método que inicializa el interfaz.
@ -154,16 +153,16 @@ class EditShortcutsDialog;
void createToolBars(); void createToolBars();
void refreshRecentFilesActionList(); void refreshRecentFilesActionList();
void clearRecentFiles(); void clearRecentFiles();
void getSiblingComics(QString path,QString currentComic); void getSiblingComics(QString path, QString currentComic);
//! Manejadores de evento: //! Manejadores de evento:
void keyPressEvent(QKeyEvent *event); void keyPressEvent(QKeyEvent *event);
//void resizeEvent(QResizeEvent * event); //void resizeEvent(QResizeEvent * event);
void mouseDoubleClickEvent ( QMouseEvent * event ); void mouseDoubleClickEvent(QMouseEvent *event);
void dropEvent(QDropEvent *event); void dropEvent(QDropEvent *event);
void dragEnterEvent(QDragEnterEvent *event); void dragEnterEvent(QDragEnterEvent *event);
QSettings * settings; QSettings *settings;
ComicDB currentComicDB; ComicDB currentComicDB;
QList<ComicDB> siblingComics; QList<ComicDB> siblingComics;
@ -177,11 +176,13 @@ class EditShortcutsDialog;
QSize previousSize; QSize previousSize;
signals: signals:
void closed(); void closed();
protected:
virtual void closeEvent ( QCloseEvent * event ); protected:
virtual void closeEvent(QCloseEvent *event);
void sendComic(); void sendComic();
public:
public:
MainWindowViewer(); MainWindowViewer();
~MainWindowViewer(); ~MainWindowViewer();
}; };
#endif #endif

View File

@ -2,29 +2,29 @@
#include <QtWidgets> #include <QtWidgets>
NotificationsLabelWidget::NotificationsLabelWidget(QWidget * parent) NotificationsLabelWidget::NotificationsLabelWidget(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
QVBoxLayout *layout = new QVBoxLayout; QVBoxLayout *layout = new QVBoxLayout;
layout->setSpacing(0); layout->setSpacing(0);
layout->setMargin(0); layout->setMargin(0);
setAttribute(Qt::WA_LayoutUsesWidgetRect,true); setAttribute(Qt::WA_LayoutUsesWidgetRect, true);
effect = new QGraphicsOpacityEffect(this); effect = new QGraphicsOpacityEffect(this);
effect->setOpacity(1.0); effect->setOpacity(1.0);
anim = new QPropertyAnimation(effect,"opacity"); anim = new QPropertyAnimation(effect, "opacity");
anim->setDuration(500); anim->setDuration(500);
anim->setStartValue(1.0); anim->setStartValue(1.0);
anim->setEndValue(0.0); anim->setEndValue(0.0);
anim->setEasingCurve(QEasingCurve::InExpo); anim->setEasingCurve(QEasingCurve::InExpo);
connect(anim,SIGNAL(finished()),this,SLOT(hide())); connect(anim, SIGNAL(finished()), this, SLOT(hide()));
textLabel = new QLabel(this); textLabel = new QLabel(this);
textLabel->setAlignment(Qt::AlignVCenter|Qt::AlignHCenter); textLabel->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
textLabel->setStyleSheet("QLabel { color : white; font-size:24px; }"); textLabel->setStyleSheet("QLabel { color : white; font-size:24px; }");
textLabel->setAttribute(Qt::WA_LayoutUsesWidgetRect,true); textLabel->setAttribute(Qt::WA_LayoutUsesWidgetRect, true);
textLabel->setFixedSize(200, 120); textLabel->setFixedSize(200, 120);
@ -60,17 +60,16 @@ void NotificationsLabelWidget::flash()
setVisible(true); setVisible(true);
} }
void NotificationsLabelWidget::setText(const QString & text) void NotificationsLabelWidget::setText(const QString &text)
{ {
textLabel->setText(text); textLabel->setText(text);
} }
void NotificationsLabelWidget::updatePosition() void NotificationsLabelWidget::updatePosition()
{ {
QWidget * parent = dynamic_cast<QWidget *>(this->parent()); QWidget *parent = dynamic_cast<QWidget *>(this->parent());
if(parent == 0) if (parent == 0) {
{
return; return;
} }
move(QPoint((parent->geometry().size().width()-this->width())/2,(parent->geometry().size().height()-this->height())/2)); move(QPoint((parent->geometry().size().width() - this->width()) / 2, (parent->geometry().size().height() - this->height()) / 2));
} }

View File

@ -9,21 +9,21 @@ class QGraphicsOpacityEffect;
class NotificationsLabelWidget : public QWidget class NotificationsLabelWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
QLabel * textLabel; QLabel *textLabel;
QPropertyAnimation * anim; QPropertyAnimation *anim;
QGraphicsOpacityEffect * effect; QGraphicsOpacityEffect *effect;
protected: protected:
void paintEvent(QPaintEvent *); void paintEvent(QPaintEvent *);
public: public:
NotificationsLabelWidget(QWidget * parent); NotificationsLabelWidget(QWidget *parent);
public slots: public slots:
void flash(); void flash();
void setText(const QString & text); void setText(const QString &text);
void updatePosition(); void updatePosition();
}; };

View File

@ -19,21 +19,21 @@
#include "yacreader_gl_flow_config_widget.h" #include "yacreader_gl_flow_config_widget.h"
#endif #endif
OptionsDialog::OptionsDialog(QWidget * parent) OptionsDialog::OptionsDialog(QWidget *parent)
:YACReaderOptionsDialog(parent) : YACReaderOptionsDialog(parent)
{ {
QTabWidget * tabWidget = new QTabWidget(); QTabWidget *tabWidget = new QTabWidget();
QVBoxLayout * layout = new QVBoxLayout(this); QVBoxLayout *layout = new QVBoxLayout(this);
QWidget * pageGeneral = new QWidget(); QWidget *pageGeneral = new QWidget();
QWidget * pageFlow = new QWidget(); QWidget *pageFlow = new QWidget();
QWidget * pageImage = new QWidget(); QWidget *pageImage = new QWidget();
QVBoxLayout * layoutGeneral = new QVBoxLayout(); QVBoxLayout *layoutGeneral = new QVBoxLayout();
QVBoxLayout * layoutFlow = new QVBoxLayout(); QVBoxLayout *layoutFlow = new QVBoxLayout();
QVBoxLayout * layoutImageV = new QVBoxLayout(); QVBoxLayout *layoutImageV = new QVBoxLayout();
QGridLayout * layoutImage = new QGridLayout(); QGridLayout *layoutImage = new QGridLayout();
QGroupBox *slideSizeBox = new QGroupBox(tr("\"Go to flow\" size")); QGroupBox *slideSizeBox = new QGroupBox(tr("\"Go to flow\" size"));
//slideSizeLabel = new QLabel(,this); //slideSizeLabel = new QLabel(,this);
@ -42,18 +42,18 @@ OptionsDialog::OptionsDialog(QWidget * parent)
slideSize->setMaximum(350); slideSize->setMaximum(350);
slideSize->setPageStep(5); slideSize->setPageStep(5);
slideSize->setOrientation(Qt::Horizontal); slideSize->setOrientation(Qt::Horizontal);
QHBoxLayout * slideLayout = new QHBoxLayout(); QHBoxLayout *slideLayout = new QHBoxLayout();
slideLayout->addWidget(slideSize); slideLayout->addWidget(slideSize);
slideSizeBox->setLayout(slideLayout); slideSizeBox->setLayout(slideLayout);
QGroupBox *pathBox = new QGroupBox(tr("My comics path")); QGroupBox *pathBox = new QGroupBox(tr("My comics path"));
QHBoxLayout * path = new QHBoxLayout(); QHBoxLayout *path = new QHBoxLayout();
path->addWidget(pathEdit = new QLineEdit()); path->addWidget(pathEdit = new QLineEdit());
path->addWidget(pathFindButton = new QPushButton(QIcon(":/images/find_folder.png"),"")); path->addWidget(pathFindButton = new QPushButton(QIcon(":/images/find_folder.png"), ""));
pathBox->setLayout(path); pathBox->setLayout(path);
connect(pathFindButton,SIGNAL(clicked()),this,SLOT(findFolder())); connect(pathFindButton, SIGNAL(clicked()), this, SLOT(findFolder()));
//fitToWidthRatioLabel = new QLabel(tr("Page width stretch"),this); //fitToWidthRatioLabel = new QLabel(tr("Page width stretch"),this);
/*QGroupBox *fitBox = new QGroupBox(tr("Page width stretch")); /*QGroupBox *fitBox = new QGroupBox(tr("Page width stretch"));
@ -67,49 +67,49 @@ OptionsDialog::OptionsDialog(QWidget * parent)
fitLayout->addWidget(fitToWidthRatioS); fitLayout->addWidget(fitToWidthRatioS);
fitBox->setLayout(fitLayout);*/ fitBox->setLayout(fitLayout);*/
QHBoxLayout * colorSelection = new QHBoxLayout; QHBoxLayout *colorSelection = new QHBoxLayout;
backgroundColor = new QLabel(); backgroundColor = new QLabel();
QPalette pal = backgroundColor->palette(); QPalette pal = backgroundColor->palette();
pal.setColor(backgroundColor->backgroundRole(), Qt::black); pal.setColor(backgroundColor->backgroundRole(), Qt::black);
backgroundColor->setPalette(pal); backgroundColor->setPalette(pal);
backgroundColor->setAutoFillBackground(true); backgroundColor->setAutoFillBackground(true);
colorDialog = new QColorDialog(Qt::red,this); colorDialog = new QColorDialog(Qt::red, this);
connect(colorDialog,SIGNAL(colorSelected(QColor)),this,SLOT(updateColor(QColor))); connect(colorDialog, SIGNAL(colorSelected(QColor)), this, SLOT(updateColor(QColor)));
QGroupBox *colorBox = new QGroupBox(tr("Background color")); QGroupBox *colorBox = new QGroupBox(tr("Background color"));
//backgroundColor->setMinimumWidth(100); //backgroundColor->setMinimumWidth(100);
colorSelection->addWidget(backgroundColor); colorSelection->addWidget(backgroundColor);
colorSelection->addWidget(selectBackgroundColorButton = new QPushButton(tr("Choose"))); colorSelection->addWidget(selectBackgroundColorButton = new QPushButton(tr("Choose")));
colorSelection->setStretchFactor(backgroundColor,1); colorSelection->setStretchFactor(backgroundColor, 1);
colorSelection->setStretchFactor(selectBackgroundColorButton,0); colorSelection->setStretchFactor(selectBackgroundColorButton, 0);
//colorSelection->addStretch(); //colorSelection->addStretch();
connect(selectBackgroundColorButton, SIGNAL(clicked()), colorDialog, SLOT(show())); connect(selectBackgroundColorButton, SIGNAL(clicked()), colorDialog, SLOT(show()));
colorBox->setLayout(colorSelection); colorBox->setLayout(colorSelection);
brightnessS = new YACReaderSpinSliderWidget(this,true); brightnessS = new YACReaderSpinSliderWidget(this, true);
brightnessS->setRange(0,100); brightnessS->setRange(0, 100);
//brightnessS->setText(tr("Brightness")); //brightnessS->setText(tr("Brightness"));
brightnessS->setTracking(false); brightnessS->setTracking(false);
connect(brightnessS,SIGNAL(valueChanged(int)),this,SLOT(brightnessChanged(int))); connect(brightnessS, SIGNAL(valueChanged(int)), this, SLOT(brightnessChanged(int)));
contrastS = new YACReaderSpinSliderWidget(this,true); contrastS = new YACReaderSpinSliderWidget(this, true);
contrastS->setRange(0,250); contrastS->setRange(0, 250);
//contrastS->setText(tr("Contrast")); //contrastS->setText(tr("Contrast"));
contrastS->setTracking(false); contrastS->setTracking(false);
connect(contrastS,SIGNAL(valueChanged(int)),this,SLOT(contrastChanged(int))); connect(contrastS, SIGNAL(valueChanged(int)), this, SLOT(contrastChanged(int)));
gammaS = new YACReaderSpinSliderWidget(this,true); gammaS = new YACReaderSpinSliderWidget(this, true);
gammaS->setRange(0,250); gammaS->setRange(0, 250);
//gammaS->setText(tr("Gamma")); //gammaS->setText(tr("Gamma"));
gammaS->setTracking(false); gammaS->setTracking(false);
connect(gammaS,SIGNAL(valueChanged(int)),this,SLOT(gammaChanged(int))); connect(gammaS, SIGNAL(valueChanged(int)), this, SLOT(gammaChanged(int)));
//connect(brightnessS,SIGNAL(valueChanged(int)),this,SIGNAL(changedOptions())); //connect(brightnessS,SIGNAL(valueChanged(int)),this,SIGNAL(changedOptions()));
quickNavi = new QCheckBox(tr("Quick Navigation Mode")); quickNavi = new QCheckBox(tr("Quick Navigation Mode"));
disableShowOnMouseOver = new QCheckBox(tr("Disable mouse over activation")); disableShowOnMouseOver = new QCheckBox(tr("Disable mouse over activation"));
QHBoxLayout * buttons = new QHBoxLayout(); QHBoxLayout *buttons = new QHBoxLayout();
buttons->addStretch(); buttons->addStretch();
buttons->addWidget(new QLabel(tr("Restart is needed"))); buttons->addWidget(new QLabel(tr("Restart is needed")));
buttons->addWidget(accept); buttons->addWidget(accept);
@ -131,31 +131,29 @@ OptionsDialog::OptionsDialog(QWidget * parent)
layoutFlow->addWidget(disableShowOnMouseOver); layoutFlow->addWidget(disableShowOnMouseOver);
layoutFlow->addStretch(); layoutFlow->addStretch();
layoutImage->addWidget(new QLabel(tr("Brightness")),0,0); layoutImage->addWidget(new QLabel(tr("Brightness")), 0, 0);
layoutImage->addWidget(new QLabel(tr("Contrast")),1,0); layoutImage->addWidget(new QLabel(tr("Contrast")), 1, 0);
layoutImage->addWidget(new QLabel(tr("Gamma")),2,0); layoutImage->addWidget(new QLabel(tr("Gamma")), 2, 0);
layoutImage->addWidget(brightnessS,0,1); layoutImage->addWidget(brightnessS, 0, 1);
layoutImage->addWidget(contrastS,1,1); layoutImage->addWidget(contrastS, 1, 1);
layoutImage->addWidget(gammaS,2,1); layoutImage->addWidget(gammaS, 2, 1);
QPushButton * pushButton = new QPushButton(tr("Reset")); QPushButton *pushButton = new QPushButton(tr("Reset"));
connect(pushButton,SIGNAL(pressed()),this,SLOT(resetImageConfig())); connect(pushButton, SIGNAL(pressed()), this, SLOT(resetImageConfig()));
layoutImage->addWidget(pushButton,3,0); layoutImage->addWidget(pushButton, 3, 0);
layoutImage->setColumnStretch(1,1); layoutImage->setColumnStretch(1, 1);
QGroupBox *imageBox = new QGroupBox(tr("Image options")); QGroupBox *imageBox = new QGroupBox(tr("Image options"));
imageBox->setLayout(layoutImage); imageBox->setLayout(layoutImage);
layoutImageV->addWidget(imageBox); layoutImageV->addWidget(imageBox);
layoutImageV->addStretch(); layoutImageV->addStretch();
pageGeneral->setLayout(layoutGeneral); pageGeneral->setLayout(layoutGeneral);
pageFlow->setLayout(layoutFlow); pageFlow->setLayout(layoutFlow);
pageImage->setLayout(layoutImageV); pageImage->setLayout(layoutImageV);
tabWidget->addTab(pageGeneral,tr("General")); tabWidget->addTab(pageGeneral, tr("General"));
tabWidget->addTab(pageFlow,tr("Page Flow")); tabWidget->addTab(pageFlow, tr("Page Flow"));
tabWidget->addTab(pageImage,tr("Image adjustment")); tabWidget->addTab(pageImage, tr("Image adjustment"));
layout->addWidget(tabWidget); layout->addWidget(tabWidget);
layout->addLayout(buttons); layout->addLayout(buttons);
@ -168,7 +166,7 @@ OptionsDialog::OptionsDialog(QWidget * parent)
#endif #endif
//restoreOptions(); //load options //restoreOptions(); //load options
//resize(400,0); //resize(400,0);
setModal (true); setModal(true);
setWindowTitle(tr("Options")); setWindowTitle(tr("Options"));
this->layout()->setSizeConstraint(QLayout::SetFixedSize); this->layout()->setSizeConstraint(QLayout::SetFixedSize);
@ -176,9 +174,8 @@ OptionsDialog::OptionsDialog(QWidget * parent)
void OptionsDialog::findFolder() void OptionsDialog::findFolder()
{ {
QString s = QFileDialog::getExistingDirectory(0,tr("Comics directory"),"."); QString s = QFileDialog::getExistingDirectory(0, tr("Comics directory"), ".");
if(!s.isEmpty()) if (!s.isEmpty()) {
{
pathEdit->setText(s); pathEdit->setText(s);
} }
} }
@ -186,32 +183,31 @@ void OptionsDialog::findFolder()
void OptionsDialog::saveOptions() void OptionsDialog::saveOptions()
{ {
settings->setValue(GO_TO_FLOW_SIZE,QSize(static_cast<int>(slideSize->sliderPosition()/SLIDE_ASPECT_RATIO),slideSize->sliderPosition())); settings->setValue(GO_TO_FLOW_SIZE, QSize(static_cast<int>(slideSize->sliderPosition() / SLIDE_ASPECT_RATIO), slideSize->sliderPosition()));
if(sw->radio1->isChecked()) if (sw->radio1->isChecked())
settings->setValue(FLOW_TYPE_SW,0); settings->setValue(FLOW_TYPE_SW, 0);
if(sw->radio2->isChecked()) if (sw->radio2->isChecked())
settings->setValue(FLOW_TYPE_SW,1); settings->setValue(FLOW_TYPE_SW, 1);
if(sw->radio3->isChecked()) if (sw->radio3->isChecked())
settings->setValue(FLOW_TYPE_SW,2); settings->setValue(FLOW_TYPE_SW, 2);
settings->setValue(PATH,pathEdit->text()); settings->setValue(PATH, pathEdit->text());
settings->setValue(BACKGROUND_COLOR,colorDialog->currentColor()); settings->setValue(BACKGROUND_COLOR, colorDialog->currentColor());
//settings->setValue(FIT_TO_WIDTH_RATIO,fitToWidthRatioS->sliderPosition()/100.0); //settings->setValue(FIT_TO_WIDTH_RATIO,fitToWidthRatioS->sliderPosition()/100.0);
settings->setValue(QUICK_NAVI_MODE,quickNavi->isChecked()); settings->setValue(QUICK_NAVI_MODE, quickNavi->isChecked());
settings->setValue(DISABLE_MOUSE_OVER_GOTO_FLOW,disableShowOnMouseOver->isChecked()); settings->setValue(DISABLE_MOUSE_OVER_GOTO_FLOW, disableShowOnMouseOver->isChecked());
YACReaderOptionsDialog::saveOptions(); YACReaderOptionsDialog::saveOptions();
} }
void OptionsDialog::restoreOptions(QSettings * settings) void OptionsDialog::restoreOptions(QSettings *settings)
{ {
YACReaderOptionsDialog::restoreOptions(settings); YACReaderOptionsDialog::restoreOptions(settings);
slideSize->setSliderPosition(settings->value(GO_TO_FLOW_SIZE).toSize().height()); slideSize->setSliderPosition(settings->value(GO_TO_FLOW_SIZE).toSize().height());
switch(settings->value(FLOW_TYPE_SW).toInt()) switch (settings->value(FLOW_TYPE_SW).toInt()) {
{
case 0: case 0:
sw->radio1->setChecked(true); sw->radio1->setChecked(true);
break; break;
@ -234,13 +230,12 @@ void OptionsDialog::restoreOptions(QSettings * settings)
quickNavi->setChecked(settings->value(QUICK_NAVI_MODE).toBool()); quickNavi->setChecked(settings->value(QUICK_NAVI_MODE).toBool());
disableShowOnMouseOver->setChecked(settings->value(DISABLE_MOUSE_OVER_GOTO_FLOW).toBool()); disableShowOnMouseOver->setChecked(settings->value(DISABLE_MOUSE_OVER_GOTO_FLOW).toBool());
brightnessS->setValue(settings->value(BRIGHTNESS,0).toInt()); brightnessS->setValue(settings->value(BRIGHTNESS, 0).toInt());
contrastS->setValue(settings->value(CONTRAST,100).toInt()); contrastS->setValue(settings->value(CONTRAST, 100).toInt());
gammaS->setValue(settings->value(GAMMA,100).toInt()); gammaS->setValue(settings->value(GAMMA, 100).toInt());
} }
void OptionsDialog::updateColor(const QColor &color)
void OptionsDialog::updateColor(const QColor & color)
{ {
QPalette pal = backgroundColor->palette(); QPalette pal = backgroundColor->palette();
pal.setColor(backgroundColor->backgroundRole(), color); pal.setColor(backgroundColor->backgroundRole(), color);
@ -248,7 +243,7 @@ void OptionsDialog::updateColor(const QColor & color)
backgroundColor->setAutoFillBackground(true); backgroundColor->setAutoFillBackground(true);
colorDialog->setCurrentColor(color); colorDialog->setCurrentColor(color);
settings->setValue(BACKGROUND_COLOR,color); settings->setValue(BACKGROUND_COLOR, color);
emit(changedOptions()); emit(changedOptions());
} }
@ -261,24 +256,24 @@ void OptionsDialog::updateColor(const QColor & color)
void OptionsDialog::brightnessChanged(int value) void OptionsDialog::brightnessChanged(int value)
{ {
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath() + "/YACReader.ini", QSettings::IniFormat);
settings.setValue(BRIGHTNESS,value); settings.setValue(BRIGHTNESS, value);
emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue());
//emit(changedImageOptions()); //emit(changedImageOptions());
} }
void OptionsDialog::contrastChanged(int value) void OptionsDialog::contrastChanged(int value)
{ {
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath() + "/YACReader.ini", QSettings::IniFormat);
settings.setValue(CONTRAST,value); settings.setValue(CONTRAST, value);
emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue());
///emit(changedImageOptions()); ///emit(changedImageOptions());
} }
void OptionsDialog::gammaChanged(int value) void OptionsDialog::gammaChanged(int value)
{ {
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath() + "/YACReader.ini", QSettings::IniFormat);
settings.setValue(GAMMA,value); settings.setValue(GAMMA, value);
emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue());
//emit(changedImageOptions()); //emit(changedImageOptions());
} }
@ -288,10 +283,10 @@ void OptionsDialog::resetImageConfig()
brightnessS->setValue(0); brightnessS->setValue(0);
contrastS->setValue(100); contrastS->setValue(100);
gammaS->setValue(100); gammaS->setValue(100);
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); QSettings settings(YACReader::getSettingsPath() + "/YACReader.ini", QSettings::IniFormat);
settings.setValue(BRIGHTNESS,0); settings.setValue(BRIGHTNESS, 0);
settings.setValue(CONTRAST,100); settings.setValue(CONTRAST, 100);
settings.setValue(GAMMA,100); settings.setValue(GAMMA, 100);
emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue()); emit changedFilters(brightnessS->getValue(), contrastS->getValue(), gammaS->getValue());
//emit(changedImageOptions()); //emit(changedImageOptions());
} }
@ -299,7 +294,7 @@ void OptionsDialog::resetImageConfig()
void OptionsDialog::show() void OptionsDialog::show()
{ {
//TODO solucionar el tema de las settings, esto sólo debería aparecer en una única línea de código //TODO solucionar el tema de las settings, esto sólo debería aparecer en una única línea de código
QSettings *s = new QSettings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat); QSettings *s = new QSettings(YACReader::getSettingsPath() + "/YACReader.ini", QSettings::IniFormat);
//fitToWidthRatioS->disconnect(); //fitToWidthRatioS->disconnect();
//fitToWidthRatioS->setSliderPosition(settings->value(FIT_TO_WIDTH_RATIO).toFloat()*100); //fitToWidthRatioS->setSliderPosition(settings->value(FIT_TO_WIDTH_RATIO).toFloat()*100);
//connect(fitToWidthRatioS,SIGNAL(valueChanged(int)),this,SLOT(fitToWidthRatio(int))); //connect(fitToWidthRatioS,SIGNAL(valueChanged(int)),this,SLOT(fitToWidthRatio(int)));
@ -309,17 +304,16 @@ void OptionsDialog::show()
void OptionsDialog::setFilters(int brightness, int contrast, int gamma) void OptionsDialog::setFilters(int brightness, int contrast, int gamma)
{ {
if(brightness != -1) if (brightness != -1)
brightnessS->setValue(brightness); brightnessS->setValue(brightness);
else else
brightnessS->setValue(0); brightnessS->setValue(0);
if(contrast != -1) if (contrast != -1)
contrastS->setValue(contrast); contrastS->setValue(contrast);
else else
contrastS->setValue(100); contrastS->setValue(100);
if(gamma != -1) if (gamma != -1)
gammaS->setValue(gamma); gammaS->setValue(gamma);
else else
gammaS->setValue(100); gammaS->setValue(100);
} }

View File

@ -13,45 +13,45 @@ class QRadioButton;
class QColorDialog; class QColorDialog;
class YACReaderSpinSliderWidget; class YACReaderSpinSliderWidget;
class OptionsDialog : public YACReaderOptionsDialog class OptionsDialog : public YACReaderOptionsDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
OptionsDialog(QWidget * parent = 0); OptionsDialog(QWidget *parent = 0);
private:
private:
//QLabel * pathLabel; //QLabel * pathLabel;
QLineEdit * pathEdit; QLineEdit *pathEdit;
QPushButton * pathFindButton; QPushButton *pathFindButton;
QCheckBox * quickNavi; QCheckBox *quickNavi;
QCheckBox * disableShowOnMouseOver; QCheckBox *disableShowOnMouseOver;
QLabel * magGlassSizeLabel; QLabel *magGlassSizeLabel;
QLabel * zoomLevel; QLabel *zoomLevel;
//QLabel * slideSizeLabel; //QLabel * slideSizeLabel;
QSlider * slideSize; QSlider *slideSize;
//QLabel * fitToWidthRatioLabel; //QLabel * fitToWidthRatioLabel;
//QSlider * fitToWidthRatioS; //QSlider * fitToWidthRatioS;
QLabel * backgroundColor; QLabel *backgroundColor;
QPushButton * selectBackgroundColorButton; QPushButton *selectBackgroundColorButton;
QColorDialog * colorDialog; QColorDialog *colorDialog;
YACReaderSpinSliderWidget * brightnessS; YACReaderSpinSliderWidget *brightnessS;
YACReaderSpinSliderWidget * contrastS; YACReaderSpinSliderWidget *contrastS;
YACReaderSpinSliderWidget * gammaS; YACReaderSpinSliderWidget *gammaS;
public slots: public slots:
void saveOptions(); void saveOptions();
void restoreOptions(QSettings * settings); void restoreOptions(QSettings *settings);
void findFolder(); void findFolder();
void updateColor(const QColor & color); void updateColor(const QColor &color);
//void fitToWidthRatio(int value); //void fitToWidthRatio(int value);
void brightnessChanged(int value); void brightnessChanged(int value);
void contrastChanged(int value); void contrastChanged(int value);
@ -65,8 +65,6 @@ signals:
void changedImageOptions(); void changedImageOptions();
void changedFilters(int brightness, int contrast, int gamma); void changedFilters(int brightness, int contrast, int gamma);
//void fitToWidthRatioChanged(float ratio); //void fitToWidthRatioChanged(float ratio);
}; };
#endif #endif

View File

@ -2,18 +2,18 @@
#include <QtWidgets> #include <QtWidgets>
PageLabelWidget::PageLabelWidget(QWidget * parent) PageLabelWidget::PageLabelWidget(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
animation = new QPropertyAnimation(this,"pos"); animation = new QPropertyAnimation(this, "pos");
animation->setDuration(150); animation->setDuration(150);
animation->setEndValue(QPoint((parent->geometry().size().width()-this->width()),-this->height())); animation->setEndValue(QPoint((parent->geometry().size().width() - this->width()), -this->height()));
int verticalRes = QApplication::desktop()->screenGeometry().height(); int verticalRes = QApplication::desktop()->screenGeometry().height();
QHBoxLayout *layout = new QHBoxLayout; QHBoxLayout *layout = new QHBoxLayout;
layout->setMargin(0); layout->setMargin(0);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
QSize labelSize; QSize labelSize;
if (verticalRes <= 1024) if (verticalRes <= 1024)
@ -24,8 +24,8 @@ PageLabelWidget::PageLabelWidget(QWidget * parent)
labelSize = QSize(205, 45); labelSize = QSize(205, 45);
textLabel = new QLabel(this); textLabel = new QLabel(this);
textLabel->setAlignment(Qt::AlignVCenter|Qt::AlignHCenter); textLabel->setAlignment(Qt::AlignVCenter | Qt::AlignHCenter);
if(verticalRes <= 1024) if (verticalRes <= 1024)
textLabel->setStyleSheet("QLabel { color : white; font-size:12px; padding-left:8px; }"); textLabel->setStyleSheet("QLabel { color : white; font-size:12px; padding-left:8px; }");
else if (verticalRes <= 1200) else if (verticalRes <= 1200)
textLabel->setStyleSheet("QLabel { color : white; font-size:16px; padding-left:8px;}"); textLabel->setStyleSheet("QLabel { color : white; font-size:16px; padding-left:8px;}");
@ -34,20 +34,18 @@ PageLabelWidget::PageLabelWidget(QWidget * parent)
setFixedSize(labelSize); setFixedSize(labelSize);
if(parent != 0) if (parent != 0)
move(QPoint((parent->geometry().size().width()-this->width()),-this->height())); move(QPoint((parent->geometry().size().width() - this->width()), -this->height()));
layout->addWidget(textLabel, 0 , Qt::AlignCenter); layout->addWidget(textLabel, 0, Qt::AlignCenter);
setLayout(layout); setLayout(layout);
} }
void PageLabelWidget::show() void PageLabelWidget::show()
{ {
if(this->pos().y() <= 0 && animation->state()!=QPropertyAnimation::Running) if (this->pos().y() <= 0 && animation->state() != QPropertyAnimation::Running) {
{ QWidget *parent = dynamic_cast<QWidget *>(this->parent());
QWidget * parent = dynamic_cast<QWidget *>(this->parent()); if (parent == 0) {
if(parent == 0)
{
return; return;
} }
@ -55,29 +53,27 @@ void PageLabelWidget::show()
//connect(animation,SIGNAL(finished()),this,SLOT(QWidget::hide())); //connect(animation,SIGNAL(finished()),this,SLOT(QWidget::hide()));
animation->disconnect(); animation->disconnect();
animation->setStartValue(QPoint((parent->geometry().size().width()-this->width()),-this->height())); animation->setStartValue(QPoint((parent->geometry().size().width() - this->width()), -this->height()));
animation->setEndValue(QPoint((parent->geometry().size().width()-this->width()),0)); animation->setEndValue(QPoint((parent->geometry().size().width() - this->width()), 0));
animation->start(); animation->start();
} }
} }
void PageLabelWidget::hide() void PageLabelWidget::hide()
{ {
if(this->pos().y() >= 0 && animation->state()!=QPropertyAnimation::Running) if (this->pos().y() >= 0 && animation->state() != QPropertyAnimation::Running) {
{ QWidget *parent = dynamic_cast<QWidget *>(this->parent());
QWidget * parent = dynamic_cast<QWidget *>(this->parent()); if (parent == 0) {
if(parent == 0)
{
return; return;
} }
//connect(animation,SIGNAL(finished()),this,SLOT(setHidden())); //connect(animation,SIGNAL(finished()),this,SLOT(setHidden()));
animation->setStartValue(QPoint((parent->geometry().size().width()-this->width()),0)); animation->setStartValue(QPoint((parent->geometry().size().width() - this->width()), 0));
animation->setEndValue(QPoint((parent->geometry().size().width()-this->width()),-this->height())); animation->setEndValue(QPoint((parent->geometry().size().width() - this->width()), -this->height()));
animation->start(); animation->start();
} }
} }
void PageLabelWidget::setText(const QString & text) void PageLabelWidget::setText(const QString &text)
{ {
textLabel->setText(text); textLabel->setText(text);
} }
@ -86,20 +82,19 @@ void PageLabelWidget::paintEvent(QPaintEvent *)
{ {
QPainter painter(this); QPainter painter(this);
painter.fillRect(0,0,width(),height(),QColor("#BB000000")); painter.fillRect(0, 0, width(), height(), QColor("#BB000000"));
} }
void PageLabelWidget::updatePosition() void PageLabelWidget::updatePosition()
{ {
QWidget * parent = dynamic_cast<QWidget *>(this->parent()); QWidget *parent = dynamic_cast<QWidget *>(this->parent());
if(parent == 0) if (parent == 0) {
{
return; return;
} }
animation->stop(); animation->stop();
if (animation->endValue().toPoint().y() == 0) if (animation->endValue().toPoint().y() == 0)
move(QPoint((parent->geometry().size().width()-this->width()),0)); move(QPoint((parent->geometry().size().width() - this->width()), 0));
else else
move(QPoint((parent->geometry().size().width()-this->width()),-this->height())); move(QPoint((parent->geometry().size().width() - this->width()), -this->height()));
} }

View File

@ -8,21 +8,21 @@ class QPropertyAnimation;
class PageLabelWidget : public QWidget class PageLabelWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
QLabel * textLabel; QLabel *textLabel;
QPropertyAnimation * animation; QPropertyAnimation *animation;
protected: protected:
virtual void paintEvent(QPaintEvent *); virtual void paintEvent(QPaintEvent *);
public: public:
PageLabelWidget(QWidget * parent); PageLabelWidget(QWidget *parent);
public slots: public slots:
void show(); void show();
void hide(); void hide();
void setText(const QString & text); void setText(const QString &text);
void updatePosition(); void updatePosition();
}; };

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
#ifndef RENDER_H #ifndef RENDER_H
#define RENDER_H #define RENDER_H
#include <QImage> #include <QImage>
@ -18,51 +18,62 @@ class Comic;
class ComicDB; class ComicDB;
class Render; class Render;
class ImageFilter { class ImageFilter
{
public: public:
ImageFilter(){}; ImageFilter() {};
virtual ~ImageFilter() {}; virtual ~ImageFilter() {};
virtual QImage setFilter(const QImage & image) = 0; virtual QImage setFilter(const QImage &image) = 0;
inline int getLevel() {return level;}; inline int getLevel() { return level; };
inline void setLevel(int l) {level = l;}; inline void setLevel(int l) { level = l; };
protected: protected:
int level; int level;
}; };
class MeanNoiseReductionFilter : public ImageFilter { class MeanNoiseReductionFilter : public ImageFilter
{
public: public:
enum NeighborghoodSize{SMALL=9, LARGE=25 }; enum NeighborghoodSize { SMALL = 9,
LARGE = 25 };
MeanNoiseReductionFilter(enum NeighborghoodSize ns = SMALL); MeanNoiseReductionFilter(enum NeighborghoodSize ns = SMALL);
virtual QImage setFilter(const QImage & image); virtual QImage setFilter(const QImage &image);
private: private:
enum NeighborghoodSize neighborghoodSize; enum NeighborghoodSize neighborghoodSize;
}; };
class MedianNoiseReductionFilter : public ImageFilter { class MedianNoiseReductionFilter : public ImageFilter
{
public: public:
enum NeighborghoodSize{SMALL=9, LARGE=25 }; enum NeighborghoodSize { SMALL = 9,
LARGE = 25 };
MedianNoiseReductionFilter(enum NeighborghoodSize ns = SMALL); MedianNoiseReductionFilter(enum NeighborghoodSize ns = SMALL);
virtual QImage setFilter(const QImage & image); virtual QImage setFilter(const QImage &image);
private: private:
enum NeighborghoodSize neighborghoodSize; enum NeighborghoodSize neighborghoodSize;
}; };
class BrightnessFilter : public ImageFilter { class BrightnessFilter : public ImageFilter
{
public: public:
BrightnessFilter(int l=-1); BrightnessFilter(int l = -1);
virtual QImage setFilter(const QImage & image); virtual QImage setFilter(const QImage &image);
}; };
class ContrastFilter : public ImageFilter { class ContrastFilter : public ImageFilter
{
public: public:
ContrastFilter(int l=-1); ContrastFilter(int l = -1);
virtual QImage setFilter(const QImage & image); virtual QImage setFilter(const QImage &image);
}; };
class GammaFilter : public ImageFilter { class GammaFilter : public ImageFilter
{
public: public:
GammaFilter(int l=-1); GammaFilter(int l = -1);
virtual QImage setFilter(const QImage & image); virtual QImage setFilter(const QImage &image);
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -74,23 +85,23 @@ class PageRender : public QThread
Q_OBJECT Q_OBJECT
public: public:
PageRender(); PageRender();
PageRender(Render * render,int numPage, const QByteArray & rawData, QImage * page,unsigned int degrees=0, QVector<ImageFilter *> filters = QVector<ImageFilter *>()); PageRender(Render *render, int numPage, const QByteArray &rawData, QImage *page, unsigned int degrees = 0, QVector<ImageFilter *> filters = QVector<ImageFilter *>());
int getNumPage(){return numPage;}; int getNumPage() { return numPage; };
void setData(const QByteArray & rawData){data = rawData;}; void setData(const QByteArray &rawData) { data = rawData; };
void setPage(QImage * p){page = p;}; void setPage(QImage *p) { page = p; };
void setRotation(unsigned int d){degrees = d;}; void setRotation(unsigned int d) { degrees = d; };
void setFilters(QVector<ImageFilter *> f){filters = f;}; void setFilters(QVector<ImageFilter *> f) { filters = f; };
private: private:
int numPage; int numPage;
QByteArray data; QByteArray data;
QImage * page; QImage *page;
unsigned int degrees; unsigned int degrees;
QVector<ImageFilter *> filters; QVector<ImageFilter *> filters;
void run(); void run();
Render * render; Render *render;
signals: signals:
void pageReady(int); void pageReady(int);
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// RENDER // RENDER
@ -116,17 +127,18 @@ signals:
}; };
*/ */
class Render : public QObject { class Render : public QObject
Q_OBJECT {
Q_OBJECT
public: public:
Render(); Render();
~Render(); ~Render();
public slots: public slots:
void render(); void render();
QPixmap * getCurrentPage(); QPixmap *getCurrentPage();
QPixmap * getCurrentDoublePage(); QPixmap *getCurrentDoublePage();
QPixmap * getCurrentDoubleMangaPage(); QPixmap *getCurrentDoubleMangaPage();
bool currentPageIsDoublePage(); bool currentPageIsDoublePage();
bool nextPageIsDoublePage(); bool nextPageIsDoublePage();
bool previousPageIsDoublePage(); bool previousPageIsDoublePage();
@ -134,7 +146,7 @@ public slots:
void doublePageSwitch(); void doublePageSwitch();
void doubleMangaPageSwitch(); void doubleMangaPageSwitch();
void setRotation(int degrees); void setRotation(int degrees);
void setComic(Comic * c); void setComic(Comic *c);
void prepareAvailablePage(int page); void prepareAvailablePage(int page);
void update(); void update();
void setNumPages(unsigned int numPages); void setNumPages(unsigned int numPages);
@ -144,11 +156,11 @@ public slots:
void previousPage(); void previousPage();
void nextDoublePage(); void nextDoublePage();
void previousDoublePage(); void previousDoublePage();
void load(const QString & path, const ComicDB & comic); void load(const QString &path, const ComicDB &comic);
void load(const QString & path, int atPage); void load(const QString &path, int atPage);
void createComic(const QString & path); void createComic(const QString &path);
void loadComic(const QString & path,const ComicDB & comic); void loadComic(const QString &path, const ComicDB &comic);
void loadComic(const QString & path, int atPage); void loadComic(const QString &path, int atPage);
void startLoad(); void startLoad();
void rotateRight(); void rotateRight();
void rotateLeft(); void rotateLeft();
@ -165,7 +177,7 @@ public slots:
void reset(); void reset();
void reload(); void reload();
void updateFilters(int brightness, int contrast, int gamma); void updateFilters(int brightness, int contrast, int gamma);
Bookmarks * getBookmarks(); Bookmarks *getBookmarks();
//sets the firt page to render //sets the firt page to render
void renderAt(int page); void renderAt(int page);
@ -174,7 +186,7 @@ signals:
void processingPage(); void processingPage();
void imagesLoaded(); void imagesLoaded();
void imageLoaded(int index); void imageLoaded(int index);
void imageLoaded(int index,const QByteArray & image); void imageLoaded(int index, const QByteArray &image);
void pageChanged(int index); void pageChanged(int index);
void numPages(unsigned int numPages); void numPages(unsigned int numPages);
void errorOpening(); void errorOpening();
@ -186,9 +198,8 @@ signals:
void bookmarksUpdated(); void bookmarksUpdated();
private: private:
Comic * comic; Comic *comic;
bool doublePage; bool doublePage;
bool doubleMangaPage; bool doubleMangaPage;
int previousIndex; int previousIndex;
@ -212,5 +223,4 @@ private:
friend class PageRender; friend class PageRender;
}; };
#endif // RENDER_H #endif // RENDER_H

View File

@ -8,23 +8,23 @@
#include <QTextStream> #include <QTextStream>
#include <QTextCodec> #include <QTextCodec>
ShortcutsDialog::ShortcutsDialog(QWidget * parent) ShortcutsDialog::ShortcutsDialog(QWidget *parent)
:QDialog(parent)//,Qt::FramelessWindowHint) : QDialog(parent) //,Qt::FramelessWindowHint)
{ {
setModal(true); setModal(true);
setWindowIcon(QIcon(":/images/shortcuts.png")); setWindowIcon(QIcon(":/images/shortcuts.png"));
setWindowTitle(tr("YACReader keyboard shortcuts")); setWindowTitle(tr("YACReader keyboard shortcuts"));
QVBoxLayout * mainLayout = new QVBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
close = new QPushButton(tr("Close")); close = new QPushButton(tr("Close"));
connect(close,SIGNAL(clicked()),this,SLOT(close())); connect(close, SIGNAL(clicked()), this, SLOT(close()));
QHBoxLayout *bottomLayout = new QHBoxLayout; QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addStretch(); bottomLayout->addStretch();
bottomLayout->addWidget(close); bottomLayout->addWidget(close);
QHBoxLayout * shortcutsLayout = new QHBoxLayout; QHBoxLayout *shortcutsLayout = new QHBoxLayout;
shortcuts = new QTextEdit(); shortcuts = new QTextEdit();
shortcuts->setFrameStyle(QFrame::NoFrame); shortcuts->setFrameStyle(QFrame::NoFrame);
@ -39,7 +39,7 @@ ShortcutsDialog::ShortcutsDialog(QWidget * parent)
setLayout(mainLayout); setLayout(mainLayout);
setFixedSize(QSize(700,500)); setFixedSize(QSize(700, 500));
QFile f(":/files/shortcuts.html"); QFile f(":/files/shortcuts.html");
f.open(QIODevice::ReadOnly); f.open(QIODevice::ReadOnly);

View File

@ -7,13 +7,14 @@
class ShortcutsDialog : public QDialog class ShortcutsDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
ShortcutsDialog(QWidget * parent = 0); ShortcutsDialog(QWidget *parent = 0);
private:
QTextEdit * shortcuts; private:
QPushButton * close; QTextEdit *shortcuts;
public slots: QPushButton *close;
public slots:
}; };
#endif // SHORTCUTS_DIALOG_H #endif // SHORTCUTS_DIALOG_H

View File

@ -33,8 +33,8 @@
#define APPID "417CEAD93449502CC3C9B69FED26C54118E62BCC" #define APPID "417CEAD93449502CC3C9B69FED26C54118E62BCC"
YACReaderTranslator::YACReaderTranslator(QWidget * parent) YACReaderTranslator::YACReaderTranslator(QWidget *parent)
:QWidget(parent),drag(false) : QWidget(parent), drag(false)
{ {
QString scrollBarStyle = "QScrollBar:vertical { border: none; background: #404040; width: 7px; margin: 0 3px 0 0; }" QString scrollBarStyle = "QScrollBar:vertical { border: none; background: #404040; width: 7px; margin: 0 3px 0 0; }"
"QScrollBar::handle:vertical { background: #DDDDDD; width: 7px; min-height: 20px; }" "QScrollBar::handle:vertical { background: #DDDDDD; width: 7px; min-height: 20px; }"
@ -56,19 +56,19 @@ YACReaderTranslator::YACReaderTranslator(QWidget * parent)
QVBoxLayout *layout = new QVBoxLayout(this); QVBoxLayout *layout = new QVBoxLayout(this);
//TITLE BAR //TITLE BAR
QHBoxLayout * titleBar = new QHBoxLayout(); QHBoxLayout *titleBar = new QHBoxLayout();
QPushButton * close = new QPushButton(QIcon(QPixmap(":/images/close.png")),""); QPushButton *close = new QPushButton(QIcon(QPixmap(":/images/close.png")), "");
close->setFlat(true); close->setFlat(true);
QLabel * title = new QLabel(tr("YACReader translator")); QLabel *title = new QLabel(tr("YACReader translator"));
title->setStyleSheet("QLabel {font-size:18px; font-family:Arial; color:white;}"); title->setStyleSheet("QLabel {font-size:18px; font-family:Arial; color:white;}");
titleBar->addWidget(title); titleBar->addWidget(title);
titleBar->addStretch(); titleBar->addStretch();
close->resize(14,14); close->resize(14, 14);
close->setStyleSheet("QPushButton {margin:0;padding:0;border:none;}"); close->setStyleSheet("QPushButton {margin:0;padding:0;border:none;}");
titleBar->addWidget(close); titleBar->addWidget(close);
titleBar->setContentsMargins(0,0,0,0); titleBar->setContentsMargins(0, 0, 0, 0);
titleBar->setSpacing(0); titleBar->setSpacing(0);
connect(close,SIGNAL(clicked()),this->parent(),SLOT(animateHideTranslator())); connect(close, SIGNAL(clicked()), this->parent(), SLOT(animateHideTranslator()));
layout->addLayout(titleBar); layout->addLayout(titleBar);
@ -78,50 +78,49 @@ YACReaderTranslator::YACReaderTranslator(QWidget * parent)
text->setMaximumHeight(110); text->setMaximumHeight(110);
layout->addSpacing(12); layout->addSpacing(12);
layout->addWidget(text); layout->addWidget(text);
text->setStyleSheet("QTextEdit{border:none;background:#2a2a2a;color:white; font-size:12px; padding:6px;}"+scrollBarStyle); text->setStyleSheet("QTextEdit{border:none;background:#2a2a2a;color:white; font-size:12px; padding:6px;}" + scrollBarStyle);
//COMBOBOXES //COMBOBOXES
QHBoxLayout * combos = new QHBoxLayout(); QHBoxLayout *combos = new QHBoxLayout();
from = new QComboBox(this); from = new QComboBox(this);
to = new QComboBox(this); to = new QComboBox(this);
QString comboBoxStyle = "QComboBox {border:none;background:#2a2a2a;color:white;font-size:12px;font-family:Arial;padding-left:8px;}" QString comboBoxStyle = "QComboBox {border:none;background:#2a2a2a;color:white;font-size:12px;font-family:Arial;padding-left:8px;}"
"QComboBox::down-arrow {image: url(:/images/dropDownArrow.png);}" "QComboBox::down-arrow {image: url(:/images/dropDownArrow.png);}"
"QComboBox::drop-down {border:none; padding-right:10px;}" "QComboBox::drop-down {border:none; padding-right:10px;}"
"QComboBox QAbstractItemView {border: none; background:#272727; color:white; selection-background-color: #202020; outline:none;}" "QComboBox QAbstractItemView {border: none; background:#272727; color:white; selection-background-color: #202020; outline:none;}"
"QComboBox QAbstractItemView::item {padding-left:8px;}" + scrollBarStyle "QComboBox QAbstractItemView::item {padding-left:8px;}" +
; scrollBarStyle;
from->setStyleSheet(comboBoxStyle); from->setStyleSheet(comboBoxStyle);
to->setStyleSheet(comboBoxStyle); to->setStyleSheet(comboBoxStyle);
from->setFixedHeight(22); from->setFixedHeight(22);
to->setFixedHeight(22); to->setFixedHeight(22);
QLabel * arrow = new QLabel(this); QLabel *arrow = new QLabel(this);
QPixmap arrowPixmap(":/images/fromTo.png"); QPixmap arrowPixmap(":/images/fromTo.png");
arrow->setPixmap(arrowPixmap); arrow->setPixmap(arrowPixmap);
QPushButton * searchButton = new QPushButton(this); QPushButton *searchButton = new QPushButton(this);
searchButton->setIcon(QIcon(":/images/translatorSearch.png")); searchButton->setIcon(QIcon(":/images/translatorSearch.png"));
searchButton->setStyleSheet("QPushButton {border:none; background:#2a2a2a;}"); searchButton->setStyleSheet("QPushButton {border:none; background:#2a2a2a;}");
searchButton->setFixedSize(22,22); searchButton->setFixedSize(22, 22);
combos->addWidget(from,1); combos->addWidget(from, 1);
combos->addSpacing(9); combos->addSpacing(9);
combos->addWidget(arrow,0); combos->addWidget(arrow, 0);
combos->addSpacing(9); combos->addSpacing(9);
combos->addWidget(to,1); combos->addWidget(to, 1);
combos->addSpacing(9); combos->addSpacing(9);
combos->addWidget(searchButton,0); combos->addWidget(searchButton, 0);
layout->addSpacing(12); layout->addSpacing(12);
layout->addLayout(combos); layout->addLayout(combos);
//RESULTS //RESULTS
QHBoxLayout * resultsTitleLayout = new QHBoxLayout(); QHBoxLayout *resultsTitleLayout = new QHBoxLayout();
resultsTitle = new QLabel(tr("Translation")); resultsTitle = new QLabel(tr("Translation"));
resultsTitle->setStyleSheet("QLabel {font-family:Arial;font-size:14px;color:#e3e3e3;}"); resultsTitle->setStyleSheet("QLabel {font-family:Arial;font-size:14px;color:#e3e3e3;}");
speakButton = new QPushButton(this); speakButton = new QPushButton(this);
speakButton->setStyleSheet("QPushButton {border:none;}"); speakButton->setStyleSheet("QPushButton {border:none;}");
speakButton->setIcon(QIcon(":/images/speaker.png")); speakButton->setIcon(QIcon(":/images/speaker.png"));
resultsTitleLayout->addWidget(resultsTitle,0,Qt::AlignVCenter); resultsTitleLayout->addWidget(resultsTitle, 0, Qt::AlignVCenter);
resultsTitleLayout->addSpacing(10); resultsTitleLayout->addSpacing(10);
resultsTitleLayout->addWidget(speakButton,0,Qt::AlignVCenter); resultsTitleLayout->addWidget(speakButton, 0, Qt::AlignVCenter);
resultsTitleLayout->addStretch(); resultsTitleLayout->addStretch();
layout->addSpacing(15); layout->addSpacing(15);
@ -138,29 +137,29 @@ YACReaderTranslator::YACReaderTranslator(QWidget * parent)
//CLEAR BUTTON //CLEAR BUTTON
clearButton = new QPushButton(tr("clear")); clearButton = new QPushButton(tr("clear"));
layout->addWidget(clearButton,0,Qt::AlignRight); layout->addWidget(clearButton, 0, Qt::AlignRight);
clearButton->setMinimumWidth(95); clearButton->setMinimumWidth(95);
clearButton->setStyleSheet("QPushButton {border:1px solid #212121; background:#2a2a2a; color:white; font-family:Arial; font-size:12px; padding-top:5px; padding-bottom:5px;}"); clearButton->setStyleSheet("QPushButton {border:1px solid #212121; background:#2a2a2a; color:white; font-family:Arial; font-size:12px; padding-top:5px; padding-bottom:5px;}");
resize(400,479); resize(400, 479);
layout->setMargin(0); layout->setMargin(0);
layout->setContentsMargins(18,12,18,12); layout->setContentsMargins(18, 12, 18, 12);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
layout->setSpacing(0); layout->setSpacing(0);
hideResults(); hideResults();
populateCombos(); populateCombos();
busyIndicator = new YACReaderBusyWidget(this); busyIndicator = new YACReaderBusyWidget(this);
busyIndicator->move((this->width()-busyIndicator->width())/2,(this->height()-busyIndicator->height())*2/3); busyIndicator->move((this->width() - busyIndicator->width()) / 2, (this->height() - busyIndicator->height()) * 2 / 3);
busyIndicator->hide(); busyIndicator->hide();
show(); show();
connect(searchButton,SIGNAL(pressed()),this,SLOT(translate())); connect(searchButton, SIGNAL(pressed()), this, SLOT(translate()));
connect(speakButton,SIGNAL(pressed()),this,SLOT(play())); connect(speakButton, SIGNAL(pressed()), this, SLOT(play()));
connect(clearButton,SIGNAL(pressed()),this,SLOT(clear())); connect(clearButton, SIGNAL(pressed()), this, SLOT(clear()));
//multimedia/phonon //multimedia/phonon
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
@ -168,7 +167,6 @@ YACReaderTranslator::YACReaderTranslator(QWidget * parent)
#else #else
music = createPlayer(MusicCategory); music = createPlayer(MusicCategory);
#endif #endif
} }
void YACReaderTranslator::hideResults() void YACReaderTranslator::hideResults()
@ -187,22 +185,22 @@ void YACReaderTranslator::clear()
void YACReaderTranslator::translate() void YACReaderTranslator::translate()
{ {
QString text = this->text->toPlainText(); QString text = this->text->toPlainText();
if(text.isEmpty()) if (text.isEmpty())
return; return;
QString from = this->from->itemData(this->from->currentIndex()).toString(); QString from = this->from->itemData(this->from->currentIndex()).toString();
QString to = this->to->itemData(this->to->currentIndex()).toString(); QString to = this->to->itemData(this->to->currentIndex()).toString();
TranslationLoader * translationLoader = new TranslationLoader(text,from,to); TranslationLoader *translationLoader = new TranslationLoader(text, from, to);
connect(translationLoader,SIGNAL(requestFinished(QString)),this,SLOT(setTranslation(QString))); connect(translationLoader, SIGNAL(requestFinished(QString)), this, SLOT(setTranslation(QString)));
connect(translationLoader,SIGNAL(error()),this,SLOT(error())); connect(translationLoader, SIGNAL(error()), this, SLOT(error()));
connect(translationLoader,SIGNAL(timeOut()),this,SLOT(error())); connect(translationLoader, SIGNAL(timeOut()), this, SLOT(error()));
connect(translationLoader,SIGNAL(finished()),translationLoader,SLOT(deleteLater())); connect(translationLoader, SIGNAL(finished()), translationLoader, SLOT(deleteLater()));
TextToSpeachLoader * tts = new TextToSpeachLoader(text,from); TextToSpeachLoader *tts = new TextToSpeachLoader(text, from);
connect(tts,SIGNAL(requestFinished(QUrl)),this,SLOT(setSpeak(QUrl))); connect(tts, SIGNAL(requestFinished(QUrl)), this, SLOT(setSpeak(QUrl)));
connect(tts,SIGNAL(error()),this,SLOT(error())); connect(tts, SIGNAL(error()), this, SLOT(error()));
connect(tts,SIGNAL(timeOut()),this,SLOT(error())); connect(tts, SIGNAL(timeOut()), this, SLOT(error()));
connect(tts,SIGNAL(finished()),tts,SLOT(deleteLater())); connect(tts, SIGNAL(finished()), tts, SLOT(deleteLater()));
translationLoader->start(); translationLoader->start();
tts->start(); tts->start();
@ -221,7 +219,7 @@ void YACReaderTranslator::error()
busyIndicator->hide(); busyIndicator->hide();
} }
void YACReaderTranslator::setSpeak(const QUrl & url) void YACReaderTranslator::setSpeak(const QUrl &url)
{ {
resultsTitle->setHidden(false); resultsTitle->setHidden(false);
speakButton->setHidden(false); speakButton->setHidden(false);
@ -229,7 +227,7 @@ void YACReaderTranslator::setSpeak(const QUrl & url)
ttsSource = url; ttsSource = url;
} }
void YACReaderTranslator::setTranslation(const QString & string) void YACReaderTranslator::setTranslation(const QString &string)
{ {
resultText->setText(string); resultText->setText(string);
@ -244,46 +242,45 @@ void YACReaderTranslator::populateCombos()
combos.append(from); combos.append(from);
combos.append(to); combos.append(to);
for(int i=0;i<combos.count();i++) for (int i = 0; i < combos.count(); i++) {
{ QComboBox *combo = combos.at(i);
QComboBox * combo = combos.at(i); combo->addItem("Arabic", "ar");
combo->addItem("Arabic","ar"); combo->addItem("Bulgarian", "bg");
combo->addItem("Bulgarian","bg"); combo->addItem("Catalan", "ca");
combo->addItem("Catalan","ca"); combo->addItem("Chinese Simplified", "zh-CHS");
combo->addItem("Chinese Simplified","zh-CHS"); combo->addItem("Chinese Traditional", "zh-CHT");
combo->addItem("Chinese Traditional","zh-CHT"); combo->addItem("Czech", "cs");
combo->addItem("Czech","cs"); combo->addItem("Danish", "da");
combo->addItem("Danish","da"); combo->addItem("Dutch", "nl");
combo->addItem("Dutch","nl"); combo->addItem("English", "en");
combo->addItem("English","en"); combo->addItem("Estonian", "et");
combo->addItem("Estonian","et"); combo->addItem("Finnish", "fi");
combo->addItem("Finnish","fi"); combo->addItem("French", "fr");
combo->addItem("French","fr"); combo->addItem("German", "de");
combo->addItem("German","de"); combo->addItem("Greek", "el");
combo->addItem("Greek","el"); combo->addItem("Haitian Creole", "ht");
combo->addItem("Haitian Creole","ht"); combo->addItem("Hebrew", "he");
combo->addItem("Hebrew","he"); combo->addItem("Hindi", "hi");
combo->addItem("Hindi","hi"); combo->addItem("Hungarian", "hu");
combo->addItem("Hungarian","hu"); combo->addItem("Indonesian", "id");
combo->addItem("Indonesian","id"); combo->addItem("Italian", "it");
combo->addItem("Italian","it"); combo->addItem("Japanese", "ja");
combo->addItem("Japanese","ja"); combo->addItem("Korean", "ko");
combo->addItem("Korean","ko"); combo->addItem("Latvian", "lv");
combo->addItem("Latvian","lv"); combo->addItem("Lithuanian", "lt");
combo->addItem("Lithuanian","lt"); combo->addItem("Norwegian", "no");
combo->addItem("Norwegian","no"); combo->addItem("Polish", "pl");
combo->addItem("Polish","pl"); combo->addItem("Portuguese", "pt");
combo->addItem("Portuguese","pt"); combo->addItem("Romanian", "ro");
combo->addItem("Romanian","ro"); combo->addItem("Russian", "ru");
combo->addItem("Russian","ru"); combo->addItem("Slovak", "sk");
combo->addItem("Slovak","sk"); combo->addItem("Slovenian", "sl");
combo->addItem("Slovenian","sl"); combo->addItem("Spanish", "es");
combo->addItem("Spanish","es"); combo->addItem("Swedish", "sv");
combo->addItem("Swedish","sv"); combo->addItem("Thai", "th");
combo->addItem("Thai","th"); combo->addItem("Turkish", "tr");
combo->addItem("Turkish","tr"); combo->addItem("Ukrainian", "uk");
combo->addItem("Ukrainian","uk"); combo->addItem("Vietnamese", "vi");
combo->addItem("Vietnamese","vi");
} }
from->setCurrentIndex(from->findText("English")); from->setCurrentIndex(from->findText("English"));
to->setCurrentIndex(from->findText("Spanish")); to->setCurrentIndex(from->findText("Spanish"));
@ -315,9 +312,8 @@ YACReaderTranslator::~YACReaderTranslator()
void YACReaderTranslator::mousePressEvent(QMouseEvent *event) void YACReaderTranslator::mousePressEvent(QMouseEvent *event)
{ {
QPoint p = mapTo(this,event->pos()); QPoint p = mapTo(this, event->pos());
if(p.y() < 40) if (p.y() < 40) {
{
drag = true; drag = true;
click = event->pos(); click = event->pos();
} }
@ -329,10 +325,10 @@ void YACReaderTranslator::mouseReleaseEvent(QMouseEvent *event)
event->accept(); event->accept();
} }
void YACReaderTranslator::mouseMoveEvent(QMouseEvent * event) void YACReaderTranslator::mouseMoveEvent(QMouseEvent *event)
{ {
if(drag) if (drag)
this->move(QPoint(mapToParent(event->pos())-click)); this->move(QPoint(mapToParent(event->pos()) - click));
event->accept(); event->accept();
} }
@ -341,7 +337,7 @@ void YACReaderTranslator::mouseMoveEvent(QMouseEvent * event)
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
TranslationLoader::TranslationLoader(QString text, QString from, QString to) TranslationLoader::TranslationLoader(QString text, QString from, QString to)
:QThread(),text(text),from(from),to(to) : QThread(), text(text), from(from), to(to)
{ {
} }
@ -353,7 +349,7 @@ void TranslationLoader::run()
tT.setSingleShot(true); tT.setSingleShot(true);
connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit()));
connect(&manager, SIGNAL(finished(QNetworkReply*)),&q, SLOT(quit())); connect(&manager, SIGNAL(finished(QNetworkReply *)), &q, SLOT(quit()));
QString url = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appid=%1&from=%2&to=%3&text=%4&contentType=text/plain"; QString url = "http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appid=%1&from=%2&to=%3&text=%4&contentType=text/plain";
url = url.arg(APPID).arg(from).arg(to).arg(text); url = url.arg(APPID).arg(from).arg(to).arg(text);
@ -363,18 +359,16 @@ void TranslationLoader::run()
tT.start(5000); // 5s timeout tT.start(5000); // 5s timeout
q.exec(); q.exec();
if(tT.isActive()){ if (tT.isActive()) {
// download complete // download complete
if(reply->error() == QNetworkReply::NoError) if (reply->error() == QNetworkReply::NoError) {
{
QString utf8 = QString::fromUtf8(reply->readAll()); QString utf8 = QString::fromUtf8(reply->readAll());
utf8 = utf8.remove(0,1); utf8 = utf8.remove(0, 1);
utf8 = utf8.remove(utf8.count()-1,1); utf8 = utf8.remove(utf8.count() - 1, 1);
QString translated(utf8); QString translated(utf8);
emit(requestFinished(translated)); emit(requestFinished(translated));
} } else
else
emit(error()); emit(error());
} else { } else {
emit(timeOut()); emit(timeOut());
@ -385,13 +379,11 @@ void TranslationLoader::run()
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
TextToSpeachLoader::TextToSpeachLoader(QString text, QString language) TextToSpeachLoader::TextToSpeachLoader(QString text, QString language)
:QThread(),text(text),language(language) : QThread(), text(text), language(language)
{ {
} }
void TextToSpeachLoader::run() void TextToSpeachLoader::run()
{ {
QNetworkAccessManager manager; QNetworkAccessManager manager;
@ -400,7 +392,7 @@ void TextToSpeachLoader::run()
tT.setSingleShot(true); tT.setSingleShot(true);
connect(&tT, SIGNAL(timeout()), &q, SLOT(quit())); connect(&tT, SIGNAL(timeout()), &q, SLOT(quit()));
connect(&manager, SIGNAL(finished(QNetworkReply*)),&q, SLOT(quit())); connect(&manager, SIGNAL(finished(QNetworkReply *)), &q, SLOT(quit()));
QString url = "http://api.microsofttranslator.com/V2/Ajax.svc/Speak?appid=%1&language=%2&text=%3&contentType=text/plain"; QString url = "http://api.microsofttranslator.com/V2/Ajax.svc/Speak?appid=%1&language=%2&text=%3&contentType=text/plain";
url = url.arg(APPID).arg(language).arg(text); url = url.arg(APPID).arg(language).arg(text);
@ -410,18 +402,16 @@ void TextToSpeachLoader::run()
tT.start(5000); // 5s timeout tT.start(5000); // 5s timeout
q.exec(); q.exec();
if(tT.isActive()){ if (tT.isActive()) {
// download complete // download complete
if(reply->error() == QNetworkReply::NoError) if (reply->error() == QNetworkReply::NoError) {
{
QString utf8 = QString::fromUtf8(reply->readAll()); QString utf8 = QString::fromUtf8(reply->readAll());
utf8 = utf8.remove(0,1); utf8 = utf8.remove(0, 1);
utf8 = utf8.remove(utf8.count()-1,1); utf8 = utf8.remove(utf8.count() - 1, 1);
utf8 = utf8.replace("\\",""); utf8 = utf8.replace("\\", "");
emit(requestFinished(QUrl(utf8))); emit(requestFinished(QUrl(utf8)));
} } else
else
emit(error()); emit(error());
} else { } else {
emit(timeOut()); emit(timeOut());

View File

@ -15,58 +15,55 @@ class YACReaderBusyWidget;
#include <QUrl> #include <QUrl>
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
class QMediaPlayer; class QMediaPlayer;
#else #else
#include<Phonon/MediaObject> #include <Phonon/MediaObject>
using namespace Phonon; using namespace Phonon;
#endif #endif
class YACReaderTranslator : public QWidget class YACReaderTranslator : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
YACReaderTranslator(QWidget * parent = 0); YACReaderTranslator(QWidget *parent = 0);
~YACReaderTranslator(); ~YACReaderTranslator();
public slots: public slots:
void play(); void play();
protected slots: protected slots:
void translate(); void translate();
void setSpeak(const QUrl & url); void setSpeak(const QUrl &url);
void setTranslation(const QString & string); void setTranslation(const QString &string);
void error(); void error();
void clear(); void clear();
protected: protected:
void mousePressEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent ( QMouseEvent * event ); void mouseMoveEvent(QMouseEvent *event);
void hideResults(); void hideResults();
void populateCombos(); void populateCombos();
bool drag; bool drag;
QPoint click; QPoint click;
private:
private:
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
QMediaPlayer *player; QMediaPlayer *player;
#else #else
MediaObject * music; MediaObject *music;
#endif #endif
QTextEdit * text; QTextEdit *text;
QComboBox * from; QComboBox *from;
QComboBox * to; QComboBox *to;
QLabel * resultsTitle; QLabel *resultsTitle;
QPushButton * speakButton; QPushButton *speakButton;
QLabel * resultText; QLabel *resultText;
YACReaderBusyWidget * busyIndicator; YACReaderBusyWidget *busyIndicator;
QUrl ttsSource; QUrl ttsSource;
QPushButton * clearButton; QPushButton *clearButton;
}; };
class TranslationLoader : public QThread class TranslationLoader : public QThread
@ -78,6 +75,7 @@ signals:
void requestFinished(QString); void requestFinished(QString);
void timeOut(); void timeOut();
void error(); void error();
private: private:
QString text; QString text;
QString from; QString from;
@ -94,6 +92,7 @@ signals:
void requestFinished(QUrl); void requestFinished(QUrl);
void timeOut(); void timeOut();
void error(); void error();
private: private:
QString text; QString text;
QString language; QString language;

File diff suppressed because it is too large Load Diff

View File

@ -32,12 +32,12 @@ class Bookmarks;
class PageLabelWidget; class PageLabelWidget;
class NotificationsLabelWidget; class NotificationsLabelWidget;
class Viewer : public QScrollArea, public ScrollManagement class Viewer : public QScrollArea, public ScrollManagement
{ {
Q_OBJECT Q_OBJECT
public: public:
bool fullscreen; //TODO, change by the right use of windowState(); bool fullscreen; //TODO, change by the right use of windowState();
public slots: public slots:
void increaseZoomFactor(); void increaseZoomFactor();
void decreaseZoomFactor(); void decreaseZoomFactor();
void setZoomFactor(int); void setZoomFactor(int);
@ -45,7 +45,7 @@ class NotificationsLabelWidget;
void prepareForOpening(); void prepareForOpening();
void open(QString pathFile, int atPage = -1); void open(QString pathFile, int atPage = -1);
void open(QString pathFile, const ComicDB & comic); void open(QString pathFile, const ComicDB &comic);
void prev(); void prev();
void next(); void next();
void showGoToDialog(); void showGoToDialog();
@ -72,7 +72,7 @@ class NotificationsLabelWidget;
void animateHideGoToFlow(); void animateHideGoToFlow();
void rotateLeft(); void rotateLeft();
void rotateRight(); void rotateRight();
bool magnifyingGlassIsVisible() {return magnifyingGlassShowed;} bool magnifyingGlassIsVisible() { return magnifyingGlassShowed; }
void setBookmark(bool); void setBookmark(bool);
void save(); void save();
void doublePageSwitch(); void doublePageSwitch();
@ -87,48 +87,48 @@ class NotificationsLabelWidget;
void translatorSwitch(); void translatorSwitch();
void animateShowTranslator(); void animateShowTranslator();
void animateHideTranslator(); void animateHideTranslator();
virtual void mousePressEvent ( QMouseEvent * event ); virtual void mousePressEvent(QMouseEvent *event);
virtual void mouseReleaseEvent ( QMouseEvent * event ); virtual void mouseReleaseEvent(QMouseEvent *event);
void updateBackgroundColor(const QColor & color); void updateBackgroundColor(const QColor &color);
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void showMessageErrorOpening(); void showMessageErrorOpening();
void showMessageErrorOpening(QString); void showMessageErrorOpening(QString);
void processCRCError(QString message); void processCRCError(QString message);
void setBookmarks(); void setBookmarks();
//deprecated //deprecated
void updateImageOptions(); void updateImageOptions();
void updateFilters(int brightness, int contrast,int gamma); void updateFilters(int brightness, int contrast, int gamma);
void showIsCoverMessage(); void showIsCoverMessage();
void showIsLastMessage(); void showIsLastMessage();
int getCurrentPageNumber(); int getCurrentPageNumber();
void updateZoomRatio(int ratio); void updateZoomRatio(int ratio);
private: private:
bool information; bool information;
bool doublePage; bool doublePage;
bool doubleMangaPage; bool doubleMangaPage;
int zoom; int zoom;
PageLabelWidget * informationLabel; PageLabelWidget *informationLabel;
//QTimer * scroller; //QTimer * scroller;
QPropertyAnimation * verticalScroller; QPropertyAnimation *verticalScroller;
QPropertyAnimation * horizontalScroller; QPropertyAnimation *horizontalScroller;
QParallelAnimationGroup * groupScroller; QParallelAnimationGroup *groupScroller;
int posByStep; int posByStep;
int nextPos; int nextPos;
GoToFlowWidget * goToFlow; GoToFlowWidget *goToFlow;
QPropertyAnimation * showGoToFlowAnimation; QPropertyAnimation *showGoToFlowAnimation;
GoToDialog * goToDialog; GoToDialog *goToDialog;
//!Image properties //!Image properties
//! Comic //! Comic
//Comic * comic; //Comic * comic;
int index; int index;
QPixmap *currentPage; QPixmap *currentPage;
BookmarksDialog * bd; BookmarksDialog *bd;
bool wheelStop; bool wheelStop;
Render * render; Render *render;
QTimer * hideCursorTimer; QTimer *hideCursorTimer;
int direction; int direction;
bool drag; bool drag;
int numScrollSteps; int numScrollSteps;
@ -136,47 +136,50 @@ virtual void mouseReleaseEvent ( QMouseEvent * event );
//!Widgets //!Widgets
QLabel *content; QLabel *content;
YACReaderTranslator * translator; YACReaderTranslator *translator;
int translatorXPos; int translatorXPos;
QPropertyAnimation * translatorAnimation; QPropertyAnimation *translatorAnimation;
int yDragOrigin; int yDragOrigin;
int xDragOrigin; int xDragOrigin;
NotificationsLabelWidget * notificationsLabel; NotificationsLabelWidget *notificationsLabel;
bool shouldOpenNext; bool shouldOpenNext;
bool shouldOpenPrevious; bool shouldOpenPrevious;
private: private:
//!Magnifying glass //!Magnifying glass
MagnifyingGlass *mglass; MagnifyingGlass *mglass;
bool magnifyingGlassShowed; bool magnifyingGlassShowed;
bool restoreMagnifyingGlass; bool restoreMagnifyingGlass;
//! Manejadores de evento: //! Manejadores de evento:
void keyPressEvent(QKeyEvent * event); void keyPressEvent(QKeyEvent *event);
void resizeEvent(QResizeEvent * event); void resizeEvent(QResizeEvent *event);
void wheelEvent(QWheelEvent * event); void wheelEvent(QWheelEvent *event);
void mouseMoveEvent(QMouseEvent * event); void mouseMoveEvent(QMouseEvent *event);
//!ZigzagScroll //!ZigzagScroll
enum scrollDirection{ UP, DOWN, LEFT, RIGHT }; enum scrollDirection { UP,
DOWN,
LEFT,
RIGHT };
bool isEdge(scrollDirection d); bool isEdge(scrollDirection d);
void scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward); void scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward);
void scrollTo(int x, int y); void scrollTo(int x, int y);
public: public:
Viewer(QWidget * parent = 0); Viewer(QWidget *parent = 0);
~Viewer(); ~Viewer();
void toggleFullScreen(); void toggleFullScreen();
const QPixmap * pixmap(); const QPixmap *pixmap();
//Comic * getComic(){return comic;} //Comic * getComic(){return comic;}
const BookmarksDialog * getBookmarksDialog(){return bd;} const BookmarksDialog *getBookmarksDialog() { return bd; }
//returns the current index starting in 1 [1,nPages] //returns the current index starting in 1 [1,nPages]
unsigned int getIndex(); unsigned int getIndex();
void updateComic(ComicDB & comic); void updateComic(ComicDB &comic);
signals: signals:
void backgroundChanges(); void backgroundChanges();
void pageAvailable(bool); void pageAvailable(bool);
void pageIsBookmark(bool); void pageIsBookmark(bool);
@ -184,6 +187,6 @@ virtual void mouseReleaseEvent ( QMouseEvent * event );
void openNextComic(); void openNextComic();
void openPreviousComic(); void openPreviousComic();
void zoomUpdated(int); void zoomUpdated(int);
}; };
#endif #endif

View File

@ -4,13 +4,14 @@
#include "configuration.h" #include "configuration.h"
YACReaderSliderAction::YACReaderSliderAction (QWidget * parent) YACReaderSliderAction::YACReaderSliderAction(QWidget *parent)
:QWidgetAction (parent) { : QWidgetAction(parent)
{
widget = new YACReaderSlider(); widget = new YACReaderSlider();
setDefaultWidget(widget); setDefaultWidget(widget);
connect(widget,SIGNAL(zoomRatioChanged(int)),this,SIGNAL(zoomRatioChanged(int))); connect(widget, SIGNAL(zoomRatioChanged(int)), this, SIGNAL(zoomRatioChanged(int)));
} }
void YACReaderSliderAction::updateText(int value) void YACReaderSliderAction::updateText(int value)
@ -24,7 +25,7 @@ void YACReaderSliderAction::updateZoomRatio(int value)
} }
YACReaderSlider::YACReaderSlider(QWidget *parent) YACReaderSlider::YACReaderSlider(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
const int sliderWidth = 200; const int sliderWidth = 200;
const int contentsMargin = 10; const int contentsMargin = 10;
@ -33,7 +34,7 @@ YACReaderSlider::YACReaderSlider(QWidget *parent)
setFocusPolicy(Qt::StrongFocus); setFocusPolicy(Qt::StrongFocus);
QHBoxLayout* pLayout = new QHBoxLayout(); QHBoxLayout *pLayout = new QHBoxLayout();
pLayout->addStretch(); pLayout->addStretch();
@ -56,10 +57,10 @@ YACReaderSlider::YACReaderSlider(QWidget *parent)
pLayout->setMargin(0); pLayout->setMargin(0);
setLayout (pLayout); setLayout(pLayout);
setAutoFillBackground(false); setAutoFillBackground(false);
setContentsMargins(contentsMargin,contentsMargin,contentsMargin,contentsMargin); setContentsMargins(contentsMargin, contentsMargin, contentsMargin, contentsMargin);
setFixedSize(sliderWidth + 2 * contentsMargin + 2 * elementsSpacing + percentageLabelWidth + resetButton->sizeHint().width(), 45); setFixedSize(sliderWidth + 2 * contentsMargin + 2 * elementsSpacing + percentageLabelWidth + resetButton->sizeHint().width(), 45);
slider->setMinimum(30); slider->setMinimum(30);
@ -78,7 +79,7 @@ void YACReaderSlider::paintEvent(QPaintEvent *)
{ {
QPainter painter(this); QPainter painter(this);
painter.fillRect(0,0,width(),height(),QColor("#BB000000")); painter.fillRect(0, 0, width(), height(), QColor("#BB000000"));
} }
void YACReaderSlider::show() void YACReaderSlider::show()
@ -87,7 +88,7 @@ void YACReaderSlider::show()
setFocus(); setFocus();
} }
void YACReaderSlider::focusOutEvent(QFocusEvent * event) void YACReaderSlider::focusOutEvent(QFocusEvent *event)
{ {
QWidget::focusOutEvent(event); QWidget::focusOutEvent(event);
hide(); hide();

View File

@ -10,15 +10,15 @@ class YACReaderSlider : public QWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
QLabel * percentageLabel; QLabel *percentageLabel;
QSlider * slider; QSlider *slider;
public: public:
YACReaderSlider (QWidget * parent = 0); YACReaderSlider(QWidget *parent = 0);
void show(); void show();
protected: protected:
virtual void focusOutEvent(QFocusEvent * event); virtual void focusOutEvent(QFocusEvent *event);
virtual void paintEvent(QPaintEvent *); virtual void paintEvent(QPaintEvent *);
public slots: public slots:
@ -26,7 +26,6 @@ public slots:
void updateZoomRatio(int value); void updateZoomRatio(int value);
void resetValueToDefault(); void resetValueToDefault();
signals: signals:
void zoomRatioChanged(int value); void zoomRatioChanged(int value);
}; };
@ -35,17 +34,15 @@ class YACReaderSliderAction : public QWidgetAction
{ {
Q_OBJECT Q_OBJECT
private: private:
YACReaderSlider * widget; YACReaderSlider *widget;
public: public:
YACReaderSliderAction(QWidget *parent = 0);
YACReaderSliderAction (QWidget * parent = 0);
public slots: public slots:
void updateText(int value); void updateText(int value);
void updateZoomRatio(int value); void updateZoomRatio(int value);
signals: signals:
void zoomRatioChanged(int value); void zoomRatioChanged(int value);
}; };

View File

@ -8,8 +8,8 @@
using namespace YACReader; using namespace YACReader;
YACReaderLocalClient::YACReaderLocalClient(QObject *parent) : YACReaderLocalClient::YACReaderLocalClient(QObject *parent)
QObject(parent) : QObject(parent)
{ {
localSocket = new QLocalSocket(this); localSocket = new QLocalSocket(this);
@ -25,15 +25,13 @@ YACReaderLocalClient::~YACReaderLocalClient()
//información de comic recibida... //información de comic recibida...
void YACReaderLocalClient::readMessage() void YACReaderLocalClient::readMessage()
{ {
} }
#include <QMessageBox> #include <QMessageBox>
bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & siblings) bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB &comic, QList<ComicDB> &siblings)
{ {
localSocket->connectToServer(YACREADERLIBRARY_GUID); localSocket->connectToServer(YACREADERLIBRARY_GUID);
if(localSocket->isOpen()) if (localSocket->isOpen()) {
{
QByteArray block; QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly); QDataStream out(&block, QIODevice::WriteOnly);
out.setVersion(QDataStream::Qt_4_8); out.setVersion(QDataStream::Qt_4_8);
@ -47,16 +45,14 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
int written = 0; int written = 0;
int previousWritten = 0; int previousWritten = 0;
quint16 tries = 0; quint16 tries = 0;
while(written != block.size() && tries < 200) while (written != block.size() && tries < 200) {
{
written += localSocket->write(block); written += localSocket->write(block);
localSocket->flush(); localSocket->flush();
if(written == previousWritten) //no bytes were written if (written == previousWritten) //no bytes were written
tries++; tries++;
previousWritten = written; previousWritten = written;
} }
if(tries == 200) if (tries == 200) {
{
localSocket->close(); localSocket->close();
QLOG_ERROR() << "Requesting Comic Info : unable to send request"; QLOG_ERROR() << "Requesting Comic Info : unable to send request";
return false; return false;
@ -69,23 +65,20 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
int dataAvailable = 0; int dataAvailable = 0;
QByteArray packageSize; QByteArray packageSize;
localSocket->waitForReadyRead(1000); localSocket->waitForReadyRead(1000);
while(packageSize.size() < (int)sizeof(quint32) && tries < 20) while (packageSize.size() < (int)sizeof(quint32) && tries < 20) {
{
packageSize.append(localSocket->read(sizeof(quint32) - packageSize.size())); packageSize.append(localSocket->read(sizeof(quint32) - packageSize.size()));
localSocket->waitForReadyRead(100); localSocket->waitForReadyRead(100);
if(dataAvailable == packageSize.size()) if (dataAvailable == packageSize.size()) {
{
tries++; //TODO apply 'tries' fix tries++; //TODO apply 'tries' fix
} }
dataAvailable = packageSize.size(); dataAvailable = packageSize.size();
} }
if(tries == 20) if (tries == 20) {
{
localSocket->close(); localSocket->close();
QLOG_ERROR() << "Requesting Comic Info : unable to read package size"; QLOG_ERROR() << "Requesting Comic Info : unable to read package size";
return false; return false;
} }
QDataStream sizeStream(packageSize);//localSocket->read(sizeof(quint32))); QDataStream sizeStream(packageSize); //localSocket->read(sizeof(quint32)));
sizeStream.setVersion(QDataStream::Qt_4_8); sizeStream.setVersion(QDataStream::Qt_4_8);
quint32 totalSize = 0; quint32 totalSize = 0;
sizeStream >> totalSize; sizeStream >> totalSize;
@ -95,18 +88,16 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
tries = 0; tries = 0;
int dataRead = 0; int dataRead = 0;
localSocket->waitForReadyRead(1000); localSocket->waitForReadyRead(1000);
while((unsigned int)data.length() < totalSize && tries < 20 ) while ((unsigned int)data.length() < totalSize && tries < 20) {
{
data.append(localSocket->readAll()); data.append(localSocket->readAll());
if((unsigned int)data.length() < totalSize) if ((unsigned int)data.length() < totalSize)
localSocket->waitForReadyRead(100); localSocket->waitForReadyRead(100);
if(data.length() == dataRead) if (data.length() == dataRead)
tries++; tries++;
dataRead = data.length(); dataRead = data.length();
} }
if(tries == 20) if (tries == 20) {
{
localSocket->close(); localSocket->close();
QLOG_ERROR() << "Requesting Comic Info : unable to read data (" << data.length() << "," << totalSize << ")"; QLOG_ERROR() << "Requesting Comic Info : unable to read data (" << data.length() << "," << totalSize << ")";
return false; return false;
@ -117,20 +108,16 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
dataStream >> siblings; dataStream >> siblings;
localSocket->close(); localSocket->close();
return true; return true;
} } else {
else
{
QLOG_ERROR() << "Requesting Comic Info : unable to connect to the server"; QLOG_ERROR() << "Requesting Comic Info : unable to connect to the server";
return false; return false;
} }
} }
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB &comic)
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
{ {
localSocket->connectToServer(YACREADERLIBRARY_GUID); localSocket->connectToServer(YACREADERLIBRARY_GUID);
if(localSocket->isOpen()) if (localSocket->isOpen()) {
{
//QLOG_INFO() << "Connection opened for sending ComicInfo"; //QLOG_INFO() << "Connection opened for sending ComicInfo";
QByteArray block; QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly); QDataStream out(&block, QIODevice::WriteOnly);
@ -145,18 +132,16 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
int written, previousWritten; int written, previousWritten;
written = previousWritten = 0; written = previousWritten = 0;
int tries = 0; int tries = 0;
while(written != block.size() && tries < 100) while (written != block.size() && tries < 100) {
{
written += localSocket->write(block); written += localSocket->write(block);
if(written == previousWritten) if (written == previousWritten)
tries++; tries++;
previousWritten = written; previousWritten = written;
} }
localSocket->waitForBytesWritten(2000); localSocket->waitForBytesWritten(2000);
localSocket->close(); localSocket->close();
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size()); //QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
if(tries == 100 && written != block.size()) if (tries == 100 && written != block.size()) {
{
emit finished(); emit finished();
QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size()); QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size());
return false; return false;
@ -170,11 +155,10 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
return false; return false;
} }
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic, qulonglong nextComicId) bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB &comic, qulonglong nextComicId)
{ {
localSocket->connectToServer(YACREADERLIBRARY_GUID); localSocket->connectToServer(YACREADERLIBRARY_GUID);
if(localSocket->isOpen()) if (localSocket->isOpen()) {
{
//QLOG_INFO() << "Connection opened for sending ComicInfo"; //QLOG_INFO() << "Connection opened for sending ComicInfo";
QByteArray block; QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly); QDataStream out(&block, QIODevice::WriteOnly);
@ -190,18 +174,16 @@ bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic, qul
int written, previousWritten; int written, previousWritten;
written = previousWritten = 0; written = previousWritten = 0;
int tries = 0; int tries = 0;
while(written != block.size() && tries < 100) while (written != block.size() && tries < 100) {
{
written += localSocket->write(block); written += localSocket->write(block);
if(written == previousWritten) if (written == previousWritten)
tries++; tries++;
previousWritten = written; previousWritten = written;
} }
localSocket->waitForBytesWritten(2000); localSocket->waitForBytesWritten(2000);
localSocket->close(); localSocket->close();
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size()); //QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
if(tries == 100 && written != block.size()) if (tries == 100 && written != block.size()) {
{
emit finished(); emit finished();
QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size()); QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size());
return false; return false;

View File

@ -16,14 +16,12 @@ signals:
void finished(); void finished();
public slots: public slots:
void readMessage(); void readMessage();
bool requestComicInfo(quint64 libraryId, ComicDB & comic,QList<ComicDB> & siblings); bool requestComicInfo(quint64 libraryId, ComicDB &comic, QList<ComicDB> &siblings);
bool sendComicInfo(quint64 libraryId, ComicDB & comic); bool sendComicInfo(quint64 libraryId, ComicDB &comic);
bool sendComicInfo(quint64 libraryId, ComicDB & comic, qulonglong nextComicId); bool sendComicInfo(quint64 libraryId, ComicDB &comic, qulonglong nextComicId);
private: private:
QLocalSocket * localSocket; QLocalSocket *localSocket;
}; };
#endif // YACREADER_LOCAL_CLIENT_H #endif // YACREADER_LOCAL_CLIENT_H

View File

@ -1,15 +1,15 @@
#include "add_label_dialog.h" #include "add_label_dialog.h"
AddLabelDialog::AddLabelDialog(QWidget *parent) : AddLabelDialog::AddLabelDialog(QWidget *parent)
QDialog(parent) : QDialog(parent)
{ {
QVBoxLayout * layout = new QVBoxLayout; QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(new QLabel(tr("Label name:"))); layout->addWidget(new QLabel(tr("Label name:")));
layout->addWidget(edit = new QLineEdit()); layout->addWidget(edit = new QLineEdit());
layout->addWidget(new QLabel(tr("Choose a color:"))); layout->addWidget(new QLabel(tr("Choose a color:")));
layout->addWidget(list = new QListWidget() ); layout->addWidget(list = new QListWidget());
list->addItem(new QListWidgetItem(QIcon(":/images/lists/label_red.png"), tr("red"))); list->addItem(new QListWidgetItem(QIcon(":/images/lists/label_red.png"), tr("red")));
list->addItem(new QListWidgetItem(QIcon(":/images/lists/label_orange.png"), tr("orange"))); list->addItem(new QListWidgetItem(QIcon(":/images/lists/label_orange.png"), tr("orange")));
@ -33,10 +33,10 @@ AddLabelDialog::AddLabelDialog(QWidget *parent) :
setMinimumHeight(340); setMinimumHeight(340);
//buttons //buttons
acceptButton = new QPushButton(tr("accept"),this); acceptButton = new QPushButton(tr("accept"), this);
cancelButton = new QPushButton(tr("cancel"),this); cancelButton = new QPushButton(tr("cancel"), this);
QHBoxLayout * buttons = new QHBoxLayout; QHBoxLayout *buttons = new QHBoxLayout;
buttons->addStretch(); buttons->addStretch();
buttons->addWidget(acceptButton); buttons->addWidget(acceptButton);
buttons->addWidget(cancelButton); buttons->addWidget(cancelButton);
@ -47,15 +47,14 @@ AddLabelDialog::AddLabelDialog(QWidget *parent) :
setLayout(layout); setLayout(layout);
//connections //connections
connect(edit,SIGNAL(textChanged(QString)),this,SLOT(validateName(QString))); connect(edit, SIGNAL(textChanged(QString)), this, SLOT(validateName(QString)));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(close())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
connect(acceptButton,SIGNAL(clicked()),this,SLOT(accept())); connect(acceptButton, SIGNAL(clicked()), this, SLOT(accept()));
} }
YACReader::LabelColors AddLabelDialog::selectedColor() YACReader::LabelColors AddLabelDialog::selectedColor()
{ {
return YACReader::LabelColors(list->currentRow()+1); return YACReader::LabelColors(list->currentRow() + 1);
} }
QString AddLabelDialog::name() QString AddLabelDialog::name()
@ -77,7 +76,7 @@ int AddLabelDialog::exec()
void AddLabelDialog::validateName(const QString &name) void AddLabelDialog::validateName(const QString &name)
{ {
if(name.isEmpty()) if (name.isEmpty())
acceptButton->setDisabled(true); acceptButton->setDisabled(true);
else else
acceptButton->setEnabled(true); acceptButton->setEnabled(true);

View File

@ -18,14 +18,14 @@ public slots:
int exec(); int exec();
protected slots: protected slots:
void validateName(const QString & name); void validateName(const QString &name);
protected: protected:
QLineEdit * edit; QLineEdit *edit;
QListWidget * list; QListWidget *list;
QPushButton * acceptButton; QPushButton *acceptButton;
QPushButton * cancelButton; QPushButton *cancelButton;
}; };
#endif // ADD_LABEL_DIALOG_H #endif // ADD_LABEL_DIALOG_H

View File

@ -5,9 +5,8 @@
#include <QFileDialog> #include <QFileDialog>
#include <QGridLayout> #include <QGridLayout>
AddLibraryDialog::AddLibraryDialog(QWidget *parent)
AddLibraryDialog::AddLibraryDialog(QWidget * parent) : QDialog(parent)
:QDialog(parent)
{ {
setupUI(); setupUI();
} }
@ -17,32 +16,32 @@ void AddLibraryDialog::setupUI()
textLabel = new QLabel(tr("Comics folder : ")); textLabel = new QLabel(tr("Comics folder : "));
path = new QLineEdit; path = new QLineEdit;
textLabel->setBuddy(path); textLabel->setBuddy(path);
connect(path,SIGNAL(textChanged(QString)),this,SLOT(pathSetted(QString))); connect(path, SIGNAL(textChanged(QString)), this, SLOT(pathSetted(QString)));
nameLabel = new QLabel(tr("Library name : ")); nameLabel = new QLabel(tr("Library name : "));
nameEdit = new QLineEdit; nameEdit = new QLineEdit;
nameLabel->setBuddy(nameEdit); nameLabel->setBuddy(nameEdit);
connect(nameEdit,SIGNAL(textChanged(QString)),this,SLOT(nameSetted(QString))); connect(nameEdit, SIGNAL(textChanged(QString)), this, SLOT(nameSetted(QString)));
accept = new QPushButton(tr("Add")); accept = new QPushButton(tr("Add"));
accept->setDisabled(true); accept->setDisabled(true);
connect(accept,SIGNAL(clicked()),this,SLOT(add())); connect(accept, SIGNAL(clicked()), this, SLOT(add()));
cancel = new QPushButton(tr("Cancel")); cancel = new QPushButton(tr("Cancel"));
connect(cancel,SIGNAL(clicked()),this,SLOT(close())); connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
find = new QPushButton(QIcon(":/images/find_folder.png"),""); find = new QPushButton(QIcon(":/images/find_folder.png"), "");
connect(find,SIGNAL(clicked()),this,SLOT(findPath())); connect(find, SIGNAL(clicked()), this, SLOT(findPath()));
QGridLayout * content = new QGridLayout; QGridLayout *content = new QGridLayout;
content->addWidget(nameLabel,0,0); content->addWidget(nameLabel, 0, 0);
content->addWidget(nameEdit,0,1); content->addWidget(nameEdit, 0, 1);
content->addWidget(textLabel,1,0); content->addWidget(textLabel, 1, 0);
content->addWidget(path,1,1); content->addWidget(path, 1, 1);
content->addWidget(find,1,2); content->addWidget(find, 1, 2);
content->setColumnStretch(2,0); content->setColumnStretch(2, 0);
QHBoxLayout *bottomLayout = new QHBoxLayout; QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addStretch(); bottomLayout->addStretch();
@ -54,11 +53,11 @@ void AddLibraryDialog::setupUI()
mainLayout->addStretch(); mainLayout->addStretch();
mainLayout->addLayout(bottomLayout); mainLayout->addLayout(bottomLayout);
QHBoxLayout * imgMainLayout = new QHBoxLayout; QHBoxLayout *imgMainLayout = new QHBoxLayout;
QLabel * imgLabel = new QLabel(this); QLabel *imgLabel = new QLabel(this);
QPixmap p(":/images/openLibrary.png"); QPixmap p(":/images/openLibrary.png");
imgLabel->setPixmap(p); imgLabel->setPixmap(p);
imgMainLayout->addWidget(imgLabel);//,0,Qt::AlignTop); imgMainLayout->addWidget(imgLabel); //,0,Qt::AlignTop);
imgMainLayout->addLayout(mainLayout); imgMainLayout->addLayout(mainLayout);
setLayout(imgMainLayout); setLayout(imgMainLayout);
@ -70,48 +69,41 @@ void AddLibraryDialog::setupUI()
void AddLibraryDialog::add() void AddLibraryDialog::add()
{ {
//accept->setEnabled(false); //accept->setEnabled(false);
emit(addLibrary(QDir::cleanPath(path->text()),nameEdit->text())); emit(addLibrary(QDir::cleanPath(path->text()), nameEdit->text()));
} }
void AddLibraryDialog::nameSetted(const QString & text) void AddLibraryDialog::nameSetted(const QString &text)
{ {
if(!text.isEmpty()) if (!text.isEmpty()) {
{ if (!path->text().isEmpty()) {
if(!path->text().isEmpty())
{
QFileInfo fi(path->text()); QFileInfo fi(path->text());
if(fi.isDir()) if (fi.isDir())
accept->setEnabled(true); accept->setEnabled(true);
else else
accept->setEnabled(false); accept->setEnabled(false);
} }
} } else
else
accept->setEnabled(false); accept->setEnabled(false);
} }
void AddLibraryDialog::pathSetted(const QString & text) void AddLibraryDialog::pathSetted(const QString &text)
{ {
QFileInfo fi(text); QFileInfo fi(text);
if(fi.isDir()) if (fi.isDir()) {
{ if (!nameEdit->text().isEmpty())
if(!nameEdit->text().isEmpty())
accept->setEnabled(true); accept->setEnabled(true);
} } else
else
accept->setEnabled(false); accept->setEnabled(false);
} }
void AddLibraryDialog::findPath() void AddLibraryDialog::findPath()
{ {
QString s = QFileDialog::getExistingDirectory(0,"Comics directory","."); QString s = QFileDialog::getExistingDirectory(0, "Comics directory", ".");
if(!s.isEmpty()) if (!s.isEmpty()) {
{
path->setText(s); path->setText(s);
if(!nameEdit->text().isEmpty()) if (!nameEdit->text().isEmpty())
accept->setEnabled(true); accept->setEnabled(true);
} } else
else
accept->setEnabled(false); accept->setEnabled(false);
} }

View File

@ -7,29 +7,29 @@
#include <QPushButton> #include <QPushButton>
#include <QThread> #include <QThread>
class AddLibraryDialog : public QDialog class AddLibraryDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
AddLibraryDialog(QWidget * parent = 0); AddLibraryDialog(QWidget *parent = 0);
private:
QLabel * nameLabel; private:
QLabel * textLabel; QLabel *nameLabel;
QLineEdit * path; QLabel *textLabel;
QLineEdit * nameEdit; QLineEdit *path;
QPushButton * find; QLineEdit *nameEdit;
QPushButton * accept; QPushButton *find;
QPushButton * cancel; QPushButton *accept;
QPushButton *cancel;
void setupUI(); void setupUI();
public slots: public slots:
void add(); void add();
void findPath(); void findPath();
void close(); void close();
void nameSetted(const QString & text); void nameSetted(const QString &text);
void pathSetted(const QString & text); void pathSetted(const QString &text);
signals: signals:
void addLibrary(QString target, QString name); void addLibrary(QString target, QString name);
}; };
#endif #endif

View File

@ -1,13 +1,10 @@
#include "bundle_creator.h" #include "bundle_creator.h"
BundleCreator::BundleCreator(void) BundleCreator::BundleCreator(void)
:QObject() : QObject()
{ {
} }
BundleCreator::~BundleCreator(void) BundleCreator::~BundleCreator(void)
{ {
} }

View File

@ -5,7 +5,7 @@
class BundleCreator : public QObject class BundleCreator : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
BundleCreator(void); BundleCreator(void);
~BundleCreator(void); ~BundleCreator(void);

View File

@ -9,17 +9,17 @@
#include "yacreader_tool_bar_stretch.h" #include "yacreader_tool_bar_stretch.h"
ClassicComicsView::ClassicComicsView(QWidget *parent) ClassicComicsView::ClassicComicsView(QWidget *parent)
:ComicsView(parent),searching(false) : ComicsView(parent), searching(false)
{ {
QHBoxLayout * layout = new QHBoxLayout; QHBoxLayout *layout = new QHBoxLayout;
settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings = new QSettings(YACReader::getSettingsPath() + "/YACReaderLibrary.ini", QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor
settings->beginGroup("libraryConfig"); settings->beginGroup("libraryConfig");
//FLOW----------------------------------------------------------------------- //FLOW-----------------------------------------------------------------------
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
//FORCE_ANGLE is not used here, because ComicFlowWidgetGL will use OpenGL ES in the future //FORCE_ANGLE is not used here, because ComicFlowWidgetGL will use OpenGL ES in the future
#ifndef NO_OPENGL #ifndef NO_OPENGL
if((settings->value(USE_OPEN_GL).toBool() == true)) if ((settings->value(USE_OPEN_GL).toBool() == true))
comicFlow = new ComicFlowWidgetGL(0); comicFlow = new ComicFlowWidgetGL(0);
else else
comicFlow = new ComicFlowWidgetSW(0); comicFlow = new ComicFlowWidgetSW(0);
@ -35,7 +35,6 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
comicFlow->setContextMenuPolicy(Qt::CustomContextMenu); comicFlow->setContextMenuPolicy(Qt::CustomContextMenu);
//layout----------------------------------------------- //layout-----------------------------------------------
sVertical = new QSplitter(Qt::Vertical); //spliter derecha sVertical = new QSplitter(Qt::Vertical); //spliter derecha
@ -44,12 +43,11 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
setupSearchingIcon(); setupSearchingIcon();
stack->addWidget(searchingIcon); stack->addWidget(searchingIcon);
sVertical->addWidget(stack); sVertical->addWidget(stack);
comics = new QWidget; comics = new QWidget;
QVBoxLayout * comicsLayout = new QVBoxLayout; QVBoxLayout *comicsLayout = new QVBoxLayout;
comicsLayout->setSpacing(0); comicsLayout->setSpacing(0);
comicsLayout->setContentsMargins(0,0,0,0); comicsLayout->setContentsMargins(0, 0, 0, 0);
//TODO ComicsView:(set toolbar) comicsLayout->addWidget(editInfoToolBar); //TODO ComicsView:(set toolbar) comicsLayout->addWidget(editInfoToolBar);
tableView = new YACReaderTableView; tableView = new YACReaderTableView;
@ -62,17 +60,17 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
tableView->setContextMenuPolicy(Qt::CustomContextMenu); tableView->setContextMenuPolicy(Qt::CustomContextMenu);
//config-------------------------------------------------- //config--------------------------------------------------
if(settings->contains(COMICS_VIEW_HEADERS)) if (settings->contains(COMICS_VIEW_HEADERS))
tableView->horizontalHeader()->restoreState(settings->value(COMICS_VIEW_HEADERS).toByteArray()); tableView->horizontalHeader()->restoreState(settings->value(COMICS_VIEW_HEADERS).toByteArray());
//connections--------------------------------------------- //connections---------------------------------------------
connect(tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(centerComicFlow(QModelIndex))); connect(tableView, SIGNAL(clicked(QModelIndex)), this, SLOT(centerComicFlow(QModelIndex)));
connect(tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectedComicForOpening(QModelIndex))); connect(tableView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(selectedComicForOpening(QModelIndex)));
connect(comicFlow, SIGNAL(centerIndexChanged(int)), this, SLOT(updateTableView(int))); connect(comicFlow, SIGNAL(centerIndexChanged(int)), this, SLOT(updateTableView(int)));
connect(tableView, SIGNAL(comicRated(int,QModelIndex)), this, SIGNAL(comicRated(int,QModelIndex))); connect(tableView, SIGNAL(comicRated(int, QModelIndex)), this, SIGNAL(comicRated(int, QModelIndex)));
connect(comicFlow, SIGNAL(selected(uint)), this, SIGNAL(selected(uint))); connect(comicFlow, SIGNAL(selected(uint)), this, SIGNAL(selected(uint)));
connect(tableView->horizontalHeader(), SIGNAL(sectionMoved(int,int,int)), this, SLOT(saveTableHeadersStatus())); connect(tableView->horizontalHeader(), SIGNAL(sectionMoved(int, int, int)), this, SLOT(saveTableHeadersStatus()));
connect(tableView->horizontalHeader(), SIGNAL(sectionResized(int,int,int)), this, SLOT(saveTableHeadersStatus())); connect(tableView->horizontalHeader(), SIGNAL(sectionResized(int, int, int)), this, SLOT(saveTableHeadersStatus()));
connect(comicFlow, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(requestedViewContextMenu(QPoint))); connect(comicFlow, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(requestedViewContextMenu(QPoint)));
connect(tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(requestedItemContextMenu(QPoint))); connect(tableView, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(requestedItemContextMenu(QPoint)));
layout->addWidget(sVertical); layout->addWidget(sVertical);
@ -81,10 +79,10 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
layout->setMargin(0); layout->setMargin(0);
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
sVertical->setCollapsible(1,false); sVertical->setCollapsible(1, false);
#endif #endif
if(settings->contains(COMICS_VIEW_FLOW_SPLITTER_STATUS)) if (settings->contains(COMICS_VIEW_FLOW_SPLITTER_STATUS))
sVertical->restoreState(settings->value(COMICS_VIEW_FLOW_SPLITTER_STATUS).toByteArray()); sVertical->restoreState(settings->value(COMICS_VIEW_FLOW_SPLITTER_STATUS).toByteArray());
//hide flow widgets //hide flow widgets
@ -96,25 +94,22 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
hideFlowViewAction->setCheckable(true); hideFlowViewAction->setCheckable(true);
hideFlowViewAction->setChecked(false); hideFlowViewAction->setChecked(false);
connect(hideFlowViewAction, SIGNAL(toggled(bool)),this, SLOT(hideComicFlow(bool))); connect(hideFlowViewAction, SIGNAL(toggled(bool)), this, SLOT(hideComicFlow(bool)));
} }
void ClassicComicsView::hideComicFlow(bool hide) void ClassicComicsView::hideComicFlow(bool hide)
{ {
if(hide) if (hide) {
{
QList<int> sizes; QList<int> sizes;
sizes.append(0); sizes.append(0);
int total = sVertical->sizes().at(0) + sVertical->sizes().at(1); int total = sVertical->sizes().at(0) + sVertical->sizes().at(1);
sizes.append(total); sizes.append(total);
sVertical->setSizes(sizes); sVertical->setSizes(sizes);
} } else {
else
{
QList<int> sizes; QList<int> sizes;
int total = sVertical->sizes().at(0) + sVertical->sizes().at(1); int total = sVertical->sizes().at(0) + sVertical->sizes().at(1);
sizes.append(2*total/3); sizes.append(2 * total / 3);
sizes.append(total/3); sizes.append(total / 3);
sVertical->setSizes(sizes); sVertical->setSizes(sizes);
} }
} }
@ -122,7 +117,7 @@ void ClassicComicsView::hideComicFlow(bool hide)
//the toolbar has to be populated //the toolbar has to be populated
void ClassicComicsView::setToolBar(QToolBar *toolBar) void ClassicComicsView::setToolBar(QToolBar *toolBar)
{ {
static_cast<QVBoxLayout *>(comics->layout())->insertWidget(0,toolBar); static_cast<QVBoxLayout *>(comics->layout())->insertWidget(0, toolBar);
this->toolbar = toolBar; this->toolbar = toolBar;
toolBarStretch = new YACReaderToolBarStretch(this); toolBarStretch = new YACReaderToolBarStretch(this);
@ -135,31 +130,28 @@ void ClassicComicsView::setModel(ComicModel *model)
{ {
ComicsView::setModel(model); ComicsView::setModel(model);
if(model == NULL) if (model == NULL) {
{
comicFlow->clear(); comicFlow->clear();
} } else {
else connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex, QVector<int>)), this, SLOT(applyModelChanges(QModelIndex, QModelIndex, QVector<int>)), Qt::UniqueConnection);
{ connect(model, SIGNAL(rowsRemoved(QModelIndex, int, int)), this, SLOT(removeItemsFromFlow(QModelIndex, int, int)), Qt::UniqueConnection);
connect(model, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)), this, SLOT(applyModelChanges(QModelIndex,QModelIndex,QVector<int>)),Qt::UniqueConnection); connect(model, SIGNAL(resortedIndexes(QList<int>)), comicFlow, SLOT(resortCovers(QList<int>)), Qt::UniqueConnection);
connect(model, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SLOT(removeItemsFromFlow(QModelIndex,int,int)),Qt::UniqueConnection); connect(model, SIGNAL(newSelectedIndex(QModelIndex)), this, SLOT(setCurrentIndex(QModelIndex)), Qt::UniqueConnection);
connect(model, SIGNAL(resortedIndexes(QList<int>)),comicFlow,SLOT(resortCovers(QList<int>)),Qt::UniqueConnection);
connect(model, SIGNAL(newSelectedIndex(QModelIndex)),this,SLOT(setCurrentIndex(QModelIndex)),Qt::UniqueConnection);
tableView->setModel(model); tableView->setModel(model);
if(model->rowCount()>0) if (model->rowCount() > 0)
tableView->setCurrentIndex(model->index(0,0)); tableView->setCurrentIndex(model->index(0, 0));
tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft); tableView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
tableView->horizontalHeader()->setSectionsMovable(true); tableView->horizontalHeader()->setSectionsMovable(true);
#else #else
tableView->horizontalHeader()->setMovable(true); tableView->horizontalHeader()->setMovable(true);
#endif #endif
//TODO parametrizar la configuración de las columnas //TODO parametrizar la configuración de las columnas
/*if(!settings->contains(COMICS_VIEW_HEADERS)) /*if(!settings->contains(COMICS_VIEW_HEADERS))
{*/ {*/
for(int i = 0;i<tableView->horizontalHeader()->count();i++) for (int i = 0; i < tableView->horizontalHeader()->count(); i++)
tableView->horizontalHeader()->hideSection(i); tableView->horizontalHeader()->hideSection(i);
tableView->horizontalHeader()->showSection(ComicModel::Number); tableView->horizontalHeader()->showSection(ComicModel::Number);
@ -176,13 +168,12 @@ void ClassicComicsView::setModel(ComicModel *model)
//así que se ecala la primera vez y después se deja el control al usuario. //así que se ecala la primera vez y después se deja el control al usuario.
//if(!settings->contains(COMICS_VIEW_HEADERS)) //if(!settings->contains(COMICS_VIEW_HEADERS))
QStringList paths = model->getPaths(model->getCurrentPath()); //TODO ComicsView: get currentpath from somewhere currentPath());
QStringList paths = model->getPaths(model->getCurrentPath());//TODO ComicsView: get currentpath from somewhere currentPath());
comicFlow->setImagePaths(paths); comicFlow->setImagePaths(paths);
comicFlow->setMarks(model->getReadList()); comicFlow->setMarks(model->getReadList());
//comicFlow->setFocus(Qt::OtherFocusReason); //comicFlow->setFocus(Qt::OtherFocusReason);
if(settings->contains(COMICS_VIEW_HEADERS)) if (settings->contains(COMICS_VIEW_HEADERS))
tableView->horizontalHeader()->restoreState(settings->value(COMICS_VIEW_HEADERS).toByteArray()); tableView->horizontalHeader()->restoreState(settings->value(COMICS_VIEW_HEADERS).toByteArray());
tableView->resizeColumnsToContents(); tableView->resizeColumnsToContents();
@ -207,7 +198,7 @@ QItemSelectionModel *ClassicComicsView::selectionModel()
return tableView->selectionModel(); return tableView->selectionModel();
} }
void ClassicComicsView::scrollTo(const QModelIndex & mi, QAbstractItemView::ScrollHint hint) void ClassicComicsView::scrollTo(const QModelIndex &mi, QAbstractItemView::ScrollHint hint)
{ {
Q_UNUSED(hint); Q_UNUSED(hint);
@ -242,15 +233,13 @@ void ClassicComicsView::updateConfig(QSettings *settings)
void ClassicComicsView::enableFilterMode(bool enabled) void ClassicComicsView::enableFilterMode(bool enabled)
{ {
if(enabled) if (enabled) {
{
comicFlow->clear(); comicFlow->clear();
if(previousSplitterStatus.isEmpty()) if (previousSplitterStatus.isEmpty())
previousSplitterStatus = sVertical->saveState(); previousSplitterStatus = sVertical->saveState();
sVertical->setSizes(QList<int> () << 100 << 10000000); sVertical->setSizes(QList<int>() << 100 << 10000000);
showSearchingIcon(); showSearchingIcon();
}else } else {
{
hideSearchingIcon(); hideSearchingIcon();
sVertical->restoreState(previousSplitterStatus); sVertical->restoreState(previousSplitterStatus);
previousSplitterStatus.clear(); previousSplitterStatus.clear();
@ -267,7 +256,6 @@ void ClassicComicsView::selectIndex(int index)
void ClassicComicsView::updateCurrentComicView() void ClassicComicsView::updateCurrentComicView()
{ {
} }
void ClassicComicsView::selectAll() void ClassicComicsView::selectAll()
@ -295,7 +283,7 @@ void ClassicComicsView::setShowMarks(bool show)
comicFlow->setShowMarks(show); comicFlow->setShowMarks(show);
} }
void ClassicComicsView::centerComicFlow(const QModelIndex & mi) void ClassicComicsView::centerComicFlow(const QModelIndex &mi)
{ {
comicFlow->showSlide(mi.row()); comicFlow->showSlide(mi.row());
comicFlow->setFocus(Qt::OtherFocusReason); comicFlow->setFocus(Qt::OtherFocusReason);
@ -303,20 +291,20 @@ void ClassicComicsView::centerComicFlow(const QModelIndex & mi)
void ClassicComicsView::updateTableView(int i) void ClassicComicsView::updateTableView(int i)
{ {
QModelIndex mi = model->index(i,2); QModelIndex mi = model->index(i, 2);
tableView->setCurrentIndex(mi); tableView->setCurrentIndex(mi);
tableView->scrollTo(mi,QAbstractItemView::EnsureVisible); tableView->scrollTo(mi, QAbstractItemView::EnsureVisible);
} }
void ClassicComicsView::saveTableHeadersStatus() void ClassicComicsView::saveTableHeadersStatus()
{ {
settings->setValue(COMICS_VIEW_HEADERS,tableView->horizontalHeader()->saveState()); settings->setValue(COMICS_VIEW_HEADERS, tableView->horizontalHeader()->saveState());
} }
void ClassicComicsView::saveSplitterStatus() void ClassicComicsView::saveSplitterStatus()
{ {
settingsMutex.lock(); settingsMutex.lock();
if(!searching) if (!searching)
settings->setValue(COMICS_VIEW_FLOW_SPLITTER_STATUS, sVertical->saveState()); settings->setValue(COMICS_VIEW_FLOW_SPLITTER_STATUS, sVertical->saveState());
settingsMutex.unlock(); settingsMutex.unlock();
} }
@ -325,8 +313,7 @@ void ClassicComicsView::applyModelChanges(const QModelIndex &topLeft, const QMod
{ {
Q_UNUSED(topLeft); Q_UNUSED(topLeft);
Q_UNUSED(bottomRight); Q_UNUSED(bottomRight);
if(roles.contains(ComicModel::ReadColumnRole)) if (roles.contains(ComicModel::ReadColumnRole)) {
{
comicFlow->setMarks(model->getReadList()); comicFlow->setMarks(model->getReadList());
comicFlow->updateMarks(); comicFlow->updateMarks();
} }
@ -335,7 +322,7 @@ void ClassicComicsView::applyModelChanges(const QModelIndex &topLeft, const QMod
void ClassicComicsView::removeItemsFromFlow(const QModelIndex &parent, int from, int to) void ClassicComicsView::removeItemsFromFlow(const QModelIndex &parent, int from, int to)
{ {
Q_UNUSED(parent); Q_UNUSED(parent);
for(int i = from; i<=to; i++) for (int i = from; i <= to; i++)
comicFlow->remove(i); comicFlow->remove(i);
} }
@ -353,13 +340,13 @@ void ClassicComicsView::setupSearchingIcon()
{ {
searchingIcon = new QWidget(comicFlow); searchingIcon = new QWidget(comicFlow);
QHBoxLayout * h = new QHBoxLayout; QHBoxLayout *h = new QHBoxLayout;
QPixmap p(":/images/searching_icon.png"); QPixmap p(":/images/searching_icon.png");
QLabel * l = new QLabel(searchingIcon); QLabel *l = new QLabel(searchingIcon);
l->setPixmap(p); l->setPixmap(p);
l->setFixedSize(p.size()); l->setFixedSize(p.size());
h->addWidget(l,0,Qt::AlignCenter); h->addWidget(l, 0, Qt::AlignCenter);
searchingIcon->setLayout(h); searchingIcon->setLayout(h);
QPalette pal(searchingIcon->palette()); QPalette pal(searchingIcon->palette());
@ -379,4 +366,3 @@ void ClassicComicsView::hideSearchingIcon()
{ {
stack->setCurrentWidget(comicFlow); stack->setCurrentWidget(comicFlow);
} }

View File

@ -20,54 +20,53 @@ class ClassicComicsView : public ComicsView
Q_OBJECT Q_OBJECT
public: public:
ClassicComicsView(QWidget *parent = 0); ClassicComicsView(QWidget *parent = 0);
void setToolBar(QToolBar * toolBar); void setToolBar(QToolBar *toolBar);
void setModel(ComicModel *model); void setModel(ComicModel *model);
QModelIndex currentIndex(); QModelIndex currentIndex();
QItemSelectionModel * selectionModel(); QItemSelectionModel *selectionModel();
void scrollTo(const QModelIndex & mi, QAbstractItemView::ScrollHint hint ); void scrollTo(const QModelIndex &mi, QAbstractItemView::ScrollHint hint);
void toFullScreen(); void toFullScreen();
void toNormal(); void toNormal();
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void enableFilterMode(bool enabled); void enableFilterMode(bool enabled);
void selectIndex(int index); void selectIndex(int index);
void updateCurrentComicView(); void updateCurrentComicView();
public slots: public slots:
void setCurrentIndex(const QModelIndex &index); void setCurrentIndex(const QModelIndex &index);
void centerComicFlow(const QModelIndex & mi); void centerComicFlow(const QModelIndex &mi);
void updateTableView(int i); void updateTableView(int i);
void saveTableHeadersStatus(); void saveTableHeadersStatus();
void saveSplitterStatus(); void saveSplitterStatus();
void applyModelChanges(const QModelIndex & topLeft,const QModelIndex & bottomRight,const QVector<int> & roles); void applyModelChanges(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles);
void removeItemsFromFlow(const QModelIndex & parent, int from, int to); void removeItemsFromFlow(const QModelIndex &parent, int from, int to);
//ComicsView //ComicsView
void setShowMarks(bool show); void setShowMarks(bool show);
void selectAll(); void selectAll();
void selectedComicForOpening(const QModelIndex & mi); void selectedComicForOpening(const QModelIndex &mi);
protected slots: protected slots:
void hideComicFlow(bool hide); void hideComicFlow(bool hide);
void requestedViewContextMenu(const QPoint & point); void requestedViewContextMenu(const QPoint &point);
void requestedItemContextMenu(const QPoint & point); void requestedItemContextMenu(const QPoint &point);
private: private:
YACReaderTableView * tableView; YACReaderTableView *tableView;
YACReaderToolBarStretch * toolBarStretch; YACReaderToolBarStretch *toolBarStretch;
QAction * toolBarStretchAction; QAction *toolBarStretchAction;
QToolBar * toolbar; QToolBar *toolbar;
QWidget *comics; QWidget *comics;
QSplitter * sVertical; QSplitter *sVertical;
ComicFlowWidget * comicFlow; ComicFlowWidget *comicFlow;
QSettings * settings; QSettings *settings;
void closeEvent ( QCloseEvent * event ); void closeEvent(QCloseEvent *event);
QAction * hideFlowViewAction; QAction *hideFlowViewAction;
QStackedWidget * stack; QStackedWidget *stack;
QByteArray previousSplitterStatus; QByteArray previousSplitterStatus;
QWidget * searchingIcon; QWidget *searchingIcon;
bool searching; bool searching;
void setupSearchingIcon(); void setupSearchingIcon();
void showSearchingIcon(); void showSearchingIcon();

View File

@ -7,12 +7,12 @@
#include "comic.h" #include "comic.h"
ComicFilesManager::ComicFilesManager(QObject *parent) : ComicFilesManager::ComicFilesManager(QObject *parent)
QObject(parent), canceled(false) : QObject(parent), canceled(false)
{ {
} }
void ComicFilesManager::copyComicsTo(const QList<QPair<QString,QString> > &sourceComics, const QString &folderDest, const QModelIndex & dest) void ComicFilesManager::copyComicsTo(const QList<QPair<QString, QString>> &sourceComics, const QString &folderDest, const QModelIndex &dest)
{ {
comics = sourceComics; comics = sourceComics;
folder = folderDest; folder = folderDest;
@ -20,7 +20,7 @@ void ComicFilesManager::copyComicsTo(const QList<QPair<QString,QString> > &sourc
move = false; move = false;
} }
void ComicFilesManager::moveComicsTo(const QList<QPair<QString, QString> > &sourceComics, const QString &folderDest, const QModelIndex &dest) void ComicFilesManager::moveComicsTo(const QList<QPair<QString, QString>> &sourceComics, const QString &folderDest, const QModelIndex &dest)
{ {
comics = sourceComics; comics = sourceComics;
folder = folderDest; folder = folderDest;
@ -28,27 +28,23 @@ void ComicFilesManager::moveComicsTo(const QList<QPair<QString, QString> > &sour
move = true; move = true;
} }
QList<QPair<QString, QString> > ComicFilesManager::getDroppedFiles(const QList<QUrl> &urls) QList<QPair<QString, QString>> ComicFilesManager::getDroppedFiles(const QList<QUrl> &urls)
{ {
QList<QPair<QString,QString> > dropedFiles; QList<QPair<QString, QString>> dropedFiles;
QString currentPath; QString currentPath;
foreach(QUrl url, urls) foreach (QUrl url, urls) {
{
currentPath = url.toLocalFile(); currentPath = url.toLocalFile();
if(currentPath.endsWith('/')) if (currentPath.endsWith('/'))
currentPath = currentPath.remove(currentPath.length()-1,1); //QTBUG-35896 QUrl.toLocalFile inconsistency. currentPath = currentPath.remove(currentPath.length() - 1, 1); //QTBUG-35896 QUrl.toLocalFile inconsistency.
if(Comic::fileIsComic(currentPath)) if (Comic::fileIsComic(currentPath))
dropedFiles << QPair<QString, QString>(currentPath,"/"); dropedFiles << QPair<QString, QString>(currentPath, "/");
else else {
{
QLOG_DEBUG() << "XXXXXXXXXXXX :" << currentPath; QLOG_DEBUG() << "XXXXXXXXXXXX :" << currentPath;
QFileInfo info(currentPath); QFileInfo info(currentPath);
if(info.isDir()) if (info.isDir()) {
{
QLOG_DEBUG() << "origin path prior to absoluteFilePath : " << info.absolutePath(); QLOG_DEBUG() << "origin path prior to absoluteFilePath : " << info.absolutePath();
foreach(QString comicPath, Comic::findValidComicFilesInFolder(info.absoluteFilePath())) foreach (QString comicPath, Comic::findValidComicFilesInFolder(info.absoluteFilePath())) {
{
QFileInfo comicInfo(comicPath); QFileInfo comicInfo(comicPath);
QString path = comicInfo.absolutePath(); QString path = comicInfo.absolutePath();
QLOG_DEBUG() << "comic path : " << comicPath; QLOG_DEBUG() << "comic path : " << comicPath;
@ -65,14 +61,13 @@ QList<QPair<QString, QString> > ComicFilesManager::getDroppedFiles(const QList<Q
void ComicFilesManager::process() void ComicFilesManager::process()
{ {
int i=0; int i = 0;
bool successProcesingFiles = false; bool successProcesingFiles = false;
QPair<QString, QString> source; QPair<QString, QString> source;
foreach (source, comics) { foreach (source, comics) {
if(canceled) if (canceled) {
{ if (successProcesingFiles)
if(successProcesingFiles)
emit success(folderDestinationModelIndex); emit success(folderDestinationModelIndex);
emit finished(); emit finished();
@ -80,14 +75,12 @@ void ComicFilesManager::process()
} }
QFileInfo info(source.first); QFileInfo info(source.first);
QString destPath = QDir::cleanPath(folder+'/'+source.second); QString destPath = QDir::cleanPath(folder + '/' + source.second);
QLOG_DEBUG() << "crear : " << destPath; QLOG_DEBUG() << "crear : " << destPath;
QDir().mkpath(destPath); QDir().mkpath(destPath);
if(QFile::copy(source.first, QDir::cleanPath(destPath+'/'+info.fileName()))) if (QFile::copy(source.first, QDir::cleanPath(destPath + '/' + info.fileName()))) {
{
successProcesingFiles = true; successProcesingFiles = true;
if(move) if (move) {
{
QFile::remove(source.first); //TODO: remove the whole path.... QFile::remove(source.first); //TODO: remove the whole path....
} }
} }
@ -96,7 +89,7 @@ void ComicFilesManager::process()
emit progress(i); emit progress(i);
} }
if(successProcesingFiles) if (successProcesingFiles)
emit success(folderDestinationModelIndex); emit success(folderDestinationModelIndex);
emit finished(); emit finished();
} }

View File

@ -6,16 +6,15 @@
#include <QPair> #include <QPair>
#include <QModelIndex> #include <QModelIndex>
//this class is intended to work in background, just use moveToThread and process to start working //this class is intended to work in background, just use moveToThread and process to start working
class ComicFilesManager : public QObject class ComicFilesManager : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ComicFilesManager(QObject *parent = 0); explicit ComicFilesManager(QObject *parent = 0);
void copyComicsTo(const QList<QPair<QString,QString> > & sourceComics, const QString & folderDest, const QModelIndex &dest); void copyComicsTo(const QList<QPair<QString, QString>> &sourceComics, const QString &folderDest, const QModelIndex &dest);
void moveComicsTo(const QList<QPair<QString,QString> > & comics, const QString & folderDest, const QModelIndex &dest); void moveComicsTo(const QList<QPair<QString, QString>> &comics, const QString &folderDest, const QModelIndex &dest);
static QList<QPair<QString, QString> > getDroppedFiles(const QList<QUrl> & urls); static QList<QPair<QString, QString>> getDroppedFiles(const QList<QUrl> &urls);
signals: signals:
void currentComic(QString); void currentComic(QString);
void progress(int); void progress(int);
@ -28,10 +27,9 @@ public slots:
protected: protected:
bool move; bool move;
bool canceled; bool canceled;
QList<QPair<QString,QString> > comics; QList<QPair<QString, QString>> comics;
QString folder; QString folder;
QModelIndex folderDestinationModelIndex; QModelIndex folderDestinationModelIndex;
}; };
#endif // COMIC_FILES_MANAGER_H #endif // COMIC_FILES_MANAGER_H

View File

@ -9,8 +9,8 @@
#include <QImageReader> #include <QImageReader>
#include <QTimer> #include <QTimer>
ComicFlow::ComicFlow(QWidget* parent,FlowType flowType) ComicFlow::ComicFlow(QWidget *parent, FlowType flowType)
:YACReaderFlow(parent,flowType) : YACReaderFlow(parent, flowType)
{ {
updateTimer = new QTimer; updateTimer = new QTimer;
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateImageData())); connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateImageData()));
@ -29,28 +29,27 @@ ComicFlow::~ComicFlow()
delete updateTimer; delete updateTimer;
} }
void ComicFlow::setImagePaths(const QStringList& paths) void ComicFlow::setImagePaths(const QStringList &paths)
{ {
clear(); clear();
//imagePath = path; //imagePath = path;
imageFiles = paths; imageFiles = paths;
imagesLoaded.clear(); imagesLoaded.clear();
imagesLoaded.fill(false,imageFiles.size()); imagesLoaded.fill(false, imageFiles.size());
numImagesLoaded = 0; numImagesLoaded = 0;
imagesSetted.clear(); imagesSetted.clear();
imagesSetted.fill(false,imageFiles.size()); imagesSetted.fill(false, imageFiles.size());
// populate with empty images // populate with empty images
QImage img; //TODO remove QImage img; //TODO remove
QString s; QString s;
for(int i = 0; i < (int)imageFiles.size(); i++) for (int i = 0; i < (int)imageFiles.size(); i++) {
{
addSlide(img); addSlide(img);
s = imageFiles.at(i); s = imageFiles.at(i);
s.remove(s.size()-4,4); s.remove(s.size() - 4, 4);
if(QFileInfo(s+".r").exists()) if (QFileInfo(s + ".r").exists())
markSlide(i); markSlide(i);
} }
@ -61,50 +60,45 @@ void ComicFlow::setImagePaths(const QStringList& paths)
void ComicFlow::preload() void ComicFlow::preload()
{ {
if(numImagesLoaded < imagesLoaded.size()) if (numImagesLoaded < imagesLoaded.size())
updateTimer->start(30); //TODO comprobar rendimiento, originalmente era 70 updateTimer->start(30); //TODO comprobar rendimiento, originalmente era 70
} }
void ComicFlow::updateImageData() void ComicFlow::updateImageData()
{ {
// can't do anything, wait for the next possibility // can't do anything, wait for the next possibility
if(worker->busy()) if (worker->busy())
return; return;
// set image of last one // set image of last one
int idx = worker->index(); int idx = worker->index();
if( idx >= 0 && !worker->result().isNull()) if (idx >= 0 && !worker->result().isNull()) {
{ if (!imagesSetted[idx]) {
if(!imagesSetted[idx])
{
setSlide(idx, worker->result()); setSlide(idx, worker->result());
imagesSetted[idx] = true; imagesSetted[idx] = true;
numImagesLoaded++; numImagesLoaded++;
imagesLoaded[idx]=true; imagesLoaded[idx] = true;
} }
} }
// try to load only few images on the left and right side // try to load only few images on the left and right side
// i.e. all visible ones plus some extra // i.e. all visible ones plus some extra
#define COUNT 8 #define COUNT 8
int indexes[2*COUNT+1]; int indexes[2 * COUNT + 1];
int center = centerIndex(); int center = centerIndex();
indexes[0] = center; indexes[0] = center;
for(int j = 0; j < COUNT; j++) for (int j = 0; j < COUNT; j++) {
{ indexes[j * 2 + 1] = center + j + 1;
indexes[j*2+1] = center+j+1; indexes[j * 2 + 2] = center - j - 1;
indexes[j*2+2] = center-j-1;
} }
for(int c = 0; c < 2*COUNT+1; c++) for (int c = 0; c < 2 * COUNT + 1; c++) {
{
int i = indexes[c]; int i = indexes[c];
if((i >= 0) && (i < slideCount())) if ((i >= 0) && (i < slideCount()))
if(!imagesLoaded[i])//slide(i).isNull()) if (!imagesLoaded[i]) //slide(i).isNull())
{ {
// schedule thumbnail generation // schedule thumbnail generation
QString fname = imageFiles[i]; QString fname = imageFiles[i];
worker->generate(i, fname, slideSize()); worker->generate(i, fname, slideSize());
return; return;
} }
@ -114,14 +108,14 @@ void ComicFlow::updateImageData()
updateTimer->stop(); updateTimer->stop();
} }
void ComicFlow::keyPressEvent(QKeyEvent* event) void ComicFlow::keyPressEvent(QKeyEvent *event)
{ {
PictureFlow::keyPressEvent(event); PictureFlow::keyPressEvent(event);
} }
void ComicFlow::wheelEvent(QWheelEvent * event) void ComicFlow::wheelEvent(QWheelEvent *event)
{ {
if(event->delta()<0) if (event->delta() < 0)
showNext(); showNext();
else else
showPrevious(); showPrevious();
@ -135,7 +129,7 @@ void ComicFlow::removeSlide(int cover)
worker->reset(); worker->reset();
imageFiles.removeAt(cover); imageFiles.removeAt(cover);
if(imagesLoaded[cover]) if (imagesLoaded[cover])
numImagesLoaded--; numImagesLoaded--;
imagesLoaded.remove(cover); imagesLoaded.remove(cover);
imagesSetted.remove(cover); imagesSetted.remove(cover);
@ -156,15 +150,12 @@ void ComicFlow::resortCovers(QList<int> newOrder)
QStringList imageFilesNew; QStringList imageFilesNew;
QVector<bool> imagesLoadedNew; QVector<bool> imagesLoadedNew;
QVector<bool> imagesSettedNew; QVector<bool> imagesSettedNew;
foreach(int index, newOrder) foreach (int index, newOrder) {
{
imageFilesNew << imageFiles.at(index); imageFilesNew << imageFiles.at(index);
imagesLoadedNew << imagesLoaded.at(index); imagesLoadedNew << imagesLoaded.at(index);
imagesSettedNew << imagesSetted.at(index); imagesSettedNew << imagesSetted.at(index);
} }
imageFiles = imageFilesNew; imageFiles = imageFilesNew;
imagesLoaded = imagesLoadedNew; imagesLoaded = imagesLoadedNew;
imagesSetted = imagesSettedNew; imagesSetted = imagesSettedNew;
@ -174,19 +165,19 @@ void ComicFlow::resortCovers(QList<int> newOrder)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
//ImageLoader //ImageLoader
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
static QImage loadImage(const QString& fileName) static QImage loadImage(const QString &fileName)
{ {
QImage image; QImage image;
bool result = image.load(fileName); bool result = image.load(fileName);
if(!result) if (!result)
return QImage(); return QImage();
return image; return image;
} }
ImageLoader::ImageLoader(): ImageLoader::ImageLoader()
QThread(), restart(false), working(false), idx(-1) : QThread(), restart(false), working(false), idx(-1)
{ {
} }
@ -203,7 +194,7 @@ bool ImageLoader::busy() const
return isRunning() ? working : false; return isRunning() ? working : false;
} }
void ImageLoader::generate(int index, const QString& fileName, QSize size) void ImageLoader::generate(int index, const QString &fileName, QSize size)
{ {
mutex.lock(); mutex.lock();
this->idx = index; this->idx = index;
@ -214,8 +205,7 @@ void ImageLoader::generate(int index, const QString& fileName, QSize size)
if (!isRunning()) if (!isRunning())
start(); start();
else else {
{
// already running, wake up whenever ready // already running, wake up whenever ready
restart = true; restart = true;
condition.wakeOne(); condition.wakeOne();
@ -234,8 +224,7 @@ void ImageLoader::unlock()
void ImageLoader::run() void ImageLoader::run()
{ {
for(;;) for (;;) {
{
// copy necessary data // copy necessary data
mutex.lock(); mutex.lock();
this->working = true; this->working = true;

View File

@ -17,12 +17,12 @@ class ComicFlow : public YACReaderFlow
{ {
Q_OBJECT Q_OBJECT
public: public:
ComicFlow(QWidget* parent = 0,FlowType flowType = CoverFlowLike); ComicFlow(QWidget *parent = 0, FlowType flowType = CoverFlowLike);
virtual ~ComicFlow(); virtual ~ComicFlow();
void setImagePaths(const QStringList& paths); void setImagePaths(const QStringList &paths);
//bool eventFilter(QObject *target, QEvent *event); //bool eventFilter(QObject *target, QEvent *event);
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
void removeSlide(int cover); void removeSlide(int cover);
void resortCovers(QList<int> newOrder); void resortCovers(QList<int> newOrder);
@ -36,12 +36,11 @@ private:
QVector<bool> imagesLoaded; QVector<bool> imagesLoaded;
QVector<bool> imagesSetted; QVector<bool> imagesSetted;
int numImagesLoaded; int numImagesLoaded;
QTimer* updateTimer; QTimer *updateTimer;
ImageLoader* worker; ImageLoader *worker;
virtual void wheelEvent(QWheelEvent * event); virtual void wheelEvent(QWheelEvent *event);
}; };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Source code of ImageLoader class was modified from http://code.google.com/p/photoflow/ // Source code of ImageLoader class was modified from http://code.google.com/p/photoflow/
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@ -52,8 +51,8 @@ public:
~ImageLoader(); ~ImageLoader();
// returns FALSE if worker is still busy and can't take the task // returns FALSE if worker is still busy and can't take the task
bool busy() const; bool busy() const;
void generate(int index, const QString& fileName, QSize size); void generate(int index, const QString &fileName, QSize size);
void reset(){idx = -1;}; void reset() { idx = -1; };
int index() const { return idx; }; int index() const { return idx; };
void lock(); void lock();
void unlock(); void unlock();
@ -74,5 +73,4 @@ private:
QImage img; QImage img;
}; };
#endif #endif

View File

@ -1,20 +1,19 @@
#include "comic_flow_widget.h" #include "comic_flow_widget.h"
#include <QVBoxLayout> #include <QVBoxLayout>
ComicFlowWidget::ComicFlowWidget(QWidget * parent) ComicFlowWidget::ComicFlowWidget(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
} }
ComicFlowWidgetSW::ComicFlowWidgetSW(QWidget * parent) ComicFlowWidgetSW::ComicFlowWidgetSW(QWidget *parent)
:ComicFlowWidget(parent) : ComicFlowWidget(parent)
{ {
flow = new ComicFlow(parent); flow = new ComicFlow(parent);
connect(flow,SIGNAL(centerIndexChanged(int)),this,SIGNAL(centerIndexChanged(int))); connect(flow, SIGNAL(centerIndexChanged(int)), this, SIGNAL(centerIndexChanged(int)));
connect(flow,SIGNAL(selected(unsigned int)),this,SIGNAL(selected(unsigned int))); connect(flow, SIGNAL(selected(unsigned int)), this, SIGNAL(selected(unsigned int)));
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
l->addWidget(flow); l->addWidget(flow);
setLayout(l); setLayout(l);
@ -28,9 +27,9 @@ ComicFlowWidgetSW::ComicFlowWidgetSW(QWidget * parent)
//config //config
QMatrix m; QMatrix m;
m.rotate(-90); m.rotate(-90);
m.scale(-1,1); m.scale(-1, 1);
QImage image(":/images/setRead.png"); QImage image(":/images/setRead.png");
QImage imageTransformed = image.transformed(m,Qt::SmoothTransformation); QImage imageTransformed = image.transformed(m, Qt::SmoothTransformation);
setMarkImage(imageTransformed); setMarkImage(imageTransformed);
} }
@ -51,13 +50,13 @@ void ComicFlowWidgetSW::setMarks(QVector<YACReaderComicReadStatus> marks)
{ {
flow->setMarks(marks); flow->setMarks(marks);
} }
void ComicFlowWidgetSW::setMarkImage(QImage & image) void ComicFlowWidgetSW::setMarkImage(QImage &image)
{ {
flow->setMarkImage(image); flow->setMarkImage(image);
} }
void ComicFlowWidgetSW::markSlide(int index, YACReaderComicReadStatus status) void ComicFlowWidgetSW::markSlide(int index, YACReaderComicReadStatus status)
{ {
flow->markSlide(index,status); flow->markSlide(index, status);
} }
void ComicFlowWidgetSW::unmarkSlide(int index) void ComicFlowWidgetSW::unmarkSlide(int index)
{ {
@ -99,7 +98,7 @@ void ComicFlowWidgetSW::render()
{ {
flow->render(); flow->render();
} }
void ComicFlowWidgetSW::keyPressEvent(QKeyEvent* event) void ComicFlowWidgetSW::keyPressEvent(QKeyEvent *event)
{ {
flow->keyPressEvent(event); flow->keyPressEvent(event);
} }
@ -107,22 +106,21 @@ void ComicFlowWidgetSW::paintEvent(QPaintEvent *event)
{ {
ComicFlowWidget::paintEvent(event); ComicFlowWidget::paintEvent(event);
} }
void ComicFlowWidgetSW::mousePressEvent(QMouseEvent* event) void ComicFlowWidgetSW::mousePressEvent(QMouseEvent *event)
{ {
flow->mousePressEvent(event); flow->mousePressEvent(event);
} }
void ComicFlowWidgetSW::resizeEvent(QResizeEvent* event) void ComicFlowWidgetSW::resizeEvent(QResizeEvent *event)
{ {
flow->resizeEvent(event); flow->resizeEvent(event);
} }
void ComicFlowWidgetSW::mouseDoubleClickEvent(QMouseEvent* event) void ComicFlowWidgetSW::mouseDoubleClickEvent(QMouseEvent *event)
{ {
flow->mouseDoubleClickEvent(event); flow->mouseDoubleClickEvent(event);
} }
void ComicFlowWidgetSW::updateConfig(QSettings * settings) void ComicFlowWidgetSW::updateConfig(QSettings *settings)
{ {
switch (settings->value(FLOW_TYPE_SW).toInt()) switch (settings->value(FLOW_TYPE_SW).toInt()) {
{
case CoverFlowLike: case CoverFlowLike:
flow->setFlowType(CoverFlowLike); flow->setFlowType(CoverFlowLike);
return; return;
@ -152,17 +150,17 @@ void ComicFlowWidgetSW::resortCovers(QList<int> newOrder)
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
ComicFlowWidgetGL::ComicFlowWidgetGL(QWidget * parent) ComicFlowWidgetGL::ComicFlowWidgetGL(QWidget *parent)
:ComicFlowWidget(parent) : ComicFlowWidget(parent)
{ {
flow = new YACReaderComicFlowGL(parent); flow = new YACReaderComicFlowGL(parent);
connect(flow,SIGNAL(centerIndexChanged(int)),this,SIGNAL(centerIndexChanged(int))); connect(flow, SIGNAL(centerIndexChanged(int)), this, SIGNAL(centerIndexChanged(int)));
connect(flow,SIGNAL(selected(unsigned int)),this,SIGNAL(selected(unsigned int))); connect(flow, SIGNAL(selected(unsigned int)), this, SIGNAL(selected(unsigned int)));
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
l->addWidget(flow); l->addWidget(flow);
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
//TODO eleminar "padding" //TODO eleminar "padding"
@ -190,13 +188,13 @@ void ComicFlowWidgetGL::setMarks(QVector<YACReaderComicReadStatus> marks)
{ {
flow->setMarks(marks); flow->setMarks(marks);
} }
void ComicFlowWidgetGL::setMarkImage(QImage & image) void ComicFlowWidgetGL::setMarkImage(QImage &image)
{ {
flow->setMarkImage(image); flow->setMarkImage(image);
} }
void ComicFlowWidgetGL::markSlide(int index, YACReaderComicReadStatus status) void ComicFlowWidgetGL::markSlide(int index, YACReaderComicReadStatus status)
{ {
flow->markSlide(index,status); flow->markSlide(index, status);
} }
void ComicFlowWidgetGL::unmarkSlide(int index) void ComicFlowWidgetGL::unmarkSlide(int index)
{ {
@ -232,11 +230,11 @@ void ComicFlowWidgetGL::updateMarks()
} }
void ComicFlowWidgetGL::setFlowType(FlowType flowType) void ComicFlowWidgetGL::setFlowType(FlowType flowType)
{ {
if(flowType == CoverFlowLike) if (flowType == CoverFlowLike)
flow->setPreset(presetYACReaderFlowClassicConfig); flow->setPreset(presetYACReaderFlowClassicConfig);
else if(flowType == Strip) else if (flowType == Strip)
flow->setPreset(presetYACReaderFlowStripeConfig); flow->setPreset(presetYACReaderFlowStripeConfig);
else if(flowType == StripOverlapped) else if (flowType == StripOverlapped)
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig); flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
else else
flow->setPreset(defaultYACReaderFlowConfig); flow->setPreset(defaultYACReaderFlowConfig);
@ -245,7 +243,7 @@ void ComicFlowWidgetGL::render()
{ {
flow->render(); flow->render();
} }
void ComicFlowWidgetGL::keyPressEvent(QKeyEvent* event) void ComicFlowWidgetGL::keyPressEvent(QKeyEvent *event)
{ {
flow->keyPressEvent(event); flow->keyPressEvent(event);
} }
@ -254,25 +252,24 @@ void ComicFlowWidgetGL::paintEvent(QPaintEvent *event)
//flow->paintEvent(event); //flow->paintEvent(event);
ComicFlowWidget::paintEvent(event); ComicFlowWidget::paintEvent(event);
} }
void ComicFlowWidgetGL::mousePressEvent(QMouseEvent* event) void ComicFlowWidgetGL::mousePressEvent(QMouseEvent *event)
{ {
flow->mousePressEvent(event); flow->mousePressEvent(event);
} }
void ComicFlowWidgetGL::resizeEvent(QResizeEvent* event) void ComicFlowWidgetGL::resizeEvent(QResizeEvent *event)
{ {
flow->resizeGL(event->size().width(),event->size().height()); flow->resizeGL(event->size().width(), event->size().height());
} }
void ComicFlowWidgetGL::mouseDoubleClickEvent(QMouseEvent* event) void ComicFlowWidgetGL::mouseDoubleClickEvent(QMouseEvent *event)
{ {
flow->mouseDoubleClickEvent(event); flow->mouseDoubleClickEvent(event);
} }
void ComicFlowWidgetGL::updateConfig(QSettings * settings) void ComicFlowWidgetGL::updateConfig(QSettings *settings)
{ {
Performance performance = medium; Performance performance = medium;
switch (settings->value(PERFORMANCE).toInt()) switch (settings->value(PERFORMANCE).toInt()) {
{
case 0: case 0:
performance = low; performance = low;
break; break;
@ -288,13 +285,12 @@ void ComicFlowWidgetGL::updateConfig(QSettings * settings)
} }
flow->setPerformance(performance); flow->setPerformance(performance);
if(!settings->contains(V_SYNC)) if (!settings->contains(V_SYNC))
flow->useVSync(false); flow->useVSync(false);
else else
flow->useVSync(settings->value(V_SYNC).toBool()); flow->useVSync(settings->value(V_SYNC).toBool());
switch (settings->value(FLOW_TYPE_GL).toInt()) switch (settings->value(FLOW_TYPE_GL).toInt()) {
{
case 0: case 0:
flow->setPreset(presetYACReaderFlowClassicConfig); flow->setPreset(presetYACReaderFlowClassicConfig);
return; return;
@ -312,7 +308,6 @@ void ComicFlowWidgetGL::updateConfig(QSettings * settings)
return; return;
} }
//custom config //custom config
flow->setCF_RX(settings->value(X_ROTATION).toInt()); flow->setCF_RX(settings->value(X_ROTATION).toInt());
@ -327,9 +322,9 @@ void ComicFlowWidgetGL::updateConfig(QSettings * settings)
flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt()); flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt());
flow->setMaxAngle(settings->value(MAX_ANGLE).toInt()); flow->setMaxAngle(settings->value(MAX_ANGLE).toInt());
/* flow->setVisibility(settings->value("visibilityDistance").toInt()); /* flow->setVisibility(settings->value("visibilityDistance").toInt());
flow->setLightStrenght(settings->value("lightStrength").toInt())*/; flow->setLightStrenght(settings->value("lightStrength").toInt())*/
;
} }
void ComicFlowWidgetGL::remove(int cover) void ComicFlowWidgetGL::remove(int cover)

View File

@ -1,7 +1,6 @@
#ifndef __COMIC_FLOW_WIDGET_H #ifndef __COMIC_FLOW_WIDGET_H
#define __COMIC_FLOW_WIDGET_H #define __COMIC_FLOW_WIDGET_H
#include <QWidget> #include <QWidget>
#include "pictureflow.h" #include "pictureflow.h"
@ -13,12 +12,12 @@ class ComicFlowWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
ComicFlowWidget(QWidget * paret = 0); ComicFlowWidget(QWidget *paret = 0);
public slots: public slots:
virtual void setShowMarks(bool value) = 0; virtual void setShowMarks(bool value) = 0;
virtual void setMarks(QVector<YACReaderComicReadStatus> marks) = 0; virtual void setMarks(QVector<YACReaderComicReadStatus> marks) = 0;
virtual void setMarkImage(QImage & image) = 0; virtual void setMarkImage(QImage &image) = 0;
virtual void markSlide(int index, YACReaderComicReadStatus status) = 0; virtual void markSlide(int index, YACReaderComicReadStatus status) = 0;
virtual void unmarkSlide(int index) = 0; virtual void unmarkSlide(int index) = 0;
virtual void setSlideSize(QSize size) = 0; virtual void setSlideSize(QSize size) = 0;
@ -30,7 +29,7 @@ public slots:
virtual void updateMarks() = 0; virtual void updateMarks() = 0;
virtual void setFlowType(FlowType flowType) = 0; virtual void setFlowType(FlowType flowType) = 0;
virtual void render() = 0; virtual void render() = 0;
virtual void updateConfig(QSettings * settings) = 0; virtual void updateConfig(QSettings *settings) = 0;
virtual void remove(int cover) = 0; virtual void remove(int cover) = 0;
virtual void resortCovers(QList<int> newOrder) = 0; virtual void resortCovers(QList<int> newOrder) = 0;
signals: signals:
@ -38,18 +37,18 @@ signals:
void selected(unsigned int); void selected(unsigned int);
}; };
class ComicFlowWidgetSW : public ComicFlowWidget class ComicFlowWidgetSW : public ComicFlowWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
ComicFlow * flow; ComicFlow *flow;
public: public:
ComicFlowWidgetSW(QWidget * parent = 0); ComicFlowWidgetSW(QWidget *parent = 0);
void setShowMarks(bool value); void setShowMarks(bool value);
void setMarks(QVector<YACReaderComicReadStatus> marks); void setMarks(QVector<YACReaderComicReadStatus> marks);
void setMarkImage(QImage & image); void setMarkImage(QImage &image);
void markSlide(int index, YACReaderComicReadStatus status); void markSlide(int index, YACReaderComicReadStatus status);
void unmarkSlide(int index); void unmarkSlide(int index);
void setSlideSize(QSize size); void setSlideSize(QSize size);
@ -61,15 +60,16 @@ public:
void updateMarks(); void updateMarks();
void setFlowType(FlowType flowType); void setFlowType(FlowType flowType);
void render(); void render();
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void remove(int cover); void remove(int cover);
void resortCovers(QList<int> newOrder); void resortCovers(QList<int> newOrder);
protected: protected:
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent *event);
void resizeEvent(QResizeEvent* event); void resizeEvent(QResizeEvent *event);
void mouseDoubleClickEvent(QMouseEvent* event); void mouseDoubleClickEvent(QMouseEvent *event);
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
QSize sizeHint() const; QSize sizeHint() const;
QSize slideSizeW; QSize slideSizeW;
@ -81,13 +81,14 @@ class ComicFlowWidgetGL : public ComicFlowWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
YACReaderComicFlowGL * flow; YACReaderComicFlowGL *flow;
public: public:
ComicFlowWidgetGL(QWidget * parent = 0); ComicFlowWidgetGL(QWidget *parent = 0);
void setShowMarks(bool value); void setShowMarks(bool value);
void setMarks(QVector<YACReaderComicReadStatus> marks); void setMarks(QVector<YACReaderComicReadStatus> marks);
void setMarkImage(QImage & image); void setMarkImage(QImage &image);
void markSlide(int index, YACReaderComicReadStatus status); void markSlide(int index, YACReaderComicReadStatus status);
void unmarkSlide(int index); void unmarkSlide(int index);
void setSlideSize(QSize size); void setSlideSize(QSize size);
@ -99,33 +100,33 @@ public:
void updateMarks(); void updateMarks();
void setFlowType(FlowType flowType); void setFlowType(FlowType flowType);
void render(); void render();
void updateConfig(QSettings * settings); void updateConfig(QSettings *settings);
void remove(int cover); void remove(int cover);
void resortCovers(QList<int> newOrder); void resortCovers(QList<int> newOrder);
//public slots: //public slots:
// void setCF_RX(int value); // void setCF_RX(int value);
// //the Y Rotation of the Coverflow // //the Y Rotation of the Coverflow
// void setCF_RY(int value); // void setCF_RY(int value);
// //the Z Rotation of the Coverflow // //the Z Rotation of the Coverflow
// void setCF_RZ(int value); // void setCF_RZ(int value);
// //perspective // //perspective
// void setZoom(int zoom); // void setZoom(int zoom);
// void setRotation(int angle); // void setRotation(int angle);
// //sets the distance between the covers // //sets the distance between the covers
// void setX_Distance(int distance); // void setX_Distance(int distance);
// //sets the distance between the centered and the non centered covers // //sets the distance between the centered and the non centered covers
// void setCenter_Distance(int distance); // void setCenter_Distance(int distance);
// //sets the pushback amount // //sets the pushback amount
// void setZ_Distance(int distance); // void setZ_Distance(int distance);
// void setCF_Y(int value); // void setCF_Y(int value);
// void setY_Distance(int value); // void setY_Distance(int value);
// void setPreset(const Preset & p); // void setPreset(const Preset & p);
protected: protected:
void keyPressEvent(QKeyEvent* event); void keyPressEvent(QKeyEvent *event);
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent* event); void mousePressEvent(QMouseEvent *event);
void resizeEvent(QResizeEvent* event); void resizeEvent(QResizeEvent *event);
void mouseDoubleClickEvent(QMouseEvent* event); void mouseDoubleClickEvent(QMouseEvent *event);
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
QSize sizeHint() const; QSize sizeHint() const;
}; };

View File

@ -9,28 +9,28 @@
#include "yacreader_global_gui.h" #include "yacreader_global_gui.h"
ApiKeyDialog::ApiKeyDialog(QWidget *parent) : ApiKeyDialog::ApiKeyDialog(QWidget *parent)
QDialog(parent) : QDialog(parent)
{ {
QVBoxLayout * layout = new QVBoxLayout; QVBoxLayout *layout = new QVBoxLayout;
QHBoxLayout * buttonsLayout = new QHBoxLayout; QHBoxLayout *buttonsLayout = new QHBoxLayout;
settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings = new QSettings(YACReader::getSettingsPath() + "/YACReaderLibrary.ini", QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor
settings->beginGroup("ComicVine"); settings->beginGroup("ComicVine");
QLabel * info = new QLabel(tr("Before you can connect to Comic Vine, you need your own API key. Please, get one free <a href=\"http://www.comicvine.com/api/\">here</a>")); QLabel *info = new QLabel(tr("Before you can connect to Comic Vine, you need your own API key. Please, get one free <a href=\"http://www.comicvine.com/api/\">here</a>"));
info->setWordWrap(true); info->setWordWrap(true);
info->setOpenExternalLinks(true); info->setOpenExternalLinks(true);
edit = new QLineEdit(); edit = new QLineEdit();
edit->setPlaceholderText(tr("Paste here your Comic Vine API key")); edit->setPlaceholderText(tr("Paste here your Comic Vine API key"));
connect(edit,SIGNAL(textChanged(QString)),this,SLOT(enableAccept(QString))); connect(edit, SIGNAL(textChanged(QString)), this, SLOT(enableAccept(QString)));
acceptButton = new QPushButton(tr("Accept")); acceptButton = new QPushButton(tr("Accept"));
acceptButton->setDisabled(true); acceptButton->setDisabled(true);
connect(acceptButton,SIGNAL(clicked()),this,SLOT(saveApiKey())); connect(acceptButton, SIGNAL(clicked()), this, SLOT(saveApiKey()));
cancelButton = new QPushButton(tr("Cancel")); cancelButton = new QPushButton(tr("Cancel"));
connect(cancelButton,SIGNAL(clicked()),this,SLOT(reject())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject()));
layout->addWidget(info); layout->addWidget(info);
layout->addWidget(edit); layout->addWidget(edit);
@ -44,9 +44,9 @@ ApiKeyDialog::ApiKeyDialog(QWidget *parent) :
setLayout(layout); setLayout(layout);
resize(400,150); resize(400, 150);
if(settings->contains(COMIC_VINE_API_KEY)) if (settings->contains(COMIC_VINE_API_KEY))
edit->setText(settings->value(COMIC_VINE_API_KEY).toString()); edit->setText(settings->value(COMIC_VINE_API_KEY).toString());
} }
@ -63,6 +63,6 @@ void ApiKeyDialog::enableAccept(const QString &text)
void ApiKeyDialog::saveApiKey() void ApiKeyDialog::saveApiKey()
{ {
settings->setValue(COMIC_VINE_API_KEY,edit->text().trimmed()); settings->setValue(COMIC_VINE_API_KEY, edit->text().trimmed());
accept(); accept();
} }

View File

@ -18,14 +18,14 @@ signals:
public slots: public slots:
protected slots: protected slots:
void enableAccept(const QString & text); void enableAccept(const QString &text);
void saveApiKey(); void saveApiKey();
protected: protected:
QPushButton * acceptButton; QPushButton *acceptButton;
QPushButton * cancelButton; QPushButton *cancelButton;
QLineEdit * edit; QLineEdit *edit;
QSettings * settings; QSettings *settings;
}; };
#endif // API_KEY_DIALOG_H #endif // API_KEY_DIALOG_H

View File

@ -8,7 +8,6 @@
ComicVineAllVolumeComicsRetriever::ComicVineAllVolumeComicsRetriever(const QString &volumeURLString, QObject *parent) ComicVineAllVolumeComicsRetriever::ComicVineAllVolumeComicsRetriever(const QString &volumeURLString, QObject *parent)
: QObject(parent), volumeURLString(volumeURLString) : QObject(parent), volumeURLString(volumeURLString)
{ {
} }
void ComicVineAllVolumeComicsRetriever::getAllVolumeComics() void ComicVineAllVolumeComicsRetriever::getAllVolumeComics()
@ -18,11 +17,11 @@ void ComicVineAllVolumeComicsRetriever::getAllVolumeComics()
void ComicVineAllVolumeComicsRetriever::getAllVolumeComics(int range) void ComicVineAllVolumeComicsRetriever::getAllVolumeComics(int range)
{ {
HttpWorker * search = new HttpWorker(volumeURLString.arg(range)); HttpWorker *search = new HttpWorker(volumeURLString.arg(range));
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(appendVolumeComicsInfo(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SLOT(appendVolumeComicsInfo(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut()));
connect(search,SIGNAL(timeout()),this,SIGNAL(finished())); connect(search, SIGNAL(timeout()), this, SIGNAL(finished()));
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
@ -42,9 +41,7 @@ void ComicVineAllVolumeComicsRetriever::appendVolumeComicsInfo(const QByteArray
if (!isLastResponse) { if (!isLastResponse) {
getAllVolumeComics(currentPage * 100); getAllVolumeComics(currentPage * 100);
} } else {
else
{
emit allVolumeComicsInfo(consolidateJSON()); emit allVolumeComicsInfo(consolidateJSON());
emit finished(); emit finished();
} }
@ -58,28 +55,23 @@ QString ComicVineAllVolumeComicsRetriever::consolidateJSON()
foreach (QByteArray json, jsonResponses) { foreach (QByteArray json, jsonResponses) {
QJsonDocument doc = QJsonDocument::fromJson(json); QJsonDocument doc = QJsonDocument::fromJson(json);
if(doc.isNull() || !doc.isObject() || doc.isEmpty()) if (doc.isNull() || !doc.isObject() || doc.isEmpty()) {
{
continue; continue;
} }
QJsonObject main = doc.object(); QJsonObject main = doc.object();
QJsonValue error = main["error"]; QJsonValue error = main["error"];
if (error.isUndefined() || error.toString() != "OK") if (error.isUndefined() || error.toString() != "OK") {
{
continue; continue;
} } else {
else
{
QJsonValue results = main["results"]; QJsonValue results = main["results"];
if (results.isUndefined() || !results.isArray()) if (results.isUndefined() || !results.isArray()) {
{
continue; continue;
} }
QJsonArray resultsArray = results.toArray(); QJsonArray resultsArray = results.toArray();
foreach (const QJsonValue & v, resultsArray) foreach (const QJsonValue &v, resultsArray)
comicsInfo.append(v); comicsInfo.append(v);
} }
} }
@ -93,5 +85,3 @@ QString ComicVineAllVolumeComicsRetriever::consolidateJSON()
QJsonDocument doc(consolidatedJSON); QJsonDocument doc(consolidatedJSON);
return doc.toJson(QJsonDocument::Compact); return doc.toJson(QJsonDocument::Compact);
} }

View File

@ -9,6 +9,7 @@ class ComicVineAllVolumeComicsRetriever : public QObject
public: public:
explicit ComicVineAllVolumeComicsRetriever(const QString &volumeURLString, QObject *parent = 0); explicit ComicVineAllVolumeComicsRetriever(const QString &volumeURLString, QObject *parent = 0);
void getAllVolumeComics(); void getAllVolumeComics();
protected: protected:
void getAllVolumeComics(const int range); void getAllVolumeComics(const int range);
signals: signals:

View File

@ -44,10 +44,10 @@ static const QString CV_COVER_URL = CV_WEB_ADDRESS + "/issue/4000-%1/?api_key="
//gets comics matching name %1 and number %2 //gets comics matching name %1 and number %2
//http://comicvine.com/api/issues/?api_key=46680bebb358f1de690a5a365e15d325f9649f91&limit=20&filter=name:super,issue_number:15 //http://comicvine.com/api/issues/?api_key=46680bebb358f1de690a5a365e15d325f9649f91&limit=20&filter=name:super,issue_number:15
ComicVineClient::ComicVineClient(QObject *parent) : ComicVineClient::ComicVineClient(QObject *parent)
QObject(parent) : QObject(parent)
{ {
settings = new QSettings(YACReader::getSettingsPath()+"/YACReaderLibrary.ini",QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor settings = new QSettings(YACReader::getSettingsPath() + "/YACReaderLibrary.ini", QSettings::IniFormat); //TODO unificar la creación del fichero de config con el servidor
settings->beginGroup("ComicVine"); settings->beginGroup("ComicVine");
baseURL = settings->value(COMIC_VINE_BASE_URL, "https://comicvine.gamespot.com/api").toString(); baseURL = settings->value(COMIC_VINE_BASE_URL, "https://comicvine.gamespot.com/api").toString();
} }
@ -58,16 +58,16 @@ ComicVineClient::~ComicVineClient()
} }
//CV_SEARCH //CV_SEARCH
void ComicVineClient::search(const QString & query, int page) void ComicVineClient::search(const QString &query, int page)
{ {
HttpWorker * search = new HttpWorker(QString(CV_SEARCH).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(query).arg(page)); HttpWorker *search = new HttpWorker(QString(CV_SEARCH).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(query).arg(page));
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(proccessVolumesSearchData(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SLOT(proccessVolumesSearchData(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut()));
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
//CV_SEARCH result //CV_SEARCH result
void ComicVineClient::proccessVolumesSearchData(const QByteArray & data) void ComicVineClient::proccessVolumesSearchData(const QByteArray &data)
{ {
QString json(data); QString json(data);
emit searchResult(json); emit searchResult(json);
@ -96,38 +96,38 @@ void ComicVineClient::proccessComicDetailData(const QByteArray &data)
} }
//CV_SERIES_DETAIL //CV_SERIES_DETAIL
void ComicVineClient::getSeriesDetail(const QString & id) void ComicVineClient::getSeriesDetail(const QString &id)
{ {
HttpWorker * search = new HttpWorker(QString(CV_SERIES_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(id)); HttpWorker *search = new HttpWorker(QString(CV_SERIES_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(id));
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(proccessSeriesDetailData(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SLOT(proccessSeriesDetailData(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut()));
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
void ComicVineClient::getSeriesCover(const QString & url) void ComicVineClient::getSeriesCover(const QString &url)
{ {
HttpWorker * search = new HttpWorker(url); HttpWorker *search = new HttpWorker(url);
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SIGNAL(seriesCover(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SIGNAL(seriesCover(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); //TODO connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut())); //TODO
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
//CV_COMIC_IDS //CV_COMIC_IDS
void ComicVineClient::getVolumeComicsInfo(const QString & idVolume, int page) void ComicVineClient::getVolumeComicsInfo(const QString &idVolume, int page)
{ {
HttpWorker * search = new HttpWorker(QString(CV_COMICS_INFO).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(idVolume).arg((page-1)*100)); //page doesn't work for search, using offset instead HttpWorker *search = new HttpWorker(QString(CV_COMICS_INFO).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(idVolume).arg((page - 1) * 100)); //page doesn't work for search, using offset instead
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(processVolumeComicsInfo(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SLOT(processVolumeComicsInfo(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); //TODO connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut())); //TODO
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
void ComicVineClient::getAllVolumeComicsInfo(const QString &idVolume) void ComicVineClient::getAllVolumeComicsInfo(const QString &idVolume)
{ {
QString url = QString(CV_COMICS_INFO).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(idVolume); QString url = QString(CV_COMICS_INFO).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(idVolume);
ComicVineAllVolumeComicsRetriever * comicsRetriever = new ComicVineAllVolumeComicsRetriever(url); ComicVineAllVolumeComicsRetriever *comicsRetriever = new ComicVineAllVolumeComicsRetriever(url);
connect(comicsRetriever, &ComicVineAllVolumeComicsRetriever::allVolumeComicsInfo, this, &ComicVineClient::volumeComicsInfo); connect(comicsRetriever, &ComicVineAllVolumeComicsRetriever::allVolumeComicsInfo, this, &ComicVineClient::volumeComicsInfo);
connect(comicsRetriever, &ComicVineAllVolumeComicsRetriever::finished, this, &ComicVineClient::finished); connect(comicsRetriever, &ComicVineAllVolumeComicsRetriever::finished, this, &ComicVineClient::finished);
@ -138,16 +138,16 @@ void ComicVineClient::getAllVolumeComicsInfo(const QString &idVolume)
} }
//CV_COMIC_ID //CV_COMIC_ID
void ComicVineClient::getComicId(const QString & id, int comicNumber) void ComicVineClient::getComicId(const QString &id, int comicNumber)
{ {
Q_UNUSED(id); Q_UNUSED(id);
Q_UNUSED(comicNumber); Q_UNUSED(comicNumber);
} }
//CV_COMIC_DETAIL //CV_COMIC_DETAIL
QByteArray ComicVineClient::getComicDetail(const QString & id, bool & outError, bool & outTimeout) QByteArray ComicVineClient::getComicDetail(const QString &id, bool &outError, bool &outTimeout)
{ {
HttpWorker * search = new HttpWorker(QString(CV_COMIC_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(id)); HttpWorker *search = new HttpWorker(QString(CV_COMIC_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(id));
//connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(proccessComicDetailData(const QByteArray &))); //connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(proccessComicDetailData(const QByteArray &)));
//connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); //connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut()));
@ -163,27 +163,27 @@ QByteArray ComicVineClient::getComicDetail(const QString & id, bool & outError,
} }
//CV_COMIC_DETAIL //CV_COMIC_DETAIL
void ComicVineClient::getComicDetailAsync(const QString & id) void ComicVineClient::getComicDetailAsync(const QString &id)
{ {
HttpWorker * search = new HttpWorker(QString(CV_COMIC_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY,settings->value(COMIC_VINE_API_KEY,CV_API_KEY_DEFAULT).toString()).arg(id)); HttpWorker *search = new HttpWorker(QString(CV_COMIC_DETAIL).replace(CV_WEB_ADDRESS, baseURL).replace(CV_API_KEY, settings->value(COMIC_VINE_API_KEY, CV_API_KEY_DEFAULT).toString()).arg(id));
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SLOT(proccessComicDetailData(const QByteArray &))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SLOT(proccessComicDetailData(const QByteArray &)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut()));
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
void ComicVineClient::getComicCover(const QString &url) void ComicVineClient::getComicCover(const QString &url)
{ {
HttpWorker * search = new HttpWorker(url); HttpWorker *search = new HttpWorker(url);
connect(search,SIGNAL(dataReady(const QByteArray &)),this,SIGNAL(comicCover(QByteArray))); connect(search, SIGNAL(dataReady(const QByteArray &)), this, SIGNAL(comicCover(QByteArray)));
connect(search,SIGNAL(timeout()),this,SIGNAL(timeOut())); //TODO connect(search, SIGNAL(timeout()), this, SIGNAL(timeOut())); //TODO
connect(search,SIGNAL(finished()),search,SLOT(deleteLater())); connect(search, SIGNAL(finished()), search, SLOT(deleteLater()));
search->get(); search->get();
} }
//CV_COVER_DETAIL //CV_COVER_DETAIL
void ComicVineClient::getCoverURL(const QString & id) void ComicVineClient::getCoverURL(const QString &id)
{ {
Q_UNUSED(id); Q_UNUSED(id);
} }

View File

@ -15,34 +15,33 @@ public:
signals: signals:
void searchResult(QString); void searchResult(QString);
void seriesDetail(QString);//JSON void seriesDetail(QString); //JSON
void comicDetail(QString);//JSON void comicDetail(QString); //JSON
void seriesCover(const QByteArray &); void seriesCover(const QByteArray &);
void comicCover(const QByteArray &); void comicCover(const QByteArray &);
void volumeComicsInfo(QString); void volumeComicsInfo(QString);
void timeOut(); void timeOut();
void finished(); void finished();
public slots: public slots:
void search(const QString & query, int page = 1); void search(const QString &query, int page = 1);
void getSeriesDetail(const QString & id); void getSeriesDetail(const QString &id);
void getSeriesCover(const QString & url); void getSeriesCover(const QString &url);
void getVolumeComicsInfo(const QString & idVolume, int page=1); void getVolumeComicsInfo(const QString &idVolume, int page = 1);
void getAllVolumeComicsInfo(const QString & idVolume); void getAllVolumeComicsInfo(const QString &idVolume);
QByteArray getComicDetail(const QString & id, bool &outError, bool &outTimeout); QByteArray getComicDetail(const QString &id, bool &outError, bool &outTimeout);
void getComicCover(const QString & url); void getComicCover(const QString &url);
void getComicId(const QString & id, int comicNumber); void getComicId(const QString &id, int comicNumber);
void getCoverURL(const QString & id); void getCoverURL(const QString &id);
void getComicDetailAsync(const QString &id); void getComicDetailAsync(const QString &id);
protected slots: protected slots:
void proccessVolumesSearchData(const QByteArray & data); void proccessVolumesSearchData(const QByteArray &data);
void proccessSeriesDetailData(const QByteArray & data); void proccessSeriesDetailData(const QByteArray &data);
void processVolumeComicsInfo(const QByteArray & data); void processVolumeComicsInfo(const QByteArray &data);
void proccessComicDetailData(const QByteArray & data); void proccessComicDetailData(const QByteArray &data);
protected: protected:
QSettings * settings; QSettings *settings;
QString baseURL; QString baseURL;
}; };
#endif // COMIC_VINE_CLIENT_H #endif // COMIC_VINE_CLIENT_H

View File

@ -9,9 +9,9 @@
#include <QMessageBox> #include <QMessageBox>
#include <QTableView> #include <QTableView>
#if QT_VERSION >= 0x050000 #if QT_VERSION >= 0x050000
#include <QtConcurrent/QtConcurrentRun> #include <QtConcurrent/QtConcurrentRun>
#else #else
#include <QtConcurrentRun> #include <QtConcurrentRun>
#endif #endif
#include <QSqlDatabase> #include <QSqlDatabase>
#include <QtScript> #include <QtScript>
@ -32,10 +32,8 @@
#include "QsLog.h" #include "QsLog.h"
ComicVineDialog::ComicVineDialog(QWidget *parent)
: QDialog(parent)
ComicVineDialog::ComicVineDialog(QWidget *parent) :
QDialog(parent)
{ {
setWindowFlags(Qt::Window); setWindowFlags(Qt::Window);
@ -66,9 +64,9 @@ void ComicVineDialog::doLayout()
content = new QStackedWidget(this); content = new QStackedWidget(this);
QVBoxLayout * mainLayout = new QVBoxLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
QHBoxLayout * buttonLayout = new QHBoxLayout; QHBoxLayout *buttonLayout = new QHBoxLayout;
buttonLayout->addStretch(); buttonLayout->addStretch();
buttonLayout->addWidget(skipButton); buttonLayout->addWidget(skipButton);
@ -76,13 +74,13 @@ void ComicVineDialog::doLayout()
buttonLayout->addWidget(nextButton); buttonLayout->addWidget(nextButton);
buttonLayout->addWidget(searchButton); buttonLayout->addWidget(searchButton);
buttonLayout->addWidget(closeButton); buttonLayout->addWidget(closeButton);
buttonLayout->setContentsMargins(0,0,0,0); buttonLayout->setContentsMargins(0, 0, 0, 0);
mainLayout->addWidget(titleHeader = new TitleHeader, 0); mainLayout->addWidget(titleHeader = new TitleHeader, 0);
mainLayout->addWidget(content, 1); mainLayout->addWidget(content, 1);
mainLayout->addLayout(buttonLayout, 0); mainLayout->addLayout(buttonLayout, 0);
mainLayout->setContentsMargins(26,16,26,11); mainLayout->setContentsMargins(26, 16, 26, 11);
setLayout(mainLayout); setLayout(mainLayout);
@ -102,15 +100,15 @@ void ComicVineDialog::doStackedWidgets()
void ComicVineDialog::doConnections() void ComicVineDialog::doConnections()
{ {
connect(closeButton,SIGNAL(clicked()),this,SLOT(close())); connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
connect(nextButton,SIGNAL(clicked()),this,SLOT(goNext())); connect(nextButton, SIGNAL(clicked()), this, SLOT(goNext()));
connect(backButton,SIGNAL(clicked()),this,SLOT(goBack())); connect(backButton, SIGNAL(clicked()), this, SLOT(goBack()));
connect(searchButton,SIGNAL(clicked()),this,SLOT(search())); connect(searchButton, SIGNAL(clicked()), this, SLOT(search()));
connect(skipButton,SIGNAL(clicked()),this,SLOT(goToNextComic())); connect(skipButton, SIGNAL(clicked()), this, SLOT(goToNextComic()));
connect(selectVolumeWidget,SIGNAL(loadPage(QString,int)),this,SLOT(searchVolume(QString,int))); connect(selectVolumeWidget, SIGNAL(loadPage(QString, int)), this, SLOT(searchVolume(QString, int)));
connect(selectComicWidget,SIGNAL(loadPage(QString,int)),this,SLOT(getVolumeComicsInfo(QString,int))); connect(selectComicWidget, SIGNAL(loadPage(QString, int)), this, SLOT(getVolumeComicsInfo(QString, int)));
connect(sortVolumeComicsWidget,SIGNAL(loadPage(QString,int)),this,SLOT(getVolumeComicsInfo(QString,int))); connect(sortVolumeComicsWidget, SIGNAL(loadPage(QString, int)), this, SLOT(getVolumeComicsInfo(QString, int)));
connect(this, SIGNAL(accepted()), this, SLOT(close()), Qt::QueuedConnection); connect(this, SIGNAL(accepted()), this, SLOT(close()), Qt::QueuedConnection);
} }
@ -118,35 +116,29 @@ void ComicVineDialog::doConnections()
void ComicVineDialog::goNext() void ComicVineDialog::goNext()
{ {
// //
if(content->currentWidget() == seriesQuestionWidget) if (content->currentWidget() == seriesQuestionWidget) {
{ if (seriesQuestionWidget->getYes()) {
if(seriesQuestionWidget->getYes())
{
QString volumeSearchString = comics[0].getParentFolderName(); QString volumeSearchString = comics[0].getParentFolderName();
mode = Volume; mode = Volume;
if(volumeSearchString.isEmpty()) if (volumeSearchString.isEmpty())
showSearchVolume(); showSearchVolume();
else else {
{
status = AutoSearching; status = AutoSearching;
showLoading(tr("Looking for volume...")); showLoading(tr("Looking for volume..."));
searchVolume(volumeSearchString); searchVolume(volumeSearchString);
} }
} } else {
else
{
status = AutoSearching; status = AutoSearching;
mode = SingleComicInList; mode = SingleComicInList;
ComicDB comic = comics[currentIndex]; ComicDB comic = comics[currentIndex];
QString title = comic.getTitleOrFileName(); QString title = comic.getTitleOrFileName();
titleHeader->setSubTitle(tr("comic %1 of %2 - %3").arg(currentIndex+1).arg(comics.length()).arg(title)); titleHeader->setSubTitle(tr("comic %1 of %2 - %3").arg(currentIndex + 1).arg(comics.length()).arg(title));
showLoading(tr("Looking for volume...")); showLoading(tr("Looking for volume..."));
searchVolume(title); searchVolume(title);
} }
} } else if (content->currentWidget() == selectVolumeWidget) {
else if (content->currentWidget() == selectVolumeWidget) {
currentVolumeId = selectVolumeWidget->getSelectedVolumeId(); currentVolumeId = selectVolumeWidget->getSelectedVolumeId();
getVolumeComicsInfo(currentVolumeId); getVolumeComicsInfo(currentVolumeId);
@ -154,17 +146,16 @@ void ComicVineDialog::goNext()
showLoading(); showLoading();
//ComicDB-ComicVineID //ComicDB-ComicVineID
QList<QPair<ComicDB,QString> > matchingInfo = sortVolumeComicsWidget->getMatchingInfo(); QList<QPair<ComicDB, QString>> matchingInfo = sortVolumeComicsWidget->getMatchingInfo();
int count = selectVolumeWidget->getSelectedVolumeNumIssues(); int count = selectVolumeWidget->getSelectedVolumeNumIssues();
QString publisher = selectVolumeWidget->getSelectedVolumePublisher(); QString publisher = selectVolumeWidget->getSelectedVolumePublisher();
QtConcurrent::run(this, &ComicVineDialog::getComicsInfo,matchingInfo,count,publisher); QtConcurrent::run(this, &ComicVineDialog::getComicsInfo, matchingInfo, count, publisher);
} else if (content->currentWidget() == selectComicWidget) } else if (content->currentWidget() == selectComicWidget) {
{
showLoading(); showLoading();
QString comicId = selectComicWidget->getSelectedComicId(); QString comicId = selectComicWidget->getSelectedComicId();
int count = selectVolumeWidget->getSelectedVolumeNumIssues(); int count = selectVolumeWidget->getSelectedVolumeNumIssues();
QString publisher = selectVolumeWidget->getSelectedVolumePublisher(); QString publisher = selectVolumeWidget->getSelectedVolumePublisher();
QtConcurrent::run(this, &ComicVineDialog::getComicInfo,comicId,count,publisher); QtConcurrent::run(this, &ComicVineDialog::getComicInfo, comicId, count, publisher);
} }
} }
@ -172,7 +163,7 @@ void ComicVineDialog::goBack()
{ {
switch (status) { switch (status) {
case SelectingSeries: case SelectingSeries:
if(mode == Volume) if (mode == Volume)
showSearchVolume(); showSearchVolume();
else else
showSearchSingleComic(); showSearchSingleComic();
@ -181,17 +172,17 @@ void ComicVineDialog::goBack()
showSelectVolume(); showSelectVolume();
break; break;
case SelectingComic: case SelectingComic:
if(mode == SingleComic) if (mode == SingleComic)
showSelectVolume(); showSelectVolume();
break; break;
case AutoSearching: case AutoSearching:
if(mode == Volume) if (mode == Volume)
showSearchVolume(); showSearchVolume();
else else
showSearchSingleComic(); showSearchSingleComic();
break; break;
default: default:
if(mode == Volume) if (mode == Volume)
showSearchVolume(); showSearchVolume();
else else
showSearchSingleComic(); showSearchSingleComic();
@ -199,7 +190,7 @@ void ComicVineDialog::goBack()
} }
} }
void ComicVineDialog::setComics(const QList<ComicDB> & comics) void ComicVineDialog::setComics(const QList<ComicDB> &comics)
{ {
this->comics = comics; this->comics = comics;
} }
@ -208,8 +199,8 @@ QSize ComicVineDialog::sizeHint() const
{ {
int heightDesktopResolution = QApplication::desktop()->screenGeometry().height(); int heightDesktopResolution = QApplication::desktop()->screenGeometry().height();
int widthDesktopResolution = QApplication::desktop()->screenGeometry().width(); int widthDesktopResolution = QApplication::desktop()->screenGeometry().width();
int height,width; int height, width;
height = qMax(529, static_cast<int>(heightDesktopResolution*0.5)); height = qMax(529, static_cast<int>(heightDesktopResolution * 0.5));
width = height * 1.65; width = height * 1.65;
if (width > widthDesktopResolution) if (width > widthDesktopResolution)
@ -233,8 +224,7 @@ void ComicVineDialog::show()
searchSingleComicWidget->clean(); searchSingleComicWidget->clean();
searchVolumeWidget->clean(); searchVolumeWidget->clean();
if(comics.length() == 1) if (comics.length() == 1) {
{
status = AutoSearching; status = AutoSearching;
mode = SingleComic; mode = SingleComic;
@ -245,8 +235,7 @@ void ComicVineDialog::show()
searchVolume(singleComic.getParentFolderName()); searchVolume(singleComic.getParentFolderName());
QLOG_TRACE() << singleComic.getParentFolderName(); QLOG_TRACE() << singleComic.getParentFolderName();
}else if(comics.length()>1) } else if (comics.length() > 1) {
{
titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length())); titleHeader->setSubTitle(tr("%1 comics selected").arg(comics.length()));
showSeriesQuestion(); showSeriesQuestion();
} }
@ -254,52 +243,47 @@ void ComicVineDialog::show()
void ComicVineDialog::doLoading() void ComicVineDialog::doLoading()
{ {
QWidget * w = new QWidget; QWidget *w = new QWidget;
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
YACReaderBusyWidget * bw = new YACReaderBusyWidget; YACReaderBusyWidget *bw = new YACReaderBusyWidget;
loadingMessage = new QLabel; loadingMessage = new QLabel;
loadingMessage->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); loadingMessage->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
l->addStretch(); l->addStretch();
l->addWidget(bw,0,Qt::AlignHCenter); l->addWidget(bw, 0, Qt::AlignHCenter);
l->addStretch(); l->addStretch();
l->addWidget(loadingMessage); l->addWidget(loadingMessage);
l->setContentsMargins(0, 0, 0, 0);
l->setContentsMargins(0,0,0,0);
w->setLayout(l); w->setLayout(l);
w->setContentsMargins(0,0,0,0); w->setContentsMargins(0, 0, 0, 0);
content->addWidget(w); content->addWidget(w);
} }
void ComicVineDialog::debugClientResults(const QString & string) void ComicVineDialog::debugClientResults(const QString &string)
{ {
ResponseParser p; ResponseParser p;
p.loadJSONResponse(string); p.loadJSONResponse(string);
//QMessageBox::information(0,"Result", QString("Number of results : %1").arg(p.getNumResults())); //QMessageBox::information(0,"Result", QString("Number of results : %1").arg(p.getNumResults()));
if(p.responseError()) if (p.responseError()) {
{ QMessageBox::critical(0, tr("Error connecting to ComicVine"), p.errorDescription());
QMessageBox::critical(0,tr("Error connecting to ComicVine"), p.errorDescription());
goBack(); goBack();
} } else {
else switch (mode) {
{ case SingleComic:
switch(mode) case SingleComicInList:
{ if (p.getNumResults() == 0)
case SingleComic: case SingleComicInList:
if(p.getNumResults() == 0)
showSearchSingleComic(); showSearchSingleComic();
else else if (status == SearchingVolume)
if(status == SearchingVolume)
showSelectVolume(string); showSelectVolume(string);
else else
showSelectComic(string); showSelectComic(string);
break; break;
case Volume: case Volume:
if(p.getNumResults() == 0) if (p.getNumResults() == 0)
showSearchVolume(); showSearchVolume();
else else
showSelectVolume(string); showSelectVolume(string);
@ -318,7 +302,7 @@ void ComicVineDialog::showSeriesQuestion()
searchButton->setHidden(true); searchButton->setHidden(true);
closeButton->setVisible(true); closeButton->setVisible(true);
if(mode == SingleComicInList) if (mode == SingleComicInList)
skipButton->setVisible(true); skipButton->setVisible(true);
else else
skipButton->setHidden(true); skipButton->setHidden(true);
@ -334,7 +318,7 @@ void ComicVineDialog::showSearchSingleComic()
searchButton->setVisible(true); searchButton->setVisible(true);
closeButton->setVisible(true); closeButton->setVisible(true);
if(mode == SingleComicInList) if (mode == SingleComicInList)
skipButton->setVisible(true); skipButton->setVisible(true);
else else
skipButton->setHidden(true); skipButton->setHidden(true);
@ -351,10 +335,10 @@ void ComicVineDialog::showSearchVolume()
toggleSkipButton(); toggleSkipButton();
} }
void ComicVineDialog::showSelectVolume(const QString & json) void ComicVineDialog::showSelectVolume(const QString &json)
{ {
showSelectVolume(); showSelectVolume();
selectVolumeWidget->load(json,currentVolumeSearchString); selectVolumeWidget->load(json, currentVolumeSearchString);
} }
void ComicVineDialog::showSelectVolume() void ComicVineDialog::showSelectVolume()
@ -375,7 +359,7 @@ void ComicVineDialog::showSelectComic(const QString &json)
status = SelectingComic; status = SelectingComic;
content->setCurrentWidget(selectComicWidget); content->setCurrentWidget(selectComicWidget);
selectComicWidget->load(json,currentVolumeId); selectComicWidget->load(json, currentVolumeId);
backButton->setVisible(true); backButton->setVisible(true);
nextButton->setVisible(true); nextButton->setVisible(true);
@ -401,17 +385,17 @@ void ComicVineDialog::showSortVolumeComics(const QString &json)
void ComicVineDialog::queryTimeOut() void ComicVineDialog::queryTimeOut()
{ {
QMessageBox::warning(this,"Comic Vine error", "Time out connecting to Comic Vine"); QMessageBox::warning(this, "Comic Vine error", "Time out connecting to Comic Vine");
switch (status) { switch (status) {
case AutoSearching: case AutoSearching:
if(mode == Volume) if (mode == Volume)
showSearchVolume(); showSearchVolume();
else else
showSearchSingleComic(); showSearchSingleComic();
break; break;
case SearchingVolume: case SearchingVolume:
if(mode == Volume) if (mode == Volume)
showSearchVolume(); showSearchVolume();
else else
showSearchSingleComic(); showSearchSingleComic();
@ -427,21 +411,21 @@ void ComicVineDialog::queryTimeOut()
} }
} }
void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString> > & matchingInfo, int count,const QString & publisher) void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString>> &matchingInfo, int count, const QString &publisher)
{ {
QPair<ComicDB, QString> p; QPair<ComicDB, QString> p;
QList<ComicDB> comics; QList<ComicDB> comics;
foreach (p, matchingInfo) { foreach (p, matchingInfo) {
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
//connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString))); //connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString)));
//connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut())); //connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut()));
//connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); //connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater()));
bool error; bool error;
bool timeout; bool timeout;
QByteArray result = comicVineClient->getComicDetail(p.second,error,timeout); //TODO check timeOut or Connection error QByteArray result = comicVineClient->getComicDetail(p.second, error, timeout); //TODO check timeOut or Connection error
if(error || timeout) if (error || timeout)
continue; //TODO continue; //TODO
ComicDB comic = parseComicInfo(p.first,result,count,publisher);//TODO check result error ComicDB comic = parseComicInfo(p.first, result, count, publisher); //TODO check result error
comic.info.comicVineID = p.second; comic.info.comicVineID = p.second;
comics.push_back(comic); comics.push_back(comic);
@ -451,9 +435,8 @@ void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString> > & matchingIn
QSqlDatabase db = DataBaseManagement::loadDatabase(databasePath); QSqlDatabase db = DataBaseManagement::loadDatabase(databasePath);
db.open(); db.open();
db.transaction(); db.transaction();
foreach(ComicDB comic, comics) foreach (ComicDB comic, comics) {
{ DBHelper::update(&(comic.info), db);
DBHelper::update(&(comic.info),db);
} }
db.commit(); db.commit();
db.close(); db.close();
@ -465,23 +448,20 @@ void ComicVineDialog::getComicsInfo(QList<QPair<ComicDB, QString> > & matchingIn
void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QString &publisher) void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QString &publisher)
{ {
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
bool error; bool error;
bool timeout; bool timeout;
QByteArray result = comicVineClient->getComicDetail(comicId,error,timeout); //TODO check timeOut or Connection error QByteArray result = comicVineClient->getComicDetail(comicId, error, timeout); //TODO check timeOut or Connection error
if(error || timeout) if (error || timeout) {
{
//TODO //TODO
if(mode == SingleComic || currentIndex == (comics.count()-1)) if (mode == SingleComic || currentIndex == (comics.count() - 1)) {
{
emit accepted(); emit accepted();
} else } else {
{
goToNextComic(); goToNextComic();
} }
} }
ComicDB comic = parseComicInfo(comics[currentIndex],result,count,publisher); //TODO check result error ComicDB comic = parseComicInfo(comics[currentIndex], result, count, publisher); //TODO check result error
comic.info.comicVineID = comicId; comic.info.comicVineID = comicId;
setLoadingMessage(tr("Retrieving tags for : %1").arg(comics[currentIndex].getFileName())); setLoadingMessage(tr("Retrieving tags for : %1").arg(comics[currentIndex].getFileName()));
@ -489,37 +469,31 @@ void ComicVineDialog::getComicInfo(const QString &comicId, int count, const QStr
db.open(); db.open();
db.transaction(); db.transaction();
DBHelper::update(&(comic.info),db); DBHelper::update(&(comic.info), db);
db.commit(); db.commit();
db.close(); db.close();
QSqlDatabase::removeDatabase(db.connectionName()); QSqlDatabase::removeDatabase(db.connectionName());
if(mode == SingleComic || currentIndex == (comics.count()-1)) if (mode == SingleComic || currentIndex == (comics.count() - 1)) {
{
emit accepted(); emit accepted();
} else } else {
{
goToNextComic(); goToNextComic();
} }
} }
ComicDB ComicVineDialog::parseComicInfo(ComicDB & comic, const QString & json, int count, const QString & publisher) ComicDB ComicVineDialog::parseComicInfo(ComicDB &comic, const QString &json, int count, const QString &publisher)
{ {
QScriptEngine engine; QScriptEngine engine;
QScriptValue sc; QScriptValue sc;
sc = engine.evaluate("(" + json + ")"); sc = engine.evaluate("(" + json + ")");
if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") {
{
qDebug("Error detected"); qDebug("Error detected");
} } else {
else
{
int numResults = sc.property("number_of_total_results").toString().toInt(); //fix to weird behaviour using hasNext int numResults = sc.property("number_of_total_results").toString().toInt(); //fix to weird behaviour using hasNext
if(numResults > 0) if (numResults > 0) {
{
QScriptValue result = sc.property("results"); QScriptValue result = sc.property("results");
if (!result.property("name").isNull()) { if (!result.property("name").isNull()) {
@ -541,7 +515,7 @@ ComicDB ComicVineDialog::parseComicInfo(ComicDB & comic, const QString & json, i
} }
if (!result.property("person_credits").isNull()) { if (!result.property("person_credits").isNull()) {
QMap<QString,QString> authors = getAuthors(result.property("person_credits")); QMap<QString, QString> authors = getAuthors(result.property("person_credits"));
QString writer = QStringList(authors.values("writer")).join("\n"); QString writer = QStringList(authors.values("writer")).join("\n");
QString penciller = QStringList(authors.values("penciller")).join("\n"); QString penciller = QStringList(authors.values("penciller")).join("\n");
@ -564,7 +538,7 @@ ComicDB ComicVineDialog::parseComicInfo(ComicDB & comic, const QString & json, i
QStringList tempList = date.split("-"); QStringList tempList = date.split("-");
if (tempList.length() == 3) { if (tempList.length() == 3) {
std::reverse(tempList.begin(),tempList.end()); std::reverse(tempList.begin(), tempList.end());
comic.info.date = tempList.join("/"); comic.info.date = tempList.join("/");
} }
} }
@ -597,7 +571,7 @@ QString ComicVineDialog::getCharacters(const QScriptValue &json_characters)
QScriptValue resultsValue; QScriptValue resultsValue;
while (it.hasNext()) { while (it.hasNext()) {
it.next(); it.next();
if(it.flags() & QScriptValue::SkipInEnumeration) if (it.flags() & QScriptValue::SkipInEnumeration)
continue; continue;
resultsValue = it.value(); resultsValue = it.value();
@ -615,27 +589,26 @@ QMap<QString, QString> ComicVineDialog::getAuthors(const QScriptValue &json_auth
QScriptValue resultsValue; QScriptValue resultsValue;
while (it.hasNext()) { while (it.hasNext()) {
it.next(); it.next();
if(it.flags() & QScriptValue::SkipInEnumeration) if (it.flags() & QScriptValue::SkipInEnumeration)
continue; continue;
resultsValue = it.value(); resultsValue = it.value();
QString authorName = resultsValue.property("name").toString(); QString authorName = resultsValue.property("name").toString();
QStringList roles = resultsValue.property("role").toString().split(","); QStringList roles = resultsValue.property("role").toString().split(",");
foreach(QString role, roles) foreach (QString role, roles) {
{ if (role.trimmed() == "writer")
if(role.trimmed() == "writer") authors.insertMulti("writer", authorName);
authors.insertMulti("writer",authorName); else if (role.trimmed() == "inker")
else if(role.trimmed() == "inker") authors.insertMulti("inker", authorName);
authors.insertMulti("inker",authorName); else if (role.trimmed() == "penciler" || role.trimmed() == "penciller")
else if(role.trimmed() == "penciler" || role.trimmed() == "penciller") authors.insertMulti("penciller", authorName);
authors.insertMulti("penciller",authorName); else if (role.trimmed() == "colorist")
else if(role.trimmed() == "colorist") authors.insertMulti("colorist", authorName);
authors.insertMulti("colorist",authorName); else if (role.trimmed() == "letterer")
else if(role.trimmed() == "letterer") authors.insertMulti("letterer", authorName);
authors.insertMulti("letterer",authorName); else if (role.trimmed() == "cover")
else if(role.trimmed() == "cover") authors.insertMulti("cover", authorName);
authors.insertMulti("cover",authorName);
} }
} }
@ -652,8 +625,7 @@ void ComicVineDialog::toggleSkipButton()
void ComicVineDialog::goToNextComic() void ComicVineDialog::goToNextComic()
{ {
if(mode == SingleComic || currentIndex == (comics.count()-1)) if (mode == SingleComic || currentIndex == (comics.count() - 1)) {
{
emit accepted(); emit accepted();
return; return;
} }
@ -664,7 +636,7 @@ void ComicVineDialog::goToNextComic()
ComicDB comic = comics[currentIndex]; ComicDB comic = comics[currentIndex];
QString title = comic.getTitleOrFileName(); QString title = comic.getTitleOrFileName();
titleHeader->setSubTitle(tr("comic %1 of %2 - %3").arg(currentIndex+1).arg(comics.length()).arg(title)); titleHeader->setSubTitle(tr("comic %1 of %2 - %3").arg(currentIndex + 1).arg(comics.length()).arg(title));
} }
void ComicVineDialog::showLoading(const QString &message) void ComicVineDialog::showLoading(const QString &message)
@ -701,11 +673,11 @@ void ComicVineDialog::searchVolume(const QString &v, int page)
currentVolumeSearchString = v; currentVolumeSearchString = v;
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
connect(comicVineClient,SIGNAL(searchResult(QString)),this,SLOT(debugClientResults(QString))); connect(comicVineClient, SIGNAL(searchResult(QString)), this, SLOT(debugClientResults(QString)));
connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut())); connect(comicVineClient, SIGNAL(timeOut()), this, SLOT(queryTimeOut()));
connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); connect(comicVineClient, SIGNAL(finished()), comicVineClient, SLOT(deleteLater()));
comicVineClient->search(v,page); comicVineClient->search(v, page);
status = SearchingVolume; status = SearchingVolume;
} }
@ -716,13 +688,13 @@ void ComicVineDialog::getVolumeComicsInfo(const QString &vID, int /* page */)
status = GettingVolumeComics; status = GettingVolumeComics;
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
if(mode == Volume) if (mode == Volume)
connect(comicVineClient,SIGNAL(volumeComicsInfo(QString)),this,SLOT(showSortVolumeComics(QString))); connect(comicVineClient, SIGNAL(volumeComicsInfo(QString)), this, SLOT(showSortVolumeComics(QString)));
else else
connect(comicVineClient,SIGNAL(volumeComicsInfo(QString)),this,SLOT(showSelectComic(QString))); connect(comicVineClient, SIGNAL(volumeComicsInfo(QString)), this, SLOT(showSelectComic(QString)));
connect(comicVineClient,SIGNAL(timeOut()),this,SLOT(queryTimeOut())); connect(comicVineClient, SIGNAL(timeOut()), this, SLOT(queryTimeOut()));
connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); connect(comicVineClient, SIGNAL(finished()), comicVineClient, SLOT(deleteLater()));
QLOG_TRACE() << vID; QLOG_TRACE() << vID;
@ -747,4 +719,3 @@ void ComicVineDialog::launchSearchComic()
//if(comicInfo.isEmpty() && comicNumber == -1) //if(comicInfo.isEmpty() && comicNumber == -1)
searchVolume(volumeInfo); searchVolume(volumeInfo);
} }

View File

@ -29,7 +29,7 @@ public:
explicit ComicVineDialog(QWidget *parent = 0); explicit ComicVineDialog(QWidget *parent = 0);
QString databasePath; QString databasePath;
QString basePath; QString basePath;
void setComics(const QList<ComicDB> & comics); void setComics(const QList<ComicDB> &comics);
QSize sizeHint() const; QSize sizeHint() const;
QSize minimumSizeHint() const; QSize minimumSizeHint() const;
@ -41,44 +41,41 @@ public slots:
protected slots: protected slots:
void goNext(); void goNext();
void goBack(); void goBack();
void debugClientResults(const QString & string); void debugClientResults(const QString &string);
//show widget methods //show widget methods
void showSeriesQuestion(); void showSeriesQuestion();
void showSearchSingleComic(); void showSearchSingleComic();
void showSearchVolume(); void showSearchVolume();
void showLoading(const QString & message = ""); void showLoading(const QString &message = "");
void search(); void search();
void searchVolume(const QString & v, int page = 1); void searchVolume(const QString &v, int page = 1);
void getVolumeComicsInfo(const QString &vID, int page = 1); void getVolumeComicsInfo(const QString &vID, int page = 1);
void launchSearchVolume(); void launchSearchVolume();
void launchSearchComic(); void launchSearchComic();
void showSelectVolume(const QString & json); void showSelectVolume(const QString &json);
void showSelectVolume(); void showSelectVolume();
void showSelectComic(const QString & json); void showSelectComic(const QString &json);
void showSortVolumeComics(const QString & json); void showSortVolumeComics(const QString &json);
void queryTimeOut(); void queryTimeOut();
void getComicsInfo(QList<QPair<ComicDB,QString> > & matchingInfo, int count, const QString & publisher); void getComicsInfo(QList<QPair<ComicDB, QString>> &matchingInfo, int count, const QString &publisher);
void getComicInfo(const QString & comicId, int count, const QString & publisher); void getComicInfo(const QString &comicId, int count, const QString &publisher);
ComicDB parseComicInfo(ComicDB &comic, const QString & json, int count, const QString &publisher); ComicDB parseComicInfo(ComicDB &comic, const QString &json, int count, const QString &publisher);
void setLoadingMessage(const QString &message); void setLoadingMessage(const QString &message);
void goToNextComic(); void goToNextComic();
private: private:
QString getCharacters(const QScriptValue &json_characters);
QString getCharacters(const QScriptValue & json_characters); QMap<QString, QString> getAuthors(const QScriptValue &json_authors);
QMap<QString,QString> getAuthors(const QScriptValue & json_authors);
void toggleSkipButton(); void toggleSkipButton();
enum ScraperMode enum ScraperMode {
{
SingleComic, //the scraper has been opened for a single comic SingleComic, //the scraper has been opened for a single comic
Volume, //the scraper is trying to get comics info for a whole volume Volume, //the scraper is trying to get comics info for a whole volume
SingleComicInList //the scraper has been opened for a list of unrelated comics SingleComicInList //the scraper has been opened for a list of unrelated comics
}; };
enum ScraperStatus enum ScraperStatus {
{
AutoSearching, AutoSearching,
AskingForInfo, AskingForInfo,
SelectingComic, SelectingComic,
@ -94,21 +91,21 @@ private:
int currentIndex; int currentIndex;
TitleHeader * titleHeader; TitleHeader *titleHeader;
QPushButton * skipButton; QPushButton *skipButton;
QPushButton * backButton; QPushButton *backButton;
QPushButton * nextButton; QPushButton *nextButton;
QPushButton * searchButton; QPushButton *searchButton;
QPushButton * closeButton; QPushButton *closeButton;
//stacked widgets //stacked widgets
QStackedWidget * content; QStackedWidget *content;
QWidget * infoNotFound; QWidget *infoNotFound;
QWidget * singleComicBrowser; QWidget *singleComicBrowser;
QLabel * loadingMessage; QLabel *loadingMessage;
void doLayout(); void doLayout();
void doStackedWidgets(); void doStackedWidgets();
@ -117,12 +114,12 @@ private:
QList<ComicDB> comics; QList<ComicDB> comics;
SeriesQuestion * seriesQuestionWidget; SeriesQuestion *seriesQuestionWidget;
SearchSingleComic * searchSingleComicWidget; SearchSingleComic *searchSingleComicWidget;
SearchVolume * searchVolumeWidget; SearchVolume *searchVolumeWidget;
SelectVolume * selectVolumeWidget; SelectVolume *selectVolumeWidget;
SelectComic * selectComicWidget; SelectComic *selectComicWidget;
SortVolumeComics * sortVolumeComicsWidget; SortVolumeComics *sortVolumeComicsWidget;
QString currentVolumeSearchString; QString currentVolumeSearchString;
QString currentVolumeId; QString currentVolumeId;

View File

@ -1,6 +1,6 @@
#include "comics_model.h" #include "comics_model.h"
ComicsModel::ComicsModel(QObject *parent) : ComicsModel::ComicsModel(QObject *parent)
JSONModel(parent) : JSONModel(parent)
{ {
} }

View File

@ -12,7 +12,6 @@ public:
signals: signals:
public slots: public slots:
}; };
#endif // COMICS_MODEL_H #endif // COMICS_MODEL_H

View File

@ -1,6 +1,6 @@
#include "json_model.h" #include "json_model.h"
JSONModel::JSONModel(QObject *parent) : JSONModel::JSONModel(QObject *parent)
QAbstractItemModel(parent) : QAbstractItemModel(parent)
{ {
} }

View File

@ -8,12 +8,11 @@ class JSONModel : public QAbstractItemModel
Q_OBJECT Q_OBJECT
public: public:
explicit JSONModel(QObject *parent = 0); explicit JSONModel(QObject *parent = 0);
virtual void load(const QString & json) = 0 ; virtual void load(const QString &json) = 0;
signals: signals:
public slots: public slots:
}; };
#endif // JSON_MODEL_H #endif // JSON_MODEL_H

View File

@ -1,7 +1,7 @@
#include "local_comic_list_model.h" #include "local_comic_list_model.h"
LocalComicListModel::LocalComicListModel(QObject *parent) : LocalComicListModel::LocalComicListModel(QObject *parent)
QAbstractItemModel(parent),numExtraRows(0) : QAbstractItemModel(parent), numExtraRows(0)
{ {
} }
@ -10,7 +10,6 @@ void LocalComicListModel::load(QList<ComicDB> &comics)
_data = comics; _data = comics;
} }
QModelIndex LocalComicListModel::parent(const QModelIndex &index) const QModelIndex LocalComicListModel::parent(const QModelIndex &index) const
{ {
Q_UNUSED(index) Q_UNUSED(index)
@ -26,10 +25,10 @@ int LocalComicListModel::rowCount(const QModelIndex &parent) const
int LocalComicListModel::columnCount(const QModelIndex &parent) const int LocalComicListModel::columnCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent) Q_UNUSED(parent)
if(_data.isEmpty()) if (_data.isEmpty())
return 0; return 0;
else else
return 1;//_data.at(0)->count(); return 1; //_data.at(0)->count();
} }
QVariant LocalComicListModel::data(const QModelIndex &index, int role) const QVariant LocalComicListModel::data(const QModelIndex &index, int role) const
@ -37,16 +36,14 @@ QVariant LocalComicListModel::data(const QModelIndex &index, int role) const
if (!index.isValid()) if (!index.isValid())
return QVariant(); return QVariant();
if (role == Qt::DecorationRole) if (role == Qt::DecorationRole) {
{
return QVariant(); return QVariant();
} }
if (role == Qt::TextAlignmentRole) if (role == Qt::TextAlignmentRole) {
{
//TODO //TODO
} }
if(role != Qt::DisplayRole) if (role != Qt::DisplayRole)
return QVariant(); return QVariant();
int row = index.row(); int row = index.row();
@ -68,11 +65,10 @@ QVariant LocalComicListModel::headerData(int section, Qt::Orientation orientatio
{ {
Q_UNUSED(section); Q_UNUSED(section);
if ( role == Qt::TextAlignmentRole) if (role == Qt::TextAlignmentRole)
return QVariant(Qt::AlignLeft | Qt::AlignVCenter); return QVariant(Qt::AlignLeft | Qt::AlignVCenter);
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
{
return QVariant(QString(tr("file name"))); return QVariant(QString(tr("file name")));
} }
@ -99,18 +95,17 @@ void LocalComicListModel::removeComics(const QList<QModelIndex> &selectedIndexes
int sourceRow = mi.row(); int sourceRow = mi.row();
int sourceLastRow = lastMi.row(); int sourceLastRow = lastMi.row();
beginRemoveRows(QModelIndex(),selectedIndexes.first().row(),selectedIndexes.last().row()); beginRemoveRows(QModelIndex(), selectedIndexes.first().row(), selectedIndexes.last().row());
for(int i = sourceLastRow;i>=sourceRow;i--) for (int i = sourceLastRow; i >= sourceRow; i--) {
{
_removed.push_front(_data.at(i)); _removed.push_front(_data.at(i));
_data.removeAt(i); _data.removeAt(i);
} }
endRemoveRows(); endRemoveRows();
beginInsertRows(QModelIndex(),_data.count()-_removed.count(),_data.count()-1); beginInsertRows(QModelIndex(), _data.count() - _removed.count(), _data.count() - 1);
for(int i = 0; i<_removed.count(); i++) for (int i = 0; i < _removed.count(); i++)
_data.append(ComicDB()); _data.append(ComicDB());
endInsertRows(); endInsertRows();
} }
@ -118,16 +113,14 @@ void LocalComicListModel::removeComics(const QList<QModelIndex> &selectedIndexes
void LocalComicListModel::restoreAll() void LocalComicListModel::restoreAll()
{ {
int numItemsToRemove = 0; int numItemsToRemove = 0;
for(int i = 0;numItemsToRemove<_removed.count();i++) for (int i = 0; numItemsToRemove < _removed.count(); i++) {
{ if (_data.at(i).getFileName().isEmpty()) {
if(_data.at(i).getFileName().isEmpty()) beginRemoveRows(QModelIndex(), i, i);
{
beginRemoveRows(QModelIndex(),i,i);
_data.removeAt(i); _data.removeAt(i);
endRemoveRows(); endRemoveRows();
beginInsertRows(QModelIndex(),i,i); beginInsertRows(QModelIndex(), i, i);
_data.insert(i,_removed.at(numItemsToRemove)); _data.insert(i, _removed.at(numItemsToRemove));
endInsertRows(); endInsertRows();
numItemsToRemove++; numItemsToRemove++;
@ -145,13 +138,13 @@ void LocalComicListModel::moveSelectionUp(const QList<QModelIndex> &selectedInde
int sourceLastRow = lastMi.row(); int sourceLastRow = lastMi.row();
int destRow = sourceRow - 1; int destRow = sourceRow - 1;
if(destRow < 0) if (destRow < 0)
return; return;
beginMoveRows(mi.parent(),sourceRow,sourceLastRow,mi.parent(),destRow); beginMoveRows(mi.parent(), sourceRow, sourceLastRow, mi.parent(), destRow);
for(int i = sourceRow; i <= sourceLastRow; i++) for (int i = sourceRow; i <= sourceLastRow; i++)
_data.swap(i, i-1); _data.swap(i, i - 1);
endMoveRows(); endMoveRows();
} }
@ -164,13 +157,13 @@ void LocalComicListModel::moveSelectionDown(const QList<QModelIndex> &selectedIn
int sourceLastRow = lastMi.row(); int sourceLastRow = lastMi.row();
int destRow = sourceLastRow + 1; int destRow = sourceLastRow + 1;
if(destRow >= _data.count()) if (destRow >= _data.count())
return; return;
beginMoveRows(mi.parent(),sourceRow,sourceLastRow,mi.parent(),destRow+1); beginMoveRows(mi.parent(), sourceRow, sourceLastRow, mi.parent(), destRow + 1);
for(int i = sourceLastRow; i >= sourceRow; i--) for (int i = sourceLastRow; i >= sourceRow; i--)
_data.swap(i, i+1); _data.swap(i, i + 1);
endMoveRows(); endMoveRows();
} }
@ -178,7 +171,6 @@ void LocalComicListModel::moveSelectionDown(const QList<QModelIndex> &selectedIn
void LocalComicListModel::addExtraRows(int numRows) void LocalComicListModel::addExtraRows(int numRows)
{ {
numExtraRows = numRows; numExtraRows = numRows;
for(int i = 0; i<numExtraRows; i++) for (int i = 0; i < numExtraRows; i++)
_data.append(ComicDB()); _data.append(ComicDB());
} }

View File

@ -11,7 +11,7 @@ class LocalComicListModel : public QAbstractItemModel
public: public:
explicit LocalComicListModel(QObject *parent = 0); explicit LocalComicListModel(QObject *parent = 0);
void load(QList<ComicDB> & comics); void load(QList<ComicDB> &comics);
//QAbstractItemModel methods //QAbstractItemModel methods
QModelIndex parent(const QModelIndex &index) const; QModelIndex parent(const QModelIndex &index) const;
@ -24,13 +24,13 @@ public:
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QList<ComicDB> getData(); QList<ComicDB> getData();
void removeComics(const QList<QModelIndex> & selectedIndexes); void removeComics(const QList<QModelIndex> &selectedIndexes);
void restoreAll(); void restoreAll();
signals: signals:
public slots: public slots:
void moveSelectionUp(const QList<QModelIndex> & selectedIndexes); void moveSelectionUp(const QList<QModelIndex> &selectedIndexes);
void moveSelectionDown(const QList<QModelIndex> & selectedIndexes); void moveSelectionDown(const QList<QModelIndex> &selectedIndexes);
void addExtraRows(int numRows); void addExtraRows(int numRows);
private: private:

View File

@ -3,8 +3,8 @@
#include <QtScript> #include <QtScript>
#include <QDebug> #include <QDebug>
ResponseParser::ResponseParser(QObject *parent) : ResponseParser::ResponseParser(QObject *parent)
QObject(parent),error(false),errorTxt("None"),numResults(-1),currentPage(-1),totalPages(-1) : QObject(parent), error(false), errorTxt("None"), numResults(-1), currentPage(-1), totalPages(-1)
{ {
} }
@ -35,8 +35,7 @@ qint32 ResponseParser::getTotalPages()
bool ResponseParser::isError(qint32 error) bool ResponseParser::isError(qint32 error)
{ {
switch(error) switch (error) {
{
case 100: case 100:
return true; return true;
@ -53,31 +52,26 @@ void ResponseParser::loadJSONResponse(const QString &response)
errorTxt = "None"; errorTxt = "None";
if (!sc.property("status_code").isValid() || isError(sc.property("status_code").toInt32())) if (!sc.property("status_code").isValid() || isError(sc.property("status_code").toInt32())) {
{
error = true; error = true;
if(sc.property("error").isValid()) if (sc.property("error").isValid())
errorTxt = sc.property("error").toString(); errorTxt = sc.property("error").toString();
else else
errorTxt = "Unknown error"; errorTxt = "Unknown error";
} } else {
else
{
error = false; error = false;
if(sc.property("number_of_total_results").isValid()) if (sc.property("number_of_total_results").isValid())
numResults = sc.property("number_of_total_results").toString().toInt();// sc.property("number_of_total_results").toInt32(); numResults = sc.property("number_of_total_results").toString().toInt(); // sc.property("number_of_total_results").toInt32();
else else
qDebug() << sc.property("oops").toString(); qDebug() << sc.property("oops").toString();
int limit = sc.property("limit").toInt32(); int limit = sc.property("limit").toInt32();
int offset = sc.property("offset").toInt32(); int offset = sc.property("offset").toInt32();
int total = sc.property("number_of_total_results").toInt32(); int total = sc.property("number_of_total_results").toInt32();
if(limit > 0) if (limit > 0) {
{ totalPages = (total / limit) + (total % limit > 0 ? 1 : 0);
totalPages = (total / limit) + (total%limit>0?1:0);
currentPage = (offset / limit) + 1; currentPage = (offset / limit) + 1;
} } else
else
totalPages = currentPage = 1; totalPages = currentPage = 1;
} }
} }

View File

@ -17,7 +17,7 @@ public:
signals: signals:
public slots: public slots:
void loadJSONResponse(const QString & response); void loadJSONResponse(const QString &response);
protected: protected:
bool error; bool error;

View File

@ -1,40 +1,36 @@
#include "volume_comics_model.h" #include "volume_comics_model.h"
#include "qnaturalsorting.h" #include "qnaturalsorting.h"
#include <QtScript> #include <QtScript>
bool lessThan(const QList<QString> & left, const QList<QString> & right) bool lessThan(const QList<QString> &left, const QList<QString> &right)
{ {
if ((left.count() > 0) && (right.count() > 0)) if ((left.count() > 0) && (right.count() > 0))
return naturalSortLessThanCI(left.at(0),right.at(0)); return naturalSortLessThanCI(left.at(0), right.at(0));
else else
return true; return true;
} }
VolumeComicsModel::VolumeComicsModel(QObject * parent) : VolumeComicsModel::VolumeComicsModel(QObject *parent)
JSONModel(parent),numExtraRows(0) : JSONModel(parent), numExtraRows(0)
{ {
} }
void VolumeComicsModel::load(const QString & json) void VolumeComicsModel::load(const QString &json)
{ {
QScriptEngine engine; QScriptEngine engine;
QScriptValue sc; QScriptValue sc;
sc = engine.evaluate("(" + json + ")"); sc = engine.evaluate("(" + json + ")");
if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") {
{
qDebug("Error detected"); qDebug("Error detected");
} } else {
else
{
QScriptValueIterator it(sc.property("results")); QScriptValueIterator it(sc.property("results"));
//bool test; //bool test;
QScriptValue resultsValue; QScriptValue resultsValue;
while (it.hasNext()) { while (it.hasNext()) {
it.next(); it.next();
if(it.flags() & QScriptValue::SkipInEnumeration) if (it.flags() & QScriptValue::SkipInEnumeration)
continue; continue;
resultsValue = it.value(); resultsValue = it.value();
QString issueNumber = resultsValue.property("issue_number").toString(); QString issueNumber = resultsValue.property("issue_number").toString();
@ -47,7 +43,7 @@ void VolumeComicsModel::load(const QString & json)
_data.push_back(l); _data.push_back(l);
} }
qSort(_data.begin(),_data.end(),lessThan); qSort(_data.begin(), _data.end(), lessThan);
} }
} }
@ -73,7 +69,7 @@ int VolumeComicsModel::rowCount(const QModelIndex &parent) const
int VolumeComicsModel::columnCount(const QModelIndex &parent) const int VolumeComicsModel::columnCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent) Q_UNUSED(parent)
if(_data.isEmpty()) if (_data.isEmpty())
return 0; return 0;
else else
return 2; return 2;
@ -87,13 +83,11 @@ QVariant VolumeComicsModel::data(const QModelIndex &index, int role) const
int row = index.row(); int row = index.row();
int column = index.column(); int column = index.column();
if (role == Qt::DecorationRole) if (role == Qt::DecorationRole) {
{
return QVariant(); return QVariant();
} }
if (role == Qt::TextAlignmentRole) if (role == Qt::TextAlignmentRole) {
{ switch (column) //TODO obtener esto de la query
switch(column)//TODO obtener esto de la query
{ {
case ISSUE: case ISSUE:
return QVariant(Qt::AlignRight | Qt::AlignVCenter); return QVariant(Qt::AlignRight | Qt::AlignVCenter);
@ -102,10 +96,10 @@ QVariant VolumeComicsModel::data(const QModelIndex &index, int role) const
} }
} }
if(role != Qt::DisplayRole) if (role != Qt::DisplayRole)
return QVariant(); return QVariant();
if(row<_data.count()) if (row < _data.count())
return _data[row][column]; return _data[row][column];
else else
return QVariant(); return QVariant();
@ -120,9 +114,8 @@ Qt::ItemFlags VolumeComicsModel::flags(const QModelIndex &index) const
QVariant VolumeComicsModel::headerData(int section, Qt::Orientation orientation, int role) const QVariant VolumeComicsModel::headerData(int section, Qt::Orientation orientation, int role) const
{ {
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
{ switch (section) //TODO obtener esto de la query
switch(section)//TODO obtener esto de la query
{ {
case ISSUE: case ISSUE:
return QVariant(QString("issue")); return QVariant(QString("issue"));
@ -131,9 +124,8 @@ QVariant VolumeComicsModel::headerData(int section, Qt::Orientation orientation,
} }
} }
if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) {
{ switch (section) //TODO obtener esto de la query
switch(section)//TODO obtener esto de la query
{ {
case ISSUE: case ISSUE:
return QVariant(Qt::AlignRight | Qt::AlignVCenter); return QVariant(Qt::AlignRight | Qt::AlignVCenter);
@ -156,14 +148,14 @@ QModelIndex VolumeComicsModel::index(int row, int column, const QModelIndex &par
QString VolumeComicsModel::getComicId(const QModelIndex &index) const QString VolumeComicsModel::getComicId(const QModelIndex &index) const
{ {
int row = index.row(); int row = index.row();
if(row >= _data.count()) if (row >= _data.count())
return ""; return "";
return _data[row][ID]; return _data[row][ID];
} }
QString VolumeComicsModel::getComicId(int row) const QString VolumeComicsModel::getComicId(int row) const
{ {
if(row >= _data.count()) if (row >= _data.count())
return ""; return "";
return _data[row][ID]; return _data[row][ID];
} }
@ -177,4 +169,3 @@ void VolumeComicsModel::addExtraRows(int numRows)
{ {
numExtraRows = numRows; numExtraRows = numRows;
} }

View File

@ -8,7 +8,7 @@ class VolumeComicsModel : public JSONModel
Q_OBJECT Q_OBJECT
public: public:
explicit VolumeComicsModel(QObject *parent = 0); explicit VolumeComicsModel(QObject *parent = 0);
void load(const QString & json); void load(const QString &json);
//void load(const QStringList & jsonList); //void load(const QStringList & jsonList);
QModelIndex parent(const QModelIndex &index) const; QModelIndex parent(const QModelIndex &index) const;
@ -29,7 +29,7 @@ public slots:
private: private:
int numExtraRows; int numExtraRows;
QList <QList <QString> > _data; QList<QList<QString>> _data;
enum Column { enum Column {
ISSUE = 0, ISSUE = 0,

View File

@ -2,9 +2,8 @@
#include <QtScript> #include <QtScript>
VolumesModel::VolumesModel(QObject *parent)
VolumesModel::VolumesModel(QObject *parent) : : JSONModel(parent)
JSONModel(parent)
{ {
} }
@ -19,12 +18,9 @@ void VolumesModel::load(const QString &json)
QScriptValue sc; QScriptValue sc;
sc = engine.evaluate("(" + json + ")"); sc = engine.evaluate("(" + json + ")");
if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") {
{
qDebug("Error detected"); qDebug("Error detected");
} } else {
else
{
int numResults = sc.property("number_of_total_results").toString().toInt(); //fix to weird behaviour using hasNext int numResults = sc.property("number_of_total_results").toString().toInt(); //fix to weird behaviour using hasNext
QScriptValueIterator it(sc.property("results")); QScriptValueIterator it(sc.property("results"));
bool test; bool test;
@ -42,7 +38,7 @@ void VolumesModel::load(const QString &json)
QStringList l; QStringList l;
l << name << year << numIssues << publisher << url << deck << id; l << name << year << numIssues << publisher << url << deck << id;
test = name.isEmpty() && year.isEmpty() && numIssues.isEmpty() && url.isEmpty(); test = name.isEmpty() && year.isEmpty() && numIssues.isEmpty() && url.isEmpty();
if(numResults>0 && !test) if (numResults > 0 && !test)
_data.push_back(l); _data.push_back(l);
numResults--; numResults--;
} }
@ -64,10 +60,10 @@ int VolumesModel::rowCount(const QModelIndex &parent) const
int VolumesModel::columnCount(const QModelIndex &parent) const int VolumesModel::columnCount(const QModelIndex &parent) const
{ {
Q_UNUSED(parent) Q_UNUSED(parent)
if(_data.isEmpty()) if (_data.isEmpty())
return 0; return 0;
else else
return 4;//_data.at(0)->count(); return 4; //_data.at(0)->count();
} }
QVariant VolumesModel::data(const QModelIndex &index, int role) const QVariant VolumesModel::data(const QModelIndex &index, int role) const
@ -75,18 +71,15 @@ QVariant VolumesModel::data(const QModelIndex &index, int role) const
if (!index.isValid()) if (!index.isValid())
return QVariant(); return QVariant();
if (role == Qt::DecorationRole) if (role == Qt::DecorationRole) {
{
return QVariant(); return QVariant();
} }
int row = index.row(); int row = index.row();
int column = index.column(); int column = index.column();
if (role == Qt::TextAlignmentRole) if (role == Qt::TextAlignmentRole) {
{ switch (column) {
switch(column)
{
case YEAR: case YEAR:
return QVariant(Qt::AlignRight | Qt::AlignVCenter); return QVariant(Qt::AlignRight | Qt::AlignVCenter);
case ISSUES: case ISSUES:
@ -96,15 +89,12 @@ QVariant VolumesModel::data(const QModelIndex &index, int role) const
} }
} }
if(role != Qt::DisplayRole) if (role != Qt::DisplayRole)
return QVariant(); return QVariant();
if (column == YEAR || column == ISSUES) if (column == YEAR || column == ISSUES) {
{
return _data[row][column].toInt(); return _data[row][column].toInt();
} } else {
else
{
return _data[row][column]; return _data[row][column];
} }
} }
@ -119,9 +109,8 @@ Qt::ItemFlags VolumesModel::flags(const QModelIndex &index) const
QVariant VolumesModel::headerData(int section, Qt::Orientation orientation, int role) const QVariant VolumesModel::headerData(int section, Qt::Orientation orientation, int role) const
{ {
if (orientation == Qt::Horizontal && role == Qt::DisplayRole) if (orientation == Qt::Horizontal && role == Qt::DisplayRole) {
{ switch (section) //TODO obtener esto de la query
switch(section)//TODO obtener esto de la query
{ {
case SERIES: case SERIES:
return QVariant(QString("series")); return QVariant(QString("series"));
@ -134,9 +123,8 @@ QVariant VolumesModel::headerData(int section, Qt::Orientation orientation, int
} }
} }
if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) if (orientation == Qt::Horizontal && role == Qt::TextAlignmentRole) {
{ switch (section) //TODO obtener esto de la query
switch(section)//TODO obtener esto de la query
{ {
case YEAR: case YEAR:
return QVariant(Qt::AlignRight | Qt::AlignVCenter); return QVariant(Qt::AlignRight | Qt::AlignVCenter);
@ -177,4 +165,3 @@ QString VolumesModel::getCoverURL(const QModelIndex &index) const
{ {
return _data[index.row()][COVER_URL]; return _data[index.row()][COVER_URL];
} }

View File

@ -10,7 +10,7 @@ public:
explicit VolumesModel(QObject *parent = 0); explicit VolumesModel(QObject *parent = 0);
virtual ~VolumesModel(); virtual ~VolumesModel();
//receive a valid json with a list of volumes //receive a valid json with a list of volumes
void load(const QString & json); void load(const QString &json);
//QAbstractItemModel methods //QAbstractItemModel methods
QModelIndex parent(const QModelIndex &index) const; QModelIndex parent(const QModelIndex &index) const;
@ -22,17 +22,17 @@ public:
int role = Qt::DisplayRole) const; int role = Qt::DisplayRole) const;
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QString getVolumeId(const QModelIndex & index) const; QString getVolumeId(const QModelIndex &index) const;
int getNumIssues(const QModelIndex & index) const; int getNumIssues(const QModelIndex &index) const;
QString getPublisher(const QModelIndex & index) const; QString getPublisher(const QModelIndex &index) const;
QString getCoverURL(const QModelIndex & index) const; QString getCoverURL(const QModelIndex &index) const;
signals: signals:
public slots: public slots:
private: private:
QList <QList <QString> > _data; QList<QList<QString>> _data;
public: public:
enum Column { enum Column {

View File

@ -1,15 +1,16 @@
#include "scraper_lineedit.h" #include "scraper_lineedit.h"
#include <QLabel> #include <QLabel>
ScraperLineEdit::ScraperLineEdit(const QString & title, QWidget * widget) ScraperLineEdit::ScraperLineEdit(const QString &title, QWidget *widget)
:QLineEdit(widget) : QLineEdit(widget)
{ {
titleLabel = new QLabel(title,this); titleLabel = new QLabel(title, this);
titleLabel->setStyleSheet("QLabel {color:white;}"); titleLabel->setStyleSheet("QLabel {color:white;}");
setStyleSheet(QString("QLineEdit {" setStyleSheet(QString("QLineEdit {"
"border:none; background-color: #2E2E2E; color : white; padding-left: %1; padding-bottom: 1px; margin-bottom: 0px;" "border:none; background-color: #2E2E2E; color : white; padding-left: %1; padding-bottom: 1px; margin-bottom: 0px;"
"}").arg(titleLabel->sizeHint().width()+6)); "}")
.arg(titleLabel->sizeHint().width() + 6));
setFixedHeight(22); setFixedHeight(22);
} }
@ -17,5 +18,5 @@ ScraperLineEdit::ScraperLineEdit(const QString & title, QWidget * widget)
void ScraperLineEdit::resizeEvent(QResizeEvent *) void ScraperLineEdit::resizeEvent(QResizeEvent *)
{ {
QSize szl = titleLabel->sizeHint(); QSize szl = titleLabel->sizeHint();
titleLabel->move(6,(rect().bottom() + 1 - szl.height())/2); titleLabel->move(6, (rect().bottom() + 1 - szl.height()) / 2);
} }

View File

@ -9,11 +9,13 @@ class ScraperLineEdit : public QLineEdit
{ {
Q_OBJECT Q_OBJECT
public: public:
ScraperLineEdit(const QString & title, QWidget * widget = 0); ScraperLineEdit(const QString &title, QWidget *widget = 0);
protected: protected:
void resizeEvent(QResizeEvent *); void resizeEvent(QResizeEvent *);
private: private:
QLabel * titleLabel; QLabel *titleLabel;
}; };
#endif // SCRAPPER_LINEEDIT_H #endif // SCRAPPER_LINEEDIT_H

View File

@ -6,11 +6,10 @@
#include <QToolButton> #include <QToolButton>
#include <QtScript> #include <QtScript>
ScraperResultsPaginator::ScraperResultsPaginator(QWidget *parent)
ScraperResultsPaginator::ScraperResultsPaginator(QWidget *parent) : : QWidget(parent), customLabel("items")
QWidget(parent),customLabel("items")
{ {
QHBoxLayout * pagesButtonsLayout = new QHBoxLayout; QHBoxLayout *pagesButtonsLayout = new QHBoxLayout;
QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}"; QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}";
@ -26,8 +25,8 @@ ScraperResultsPaginator::ScraperResultsPaginator(QWidget *parent) :
previousPage->setIconSize(pp.size()); previousPage->setIconSize(pp.size());
previousPage->setIcon(pp); previousPage->setIcon(pp);
connect(nextPage,SIGNAL(clicked()),this,SIGNAL(loadNextPage())); connect(nextPage, SIGNAL(clicked()), this, SIGNAL(loadNextPage()));
connect(previousPage,SIGNAL(clicked()),this,SIGNAL(loadPreviousPage())); connect(previousPage, SIGNAL(clicked()), this, SIGNAL(loadPreviousPage()));
numElements = new QLabel(tr("Number of volumes found : %1")); numElements = new QLabel(tr("Number of volumes found : %1"));
numElements->setStyleSheet(labelStylesheet); numElements->setStyleSheet(labelStylesheet);
@ -41,8 +40,8 @@ ScraperResultsPaginator::ScraperResultsPaginator(QWidget *parent) :
pagesButtonsLayout->addWidget(previousPage); pagesButtonsLayout->addWidget(previousPage);
pagesButtonsLayout->addWidget(nextPage); pagesButtonsLayout->addWidget(nextPage);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
pagesButtonsLayout->setContentsMargins(0,0,0,0); pagesButtonsLayout->setContentsMargins(0, 0, 0, 0);
setLayout(pagesButtonsLayout); setLayout(pagesButtonsLayout);
} }
@ -59,9 +58,9 @@ void ScraperResultsPaginator::update(const QString &json)
previousPage->setDisabled(currentPage == 1); previousPage->setDisabled(currentPage == 1);
nextPage->setDisabled(currentPage == rp.getTotalPages()); nextPage->setDisabled(currentPage == rp.getTotalPages());
numPages->setHidden(rp.getTotalPages()==1); numPages->setHidden(rp.getTotalPages() == 1);
previousPage->setHidden(rp.getTotalPages()==1); previousPage->setHidden(rp.getTotalPages() == 1);
nextPage->setHidden(rp.getTotalPages()==1); nextPage->setHidden(rp.getTotalPages() == 1);
} }
int ScraperResultsPaginator::getCurrentPage() int ScraperResultsPaginator::getCurrentPage()

View File

@ -11,9 +11,9 @@ class ScraperResultsPaginator : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ScraperResultsPaginator(QWidget *parent = 0); explicit ScraperResultsPaginator(QWidget *parent = 0);
void update(const QString & json); void update(const QString &json);
int getCurrentPage(); int getCurrentPage();
void setCustomLabel(const QString & label); void setCustomLabel(const QString &label);
signals: signals:
void loadNextPage(); void loadNextPage();
void loadPreviousPage(); void loadPreviousPage();
@ -21,10 +21,10 @@ signals:
public slots: public slots:
private: private:
QToolButton * nextPage; QToolButton *nextPage;
QToolButton * previousPage; QToolButton *previousPage;
QLabel * numElements; QLabel *numElements;
QLabel * numPages; QLabel *numPages;
int currentPage; int currentPage;

View File

@ -4,14 +4,14 @@
#include <QDesktopServices> #include <QDesktopServices>
#include <QUrl> #include <QUrl>
ScraperScrollLabel::ScraperScrollLabel(QWidget *parent) : ScraperScrollLabel::ScraperScrollLabel(QWidget *parent)
QScrollArea(parent) : QScrollArea(parent)
{ {
textLabel = new QLabel(this); textLabel = new QLabel(this);
textLabel->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }"); textLabel->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }");
textLabel->setWordWrap(true); textLabel->setWordWrap(true);
textLabel->setMinimumSize(168,12); textLabel->setMinimumSize(168, 12);
setWidget(textLabel); setWidget(textLabel);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@ -27,27 +27,26 @@ ScraperScrollLabel::ScraperScrollLabel(QWidget *parent) :
"QScrollBar::sub-line:horizontal { border: none; background: #404040; width: 10px; subcontrol-position: top; subcontrol-origin: margin; margin: 0 0 3px 0;}" "QScrollBar::sub-line:horizontal { border: none; background: #404040; width: 10px; subcontrol-position: top; subcontrol-origin: margin; margin: 0 0 3px 0;}"
"QScrollBar::up-arrow:vertical {border:none;width: 9px;height: 6px;background: url(':/images/folders_view/line-up.png') center top no-repeat;}" "QScrollBar::up-arrow:vertical {border:none;width: 9px;height: 6px;background: url(':/images/folders_view/line-up.png') center top no-repeat;}"
"QScrollBar::down-arrow:vertical {border:none;width: 9px;height: 6px;background: url(':/images/folders_view/line-down.png') center top no-repeat;}" "QScrollBar::down-arrow:vertical {border:none;width: 9px;height: 6px;background: url(':/images/folders_view/line-down.png') center top no-repeat;}"
"QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {background: none; }" "QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical, QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {background: none; }");
);
connect(textLabel,SIGNAL(linkActivated(QString)),this,SLOT(openLink(QString))); connect(textLabel, SIGNAL(linkActivated(QString)), this, SLOT(openLink(QString)));
} }
void ScraperScrollLabel::setAltText(const QString &text) void ScraperScrollLabel::setAltText(const QString &text)
{ {
textLabel->setAlignment(Qt::AlignTop|Qt::AlignHCenter); textLabel->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
textLabel->setText(text); textLabel->setText(text);
textLabel->adjustSize(); textLabel->adjustSize();
} }
void ScraperScrollLabel::setText(const QString &text) void ScraperScrollLabel::setText(const QString &text)
{ {
textLabel->setAlignment(Qt::AlignTop|Qt::AlignLeft); textLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
textLabel->setText(text); textLabel->setText(text);
textLabel->adjustSize(); textLabel->adjustSize();
} }
void ScraperScrollLabel::openLink(const QString & link) void ScraperScrollLabel::openLink(const QString &link)
{ {
QDesktopServices::openUrl(QUrl("http://www.comicvine.com"+link)); QDesktopServices::openUrl(QUrl("http://www.comicvine.com" + link));
} }

View File

@ -14,12 +14,13 @@ public:
signals: signals:
public slots: public slots:
void setText(const QString & text); void setText(const QString &text);
void setAltText(const QString &text); void setAltText(const QString &text);
void openLink(const QString &link); void openLink(const QString &link);
private: private:
QLabel * textLabel; QLabel *textLabel;
}; };
#endif // SCRAPER_SCROLL_LABEL_H #endif // SCRAPER_SCROLL_LABEL_H

View File

@ -1,11 +1,11 @@
#include "scraper_selector.h" #include "scraper_selector.h"
ScraperSelector::ScraperSelector(QWidget *parent) : ScraperSelector::ScraperSelector(QWidget *parent)
QWidget(parent) : QWidget(parent)
{ {
paginator = new ScraperResultsPaginator; paginator = new ScraperResultsPaginator;
connect(paginator,SIGNAL(loadNextPage()),this,SLOT(loadNextPage())); connect(paginator, SIGNAL(loadNextPage()), this, SLOT(loadNextPage()));
connect(paginator,SIGNAL(loadPreviousPage()),this,SLOT(loadPreviousPage())); connect(paginator, SIGNAL(loadPreviousPage()), this, SLOT(loadPreviousPage()));
} }
void ScraperSelector::load(const QString &json, const QString &searchString) void ScraperSelector::load(const QString &json, const QString &searchString)
@ -16,10 +16,10 @@ void ScraperSelector::load(const QString &json, const QString &searchString)
void ScraperSelector::loadNextPage() void ScraperSelector::loadNextPage()
{ {
emit loadPage(currentSearchString,paginator->getCurrentPage()+1); emit loadPage(currentSearchString, paginator->getCurrentPage() + 1);
} }
void ScraperSelector::loadPreviousPage() void ScraperSelector::loadPreviousPage()
{ {
emit loadPage(currentSearchString,paginator->getCurrentPage()-1); emit loadPage(currentSearchString, paginator->getCurrentPage() - 1);
} }

View File

@ -10,11 +10,11 @@ class ScraperSelector : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ScraperSelector(QWidget *parent = 0); explicit ScraperSelector(QWidget *parent = 0);
virtual void load(const QString & json, const QString & searchString); virtual void load(const QString &json, const QString &searchString);
public slots: public slots:
signals: signals:
void loadPage(QString,int); void loadPage(QString, int);
private slots: private slots:
void loadNextPage(); void loadNextPage();
@ -22,7 +22,7 @@ private slots:
protected: protected:
QString currentSearchString; QString currentSearchString;
ScraperResultsPaginator * paginator; ScraperResultsPaginator *paginator;
}; };
#endif // SCRAPER_SELECTOR_H #endif // SCRAPER_SELECTOR_H

View File

@ -2,8 +2,8 @@
#include <QHeaderView> #include <QHeaderView>
ScraperTableView::ScraperTableView(QWidget *parent) : ScraperTableView::ScraperTableView(QWidget *parent)
QTableView(parent) : QTableView(parent)
{ {
QString tableStylesheet = "QTableView {color:white; border:0px;alternate-background-color: #2E2E2E;background-color: #2B2B2B; outline: 0px;}" QString tableStylesheet = "QTableView {color:white; border:0px;alternate-background-color: #2E2E2E;background-color: #2B2B2B; outline: 0px;}"
"QTableView::item {outline: 0px; border: 0px; color:#FFFFFF;}" "QTableView::item {outline: 0px; border: 0px; color:#FFFFFF;}"

View File

@ -12,7 +12,6 @@ public:
signals: signals:
public slots: public slots:
}; };
#endif // SCRAPPER_TABLEVIEW_H #endif // SCRAPPER_TABLEVIEW_H

View File

@ -6,12 +6,12 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>
SearchSingleComic::SearchSingleComic(QWidget * parent) SearchSingleComic::SearchSingleComic(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
//QLabel * label = new QLabel(tr("Please provide some additional information. At least one field is needed.")); //QLabel * label = new QLabel(tr("Please provide some additional information. At least one field is needed."));
QLabel * label = new QLabel(tr("Please provide some additional information.")); QLabel *label = new QLabel(tr("Please provide some additional information."));
label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
//titleEdit = new ScraperLineEdit(tr("Title:")); //titleEdit = new ScraperLineEdit(tr("Title:"));
@ -20,7 +20,7 @@ SearchSingleComic::SearchSingleComic(QWidget * parent)
//numberEdit->setMaximumWidth(126); //numberEdit->setMaximumWidth(126);
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
//QHBoxLayout * hl = new QHBoxLayout; //QHBoxLayout * hl = new QHBoxLayout;
//hl->addWidget(titleEdit); //hl->addWidget(titleEdit);
//hl->addWidget(numberEdit); //hl->addWidget(numberEdit);
@ -31,9 +31,9 @@ SearchSingleComic::SearchSingleComic(QWidget * parent)
l->addWidget(volumeEdit); l->addWidget(volumeEdit);
l->addStretch(); l->addStretch();
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
} }
QString SearchSingleComic::getVolumeInfo() QString SearchSingleComic::getVolumeInfo()

View File

@ -9,14 +9,15 @@ class SearchSingleComic : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
SearchSingleComic(QWidget * parent = 0); SearchSingleComic(QWidget *parent = 0);
QString getVolumeInfo(); QString getVolumeInfo();
QString getComicInfo(); QString getComicInfo();
int getComicNumber(); int getComicNumber();
void clean(); void clean();
private: private:
ScraperLineEdit * titleEdit; ScraperLineEdit *titleEdit;
ScraperLineEdit * numberEdit; ScraperLineEdit *numberEdit;
ScraperLineEdit * volumeEdit; ScraperLineEdit *volumeEdit;
}; };
#endif // SEARCH_SINGLE_COMIC_H #endif // SEARCH_SINGLE_COMIC_H

View File

@ -5,24 +5,24 @@
#include <QLabel> #include <QLabel>
#include <QVBoxLayout> #include <QVBoxLayout>
SearchVolume::SearchVolume(QWidget * parent) SearchVolume::SearchVolume(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
QLabel * label = new QLabel(tr("Please provide some additional information.")); QLabel *label = new QLabel(tr("Please provide some additional information."));
label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); label->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
volumeEdit = new ScraperLineEdit(tr("Series:")); volumeEdit = new ScraperLineEdit(tr("Series:"));
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
l->addSpacing(35); l->addSpacing(35);
l->addWidget(label); l->addWidget(label);
l->addWidget(volumeEdit); l->addWidget(volumeEdit);
l->addStretch(); l->addStretch();
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
} }
void SearchVolume::clean() void SearchVolume::clean()

View File

@ -5,17 +5,17 @@
class ScraperLineEdit; class ScraperLineEdit;
class SearchVolume : public QWidget class SearchVolume : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
SearchVolume(QWidget * parent = 0); SearchVolume(QWidget *parent = 0);
void clean(); void clean();
public slots: public slots:
QString getVolumeInfo(); QString getVolumeInfo();
private: private:
ScraperLineEdit * volumeEdit; ScraperLineEdit *volumeEdit;
}; };
#endif // SEARCH_VOLUME_H #endif // SEARCH_VOLUME_H

View File

@ -10,76 +10,76 @@
#include <QtScript> #include <QtScript>
SelectComic::SelectComic(QWidget *parent) SelectComic::SelectComic(QWidget *parent)
:ScraperSelector(parent),model(0) : ScraperSelector(parent), model(0)
{ {
QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}"; QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}";
QLabel * label = new QLabel(tr("Please, select the right comic info.")); QLabel *label = new QLabel(tr("Please, select the right comic info."));
label->setStyleSheet(labelStylesheet); label->setStyleSheet(labelStylesheet);
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
QWidget * leftWidget = new QWidget; QWidget *leftWidget = new QWidget;
QVBoxLayout * left = new QVBoxLayout; QVBoxLayout *left = new QVBoxLayout;
QGridLayout * content = new QGridLayout; QGridLayout *content = new QGridLayout;
//widgets //widgets
cover = new QLabel(); cover = new QLabel();
cover->setScaledContents(true); cover->setScaledContents(true);
cover->setAlignment(Qt::AlignTop|Qt::AlignHCenter); cover->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
cover->setMinimumSize(168,168*5.0/3); cover->setMinimumSize(168, 168 * 5.0 / 3);
cover->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }"); cover->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }");
detailLabel = new ScraperScrollLabel(this); detailLabel = new ScraperScrollLabel(this);
tableComics = new ScraperTableView(this); tableComics = new ScraperTableView(this);
//connections //connections
connect(tableComics,SIGNAL(clicked(QModelIndex)),this,SLOT(loadComicInfo(QModelIndex))); connect(tableComics, SIGNAL(clicked(QModelIndex)), this, SLOT(loadComicInfo(QModelIndex)));
paginator->setCustomLabel(tr("comics")); paginator->setCustomLabel(tr("comics"));
left->addWidget(cover); left->addWidget(cover);
left->addWidget(detailLabel,1); left->addWidget(detailLabel, 1);
leftWidget->setMaximumWidth(180); leftWidget->setMaximumWidth(180);
leftWidget->setLayout(left); leftWidget->setLayout(left);
left->setContentsMargins(0,0,0,0); left->setContentsMargins(0, 0, 0, 0);
leftWidget->setContentsMargins(0,0,0,0); leftWidget->setContentsMargins(0, 0, 0, 0);
content->addWidget(leftWidget, 0, 0); content->addWidget(leftWidget, 0, 0);
content->addWidget(tableComics, 0, 1); content->addWidget(tableComics, 0, 1);
content->addWidget(paginator, 1, 1); content->addWidget(paginator, 1, 1);
content->setColumnStretch(1, 1); content->setColumnStretch(1, 1);
content->setRowStretch(0, 1);; content->setRowStretch(0, 1);
;
l->addSpacing(15); l->addSpacing(15);
l->addWidget(label); l->addWidget(label);
l->addSpacing(5); l->addSpacing(5);
l->addLayout(content); l->addLayout(content);
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
} }
void SelectComic::load(const QString &json, const QString & searchString) void SelectComic::load(const QString &json, const QString &searchString)
{ {
VolumeComicsModel * tempM = new VolumeComicsModel(); VolumeComicsModel *tempM = new VolumeComicsModel();
tempM->load(json); tempM->load(json);
tableComics->setModel(tempM); tableComics->setModel(tempM);
if(model != 0) if (model != 0)
delete model; delete model;
model = tempM; model = tempM;
if(model->rowCount()>0) if (model->rowCount() > 0) {
{
tableComics->selectRow(0); tableComics->selectRow(0);
loadComicInfo(model->index(0,0)); loadComicInfo(model->index(0, 0));
} }
tableComics->resizeColumnToContents(0); tableComics->resizeColumnToContents(0);
ScraperSelector::load(json,searchString); ScraperSelector::load(json, searchString);
} }
SelectComic::~SelectComic() {} SelectComic::~SelectComic() {}
@ -93,18 +93,18 @@ void SelectComic::loadComicInfo(const QModelIndex &mi)
cover->setText(loadingStyle.arg(tr("loading cover"))); cover->setText(loadingStyle.arg(tr("loading cover")));
detailLabel->setAltText(loadingStyle.arg(tr("loading description"))); detailLabel->setAltText(loadingStyle.arg(tr("loading description")));
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
connect(comicVineClient,SIGNAL(comicCover(const QByteArray &)),this,SLOT(setCover(const QByteArray &))); connect(comicVineClient, SIGNAL(comicCover(const QByteArray &)), this, SLOT(setCover(const QByteArray &)));
connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); connect(comicVineClient, SIGNAL(finished()), comicVineClient, SLOT(deleteLater()));
comicVineClient->getComicCover(coverURL); comicVineClient->getComicCover(coverURL);
ComicVineClient * comicVineClient2 = new ComicVineClient; ComicVineClient *comicVineClient2 = new ComicVineClient;
connect(comicVineClient2,SIGNAL(comicDetail(QString)),this,SLOT(setDescription(QString))); connect(comicVineClient2, SIGNAL(comicDetail(QString)), this, SLOT(setDescription(QString)));
connect(comicVineClient2,SIGNAL(finished()),comicVineClient2,SLOT(deleteLater())); connect(comicVineClient2, SIGNAL(finished()), comicVineClient2, SLOT(deleteLater()));
comicVineClient2->getComicDetailAsync(id); comicVineClient2->getComicDetailAsync(id);
} }
void SelectComic::setCover(const QByteArray & data) void SelectComic::setCover(const QByteArray &data)
{ {
QPixmap p; QPixmap p;
p.loadFromData(data); p.loadFromData(data);
@ -112,9 +112,9 @@ void SelectComic::setCover(const QByteArray & data)
int h = p.height(); int h = p.height();
cover->setPixmap(p); cover->setPixmap(p);
float aspectRatio = static_cast<float>(w)/h; float aspectRatio = static_cast<float>(w) / h;
cover->setFixedSize(180,static_cast<int>(180/aspectRatio)); cover->setFixedSize(180, static_cast<int>(180 / aspectRatio));
cover->update(); cover->update();
} }
@ -125,16 +125,13 @@ void SelectComic::setDescription(const QString &jsonDetail)
QScriptValue sc; QScriptValue sc;
sc = engine.evaluate("(" + jsonDetail + ")"); sc = engine.evaluate("(" + jsonDetail + ")");
if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") {
{
qDebug("Error detected"); qDebug("Error detected");
} } else {
else
{
QScriptValue descriptionValues = sc.property("results").property("description"); QScriptValue descriptionValues = sc.property("results").property("description");
bool valid = !descriptionValues.isNull() && descriptionValues.isValid(); bool valid = !descriptionValues.isNull() && descriptionValues.isValid();
detailLabel->setText(valid?descriptionValues.toString().replace("<a","<a style = 'color:#827A68; text-decoration:none;'"):tr("description unavailable")); detailLabel->setText(valid ? descriptionValues.toString().replace("<a", "<a style = 'color:#827A68; text-decoration:none;'") : tr("description unavailable"));
} }
} }

View File

@ -14,21 +14,21 @@ class SelectComic : public ScraperSelector
{ {
Q_OBJECT Q_OBJECT
public: public:
SelectComic(QWidget * parent = 0); SelectComic(QWidget *parent = 0);
void load(const QString & json, const QString & searchString); void load(const QString &json, const QString &searchString);
virtual ~SelectComic(); virtual ~SelectComic();
public slots: public slots:
void loadComicInfo(const QModelIndex & mi); void loadComicInfo(const QModelIndex &mi);
void setCover(const QByteArray &); void setCover(const QByteArray &);
void setDescription(const QString & jsonDetail); void setDescription(const QString &jsonDetail);
QString getSelectedComicId(); QString getSelectedComicId();
private: private:
QLabel * cover; QLabel *cover;
ScraperScrollLabel * detailLabel; ScraperScrollLabel *detailLabel;
ScraperTableView * tableComics; ScraperTableView *tableComics;
VolumeComicsModel * model; VolumeComicsModel *model;
}; };
#endif // SELECT_COMIC_H #endif // SELECT_COMIC_H

View File

@ -23,25 +23,25 @@
#include "scraper_results_paginator.h" #include "scraper_results_paginator.h"
SelectVolume::SelectVolume(QWidget *parent) SelectVolume::SelectVolume(QWidget *parent)
:ScraperSelector(parent),model(0) : ScraperSelector(parent), model(0)
{ {
proxyModel = new QSortFilterProxyModel; proxyModel = new QSortFilterProxyModel;
QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}"; QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}";
QLabel * label = new QLabel(tr("Please, select the right series for your comic.")); QLabel *label = new QLabel(tr("Please, select the right series for your comic."));
label->setStyleSheet(labelStylesheet); label->setStyleSheet(labelStylesheet);
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
QWidget * leftWidget = new QWidget; QWidget *leftWidget = new QWidget;
QVBoxLayout * left = new QVBoxLayout; QVBoxLayout *left = new QVBoxLayout;
QGridLayout * content = new QGridLayout; QGridLayout *content = new QGridLayout;
//widgets //widgets
cover = new QLabel(); cover = new QLabel();
cover->setScaledContents(true); cover->setScaledContents(true);
cover->setAlignment(Qt::AlignTop|Qt::AlignHCenter); cover->setAlignment(Qt::AlignTop | Qt::AlignHCenter);
cover->setMinimumSize(168,168*5.0/3); cover->setMinimumSize(168, 168 * 5.0 / 3);
cover->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }"); cover->setStyleSheet("QLabel {background-color: #2B2B2B; color:white; font-size:12px; font-family:Arial; }");
detailLabel = new ScraperScrollLabel(); detailLabel = new ScraperScrollLabel();
@ -53,18 +53,18 @@ SelectVolume::SelectVolume(QWidget *parent)
tableVolumes->horizontalHeader()->setClickable(true); tableVolumes->horizontalHeader()->setClickable(true);
#endif #endif
//tableVolumes->horizontalHeader()->setSortIndicatorShown(false); //tableVolumes->horizontalHeader()->setSortIndicatorShown(false);
connect(tableVolumes->horizontalHeader(),SIGNAL(sectionClicked(int)), tableVolumes, SLOT(sortByColumn(int))); connect(tableVolumes->horizontalHeader(), SIGNAL(sectionClicked(int)), tableVolumes, SLOT(sortByColumn(int)));
//connections //connections
connect(tableVolumes,SIGNAL(clicked(QModelIndex)),this,SLOT(loadVolumeInfo(QModelIndex))); connect(tableVolumes, SIGNAL(clicked(QModelIndex)), this, SLOT(loadVolumeInfo(QModelIndex)));
paginator->setCustomLabel(tr("volumes")); paginator->setCustomLabel(tr("volumes"));
left->addWidget(cover); left->addWidget(cover);
left->addWidget(detailLabel,1); left->addWidget(detailLabel, 1);
leftWidget->setMaximumWidth(180); leftWidget->setMaximumWidth(180);
leftWidget->setLayout(left); leftWidget->setLayout(left);
left->setContentsMargins(0,0,0,0); left->setContentsMargins(0, 0, 0, 0);
leftWidget->setContentsMargins(0,0,0,0); leftWidget->setContentsMargins(0, 0, 0, 0);
content->addWidget(leftWidget, 0, 0); content->addWidget(leftWidget, 0, 0);
content->addWidget(tableVolumes, 0, 1); content->addWidget(tableVolumes, 0, 1);
@ -78,41 +78,40 @@ SelectVolume::SelectVolume(QWidget *parent)
l->addSpacing(5); l->addSpacing(5);
l->addLayout(content); l->addLayout(content);
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
} }
void SelectVolume::load(const QString & json, const QString & searchString) void SelectVolume::load(const QString &json, const QString &searchString)
{ {
VolumesModel * tempM = new VolumesModel(); VolumesModel *tempM = new VolumesModel();
tempM->load(json); tempM->load(json);
//tableVolumes->setModel(tempM); //tableVolumes->setModel(tempM);
proxyModel->setSourceModel( tempM ); proxyModel->setSourceModel(tempM);
tableVolumes->setModel(proxyModel); tableVolumes->setModel(proxyModel);
tableVolumes->sortByColumn(0,Qt::AscendingOrder); tableVolumes->sortByColumn(0, Qt::AscendingOrder);
tableVolumes->resizeColumnsToContents(); tableVolumes->resizeColumnsToContents();
if(model != 0) if (model != 0)
delete model; delete model;
model = tempM; model = tempM;
if(model->rowCount()>0) if (model->rowCount() > 0) {
{
tableVolumes->selectRow(0); tableVolumes->selectRow(0);
loadVolumeInfo(proxyModel->index(0,0)); loadVolumeInfo(proxyModel->index(0, 0));
} }
tableVolumes->setColumnWidth(0,350); tableVolumes->setColumnWidth(0, 350);
ScraperSelector::load(json,searchString); ScraperSelector::load(json, searchString);
} }
SelectVolume::~SelectVolume() {} SelectVolume::~SelectVolume() {}
void SelectVolume::loadVolumeInfo(const QModelIndex & omi) void SelectVolume::loadVolumeInfo(const QModelIndex &omi)
{ {
QModelIndex mi = proxyModel->mapToSource(omi); QModelIndex mi = proxyModel->mapToSource(omi);
QString coverURL = model->getCoverURL(mi); QString coverURL = model->getCoverURL(mi);
@ -122,18 +121,18 @@ void SelectVolume::loadVolumeInfo(const QModelIndex & omi)
cover->setText(loadingStyle.arg(tr("loading cover"))); cover->setText(loadingStyle.arg(tr("loading cover")));
detailLabel->setAltText(loadingStyle.arg(tr("loading description"))); detailLabel->setAltText(loadingStyle.arg(tr("loading description")));
ComicVineClient * comicVineClient = new ComicVineClient; ComicVineClient *comicVineClient = new ComicVineClient;
connect(comicVineClient,SIGNAL(seriesCover(const QByteArray &)),this,SLOT(setCover(const QByteArray &))); connect(comicVineClient, SIGNAL(seriesCover(const QByteArray &)), this, SLOT(setCover(const QByteArray &)));
connect(comicVineClient,SIGNAL(finished()),comicVineClient,SLOT(deleteLater())); connect(comicVineClient, SIGNAL(finished()), comicVineClient, SLOT(deleteLater()));
comicVineClient->getSeriesCover(coverURL); comicVineClient->getSeriesCover(coverURL);
ComicVineClient * comicVineClient2 = new ComicVineClient; ComicVineClient *comicVineClient2 = new ComicVineClient;
connect(comicVineClient2,SIGNAL(seriesDetail(QString)),this,SLOT(setDescription(QString))); connect(comicVineClient2, SIGNAL(seriesDetail(QString)), this, SLOT(setDescription(QString)));
connect(comicVineClient2,SIGNAL(finished()),comicVineClient2,SLOT(deleteLater())); connect(comicVineClient2, SIGNAL(finished()), comicVineClient2, SLOT(deleteLater()));
comicVineClient2->getSeriesDetail(id); comicVineClient2->getSeriesDetail(id);
} }
void SelectVolume::setCover(const QByteArray & data) void SelectVolume::setCover(const QByteArray &data)
{ {
QPixmap p; QPixmap p;
p.loadFromData(data); p.loadFromData(data);
@ -141,29 +140,26 @@ void SelectVolume::setCover(const QByteArray & data)
int h = p.height(); int h = p.height();
cover->setPixmap(p); cover->setPixmap(p);
float aspectRatio = static_cast<float>(w)/h; float aspectRatio = static_cast<float>(w) / h;
cover->setFixedSize(180,static_cast<int>(180/aspectRatio)); cover->setFixedSize(180, static_cast<int>(180 / aspectRatio));
cover->update(); cover->update();
} }
void SelectVolume::setDescription(const QString & jsonDetail) void SelectVolume::setDescription(const QString &jsonDetail)
{ {
QScriptEngine engine; QScriptEngine engine;
QScriptValue sc; QScriptValue sc;
sc = engine.evaluate("(" + jsonDetail + ")"); sc = engine.evaluate("(" + jsonDetail + ")");
if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") if (!sc.property("error").isValid() && sc.property("error").toString() != "OK") {
{
qDebug("Error detected"); qDebug("Error detected");
} } else {
else
{
QScriptValue descriptionValues = sc.property("results").property("description"); QScriptValue descriptionValues = sc.property("results").property("description");
bool valid = !descriptionValues.isNull() && descriptionValues.isValid(); bool valid = !descriptionValues.isNull() && descriptionValues.isValid();
detailLabel->setText(valid?descriptionValues.toString().replace("<a","<a style = 'color:#827A68; text-decoration:none;'"):tr("description unavailable")); detailLabel->setText(valid ? descriptionValues.toString().replace("<a", "<a style = 'color:#827A68; text-decoration:none;'") : tr("description unavailable"));
} }
} }
@ -181,5 +177,3 @@ QString SelectVolume::getSelectedVolumePublisher()
{ {
return model->getPublisher(proxyModel->mapToSource(tableVolumes->currentIndex())); return model->getPublisher(proxyModel->mapToSource(tableVolumes->currentIndex()));
} }

View File

@ -16,24 +16,24 @@ class SelectVolume : public ScraperSelector
{ {
Q_OBJECT Q_OBJECT
public: public:
SelectVolume(QWidget * parent = 0); SelectVolume(QWidget *parent = 0);
void load(const QString & json, const QString & searchString); void load(const QString &json, const QString &searchString);
virtual ~SelectVolume(); virtual ~SelectVolume();
public slots: public slots:
void loadVolumeInfo(const QModelIndex & mi); void loadVolumeInfo(const QModelIndex &mi);
void setCover(const QByteArray &); void setCover(const QByteArray &);
void setDescription(const QString & jsonDetail); void setDescription(const QString &jsonDetail);
QString getSelectedVolumeId(); QString getSelectedVolumeId();
int getSelectedVolumeNumIssues(); int getSelectedVolumeNumIssues();
QString getSelectedVolumePublisher(); QString getSelectedVolumePublisher();
private: private:
QLabel * cover; QLabel *cover;
ScraperScrollLabel * detailLabel; ScraperScrollLabel *detailLabel;
ScraperTableView * tableVolumes; ScraperTableView *tableVolumes;
VolumesModel * model; VolumesModel *model;
QSortFilterProxyModel * proxyModel; QSortFilterProxyModel *proxyModel;
}; };
#endif // SELECT_VOLUME_H #endif // SELECT_VOLUME_H

View File

@ -4,13 +4,12 @@
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QLabel> #include <QLabel>
SeriesQuestion::SeriesQuestion(QWidget *parent)
SeriesQuestion::SeriesQuestion(QWidget * parent) : QWidget(parent)
:QWidget(parent)
{ {
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
QLabel * questionLabel = new QLabel(tr("You are trying to get information for various comics at once, are they part of the same series?")); QLabel *questionLabel = new QLabel(tr("You are trying to get information for various comics at once, are they part of the same series?"));
questionLabel->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); questionLabel->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
yes = new QRadioButton(tr("yes")); yes = new QRadioButton(tr("yes"));
no = new QRadioButton(tr("no")); no = new QRadioButton(tr("no"));
@ -30,9 +29,9 @@ SeriesQuestion::SeriesQuestion(QWidget * parent)
l->addWidget(no); l->addWidget(no);
l->addStretch(); l->addStretch();
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
} }
bool SeriesQuestion::getYes() bool SeriesQuestion::getYes()

View File

@ -10,14 +10,13 @@ class SeriesQuestion : public QWidget
Q_OBJECT Q_OBJECT
public: public:
SeriesQuestion(QWidget * parent = 0); SeriesQuestion(QWidget *parent = 0);
bool getYes(); bool getYes();
void setYes(bool yes = true); void setYes(bool yes = true);
private: private:
QRadioButton * yes; QRadioButton *yes;
QRadioButton * no; QRadioButton *no;
}; };
#endif // SERIES_QUESTION_H #endif // SERIES_QUESTION_H

View File

@ -10,15 +10,15 @@
#include "local_comic_list_model.h" #include "local_comic_list_model.h"
#include "volume_comics_model.h" #include "volume_comics_model.h"
SortVolumeComics::SortVolumeComics(QWidget *parent) : SortVolumeComics::SortVolumeComics(QWidget *parent)
ScraperSelector(parent) : ScraperSelector(parent)
{ {
QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}"; QString labelStylesheet = "QLabel {color:white; font-size:12px;font-family:Arial;}";
QLabel * label = new QLabel(tr("Please, sort the list of comics on the left until it matches the comics' information.")); QLabel *label = new QLabel(tr("Please, sort the list of comics on the left until it matches the comics' information."));
label->setStyleSheet(labelStylesheet); label->setStyleSheet(labelStylesheet);
QLabel * sortLabel = new QLabel(tr("sort comics to match comic information")); QLabel *sortLabel = new QLabel(tr("sort comics to match comic information"));
sortLabel->setStyleSheet(labelStylesheet); sortLabel->setStyleSheet(labelStylesheet);
moveUpButtonCL = new ScrapperToolButton(ScrapperToolButton::LEFT); moveUpButtonCL = new ScrapperToolButton(ScrapperToolButton::LEFT);
@ -32,14 +32,14 @@ SortVolumeComics::SortVolumeComics(QWidget *parent) :
//moveDownButtonIL = new ScrapperToolButton(ScrapperToolButton::RIGHT); //moveDownButtonIL = new ScrapperToolButton(ScrapperToolButton::RIGHT);
//moveDownButtonIL->setIcon(QIcon(":/images/comic_vine/rowDown.png")); //moveDownButtonIL->setIcon(QIcon(":/images/comic_vine/rowDown.png"));
connect(moveUpButtonCL,SIGNAL(clicked()),this,SLOT(moveUpCL())); connect(moveUpButtonCL, SIGNAL(clicked()), this, SLOT(moveUpCL()));
connect(moveDownButtonCL,SIGNAL(clicked()),this,SLOT(moveDownCL())); connect(moveDownButtonCL, SIGNAL(clicked()), this, SLOT(moveDownCL()));
//connect(moveUpButtonIL,SIGNAL(clicked()),this,SLOT(moveUpIL())); //connect(moveUpButtonIL,SIGNAL(clicked()),this,SLOT(moveUpIL()));
//connect(moveUpButtonIL,SIGNAL(clicked()),this,SLOT(moveDownIL())); //connect(moveUpButtonIL,SIGNAL(clicked()),this,SLOT(moveDownIL()));
QVBoxLayout * l = new QVBoxLayout; QVBoxLayout *l = new QVBoxLayout;
QGridLayout * content = new QGridLayout; QGridLayout *content = new QGridLayout;
QHBoxLayout * sortButtonsLayout = new QHBoxLayout; QHBoxLayout *sortButtonsLayout = new QHBoxLayout;
tableFiles = new ScraperTableView(); tableFiles = new ScraperTableView();
tableVolumeComics = new ScraperTableView(); tableVolumeComics = new ScraperTableView();
@ -79,13 +79,13 @@ SortVolumeComics::SortVolumeComics(QWidget *parent) :
l->addLayout(content, 1); l->addLayout(content, 1);
l->addLayout(sortButtonsLayout, 0); l->addLayout(sortButtonsLayout, 0);
l->setContentsMargins(0,0,0,0); l->setContentsMargins(0, 0, 0, 0);
setLayout(l); setLayout(l);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
//rows actions //rows actions
QAction * removeItemFromList = new QAction(tr("remove selected comics"),this); QAction *removeItemFromList = new QAction(tr("remove selected comics"), this);
QAction * restoreAllItems = new QAction(tr("restore all removed comics"),this); QAction *restoreAllItems = new QAction(tr("restore all removed comics"), this);
//QAction * restoreItems = new QAction(tr("restore removed comics"),this); //QAction * restoreItems = new QAction(tr("restore removed comics"),this);
tableFiles->setContextMenuPolicy(Qt::ActionsContextMenu); tableFiles->setContextMenuPolicy(Qt::ActionsContextMenu);
@ -93,12 +93,12 @@ SortVolumeComics::SortVolumeComics(QWidget *parent) :
tableFiles->addAction(restoreAllItems); tableFiles->addAction(restoreAllItems);
//tableFiles->addAction(restoreItems); //tableFiles->addAction(restoreItems);
connect(removeItemFromList,SIGNAL(triggered()),this,SLOT(removeSelectedComics())); connect(removeItemFromList, SIGNAL(triggered()), this, SLOT(removeSelectedComics()));
connect(restoreAllItems,SIGNAL(triggered()),this,SLOT(restoreAllComics())); connect(restoreAllItems, SIGNAL(triggered()), this, SLOT(restoreAllComics()));
//connect(restoreItems,SIGNAL(triggered()),this,SLOT(showRemovedComicsSelector())); //connect(restoreItems,SIGNAL(triggered()),this,SLOT(showRemovedComicsSelector()));
} }
void SortVolumeComics::setData(QList<ComicDB> & comics, const QString &json, const QString &vID) void SortVolumeComics::setData(QList<ComicDB> &comics, const QString &json, const QString &vID)
{ {
//set up models //set up models
localComicsModel = new LocalComicListModel; localComicsModel = new LocalComicListModel;
@ -110,9 +110,9 @@ void SortVolumeComics::setData(QList<ComicDB> & comics, const QString &json, con
int numLocalComics = localComicsModel->rowCount(); int numLocalComics = localComicsModel->rowCount();
int numVolumeComics = volumeComicsModel->rowCount(); int numVolumeComics = volumeComicsModel->rowCount();
if(numLocalComics > numVolumeComics) if (numLocalComics > numVolumeComics)
volumeComicsModel->addExtraRows(numLocalComics - numVolumeComics); volumeComicsModel->addExtraRows(numLocalComics - numVolumeComics);
if(numLocalComics < numVolumeComics) if (numLocalComics < numVolumeComics)
localComicsModel->addExtraRows(numVolumeComics - numLocalComics); localComicsModel->addExtraRows(numVolumeComics - numLocalComics);
tableFiles->setModel(localComicsModel); tableFiles->setModel(localComicsModel);
@ -120,28 +120,25 @@ void SortVolumeComics::setData(QList<ComicDB> & comics, const QString &json, con
tableVolumeComics->resizeColumnToContents(0); tableVolumeComics->resizeColumnToContents(0);
ScraperSelector::load(json,vID); ScraperSelector::load(json, vID);
} }
void SortVolumeComics::synchronizeScroll(int pos) void SortVolumeComics::synchronizeScroll(int pos)
{ {
void * senderObject = sender(); void *senderObject = sender();
if(senderObject == 0) //invalid call if (senderObject == 0) //invalid call
return; return;
QScrollBar * tableVolumeComicsScrollBar = tableVolumeComics->verticalScrollBar(); QScrollBar *tableVolumeComicsScrollBar = tableVolumeComics->verticalScrollBar();
QScrollBar * tableFilesScrollBar = tableFiles->verticalScrollBar(); QScrollBar *tableFilesScrollBar = tableFiles->verticalScrollBar();
if(senderObject == tableVolumeComicsScrollBar) if (senderObject == tableVolumeComicsScrollBar) {
{ disconnect(tableFilesScrollBar, SIGNAL(valueChanged(int)), this, 0);
disconnect(tableFilesScrollBar,SIGNAL(valueChanged(int)),this,0);
tableFilesScrollBar->setValue(pos); tableFilesScrollBar->setValue(pos);
connect(tableFilesScrollBar, SIGNAL(valueChanged(int)), this, SLOT(synchronizeScroll(int))); connect(tableFilesScrollBar, SIGNAL(valueChanged(int)), this, SLOT(synchronizeScroll(int)));
} } else {
else disconnect(tableVolumeComicsScrollBar, SIGNAL(valueChanged(int)), this, 0);
{
disconnect(tableVolumeComicsScrollBar,SIGNAL(valueChanged(int)),this,0);
tableVolumeComicsScrollBar->setValue(pos); tableVolumeComicsScrollBar->setValue(pos);
connect(tableVolumeComicsScrollBar, SIGNAL(valueChanged(int)), this, SLOT(synchronizeScroll(int))); connect(tableVolumeComicsScrollBar, SIGNAL(valueChanged(int)), this, SLOT(synchronizeScroll(int)));
} }
@ -151,7 +148,7 @@ void SortVolumeComics::moveUpCL()
{ {
QList<QModelIndex> selection = tableFiles->selectionModel()->selectedIndexes(); QList<QModelIndex> selection = tableFiles->selectionModel()->selectedIndexes();
if(selection.count() == 0) if (selection.count() == 0)
return; return;
localComicsModel->moveSelectionUp(selection); localComicsModel->moveSelectionUp(selection);
@ -164,8 +161,7 @@ void SortVolumeComics::moveDownCL()
{ {
QList<QModelIndex> selection = tableFiles->selectionModel()->selectedIndexes(); QList<QModelIndex> selection = tableFiles->selectionModel()->selectedIndexes();
if(selection.count() > 0) if (selection.count() > 0) {
{
localComicsModel->moveSelectionDown(selection); localComicsModel->moveSelectionDown(selection);
selection = tableFiles->selectionModel()->selectedIndexes(); selection = tableFiles->selectionModel()->selectedIndexes();
@ -175,12 +171,10 @@ void SortVolumeComics::moveDownCL()
void SortVolumeComics::moveUpIL() void SortVolumeComics::moveUpIL()
{ {
} }
void SortVolumeComics::moveDownIL() void SortVolumeComics::moveDownIL()
{ {
} }
void SortVolumeComics::removeSelectedComics() void SortVolumeComics::removeSelectedComics()
@ -197,23 +191,21 @@ void SortVolumeComics::restoreAllComics()
void SortVolumeComics::showRemovedComicsSelector() void SortVolumeComics::showRemovedComicsSelector()
{ {
} }
QList<QPair<ComicDB, QString> > SortVolumeComics::getMatchingInfo() QList<QPair<ComicDB, QString>> SortVolumeComics::getMatchingInfo()
{ {
QList<ComicDB> comicList = localComicsModel->getData(); QList<ComicDB> comicList = localComicsModel->getData();
QList<QPair<ComicDB, QString> > l; QList<QPair<ComicDB, QString>> l;
int index = 0; int index = 0;
QString id; QString id;
foreach(ComicDB c, comicList) foreach (ComicDB c, comicList) {
{
id = volumeComicsModel->getComicId(index); id = volumeComicsModel->getComicId(index);
if(!c.getFileName().isEmpty() && !id.isEmpty()) //there is a valid comic, and valid comic ID if (!c.getFileName().isEmpty() && !id.isEmpty()) //there is a valid comic, and valid comic ID
{ {
l.push_back(QPair<ComicDB, QString>(c,id)); l.push_back(QPair<ComicDB, QString>(c, id));
} }
index++; index++;
} }

View File

@ -23,28 +23,34 @@ public:
RIGHT RIGHT
}; };
ScrapperToolButton(ScrapperToolButton::Appearance appearance = DEFAULT, QWidget * parent=0):QPushButton(parent),appearance(appearance) { ScrapperToolButton(ScrapperToolButton::Appearance appearance = DEFAULT, QWidget *parent = 0)
: QPushButton(parent), appearance(appearance)
{
setStyleSheet("QPushButton {border: none; background: #2e2e2e; color:white; border-radius:2px;}" setStyleSheet("QPushButton {border: none; background: #2e2e2e; color:white; border-radius:2px;}"
"QPushButton::pressed {border: none; background: #282828; color:white; border-radius:2px;}"); "QPushButton::pressed {border: none; background: #282828; color:white; border-radius:2px;}");
setFixedSize(18,17); setFixedSize(18, 17);
} }
static QWidget * getSeparator(){QWidget * w = new QWidget; w->setFixedWidth(1); w->setStyleSheet("QWidget {background:#282828;}"); return w;} static QWidget *getSeparator()
void setAppearance(ScrapperToolButton::Appearance appearance){this->appearance = appearance;} {
QWidget *w = new QWidget;
w->setFixedWidth(1);
w->setStyleSheet("QWidget {background:#282828;}");
return w;
}
void setAppearance(ScrapperToolButton::Appearance appearance) { this->appearance = appearance; }
virtual ~ScrapperToolButton() {} virtual ~ScrapperToolButton() {}
protected: protected:
void paintEvent(QPaintEvent * e) void paintEvent(QPaintEvent *e)
{ {
QPainter p(this); QPainter p(this);
switch (appearance) { switch (appearance) {
case LEFT: case LEFT:
p.fillRect(16,0,2,18,QColor("#2E2E2E")); p.fillRect(16, 0, 2, 18, QColor("#2E2E2E"));
break; break;
case RIGHT: case RIGHT:
p.fillRect(0,0,2,18,QColor("#2E2E2E")); p.fillRect(0, 0, 2, 18, QColor("#2E2E2E"));
break; break;
default: default:
break; break;
@ -57,7 +63,6 @@ private:
Appearance appearance; Appearance appearance;
}; };
class SortVolumeComics : public ScraperSelector class SortVolumeComics : public ScraperSelector
{ {
Q_OBJECT Q_OBJECT
@ -67,8 +72,8 @@ public:
signals: signals:
public slots: public slots:
void setData(QList<ComicDB> & comics, const QString &json, const QString & vID); void setData(QList<ComicDB> &comics, const QString &json, const QString &vID);
QList<QPair<ComicDB,QString> > getMatchingInfo(); QList<QPair<ComicDB, QString>> getMatchingInfo();
protected slots: protected slots:
void synchronizeScroll(int pos); void synchronizeScroll(int pos);
@ -81,19 +86,17 @@ protected slots:
void restoreAllComics(); void restoreAllComics();
void showRemovedComicsSelector(); void showRemovedComicsSelector();
private: private:
ScraperTableView * tableFiles; ScraperTableView *tableFiles;
ScraperTableView * tableVolumeComics; ScraperTableView *tableVolumeComics;
LocalComicListModel * localComicsModel; LocalComicListModel *localComicsModel;
VolumeComicsModel * volumeComicsModel; VolumeComicsModel *volumeComicsModel;
ScrapperToolButton * moveUpButtonCL;
ScrapperToolButton * moveDownButtonCL;
ScrapperToolButton * moveUpButtonIL;
ScrapperToolButton * moveDownButtonIL;
ScrapperToolButton *moveUpButtonCL;
ScrapperToolButton *moveDownButtonCL;
ScrapperToolButton *moveUpButtonIL;
ScrapperToolButton *moveDownButtonIL;
}; };
#endif // SORT_VOLUME_COMICS_H #endif // SORT_VOLUME_COMICS_H

View File

@ -4,8 +4,8 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QVBoxLayout> #include <QVBoxLayout>
TitleHeader::TitleHeader(QWidget * parent ) TitleHeader::TitleHeader(QWidget *parent)
:QWidget(parent) : QWidget(parent)
{ {
mainTitleLabel = new QLabel(); mainTitleLabel = new QLabel();
subTitleLabel = new QLabel(); subTitleLabel = new QLabel();
@ -13,41 +13,37 @@ TitleHeader::TitleHeader(QWidget * parent )
mainTitleLabel->setStyleSheet("QLabel {color:white; font-size:18px;font-family:Arial;}"); mainTitleLabel->setStyleSheet("QLabel {color:white; font-size:18px;font-family:Arial;}");
subTitleLabel->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}"); subTitleLabel->setStyleSheet("QLabel {color:white; font-size:12px;font-family:Arial;}");
QHBoxLayout * titleLayout = new QHBoxLayout; QHBoxLayout *titleLayout = new QHBoxLayout;
QVBoxLayout * titleLabelsLayout = new QVBoxLayout; QVBoxLayout *titleLabelsLayout = new QVBoxLayout;
titleLabelsLayout->addWidget(mainTitleLabel); titleLabelsLayout->addWidget(mainTitleLabel);
titleLabelsLayout->addWidget(subTitleLabel); titleLabelsLayout->addWidget(subTitleLabel);
titleLabelsLayout->setSpacing(0); titleLabelsLayout->setSpacing(0);
titleLayout->addLayout(titleLabelsLayout); titleLayout->addLayout(titleLabelsLayout);
titleLayout->setContentsMargins(0,0,0,0); titleLayout->setContentsMargins(0, 0, 0, 0);
setLayout(titleLayout); setLayout(titleLayout);
setContentsMargins(0,0,0,0); setContentsMargins(0, 0, 0, 0);
setTitle(tr("SEARCH")); setTitle(tr("SEARCH"));
} }
void TitleHeader::setTitle(const QString & title) void TitleHeader::setTitle(const QString &title)
{ {
mainTitleLabel->setText(title); mainTitleLabel->setText(title);
} }
void TitleHeader::setSubTitle(const QString & title) void TitleHeader::setSubTitle(const QString &title)
{ {
subTitleLabel->setText(title); subTitleLabel->setText(title);
} }
void TitleHeader::showButtons(bool show) void TitleHeader::showButtons(bool show)
{ {
if(show) if (show) {
{
}
else
{
} else {
} }
} }

View File

@ -9,14 +9,15 @@ class TitleHeader : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
TitleHeader(QWidget * parent = 0); TitleHeader(QWidget *parent = 0);
public slots: public slots:
void setTitle(const QString & title); void setTitle(const QString &title);
void setSubTitle(const QString & title); void setSubTitle(const QString &title);
void showButtons(bool show); void showButtons(bool show);
private: private:
QLabel * mainTitleLabel; QLabel *mainTitleLabel;
QLabel * subTitleLabel; QLabel *subTitleLabel;
}; };
#endif // TITLE_HEADER_H #endif // TITLE_HEADER_H

View File

@ -5,8 +5,8 @@
#include "QsLog.h" #include "QsLog.h"
ComicsRemover::ComicsRemover(QModelIndexList & il, QList<QString> & ps, qulonglong parentId, QObject *parent) ComicsRemover::ComicsRemover(QModelIndexList &il, QList<QString> &ps, qulonglong parentId, QObject *parent)
:QObject(parent),indexList(il), paths(ps), parentId(parentId) : QObject(parent), indexList(il), paths(ps), parentId(parentId)
{ {
} }
@ -18,11 +18,10 @@ void ComicsRemover::process()
i.toBack(); i.toBack();
i2.toBack(); i2.toBack();
while (i.hasPrevious() && i2.hasPrevious()) while (i.hasPrevious() && i2.hasPrevious()) {
{
QModelIndex mi = i.previous(); QModelIndex mi = i.previous();
currentComicPath = i2.previous(); currentComicPath = i2.previous();
if(QFile::remove(currentComicPath)) if (QFile::remove(currentComicPath))
emit remove(mi.row()); emit remove(mi.row());
else else
emit removeError(); emit removeError();
@ -32,11 +31,9 @@ void ComicsRemover::process()
emit removedItemsFromFolder(parentId); emit removedItemsFromFolder(parentId);
} }
FoldersRemover::FoldersRemover(QModelIndexList &il, QList<QString> &ps, QObject *parent) FoldersRemover::FoldersRemover(QModelIndexList &il, QList<QString> &ps, QObject *parent)
:QObject(parent),indexList(il), paths(ps) : QObject(parent), indexList(il), paths(ps)
{ {
} }
void FoldersRemover::process() void FoldersRemover::process()
@ -49,12 +46,11 @@ void FoldersRemover::process()
QLOG_DEBUG() << "Deleting folders" << paths.at(0); QLOG_DEBUG() << "Deleting folders" << paths.at(0);
while (i.hasPrevious() && i2.hasPrevious()) while (i.hasPrevious() && i2.hasPrevious()) {
{
QModelIndex mi = i.previous(); QModelIndex mi = i.previous();
currentFolderPath = i2.previous(); currentFolderPath = i2.previous();
QDir d(currentFolderPath); QDir d(currentFolderPath);
if(d.removeRecursively() || !d.exists()) //the folder is in the DB but no in the drive... if (d.removeRecursively() || !d.exists()) //the folder is in the DB but no in the drive...
emit remove(mi); emit remove(mi);
else else
emit removeError(); emit removeError();

View File

@ -10,7 +10,7 @@ class ComicsRemover : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit ComicsRemover(QModelIndexList & indexList, QList<QString> & paths, qulonglong parentId, QObject *parent = 0); explicit ComicsRemover(QModelIndexList &indexList, QList<QString> &paths, qulonglong parentId, QObject *parent = 0);
signals: signals:
void remove(int); void remove(int);
@ -31,7 +31,7 @@ class FoldersRemover : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit FoldersRemover(QModelIndexList & indexList, QList<QString> & paths, QObject *parent = 0); explicit FoldersRemover(QModelIndexList &indexList, QList<QString> &paths, QObject *parent = 0);
signals: signals:
void remove(QModelIndex); void remove(QModelIndex);

View File

@ -8,8 +8,8 @@
#include <QtQuick> #include <QtQuick>
#include <QQuickWidget> #include <QQuickWidget>
ComicsView::ComicsView(QWidget *parent) : ComicsView::ComicsView(QWidget *parent)
QWidget(parent),model(NULL),comicDB(nullptr) : QWidget(parent), model(NULL), comicDB(nullptr)
{ {
setAcceptDrops(true); setAcceptDrops(true);
} }
@ -23,11 +23,12 @@ void ComicsView::updateInfoForIndex(int index)
{ {
QQmlContext *ctxt = view->rootContext(); QQmlContext *ctxt = view->rootContext();
if(comicDB != nullptr) delete comicDB; if (comicDB != nullptr)
delete comicDB;
comicDB = new ComicDB(model->getComic(this->model->index(index, 0))); comicDB = new ComicDB(model->getComic(this->model->index(index, 0)));
ComicInfo *comicInfo = &(comicDB->info); ComicInfo *comicInfo = &(comicDB->info);
comicInfo->isFavorite = model->isFavorite(model->index(index,0)); comicInfo->isFavorite = model->isFavorite(model->index(index, 0));
ctxt->setContextProperty("comic", comicDB); ctxt->setContextProperty("comic", comicDB);
ctxt->setContextProperty("comicInfo", comicInfo); ctxt->setContextProperty("comicInfo", comicInfo);
@ -37,23 +38,19 @@ void ComicsView::updateInfoForIndex(int index)
void ComicsView::dragEnterEvent(QDragEnterEvent *event) void ComicsView::dragEnterEvent(QDragEnterEvent *event)
{ {
if(model->canDropMimeData(event->mimeData(),event->proposedAction(),0,0,QModelIndex())) if (model->canDropMimeData(event->mimeData(), event->proposedAction(), 0, 0, QModelIndex()))
event->acceptProposedAction(); event->acceptProposedAction();
else else {
{
QLOG_TRACE() << "dragEnterEvent"; QLOG_TRACE() << "dragEnterEvent";
QList<QUrl> urlList; QList<QUrl> urlList;
if (event->mimeData()->hasUrls() && event->dropAction() == Qt::CopyAction) if (event->mimeData()->hasUrls() && event->dropAction() == Qt::CopyAction) {
{
urlList = event->mimeData()->urls(); urlList = event->mimeData()->urls();
QString currentPath; QString currentPath;
foreach (QUrl url, urlList) foreach (QUrl url, urlList) {
{
//comics or folders are accepted, folders' content is validate in dropEvent (avoid any lag before droping) //comics or folders are accepted, folders' content is validate in dropEvent (avoid any lag before droping)
currentPath = url.toLocalFile(); currentPath = url.toLocalFile();
if(Comic::fileIsComic(currentPath) || QFileInfo(currentPath).isDir()) if (Comic::fileIsComic(currentPath) || QFileInfo(currentPath).isDir()) {
{
event->acceptProposedAction(); event->acceptProposedAction();
return; return;
} }
@ -66,20 +63,16 @@ void ComicsView::dropEvent(QDropEvent *event)
{ {
QLOG_DEBUG() << "drop" << event->dropAction(); QLOG_DEBUG() << "drop" << event->dropAction();
bool validAction = event->dropAction() == Qt::CopyAction;// || event->dropAction() & Qt::MoveAction; TODO move bool validAction = event->dropAction() == Qt::CopyAction; // || event->dropAction() & Qt::MoveAction; TODO move
if(event->mimeData()->hasUrls() && validAction) if (event->mimeData()->hasUrls() && validAction) {
{
QList<QPair<QString, QString> > droppedFiles = ComicFilesManager::getDroppedFiles(event->mimeData()->urls()); QList<QPair<QString, QString>> droppedFiles = ComicFilesManager::getDroppedFiles(event->mimeData()->urls());
if(event->dropAction() == Qt::CopyAction) if (event->dropAction() == Qt::CopyAction) {
{
QLOG_DEBUG() << "copy :" << droppedFiles; QLOG_DEBUG() << "copy :" << droppedFiles;
emit copyComicsToCurrentFolder(droppedFiles); emit copyComicsToCurrentFolder(droppedFiles);
} } else if (event->dropAction() & Qt::MoveAction) {
else if(event->dropAction() & Qt::MoveAction)
{
QLOG_DEBUG() << "move :" << droppedFiles; QLOG_DEBUG() << "move :" << droppedFiles;
emit moveComicsToCurrentFolder(droppedFiles); emit moveComicsToCurrentFolder(droppedFiles);
} }

View File

@ -17,15 +17,15 @@ class ComicsView : public QWidget
Q_OBJECT Q_OBJECT
public: public:
explicit ComicsView(QWidget *parent = 0); explicit ComicsView(QWidget *parent = 0);
virtual void setToolBar(QToolBar * toolBar) = 0; virtual void setToolBar(QToolBar *toolBar) = 0;
virtual void setModel(ComicModel *model); virtual void setModel(ComicModel *model);
virtual void setCurrentIndex(const QModelIndex &index) = 0; virtual void setCurrentIndex(const QModelIndex &index) = 0;
virtual QModelIndex currentIndex() = 0; virtual QModelIndex currentIndex() = 0;
virtual QItemSelectionModel * selectionModel() = 0; virtual QItemSelectionModel *selectionModel() = 0;
virtual void scrollTo(const QModelIndex & mi, QAbstractItemView::ScrollHint hint ) = 0; virtual void scrollTo(const QModelIndex &mi, QAbstractItemView::ScrollHint hint) = 0;
virtual void toFullScreen() = 0; virtual void toFullScreen() = 0;
virtual void toNormal() = 0; virtual void toNormal() = 0;
virtual void updateConfig(QSettings * settings) = 0; virtual void updateConfig(QSettings *settings) = 0;
virtual void enableFilterMode(bool enabled) = 0; virtual void enableFilterMode(bool enabled) = 0;
virtual void selectIndex(int index) = 0; virtual void selectIndex(int index) = 0;
virtual void updateCurrentComicView() = 0; virtual void updateCurrentComicView() = 0;
@ -37,19 +37,19 @@ public slots:
signals: signals:
void selected(unsigned int); void selected(unsigned int);
void openComic(const ComicDB& comic); void openComic(const ComicDB &comic);
void comicRated(int,QModelIndex); void comicRated(int, QModelIndex);
//Context menus //Context menus
void customContextMenuViewRequested(QPoint); void customContextMenuViewRequested(QPoint);
void customContextMenuItemRequested(QPoint); void customContextMenuItemRequested(QPoint);
//Drops //Drops
void copyComicsToCurrentFolder(QList<QPair<QString, QString> >); void copyComicsToCurrentFolder(QList<QPair<QString, QString>>);
void moveComicsToCurrentFolder(QList<QPair<QString, QString> >); void moveComicsToCurrentFolder(QList<QPair<QString, QString>>);
protected: protected:
ComicModel * model; ComicModel *model;
//Drop to import //Drop to import
void dragEnterEvent(QDragEnterEvent *event); void dragEnterEvent(QDragEnterEvent *event);
@ -61,7 +61,6 @@ protected:
ComicDB *comicDB; ComicDB *comicDB;
private: private:
}; };
#endif // COMICS_VIEW_H #endif // COMICS_VIEW_H

View File

@ -10,29 +10,28 @@
#include "yacreader_global_gui.h" #include "yacreader_global_gui.h"
ComicsViewTransition::ComicsViewTransition(QWidget *parent) : ComicsViewTransition::ComicsViewTransition(QWidget *parent)
QWidget(parent) : QWidget(parent)
{ {
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
setStyleSheet("QWidget {background:#FFFFFF}"); setStyleSheet("QWidget {background:#FFFFFF}");
#else #else
setStyleSheet("QWidget {background:#2A2A2A}"); setStyleSheet("QWidget {background:#2A2A2A}");
#endif #endif
} }
QSize ComicsViewTransition::sizeHint() QSize ComicsViewTransition::sizeHint()
{ {
return QSize(450,350); return QSize(450, 350);
} }
void ComicsViewTransition::paintEvent(QPaintEvent *) void ComicsViewTransition::paintEvent(QPaintEvent *)
{ {
QPainter painter (this); QPainter painter(this);
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
painter.fillRect(0,0,width(),height(),QColor("#FFFFFF")); painter.fillRect(0, 0, width(), height(), QColor("#FFFFFF"));
#else #else
painter.fillRect(0,0,width(),height(),QColor("#2A2A2A")); painter.fillRect(0, 0, width(), height(), QColor("#2A2A2A"));
#endif #endif
} }

Some files were not shown because too many files have changed in this diff Show More