mirror of
https://github.com/YACReader/yacreader
synced 2025-07-18 13:04:28 -04:00
New quick navitation mode option for go to flow.
This commit is contained in:
@ -49,6 +49,8 @@ void Configuration::load(QSettings * settings)
|
||||
settings->setValue(ALWAYS_ON_TOP,false);
|
||||
if(!settings->contains(SHOW_TOOLBARS))
|
||||
settings->setValue(SHOW_TOOLBARS, true);
|
||||
if(!settings->contains(QUICK_NAVI_MODE))
|
||||
settings->setValue(QUICK_NAVI_MODE, true);
|
||||
//old fit stuff
|
||||
/*if(!settings->contains(FIT))
|
||||
settings->setValue(FIT,false);
|
||||
|
@ -58,11 +58,11 @@ using namespace YACReader;
|
||||
void setMagnifyingGlassSize(const QSize & mgs) { settings->setValue(MAG_GLASS_SIZE,mgs);}
|
||||
QSize getGotoSlideSize() { return settings->value(GO_TO_FLOW_SIZE).toSize();}
|
||||
void setGotoSlideSize(const QSize & gss) { settings->setValue(GO_TO_FLOW_SIZE,gss);}
|
||||
float getZoomLevel() { return settings->value(ZOOM_LEVEL).toFloat();}
|
||||
void setZoomLevel(float zl) { settings->setValue(ZOOM_LEVEL,zl);}
|
||||
float getZoomLevel() { return settings->value(ZOOM_LEVEL).toFloat();}
|
||||
void setZoomLevel(float zl) { settings->setValue(ZOOM_LEVEL,zl);}
|
||||
|
||||
//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)); }
|
||||
|
||||
//openRecent
|
||||
@ -108,6 +108,7 @@ using namespace YACReader;
|
||||
void setLastVersionCheck(const QDate & date){ settings->setValue(LAST_VERSION_CHECK,date);}
|
||||
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);}
|
||||
bool getQuickNaviMode(){return settings->value(QUICK_NAVI_MODE).toBool();}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -27,7 +27,7 @@
|
||||
|
||||
|
||||
GoToFlow::GoToFlow(QWidget *parent,FlowType flowType)
|
||||
:GoToFlowWidget(parent),ready(false)
|
||||
:GoToFlowWidget(parent),ready(false)
|
||||
{
|
||||
updateTimer = new QTimer;
|
||||
connect(updateTimer, SIGNAL(timeout()), this, SLOT(updateImageData()));
|
||||
@ -45,10 +45,10 @@ GoToFlow::GoToFlow(QWidget *parent,FlowType flowType)
|
||||
connect(toolBar,SIGNAL(goTo(unsigned int)),this,SIGNAL(goToPage(unsigned int)));
|
||||
connect(toolBar,SIGNAL(setCenter(unsigned int)),flow,SLOT(showSlide(unsigned int)));
|
||||
|
||||
mainLayout->addWidget(flow);
|
||||
toolBar->raise();
|
||||
mainLayout->addWidget(flow);
|
||||
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));
|
||||
}
|
||||
@ -64,11 +64,11 @@ void GoToFlow::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
switch (event->key())
|
||||
{
|
||||
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up:
|
||||
QApplication::sendEvent(flow,event);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up:
|
||||
QApplication::sendEvent(flow,event);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
GoToFlowWidget::keyPressEvent(event);
|
||||
@ -76,10 +76,10 @@ void GoToFlow::keyPressEvent(QKeyEvent *event)
|
||||
|
||||
void GoToFlow::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QWidget::resizeEvent(event);
|
||||
QWidget::resizeEvent(event);
|
||||
|
||||
toolBar->move(0, event->size().height() - toolBar->height());
|
||||
toolBar->setFixedWidth(width());
|
||||
toolBar->move(0, event->size().height() - toolBar->height());
|
||||
toolBar->setFixedWidth(width());
|
||||
}
|
||||
|
||||
|
||||
@ -214,16 +214,14 @@ void GoToFlow::setFlowType(FlowType flowType)
|
||||
flow->setFlowType(flowType);
|
||||
}
|
||||
|
||||
void GoToFlow::updateSize() //TODO : fix. it doesn't work.
|
||||
{
|
||||
imageSize = Configuration::getConfiguration().getGotoSlideSize();
|
||||
flow->setSlideSize(imageSize);
|
||||
resize(static_cast<int>(5*imageSize.width()),static_cast<int>(imageSize.height()*1.7));
|
||||
}
|
||||
|
||||
void GoToFlow::updateConfig(QSettings * settings)
|
||||
{
|
||||
Q_UNUSED(settings)
|
||||
GoToFlowWidget::updateConfig(settings);
|
||||
|
||||
imageSize = Configuration::getConfiguration().getGotoSlideSize();
|
||||
flow->setFlowType(Configuration::getConfiguration().getFlowType());
|
||||
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7);
|
||||
updateSize();
|
||||
}
|
||||
|
||||
void GoToFlow::setFlowRightToLeft(bool b)
|
||||
@ -235,7 +233,7 @@ void GoToFlow::setFlowRightToLeft(bool b)
|
||||
//SlideInitializer
|
||||
//-----------------------------------------------------------------------------
|
||||
SlideInitializer::SlideInitializer(QMutex * m,PictureFlow * flow,int slides)
|
||||
:QThread(),mutex(m),_flow(flow),_slides(slides)
|
||||
:QThread(),mutex(m),_flow(flow),_slides(slides)
|
||||
{
|
||||
|
||||
}
|
||||
@ -256,7 +254,7 @@ void SlideInitializer::run()
|
||||
|
||||
|
||||
PageLoader::PageLoader(QMutex * m):
|
||||
QThread(),mutex(m), restart(false), working(false), idx(-1)
|
||||
QThread(),mutex(m), restart(false), working(false), idx(-1)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,6 @@ private slots:
|
||||
void setNumSlides(unsigned int slides);
|
||||
void setImageReady(int index,const QByteArray & image);
|
||||
void setFlowType(FlowType flowType);
|
||||
void updateSize();
|
||||
void updateConfig(QSettings * settings);
|
||||
void setFlowRightToLeft(bool b);
|
||||
|
||||
|
@ -28,10 +28,10 @@ GoToFlowGL::GoToFlowGL(QWidget* parent, FlowType flowType)
|
||||
connect(toolBar,SIGNAL(goTo(unsigned int)),this,SIGNAL(goToPage(unsigned int)));
|
||||
connect(toolBar,SIGNAL(setCenter(unsigned int)),flow,SLOT(setCenterIndex(unsigned int)));
|
||||
|
||||
mainLayout->addWidget(flow);
|
||||
toolBar->raise();
|
||||
mainLayout->addWidget(flow);
|
||||
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));
|
||||
}
|
||||
@ -77,15 +77,11 @@ void GoToFlowGL::setImageReady(int index,const QByteArray & imageData)
|
||||
flow->imagesReady[index] = true;
|
||||
}
|
||||
|
||||
void GoToFlowGL::updateSize()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void GoToFlowGL::updateConfig(QSettings * settings)
|
||||
{
|
||||
Performance performance = medium;
|
||||
GoToFlowWidget::updateConfig(settings);
|
||||
|
||||
Performance performance = medium;
|
||||
switch (settings->value(PERFORMANCE).toInt())
|
||||
{
|
||||
case 0:
|
||||
@ -102,56 +98,56 @@ void GoToFlowGL::updateConfig(QSettings * settings)
|
||||
break;
|
||||
}
|
||||
|
||||
imageSize = Configuration::getConfiguration().getGotoSlideSize();
|
||||
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7);
|
||||
updateSize();
|
||||
|
||||
flow->setPerformance(performance);
|
||||
|
||||
switch (settings->value(FLOW_TYPE_GL).toInt())
|
||||
{
|
||||
case 0:
|
||||
case FlowType::CoverFlowLike:
|
||||
flow->setPreset(presetYACReaderFlowClassicConfig);
|
||||
return;
|
||||
case 1:
|
||||
break;
|
||||
case FlowType::Strip:
|
||||
flow->setPreset(presetYACReaderFlowStripeConfig);
|
||||
return;
|
||||
case 2:
|
||||
break;
|
||||
case FlowType::StripOverlapped:
|
||||
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
|
||||
return;
|
||||
case 3:
|
||||
break;
|
||||
case FlowType::Modern:
|
||||
flow->setPreset(defaultYACReaderFlowConfig);
|
||||
return;
|
||||
case 4:
|
||||
break;
|
||||
case FlowType::Roulette:
|
||||
flow->setPreset(pressetYACReaderFlowDownConfig);
|
||||
return;
|
||||
break;
|
||||
case FlowType::Custom:
|
||||
flow->setCF_RX(settings->value(X_ROTATION).toInt());
|
||||
flow->setCF_Y(settings->value(Y_POSITION).toInt());
|
||||
flow->setX_Distance(settings->value(COVER_DISTANCE).toInt());
|
||||
flow->setCenter_Distance(settings->value(CENTRAL_DISTANCE).toInt());
|
||||
flow->setCF_Z(settings->value(ZOOM_LEVEL).toInt());
|
||||
flow->setY_Distance(settings->value(Y_COVER_OFFSET).toInt());
|
||||
flow->setZ_Distance(settings->value(Z_COVER_OFFSET).toInt());
|
||||
flow->setRotation(settings->value(COVER_ROTATION).toInt());
|
||||
flow->setFadeOutDist(settings->value(FADE_OUT_DIST).toInt());
|
||||
flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt());
|
||||
flow->setMaxAngle(settings->value(MAX_ANGLE).toInt());
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
//custom config
|
||||
|
||||
flow->setCF_RX(settings->value(X_ROTATION).toInt());
|
||||
flow->setCF_Y(settings->value(Y_POSITION).toInt());
|
||||
flow->setX_Distance(settings->value(COVER_DISTANCE).toInt());
|
||||
flow->setCenter_Distance(settings->value(CENTRAL_DISTANCE).toInt());
|
||||
flow->setCF_Z(settings->value(ZOOM_LEVEL).toInt());
|
||||
flow->setY_Distance(settings->value(Y_COVER_OFFSET).toInt());
|
||||
flow->setZ_Distance(settings->value(Z_COVER_OFFSET).toInt());
|
||||
flow->setRotation(settings->value(COVER_ROTATION).toInt());
|
||||
flow->setFadeOutDist(settings->value(FADE_OUT_DIST).toInt());
|
||||
flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt());
|
||||
flow->setMaxAngle(settings->value(MAX_ANGLE).toInt());
|
||||
|
||||
/* flow->setVisibility(settings->value("visibilityDistance").toInt());
|
||||
flow->setLightStrenght(settings->value("lightStrength").toInt())*/;
|
||||
|
||||
if (Configuration::getConfiguration().getQuickNaviMode())
|
||||
flow->setFadeOutDist(20);
|
||||
}
|
||||
|
||||
void GoToFlowGL::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
switch (event->key())
|
||||
{
|
||||
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up:
|
||||
QApplication::sendEvent(flow,event);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up:
|
||||
QApplication::sendEvent(flow,event);
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
GoToFlowWidget::keyPressEvent(event);
|
||||
@ -159,10 +155,10 @@ void GoToFlowGL::keyPressEvent(QKeyEvent* event)
|
||||
|
||||
void GoToFlowGL::resizeEvent(QResizeEvent *event)
|
||||
{
|
||||
QWidget::resizeEvent(event);
|
||||
QWidget::resizeEvent(event);
|
||||
|
||||
toolBar->move(0, event->size().height() - toolBar->height());
|
||||
toolBar->setFixedWidth(width());
|
||||
toolBar->move(0, event->size().height() - toolBar->height());
|
||||
toolBar->setFixedWidth(width());
|
||||
}
|
||||
|
||||
void GoToFlowGL::setFlowRightToLeft(bool b)
|
||||
|
@ -23,7 +23,6 @@ public:
|
||||
void setFlowType(FlowType flowType);
|
||||
void setNumSlides(unsigned int slides);
|
||||
void setImageReady(int index,const QByteArray & image);
|
||||
void updateSize();
|
||||
|
||||
void updateConfig(QSettings * settings);
|
||||
void setFlowRightToLeft(bool b);
|
||||
|
@ -2,18 +2,42 @@
|
||||
|
||||
#include <QtWidgets>
|
||||
|
||||
#include "configuration.h"
|
||||
|
||||
GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
|
||||
:QWidget(parent)
|
||||
:QStackedWidget(parent)
|
||||
{
|
||||
//elementos interactivos
|
||||
QVBoxLayout * mainLayout = new QVBoxLayout;
|
||||
bar = new QWidget(this);
|
||||
QHBoxLayout * bottom = new QHBoxLayout(bar);
|
||||
bottom->addStretch();
|
||||
bottom->addWidget(new QLabel("<b>" + tr("Page : ") + "</b>",bar));
|
||||
bottom->addWidget(edit = new QLineEdit(bar));
|
||||
v = new QIntValidator(bar);
|
||||
QWidget * normal = new QWidget(this); // container widget
|
||||
QWidget * quickNavi = new QWidget(this); // container widget
|
||||
addWidget(normal);
|
||||
addWidget(quickNavi);
|
||||
QHBoxLayout * normalLayout = new QHBoxLayout(normal);
|
||||
QHBoxLayout * naviLayout = new QHBoxLayout(quickNavi);
|
||||
normal->setLayout(normalLayout);
|
||||
quickNavi->setLayout(naviLayout);
|
||||
|
||||
slider = new QSlider(Qt::Horizontal,this);
|
||||
slider->setStyleSheet(
|
||||
"QSlider::groove:horizontal {"
|
||||
" border: 1px solid white;"
|
||||
" border-radius: 6px;"
|
||||
" background: rgba(255, 255, 255, 50);"
|
||||
" margin: 2px 0;"
|
||||
"}"
|
||||
"QSlider::handle:horizontal {"
|
||||
" background: rgba(0, 0, 0, 200);"
|
||||
" border: 1px solid white;"
|
||||
" width: 24px;"
|
||||
" border-radius: 6px;"
|
||||
"}"
|
||||
);
|
||||
connect(slider, &QSlider::valueChanged, this, [&](int v) { emit(setCenter(v)); });
|
||||
|
||||
pageHint = new QLabel("<b>" + tr("Page : ") + "</b>",this);
|
||||
v = new QIntValidator(this);
|
||||
v->setBottom(1);
|
||||
edit = new QLineEdit(this);
|
||||
edit->setValidator(v);
|
||||
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}");
|
||||
@ -29,41 +53,51 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
|
||||
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:pressed {background-image: url(:/images/imgCenterSlidePressed.png); width: 100%; height:100%; background-repeat: none; border: none;} ";
|
||||
centerButton = new QPushButton(bar);
|
||||
centerButton = new QPushButton(this);
|
||||
//centerButton->setIcon(QIcon(":/images/center.png"));
|
||||
centerButton->setStyleSheet(centerButtonCSS);
|
||||
centerButton->setFixedSize(26,50);
|
||||
centerButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true);
|
||||
connect(centerButton,SIGNAL(clicked()),this,SLOT(centerSlide()));
|
||||
bottom->addWidget(centerButton);
|
||||
|
||||
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:pressed {background-image: url(:/images/imgGoToSlidePressed.png); width: 100%; height:100%; background-repeat: none; border: none;} ";
|
||||
goToButton = new QPushButton(bar);
|
||||
goToButton = new QPushButton(this);
|
||||
//goToButton->setIcon(QIcon(":/images/goto.png"));
|
||||
goToButton->setStyleSheet(goToButtonCSS);
|
||||
goToButton->setFixedSize(32,50);
|
||||
goToButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true);
|
||||
|
||||
connect(goToButton,SIGNAL(clicked()),this,SLOT(goTo()));
|
||||
bottom->addWidget(goToButton);
|
||||
|
||||
bottom->addStretch();
|
||||
bottom->setMargin(0);
|
||||
bottom->setSpacing(0);
|
||||
normalLayout->setMargin(0);
|
||||
normalLayout->setSpacing(0);
|
||||
normalLayout->addStretch();
|
||||
normalLayout->addWidget(pageHint);
|
||||
normalLayout->addWidget(edit);
|
||||
normalLayout->addWidget(centerButton);
|
||||
normalLayout->addWidget(goToButton);
|
||||
normalLayout->addStretch();
|
||||
|
||||
bar->setLayout(bottom);
|
||||
naviLayout->setContentsMargins(5, 0, 0, 0);
|
||||
naviLayout->setSpacing(2);
|
||||
naviLayout->addWidget(slider);
|
||||
naviLayout->addWidget(goToButton);
|
||||
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->setSpacing(0);
|
||||
mainLayout->addWidget(bar);
|
||||
|
||||
setLayout(mainLayout);
|
||||
switchLayout();
|
||||
|
||||
setFixedHeight(50);
|
||||
}
|
||||
|
||||
void GoToFlowToolBar::switchLayout()
|
||||
{
|
||||
if (Configuration::getConfiguration().getQuickNaviMode())
|
||||
setCurrentIndex(1);
|
||||
else
|
||||
setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void GoToFlowToolBar::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
@ -78,11 +112,13 @@ void GoToFlowToolBar::paintEvent(QPaintEvent *)
|
||||
void GoToFlowToolBar::setPage(int pageNumber)
|
||||
{
|
||||
edit->setText(QString::number(pageNumber+1));
|
||||
slider->setValue(pageNumber);
|
||||
}
|
||||
|
||||
void GoToFlowToolBar::setTop(int numPages)
|
||||
{
|
||||
v->setTop(numPages);
|
||||
slider->setMaximum(numPages-1); // min is 0
|
||||
}
|
||||
|
||||
void GoToFlowToolBar::goTo()
|
||||
|
@ -2,24 +2,30 @@
|
||||
#define GOTO_FLOW_TOOLBAR_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QStackedWidget.h>
|
||||
|
||||
class QLineEdit;
|
||||
class QIntValidator;
|
||||
class QPushButton;
|
||||
class QSlider;
|
||||
class QLabel;
|
||||
|
||||
class GoToFlowToolBar : public QWidget
|
||||
class GoToFlowToolBar : public QStackedWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
QLineEdit * edit;
|
||||
QSlider * slider;
|
||||
QIntValidator * v;
|
||||
QPushButton * centerButton;
|
||||
QPushButton * goToButton;
|
||||
QLabel * pageHint;
|
||||
QWidget * bar;
|
||||
void paintEvent(QPaintEvent *);
|
||||
|
||||
public:
|
||||
GoToFlowToolBar(QWidget * parent = 0);
|
||||
void switchLayout();
|
||||
public slots:
|
||||
void setPage(int pageNumber);
|
||||
void setTop(int numPages);
|
||||
|
@ -6,20 +6,17 @@
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include "goto_flow_toolbar.h"
|
||||
#include "configuration.h"
|
||||
|
||||
GoToFlowWidget::GoToFlowWidget(QWidget * parent)
|
||||
:QWidget(parent)
|
||||
{
|
||||
mainLayout = new QVBoxLayout;
|
||||
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->setSpacing(0);
|
||||
|
||||
toolBar = new GoToFlowToolBar(this);
|
||||
|
||||
mainLayout->setMargin(0);
|
||||
mainLayout->setSpacing(0);
|
||||
|
||||
setLayout(mainLayout);
|
||||
|
||||
//toolBar->installEventFilter(this);
|
||||
@ -54,6 +51,21 @@ void GoToFlowWidget::keyPressEvent(QKeyEvent* event)
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void GoToFlowWidget::updateConfig(QSettings * settings)
|
||||
{
|
||||
Q_UNUSED(settings)
|
||||
toolBar->switchLayout();
|
||||
}
|
||||
|
||||
void GoToFlowWidget::updateSize()
|
||||
{
|
||||
// called by parent in resizeEvent
|
||||
// no need to update width when QuickNaviMode disabled
|
||||
// height is set in updateConfig
|
||||
if (Configuration::getConfiguration().getQuickNaviMode() && parentWidget() != nullptr)
|
||||
resize(parentWidget()->width(),height());
|
||||
}
|
||||
|
||||
/*bool GoToFlowWidget::eventFilter(QObject * target, QEvent * event)
|
||||
{
|
||||
if(event->type() == QEvent::KeyPress)
|
||||
|
@ -27,8 +27,8 @@ public slots:
|
||||
virtual void setFlowType(FlowType flowType) = 0;
|
||||
virtual void setNumSlides(unsigned int slides) = 0;
|
||||
virtual void setImageReady(int index,const QByteArray & image) = 0;
|
||||
virtual void updateSize() = 0;
|
||||
virtual void updateConfig(QSettings * settings) = 0;
|
||||
virtual void updateSize();
|
||||
virtual void updateConfig(QSettings * settings);
|
||||
virtual void setFlowRightToLeft(bool b) = 0;
|
||||
|
||||
protected:
|
||||
|
@ -938,7 +938,7 @@ void MainWindowViewer::openFolderFromPath(QString pathDir, QString atFileName)
|
||||
if(i < list.count())
|
||||
index = i;
|
||||
|
||||
viewer->open(pathDir,i);
|
||||
viewer->open(pathDir,index);
|
||||
}
|
||||
|
||||
void MainWindowViewer::saveImage()
|
||||
|
@ -19,7 +19,7 @@
|
||||
#endif
|
||||
|
||||
OptionsDialog::OptionsDialog(QWidget * parent)
|
||||
:YACReaderOptionsDialog(parent)
|
||||
:YACReaderOptionsDialog(parent)
|
||||
{
|
||||
|
||||
QTabWidget * tabWidget = new QTabWidget();
|
||||
@ -49,7 +49,7 @@ OptionsDialog::OptionsDialog(QWidget * parent)
|
||||
|
||||
QHBoxLayout * path = new QHBoxLayout();
|
||||
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);
|
||||
|
||||
connect(pathFindButton,SIGNAL(clicked()),this,SLOT(findFolder()));
|
||||
@ -105,6 +105,8 @@ OptionsDialog::OptionsDialog(QWidget * parent)
|
||||
connect(gammaS,SIGNAL(valueChanged(int)),this,SLOT(gammaChanged(int)));
|
||||
//connect(brightnessS,SIGNAL(valueChanged(int)),this,SIGNAL(changedOptions()));
|
||||
|
||||
quickNavi = new QCheckBox(tr("Quick Navigation Mode"));
|
||||
|
||||
QHBoxLayout * buttons = new QHBoxLayout();
|
||||
buttons->addStretch();
|
||||
buttons->addWidget(new QLabel(tr("Restart is needed")));
|
||||
@ -115,13 +117,14 @@ OptionsDialog::OptionsDialog(QWidget * parent)
|
||||
layoutGeneral->addWidget(slideSizeBox);
|
||||
//layoutGeneral->addWidget(fitBox);
|
||||
layoutGeneral->addWidget(colorBox);
|
||||
layoutGeneral->addWidget(shortcutsBox);
|
||||
layoutGeneral->addWidget(shortcutsBox);
|
||||
layoutGeneral->addStretch();
|
||||
layoutFlow->addWidget(sw);
|
||||
#ifndef NO_OPENGL
|
||||
layoutFlow->addWidget(gl);
|
||||
layoutFlow->addWidget(useGL);
|
||||
#endif
|
||||
layoutFlow->addWidget(quickNavi);
|
||||
layoutFlow->addStretch();
|
||||
layoutImage->addWidget(new QLabel(tr("Brightness")),0,0);
|
||||
layoutImage->addWidget(new QLabel(tr("Contrast")),1,0);
|
||||
@ -191,6 +194,7 @@ void OptionsDialog::saveOptions()
|
||||
|
||||
settings->setValue(BACKGROUND_COLOR,colorDialog->currentColor());
|
||||
//settings->setValue(FIT_TO_WIDTH_RATIO,fitToWidthRatioS->sliderPosition()/100.0);
|
||||
settings->setValue(QUICK_NAVI_MODE,quickNavi->isChecked());
|
||||
|
||||
YACReaderOptionsDialog::saveOptions();
|
||||
}
|
||||
@ -202,18 +206,18 @@ void OptionsDialog::restoreOptions(QSettings * settings)
|
||||
slideSize->setSliderPosition(settings->value(GO_TO_FLOW_SIZE).toSize().height());
|
||||
switch(settings->value(FLOW_TYPE_SW).toInt())
|
||||
{
|
||||
case 0:
|
||||
sw->radio1->setChecked(true);
|
||||
break;
|
||||
case 1:
|
||||
sw->radio2->setChecked(true);
|
||||
break;
|
||||
case 2:
|
||||
sw->radio3->setChecked(true);
|
||||
break;
|
||||
default:
|
||||
sw->radio1->setChecked(true);
|
||||
break;
|
||||
case 0:
|
||||
sw->radio1->setChecked(true);
|
||||
break;
|
||||
case 1:
|
||||
sw->radio2->setChecked(true);
|
||||
break;
|
||||
case 2:
|
||||
sw->radio3->setChecked(true);
|
||||
break;
|
||||
default:
|
||||
sw->radio1->setChecked(true);
|
||||
break;
|
||||
}
|
||||
|
||||
pathEdit->setText(settings->value(PATH).toString());
|
||||
@ -221,6 +225,8 @@ void OptionsDialog::restoreOptions(QSettings * settings)
|
||||
updateColor(settings->value(BACKGROUND_COLOR).value<QColor>());
|
||||
//fitToWidthRatioS->setSliderPosition(settings->value(FIT_TO_WIDTH_RATIO).toFloat()*100);
|
||||
|
||||
quickNavi->setChecked(settings->value(QUICK_NAVI_MODE).toBool());
|
||||
|
||||
brightnessS->setValue(settings->value(BRIGHTNESS,0).toInt());
|
||||
contrastS->setValue(settings->value(CONTRAST,100).toInt());
|
||||
gammaS->setValue(settings->value(GAMMA,100).toInt());
|
||||
|
@ -23,6 +23,7 @@ Q_OBJECT
|
||||
//QLabel * pathLabel;
|
||||
QLineEdit * pathEdit;
|
||||
QPushButton * pathFindButton;
|
||||
QCheckBox * quickNavi;
|
||||
|
||||
QLabel * magGlassSizeLabel;
|
||||
|
||||
|
@ -21,6 +21,7 @@ class Render;
|
||||
class ImageFilter {
|
||||
public:
|
||||
ImageFilter(){};
|
||||
virtual ~ImageFilter() {};
|
||||
virtual QImage setFilter(const QImage & image) = 0;
|
||||
inline int getLevel() {return level;};
|
||||
inline void setLevel(int l) {level = l;};
|
||||
|
@ -23,22 +23,21 @@
|
||||
#include <QFile>
|
||||
|
||||
Viewer::Viewer(QWidget * parent)
|
||||
:QScrollArea(parent),
|
||||
currentPage(0),
|
||||
magnifyingGlassShowed(false),
|
||||
fullscreen(false),
|
||||
information(false),
|
||||
adjustToWidthRatio(1),
|
||||
doublePage(false),
|
||||
doubleMangaPage(false),
|
||||
wheelStop(false),
|
||||
direction(1),
|
||||
restoreMagnifyingGlass(false),
|
||||
drag(false),
|
||||
numScrollSteps(22),
|
||||
shouldOpenNext(false),
|
||||
shouldOpenPrevious(false),
|
||||
zoom(100)
|
||||
:QScrollArea(parent),
|
||||
currentPage(0),
|
||||
magnifyingGlassShowed(false),
|
||||
fullscreen(false),
|
||||
information(false),
|
||||
doublePage(false),
|
||||
doubleMangaPage(false),
|
||||
wheelStop(false),
|
||||
direction(1),
|
||||
restoreMagnifyingGlass(false),
|
||||
drag(false),
|
||||
numScrollSteps(22),
|
||||
shouldOpenNext(false),
|
||||
shouldOpenPrevious(false),
|
||||
zoom(100)
|
||||
{
|
||||
translator = new YACReaderTranslator(this);
|
||||
translator->hide();
|
||||
@ -72,22 +71,22 @@ zoom(100)
|
||||
|
||||
QSettings * settings = new QSettings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat);
|
||||
|
||||
//CONFIG GOTO_FLOW--------------------------------------------------------
|
||||
//CONFIG GOTO_FLOW--------------------------------------------------------
|
||||
#ifndef NO_OPENGL
|
||||
|
||||
OpenGLChecker openGLChecker;
|
||||
bool openGLAvailable = openGLChecker.hasCompatibleOpenGLVersion();
|
||||
OpenGLChecker openGLChecker;
|
||||
bool openGLAvailable = openGLChecker.hasCompatibleOpenGLVersion();
|
||||
|
||||
if(openGLAvailable && !settings->contains(USE_OPEN_GL))
|
||||
settings->setValue(USE_OPEN_GL,2);
|
||||
else
|
||||
if(!openGLAvailable)
|
||||
settings->setValue(USE_OPEN_GL,0);
|
||||
if(openGLAvailable && !settings->contains(USE_OPEN_GL))
|
||||
settings->setValue(USE_OPEN_GL,2);
|
||||
else
|
||||
if(!openGLAvailable)
|
||||
settings->setValue(USE_OPEN_GL,0);
|
||||
|
||||
if((settings->value(USE_OPEN_GL).toBool() == true))
|
||||
goToFlow = new GoToFlowGL(this,Configuration::getConfiguration().getFlowType());
|
||||
else
|
||||
goToFlow = new GoToFlow(this,Configuration::getConfiguration().getFlowType());
|
||||
if((settings->value(USE_OPEN_GL).toBool() == true))
|
||||
goToFlow = new GoToFlowGL(this,Configuration::getConfiguration().getFlowType());
|
||||
else
|
||||
goToFlow = new GoToFlow(this,Configuration::getConfiguration().getFlowType());
|
||||
#else
|
||||
goToFlow = new GoToFlow(this,Configuration::getConfiguration().getFlowType());
|
||||
#endif
|
||||
@ -232,13 +231,13 @@ void Viewer::open(QString pathFile, const ComicDB & comic)
|
||||
|
||||
void Viewer::showMessageErrorOpening()
|
||||
{
|
||||
QMessageBox::critical(this,tr("Not found"),tr("Comic not found"));
|
||||
QMessageBox::critical(this,tr("Not found"),tr("Comic not found"));
|
||||
//resetContent(); --> not needed
|
||||
}
|
||||
|
||||
void Viewer::showMessageErrorOpening(QString message)
|
||||
{
|
||||
QMessageBox::critical(this,tr("Error opening comic"),message);
|
||||
QMessageBox::critical(this,tr("Error opening comic"),message);
|
||||
resetContent();
|
||||
}
|
||||
|
||||
@ -271,7 +270,7 @@ void Viewer::prev()
|
||||
}
|
||||
else
|
||||
{
|
||||
render->previousPage();
|
||||
render->previousPage();
|
||||
}
|
||||
updateInformation();
|
||||
shouldOpenNext = false;
|
||||
@ -338,28 +337,28 @@ void Viewer::updateContentSize()
|
||||
YACReader::FitMode fitmode = Configuration::getConfiguration().getFitMode();
|
||||
switch (fitmode)
|
||||
{
|
||||
case YACReader::FitMode::FullRes:
|
||||
pagefit=currentPage->size();
|
||||
break;
|
||||
case YACReader::FitMode::ToWidth:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(width(), 0, Qt::KeepAspectRatioByExpanding);
|
||||
break;
|
||||
case YACReader::FitMode::ToHeight:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(0, height(), Qt::KeepAspectRatioByExpanding);
|
||||
break;
|
||||
case YACReader::FitMode::FullRes:
|
||||
pagefit=currentPage->size();
|
||||
break;
|
||||
case YACReader::FitMode::ToWidth:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(width(), 0, Qt::KeepAspectRatioByExpanding);
|
||||
break;
|
||||
case YACReader::FitMode::ToHeight:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(0, height(), Qt::KeepAspectRatioByExpanding);
|
||||
break;
|
||||
//if everything fails showing the full page is a good idea
|
||||
case YACReader::FitMode::FullPage:
|
||||
default:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(size(), Qt::KeepAspectRatio);
|
||||
break;
|
||||
case YACReader::FitMode::FullPage:
|
||||
default:
|
||||
pagefit=currentPage->size();
|
||||
pagefit.scale(size(), Qt::KeepAspectRatio);
|
||||
break;
|
||||
}
|
||||
|
||||
if(zoom != 100)
|
||||
if(zoom != 100)
|
||||
{
|
||||
pagefit.scale(floor(pagefit.width()*zoom/100.0f), 0, Qt::KeepAspectRatioByExpanding);
|
||||
pagefit.scale(floor(pagefit.width()*zoom/100.0f), 0, Qt::KeepAspectRatioByExpanding);
|
||||
}
|
||||
//apply scaling
|
||||
content->resize(pagefit);
|
||||
@ -379,23 +378,23 @@ void Viewer::updateContentSize()
|
||||
|
||||
void Viewer::increaseZoomFactor()
|
||||
{
|
||||
zoom = std::min(zoom + 10, 500);
|
||||
zoom = std::min(zoom + 10, 500);
|
||||
|
||||
updateContentSize();
|
||||
notificationsLabel->setText(QString::number(getZoomFactor())+"%");
|
||||
notificationsLabel->setText(QString::number(getZoomFactor())+"%");
|
||||
notificationsLabel->flash();
|
||||
|
||||
emit zoomUpdated(zoom);
|
||||
emit zoomUpdated(zoom);
|
||||
}
|
||||
void Viewer::decreaseZoomFactor()
|
||||
{
|
||||
zoom = std::max(zoom - 10, 30);
|
||||
zoom = std::max(zoom - 10, 30);
|
||||
|
||||
updateContentSize();
|
||||
notificationsLabel->setText(QString::number(getZoomFactor())+"%");
|
||||
notificationsLabel->setText(QString::number(getZoomFactor())+"%");
|
||||
notificationsLabel->flash();
|
||||
|
||||
emit zoomUpdated(zoom);
|
||||
emit zoomUpdated(zoom);
|
||||
}
|
||||
|
||||
int Viewer::getZoomFactor()
|
||||
@ -407,14 +406,14 @@ int Viewer::getZoomFactor()
|
||||
void Viewer::setZoomFactor(int z)
|
||||
{
|
||||
//this function is mostly used to reset the zoom after a fitmode switch
|
||||
if (z > 500)
|
||||
zoom = 500;
|
||||
else if (z < 30)
|
||||
zoom = 30;
|
||||
if (z > 500)
|
||||
zoom = 500;
|
||||
else if (z < 30)
|
||||
zoom = 30;
|
||||
else
|
||||
zoom = z;
|
||||
|
||||
emit zoomUpdated(zoom);
|
||||
emit zoomUpdated(zoom);
|
||||
}
|
||||
|
||||
void Viewer::updateVerticalScrollBar()
|
||||
@ -601,38 +600,38 @@ void Viewer::scrollTo(int x, int y)
|
||||
|
||||
void Viewer::keyPressEvent(QKeyEvent *event)
|
||||
{
|
||||
if(render->hasLoadedComic())
|
||||
{
|
||||
int _key = event->key();
|
||||
Qt::KeyboardModifiers modifiers = event->modifiers();
|
||||
if(render->hasLoadedComic())
|
||||
{
|
||||
int _key = event->key();
|
||||
Qt::KeyboardModifiers modifiers = event->modifiers();
|
||||
|
||||
if(modifiers & Qt::ShiftModifier)
|
||||
_key |= Qt::SHIFT;
|
||||
if (modifiers & Qt::ControlModifier)
|
||||
_key |= Qt::CTRL;
|
||||
if (modifiers & Qt::MetaModifier)
|
||||
_key |= Qt::META;
|
||||
if (modifiers & Qt::AltModifier)
|
||||
_key |= Qt::ALT;
|
||||
if(modifiers & Qt::ShiftModifier)
|
||||
_key |= Qt::SHIFT;
|
||||
if (modifiers & Qt::ControlModifier)
|
||||
_key |= Qt::CTRL;
|
||||
if (modifiers & Qt::MetaModifier)
|
||||
_key |= Qt::META;
|
||||
if (modifiers & Qt::AltModifier)
|
||||
_key |= Qt::ALT;
|
||||
|
||||
QKeySequence key(_key);
|
||||
/*if(goToFlow->isVisible() && event->key()!=Qt::Key_S)
|
||||
QCoreApplication::sendEvent(goToFlow,event);
|
||||
else*/
|
||||
QKeySequence key(_key);
|
||||
/*if(goToFlow->isVisible() && event->key()!=Qt::Key_S)
|
||||
QCoreApplication::sendEvent(goToFlow,event);
|
||||
else*/
|
||||
|
||||
if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_ACTION_Y))
|
||||
{
|
||||
posByStep = height()/numScrollSteps;
|
||||
nextPos=verticalScrollBar()->sliderPosition()+static_cast<int>((height()*0.80));
|
||||
scrollDown();
|
||||
}
|
||||
if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_ACTION_Y))
|
||||
{
|
||||
posByStep = height()/numScrollSteps;
|
||||
nextPos=verticalScrollBar()->sliderPosition()+static_cast<int>((height()*0.80));
|
||||
scrollDown();
|
||||
}
|
||||
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_ACTION_Y))
|
||||
{
|
||||
posByStep = height()/numScrollSteps;
|
||||
nextPos=verticalScrollBar()->sliderPosition()-static_cast<int>((height()*0.80));
|
||||
scrollUp();
|
||||
}
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_ACTION_Y))
|
||||
{
|
||||
posByStep = height()/numScrollSteps;
|
||||
nextPos=verticalScrollBar()->sliderPosition()-static_cast<int>((height()*0.80));
|
||||
scrollUp();
|
||||
}
|
||||
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y))
|
||||
{
|
||||
@ -654,75 +653,75 @@ void Viewer::keyPressEvent(QKeyEvent *event)
|
||||
scrollBackwardVerticalFirst();
|
||||
}
|
||||
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_DOWN_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_UP_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_LEFT_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_RIGHT_ACTION_Y))
|
||||
{
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
emit backgroundChanges();
|
||||
}
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_DOWN_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_UP_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_LEFT_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_RIGHT_ACTION_Y))
|
||||
{
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
emit backgroundChanges();
|
||||
}
|
||||
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(GO_TO_FIRST_PAGE_ACTION_Y))
|
||||
{
|
||||
goTo(0);
|
||||
}
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(GO_TO_FIRST_PAGE_ACTION_Y))
|
||||
{
|
||||
goTo(0);
|
||||
}
|
||||
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(GO_TO_LAST_PAGE_ACTION_Y))
|
||||
{
|
||||
goTo(this->render->numPages()-1);
|
||||
}
|
||||
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(GO_TO_LAST_PAGE_ACTION_Y))
|
||||
{
|
||||
goTo(this->render->numPages()-1);
|
||||
}
|
||||
|
||||
else
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
else
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
|
||||
if(mglass->isVisible() && (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_UP_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_DOWN_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_IN_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_OUT_MGLASS_ACTION_Y)))
|
||||
{
|
||||
QCoreApplication::sendEvent(mglass,event);
|
||||
}
|
||||
if(mglass->isVisible() && (key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_UP_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(SIZE_DOWN_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_IN_MGLASS_ACTION_Y) ||
|
||||
key == ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_OUT_MGLASS_ACTION_Y)))
|
||||
{
|
||||
QCoreApplication::sendEvent(mglass,event);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
}
|
||||
else
|
||||
QAbstractScrollArea::keyPressEvent(event);
|
||||
}
|
||||
|
||||
void Viewer::wheelEvent(QWheelEvent * event)
|
||||
{
|
||||
if(render->hasLoadedComic())
|
||||
{
|
||||
if((event->delta()<0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->maximum()))
|
||||
{
|
||||
if(wheelStop)
|
||||
{
|
||||
if(getMovement(event) == Forward)
|
||||
{
|
||||
next();
|
||||
verticalScroller->stop();
|
||||
event->accept();
|
||||
wheelStop = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
wheelStop = true;
|
||||
}
|
||||
else
|
||||
if((event->delta()<0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->maximum()))
|
||||
{
|
||||
if(wheelStop)
|
||||
{
|
||||
if(getMovement(event) == Forward)
|
||||
{
|
||||
next();
|
||||
verticalScroller->stop();
|
||||
event->accept();
|
||||
wheelStop = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
wheelStop = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((event->delta()>0)&&(verticalScrollBar()->sliderPosition()==verticalScrollBar()->minimum()))
|
||||
{
|
||||
if(wheelStop)
|
||||
{
|
||||
if(getMovement(event) == Backward)
|
||||
{
|
||||
prev();
|
||||
verticalScroller->stop();
|
||||
event->accept();
|
||||
wheelStop = false;
|
||||
}
|
||||
return;
|
||||
{
|
||||
if(getMovement(event) == Backward)
|
||||
{
|
||||
prev();
|
||||
verticalScroller->stop();
|
||||
event->accept();
|
||||
wheelStop = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
else
|
||||
wheelStop = true;
|
||||
@ -751,7 +750,8 @@ void Viewer::wheelEvent(QWheelEvent * event)
|
||||
void Viewer::resizeEvent(QResizeEvent * event)
|
||||
{
|
||||
updateContentSize();
|
||||
goToFlow->move(QPoint((width()-goToFlow->width())/2,height()-goToFlow->height()));
|
||||
goToFlow->updateSize();
|
||||
goToFlow->move((width()-goToFlow->width())/2,height()-goToFlow->height());
|
||||
informationLabel->updatePosition();
|
||||
QScrollArea::resizeEvent(event);
|
||||
}
|
||||
@ -768,23 +768,23 @@ void Viewer::mouseMoveEvent(QMouseEvent * event)
|
||||
{
|
||||
if(showGoToFlowAnimation->state()!=QPropertyAnimation::Running)
|
||||
{
|
||||
if(goToFlow->isVisible())
|
||||
{
|
||||
QPoint gtfPos = goToFlow->mapFrom(this,event->pos());
|
||||
if(gtfPos.y() < 0 || gtfPos.x()<0 || gtfPos.x()>goToFlow->width())//TODO this extra check is for Mavericks (mouseMove over goToFlowGL seems to be broken)
|
||||
animateHideGoToFlow();
|
||||
//goToFlow->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
int umbral = (width()-goToFlow->width())/2;
|
||||
if((event->y()>height()-15)&&(event->x()>umbral)&&(event->x()<width()-umbral))
|
||||
if(goToFlow->isVisible())
|
||||
{
|
||||
|
||||
animateShowGoToFlow();
|
||||
hideCursorTimer->stop();
|
||||
QPoint gtfPos = goToFlow->mapFrom(this,event->pos());
|
||||
if(gtfPos.y() < 0 || gtfPos.x()<0 || gtfPos.x()>goToFlow->width())//TODO this extra check is for Mavericks (mouseMove over goToFlowGL seems to be broken)
|
||||
animateHideGoToFlow();
|
||||
//goToFlow->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
int umbral = (width()-goToFlow->width())/2;
|
||||
if((event->y()>height()-15)&&(event->x()>umbral)&&(event->x()<width()-umbral))
|
||||
{
|
||||
|
||||
animateShowGoToFlow();
|
||||
hideCursorTimer->stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(drag)
|
||||
@ -818,7 +818,7 @@ void Viewer::showMagnifyingGlass()
|
||||
QPoint p = QPoint(cursor().pos().x(),cursor().pos().y());
|
||||
p = this->parentWidget()->mapFromGlobal(p);
|
||||
mglass->move(static_cast<int>(p.x()-float(mglass->width())/2)
|
||||
,static_cast<int>(p.y()-float(mglass->height())/2));
|
||||
,static_cast<int>(p.y()-float(mglass->height())/2));
|
||||
mglass->show();
|
||||
mglass->updateImage(mglass->x()+mglass->width()/2,mglass->y()+mglass->height()/2);
|
||||
magnifyingGlassShowed = true;
|
||||
@ -882,7 +882,7 @@ void Viewer::animateShowGoToFlow()
|
||||
goToFlow->centerSlide(render->getIndex());
|
||||
goToFlow->setPageNumber(render->getIndex());
|
||||
goToFlow->show();
|
||||
goToFlow->setFocus(Qt::OtherFocusReason);
|
||||
goToFlow->setFocus(Qt::OtherFocusReason);
|
||||
}
|
||||
}
|
||||
|
||||
@ -896,30 +896,30 @@ void Viewer::animateHideGoToFlow()
|
||||
showGoToFlowAnimation->setEndValue(QPoint((width()-goToFlow->width())/2,height()));
|
||||
showGoToFlowAnimation->start();
|
||||
goToFlow->centerSlide(render->getIndex());
|
||||
goToFlow->setPageNumber(render->getIndex());
|
||||
this->setFocus(Qt::OtherFocusReason);
|
||||
goToFlow->setPageNumber(render->getIndex());
|
||||
this->setFocus(Qt::OtherFocusReason);
|
||||
}
|
||||
}
|
||||
|
||||
void Viewer::moveCursoToGoToFlow()
|
||||
{
|
||||
//Move cursor to goToFlow widget on show (this avoid hide when mouse is moved)
|
||||
int y = goToFlow->pos().y();
|
||||
int x1 = goToFlow->pos().x();
|
||||
int x2 = x1 + goToFlow->width();
|
||||
QPoint cursorPos = mapFromGlobal(cursor().pos());
|
||||
int cursorX = cursorPos.x();
|
||||
int cursorY = cursorPos.y();
|
||||
//Move cursor to goToFlow widget on show (this avoid hide when mouse is moved)
|
||||
int y = goToFlow->pos().y();
|
||||
int x1 = goToFlow->pos().x();
|
||||
int x2 = x1 + goToFlow->width();
|
||||
QPoint cursorPos = mapFromGlobal(cursor().pos());
|
||||
int cursorX = cursorPos.x();
|
||||
int cursorY = cursorPos.y();
|
||||
|
||||
if(cursorY <= y)
|
||||
cursorY = y + 10;
|
||||
if(cursorX <= x1)
|
||||
cursorX = x1 + 10;
|
||||
if(cursorX >= x2)
|
||||
cursorX = x2 - 10;
|
||||
cursor().setPos(mapToGlobal(QPoint(cursorX,cursorY)));
|
||||
hideCursorTimer->stop();
|
||||
showCursor();
|
||||
if(cursorY <= y)
|
||||
cursorY = y + 10;
|
||||
if(cursorX <= x1)
|
||||
cursorX = x1 + 10;
|
||||
if(cursorX >= x2)
|
||||
cursorX = x2 - 10;
|
||||
cursor().setPos(mapToGlobal(QPoint(cursorX,cursorY)));
|
||||
hideCursorTimer->stop();
|
||||
showCursor();
|
||||
}
|
||||
|
||||
void Viewer::rotateLeft()
|
||||
@ -937,18 +937,18 @@ void Viewer::setBookmark(bool set)
|
||||
render->setBookmark();
|
||||
if(set) //add bookmark
|
||||
{
|
||||
render->setBookmark();
|
||||
render->setBookmark();
|
||||
}
|
||||
else //remove bookmark
|
||||
{
|
||||
render->removeBookmark();
|
||||
render->removeBookmark();
|
||||
}
|
||||
}
|
||||
|
||||
void Viewer::save ()
|
||||
{
|
||||
if(render->hasLoadedComic())
|
||||
render->save();
|
||||
render->save();
|
||||
}
|
||||
|
||||
void Viewer::doublePageSwitch()
|
||||
@ -998,8 +998,8 @@ void Viewer::setPageUnavailableMessage()
|
||||
void Viewer::configureContent(QString msg)
|
||||
{
|
||||
content->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
|
||||
if(!(devicePixelRatio()>1))
|
||||
content->setScaledContents(true);
|
||||
if(!(devicePixelRatio()>1))
|
||||
content->setScaledContents(true);
|
||||
content->setAlignment(Qt::AlignTop|Qt::AlignHCenter);
|
||||
content->setText(msg);
|
||||
content->setFont(QFont("courier new", 12));
|
||||
@ -1030,7 +1030,6 @@ void Viewer::updateOptions()
|
||||
goToFlow->setFlowType(Configuration::getConfiguration().getFlowType());
|
||||
updateBackgroundColor(Configuration::getConfiguration().getBackgroundColor());
|
||||
updateContentSize();
|
||||
//goToFlow->updateSize();
|
||||
}
|
||||
|
||||
void Viewer::updateBackgroundColor(const QColor & color)
|
||||
@ -1079,27 +1078,27 @@ void Viewer::animateHideTranslator()
|
||||
|
||||
void Viewer::mousePressEvent ( QMouseEvent * event )
|
||||
{
|
||||
if (event->button() == Qt::LeftButton)
|
||||
{
|
||||
drag = true;
|
||||
yDragOrigin = event->y();
|
||||
xDragOrigin = event->x();
|
||||
setCursor(Qt::ClosedHandCursor);
|
||||
event->accept();
|
||||
}
|
||||
if (event->button() == Qt::LeftButton)
|
||||
{
|
||||
drag = true;
|
||||
yDragOrigin = event->y();
|
||||
xDragOrigin = event->x();
|
||||
setCursor(Qt::ClosedHandCursor);
|
||||
event->accept();
|
||||
}
|
||||
}
|
||||
|
||||
void Viewer::mouseReleaseEvent ( QMouseEvent * event )
|
||||
{
|
||||
drag = false;
|
||||
setCursor(Qt::OpenHandCursor);
|
||||
event->accept();
|
||||
drag = false;
|
||||
setCursor(Qt::OpenHandCursor);
|
||||
event->accept();
|
||||
}
|
||||
|
||||
void Viewer::updateZoomRatio(int ratio)
|
||||
{
|
||||
zoom = ratio;
|
||||
updateContentSize();
|
||||
zoom = ratio;
|
||||
updateContentSize();
|
||||
}
|
||||
|
||||
void Viewer::updateConfig(QSettings * settings)
|
||||
@ -1175,31 +1174,31 @@ void Viewer::updateComic(ComicDB & comic)
|
||||
{
|
||||
if(render->hasLoadedComic())
|
||||
{
|
||||
//set currentPage
|
||||
comic.info.currentPage = render->getIndex()+1;
|
||||
//set bookmarks
|
||||
Bookmarks * boomarks = render->getBookmarks();
|
||||
QList<int> boomarksList = boomarks->getBookmarkPages();
|
||||
int numBookmarks = boomarksList.size();
|
||||
if(numBookmarks > 0)
|
||||
comic.info.bookmark1 = boomarksList[0];
|
||||
if(numBookmarks > 1)
|
||||
comic.info.bookmark2 = boomarksList[1];
|
||||
if(numBookmarks > 2)
|
||||
comic.info.bookmark3 = boomarksList[2];
|
||||
//set filters
|
||||
//TODO: avoid use settings for this...
|
||||
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat);
|
||||
int brightness = settings.value(BRIGHTNESS,0).toInt();
|
||||
int contrast = settings.value(CONTRAST,100).toInt();
|
||||
int gamma = settings.value(GAMMA,100).toInt();
|
||||
//set currentPage
|
||||
comic.info.currentPage = render->getIndex()+1;
|
||||
//set bookmarks
|
||||
Bookmarks * boomarks = render->getBookmarks();
|
||||
QList<int> boomarksList = boomarks->getBookmarkPages();
|
||||
int numBookmarks = boomarksList.size();
|
||||
if(numBookmarks > 0)
|
||||
comic.info.bookmark1 = boomarksList[0];
|
||||
if(numBookmarks > 1)
|
||||
comic.info.bookmark2 = boomarksList[1];
|
||||
if(numBookmarks > 2)
|
||||
comic.info.bookmark3 = boomarksList[2];
|
||||
//set filters
|
||||
//TODO: avoid use settings for this...
|
||||
QSettings settings(YACReader::getSettingsPath()+"/YACReader.ini",QSettings::IniFormat);
|
||||
int brightness = settings.value(BRIGHTNESS,0).toInt();
|
||||
int contrast = settings.value(CONTRAST,100).toInt();
|
||||
int gamma = settings.value(GAMMA,100).toInt();
|
||||
|
||||
if(brightness != 0 || comic.info.brightness!=-1)
|
||||
comic.info.brightness = brightness;
|
||||
if(contrast != 100 || comic.info.contrast!=-1)
|
||||
comic.info.contrast = contrast;
|
||||
if(gamma != 100 || comic.info.gamma!=-1)
|
||||
comic.info.gamma = gamma;
|
||||
if(brightness != 0 || comic.info.brightness!=-1)
|
||||
comic.info.brightness = brightness;
|
||||
if(contrast != 100 || comic.info.contrast!=-1)
|
||||
comic.info.contrast = contrast;
|
||||
if(gamma != 100 || comic.info.gamma!=-1)
|
||||
comic.info.gamma = gamma;
|
||||
}
|
||||
|
||||
|
||||
|
@ -121,7 +121,6 @@ virtual void mouseReleaseEvent ( QMouseEvent * event );
|
||||
QPropertyAnimation * showGoToFlowAnimation;
|
||||
GoToDialog * goToDialog;
|
||||
//!Image properties
|
||||
float adjustToWidthRatio;
|
||||
//! Comic
|
||||
//Comic * comic;
|
||||
int index;
|
||||
|
@ -17,6 +17,7 @@ public:
|
||||
QVariant data(int column) const;
|
||||
virtual qulonglong getId() const;
|
||||
QList<QVariant> itemData;
|
||||
virtual ~ListItem() {}
|
||||
};
|
||||
|
||||
//------------------------------------------------------
|
||||
|
@ -1460,7 +1460,8 @@ QImage ImageLoaderGL::loadImage(const QString& fileName)
|
||||
case high:
|
||||
image = image.scaledToWidth(320,Qt::SmoothTransformation);
|
||||
break;
|
||||
|
||||
case ultraHigh:
|
||||
break; //no scaling in ultraHigh
|
||||
}
|
||||
|
||||
if(!result)
|
||||
|
@ -1406,7 +1406,8 @@ QImage ImageLoaderGL::loadImage(const QString& fileName)
|
||||
case high:
|
||||
image = image.scaledToWidth(320,Qt::SmoothTransformation);
|
||||
break;
|
||||
|
||||
case ultraHigh:
|
||||
break; //no scaling in ultraHigh
|
||||
}
|
||||
|
||||
if(!result)
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define CONTRAST "CONTRAST"
|
||||
#define GAMMA "GAMMA"
|
||||
#define SHOW_INFO "SHOW_INFO"
|
||||
#define QUICK_NAVI_MODE "QUICK_NAVI_MODE"
|
||||
|
||||
#define FLOW_TYPE_GL "FLOW_TYPE_GL"
|
||||
#define Y_POSITION "Y_POSITION"
|
||||
|
Reference in New Issue
Block a user