From 5bf074758f357625e757565026497d71259119de Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Sun, 30 Nov 2014 17:37:07 +0100 Subject: [PATCH 1/8] Add zoom and fit to page modes to scaling --- YACReader/configuration.h | 4 ++++ YACReader/viewer.cpp | 15 ++++++++++++++- common/yacreader_global.h | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/YACReader/configuration.h b/YACReader/configuration.h index ba9e1531..edd42b29 100644 --- a/YACReader/configuration.h +++ b/YACReader/configuration.h @@ -60,8 +60,12 @@ using namespace YACReader; 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 getPageZoomLevel() { return settings->value(PAGE_ZOOM_LEVEL).toFloat();} + void setPageZoomLevel(float zl) { settings->setValue(PAGE_ZOOM_LEVEL,zl);} bool getAdjustToWidth() {return settings->value(FIT).toBool();} void setAdjustToWidth(bool atw=true) {settings->setValue(FIT,atw);} + bool getFitToPage() {return settings->value(PAGEFIT).toBool();} + void setFitToPage(bool b=true) {settings->setValue(PAGEFIT,b);} FlowType getFlowType(){return (FlowType)settings->value(FLOW_TYPE_SW).toInt();} void setFlowType(FlowType type){settings->setValue(FLOW_TYPE_SW,type);} bool getFullScreen(){return settings->value(FULLSCREEN).toBool();} diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index 40e8dbba..97ff6d96 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -316,7 +316,13 @@ void Viewer::updateContentSize() { if(Configuration::getConfiguration().getAdjustToFullSize()) { - content->resize(currentPage->width(),currentPage->height()); + content->resize(currentPage->size()); + } + else if(Configuration::getConfiguration().getFitToPage()) + { + QSize pagefit=currentPage->size(); + pagefit.scale(size(), Qt::KeepAspectRatio); + content->resize(pagefit); } else { @@ -343,6 +349,13 @@ void Viewer::updateContentSize() } } + if(Configuration::getConfiguration().getPageZoomLevel()) + { + QSize pagesize=content->size(); + pagesize.scale(content->width()*Configuration::getConfiguration().getPageZoomLevel(), content->height(), Qt::KeepAspectRatio); + content->resize(pagesize); + } + if(devicePixelRatio()>1)//only in retina display { QPixmap page = currentPage->scaled(content->width()*devicePixelRatio(), content->height()*devicePixelRatio(), Qt::KeepAspectRatio, Qt::SmoothTransformation); diff --git a/common/yacreader_global.h b/common/yacreader_global.h index c9a8826f..faa516f3 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -14,10 +14,12 @@ #define PATH "PATH" #define MAG_GLASS_SIZE "MAG_GLASS_SIZE" #define ZOOM_LEVEL "ZOOM_LEVEL" +#define PAGE_ZOOM_LEVEL "PAGE_ZOOM_LEVEL" #define SLIDE_SIZE "SLIDE_SIZE" #define GO_TO_FLOW_SIZE "GO_TO_FLOW_SIZE" #define FLOW_TYPE_SW "FLOW_TYPE_SW" #define FIT "FIT" +#define PAGEFIT "PAGEFIT" #define FLOW_TYPE "FLOW_TYPE" #define FULLSCREEN "FULLSCREEN" #define FIT_TO_WIDTH_RATIO "FIT_TO_WIDTH_RATIO" From 496a90daefaa2da7813acc5eac06bf6b1e32f1d2 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Sun, 30 Nov 2014 18:22:34 +0100 Subject: [PATCH 2/8] Add controls for fit to page scaling --- YACReader/main_window_viewer.cpp | 23 ++++++++++++++++++++++- YACReader/main_window_viewer.h | 2 ++ shortcuts_management/shortcuts_manager.h | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index c0724ac8..39d5e07d 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -107,6 +107,7 @@ MainWindowViewer::~MainWindowViewer() delete showDictionaryAction; delete alwaysOnTopAction; delete adjustToFullSizeAction; + delete fitToPageAction; delete showFlowAction; } @@ -410,6 +411,15 @@ void MainWindowViewer::createActions() adjustToFullSizeAction->setData(ADJUST_TO_FULL_SIZE_ACTION_Y); adjustToFullSizeAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADJUST_TO_FULL_SIZE_ACTION_Y)); connect(adjustToFullSizeAction,SIGNAL(triggered()),this,SLOT(adjustToFullSizeSwitch())); + + fitToPageAction = new QAction(tr("Fit to page"),this); + //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); + fitToPageAction->setCheckable(true); + fitToPageAction->setDisabled(true); + fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); + fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); + fitToPageAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FIT_TO_PAGE_ACTION_Y)); + connect(fitToPageAction,SIGNAL(triggered()),this,SLOT(fitToPageSwitch())); showFlowAction = new QAction(tr("Show go to flow"),this); showFlowAction->setIcon(QIcon(":/images/viewer_toolbar/flow.png")); @@ -524,6 +534,7 @@ void MainWindowViewer::createToolBars() comicToolBar->addAction(adjustHeightAction); comicToolBar->addAction(adjustToFullSizeAction); + comicToolBar->addAction(fitToPageAction); comicToolBar->addAction(leftRotationAction); comicToolBar->addAction(rightRotationAction); comicToolBar->addAction(doublePageAction); @@ -574,6 +585,7 @@ void MainWindowViewer::createToolBars() viewer->addAction(adjustHeightAction); viewer->addAction(adjustWidthAction); viewer->addAction(adjustToFullSizeAction); + viewer->addAction(fitToPageAction); viewer->addAction(leftRotationAction); viewer->addAction(rightRotationAction); viewer->addAction(doublePageAction); @@ -809,6 +821,7 @@ void MainWindowViewer::enableActions() doublePageAction->setDisabled(false); doubleMangaPageAction->setDisabled(false); adjustToFullSizeAction->setDisabled(false); + fitToPageAction->setDisabled(false); //setBookmark->setDisabled(false); showBookmarksAction->setDisabled(false); showInfoAction->setDisabled(false); //TODO enable goTo and showInfo (or update) when numPages emited @@ -830,6 +843,7 @@ void MainWindowViewer::disableActions() doublePageAction->setDisabled(true); doubleMangaPageAction->setDisabled(true); adjustToFullSizeAction->setDisabled(true); + fitToPageAction->setDisabled(true); setBookmarkAction->setDisabled(true); showBookmarksAction->setDisabled(true); showInfoAction->setDisabled(true); //TODO enable goTo and showInfo (or update) when numPages emited @@ -1082,7 +1096,8 @@ void MainWindowViewer::setUpShortcutsManagement() << rightRotationAction << doublePageAction << doubleMangaPageAction - << adjustToFullSizeAction); + << adjustToFullSizeAction + << fitToPageAction); allActions << tmpList; @@ -1375,6 +1390,12 @@ void MainWindowViewer::adjustToFullSizeSwitch() viewer->updatePage(); } +void MainWindowViewer::fitToPageSwitch() +{ + Configuration::getConfiguration().setFitToPage(!Configuration::getConfiguration().getFitToPage()); + viewer->updatePage(); +} + void MainWindowViewer::sendComic() { YACReaderLocalClient * client = new YACReaderLocalClient; diff --git a/YACReader/main_window_viewer.h b/YACReader/main_window_viewer.h index a2923c3b..6277265d 100644 --- a/YACReader/main_window_viewer.h +++ b/YACReader/main_window_viewer.h @@ -53,6 +53,7 @@ class EditShortcutsDialog; void openFolderFromPath(QString pathFile, QString atFileName); void alwaysOnTopSwitch(); void adjustToFullSizeSwitch(); + void fitToPageSwitch(); void reloadOptions(); void fitToWidth(); void fitToHeight(); @@ -118,6 +119,7 @@ class EditShortcutsDialog; QAction *showDictionaryAction; QAction *alwaysOnTopAction; QAction *adjustToFullSizeAction; + QAction *fitToPageAction; QAction *showFlowAction; QAction *showEditShortcutsAction; diff --git a/shortcuts_management/shortcuts_manager.h b/shortcuts_management/shortcuts_manager.h index 609ee57d..b3f7bd13 100644 --- a/shortcuts_management/shortcuts_manager.h +++ b/shortcuts_management/shortcuts_manager.h @@ -108,6 +108,7 @@ public: #define SHOW_DICTIONARY_ACTION_Y "SHOW_DICTIONARY_ACTION_Y" #define ALWAYS_ON_TOP_ACTION_Y "ALWAYS_ON_TOP_ACTION_Y" #define ADJUST_TO_FULL_SIZE_ACTION_Y "ADJUST_TO_FULL_SIZE_ACTION_Y" +#define FIT_TO_PAGE_ACTION_Y "FIT_TO_PAGE_ACTION_Y" #define SHOW_FLOW_ACTION_Y "SHOW_FLOW_ACTION_Y" #define SHOW_EDIT_SHORTCUTS_ACTION_Y "SHOW_EDIT_SHORTCUTS_ACTION_Y" From bf98cf3343a6ccf3ab22bcdba55c79d91ef13ae8 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 11:41:52 +0100 Subject: [PATCH 3/8] Scaling code refractoring, add fit to page mode and zoom levels --- YACReader/main_window_viewer.cpp | 32 +++++++++++++++++++++++++++++++- YACReader/main_window_viewer.h | 4 ++++ YACReader/viewer.cpp | 20 ++++++++++++++++++-- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index 39d5e07d..c5959923 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -420,6 +420,22 @@ void MainWindowViewer::createActions() fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); fitToPageAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FIT_TO_PAGE_ACTION_Y)); connect(fitToPageAction,SIGNAL(triggered()),this,SLOT(fitToPageSwitch())); + + increasePageZoomAction = new QAction(tr("Zoom+"),this); + //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); + //fitToPageAction->setDisabled(true); + //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); + //fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); + increasePageZoomAction->setShortcut(QKeySequence::ZoomIn); + connect(increasePageZoomAction,SIGNAL(triggered()),this,SLOT(increasePageZoomLevel())); + + decreasePageZoomAction = new QAction(tr("Zoom-"),this); + //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); + //fitToPageAction->setDisabled(true); + //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); + //fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); + decreasePageZoomAction->setShortcut(QKeySequence::ZoomOut); + connect(decreasePageZoomAction,SIGNAL(triggered()),this,SLOT(decreasePageZoomLevel())); showFlowAction = new QAction(tr("Show go to flow"),this); showFlowAction->setIcon(QIcon(":/images/viewer_toolbar/flow.png")); @@ -543,7 +559,8 @@ void MainWindowViewer::createToolBars() comicToolBar->addSeparator(); comicToolBar->addAction(showMagnifyingGlassAction); - + comicToolBar->addAction(increasePageZoomAction); + comicToolBar->addAction(decreasePageZoomAction); comicToolBar->addSeparator(); @@ -1396,6 +1413,19 @@ void MainWindowViewer::fitToPageSwitch() viewer->updatePage(); } +void MainWindowViewer::increasePageZoomLevel() +{ + qDebug() << "Increase page zoom level!"; + Configuration::getConfiguration().setPageZoomLevel(Configuration::getConfiguration().getPageZoomLevel() + 0.1); + viewer->updatePage(); +} + +void MainWindowViewer::decreasePageZoomLevel() +{ + Configuration::getConfiguration().setPageZoomLevel(Configuration::getConfiguration().getPageZoomLevel() - 0.1); + viewer->updatePage(); +} + void MainWindowViewer::sendComic() { YACReaderLocalClient * client = new YACReaderLocalClient; diff --git a/YACReader/main_window_viewer.h b/YACReader/main_window_viewer.h index 6277265d..3c991a24 100644 --- a/YACReader/main_window_viewer.h +++ b/YACReader/main_window_viewer.h @@ -54,6 +54,8 @@ class EditShortcutsDialog; void alwaysOnTopSwitch(); void adjustToFullSizeSwitch(); void fitToPageSwitch(); + void increasePageZoomLevel(); + void decreasePageZoomLevel(); void reloadOptions(); void fitToWidth(); void fitToHeight(); @@ -120,6 +122,8 @@ class EditShortcutsDialog; QAction *alwaysOnTopAction; QAction *adjustToFullSizeAction; QAction *fitToPageAction; + QAction *increasePageZoomAction; + QAction *decreasePageZoomAction; QAction *showFlowAction; QAction *showEditShortcutsAction; diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index 97ff6d96..1594b9ea 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -326,9 +326,16 @@ void Viewer::updateContentSize() } else { - float aspectRatio = (float)currentPage->width()/currentPage->height(); + //float aspectRatio = (float)currentPage->width()/currentPage->height(); //Fit to width if(Configuration::getConfiguration().getAdjustToWidth()) + { + QSize pagefit=currentPage->size(); + pagefit.scale(width(), 0, Qt::KeepAspectRatioByExpanding); + content->resize(pagefit); + } + /* + if(Configuration::getConfiguration().getAdjustToWidth()) { adjustToWidthRatio = Configuration::getConfiguration().getFitToWidthRatio(); if(static_cast(width()*adjustToWidthRatio/aspectRatio)resize(width()*adjustToWidthRatio,static_cast(width()*adjustToWidthRatio/aspectRatio)); } + //Fit to height or fullsize/custom size else { @@ -346,18 +354,26 @@ void Viewer::updateContentSize() content->resize(width(),static_cast(width()/aspectRatio)); else content->resize(static_cast(height()*aspectRatio),height()); + }*/ + else + { + QSize pagefit=currentPage->size(); + pagefit.scale(0, height(), Qt::KeepAspectRatioByExpanding); + content->resize(pagefit); } + } if(Configuration::getConfiguration().getPageZoomLevel()) { QSize pagesize=content->size(); - pagesize.scale(content->width()*Configuration::getConfiguration().getPageZoomLevel(), content->height(), Qt::KeepAspectRatio); + pagesize.scale(content->width()*Configuration::getConfiguration().getPageZoomLevel(), 0, Qt::KeepAspectRatioByExpanding); content->resize(pagesize); } if(devicePixelRatio()>1)//only in retina display { + qDebug() << "Retina Display detected" << "devicePixelRatio:" << devicePixelRatio(); QPixmap page = currentPage->scaled(content->width()*devicePixelRatio(), content->height()*devicePixelRatio(), Qt::KeepAspectRatio, Qt::SmoothTransformation); page.setDevicePixelRatio(devicePixelRatio()); content->setPixmap(page); From b1990955156b321d903eeab8c3544afb4645e0ae Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 13:54:30 +0100 Subject: [PATCH 4/8] Refractoring: Use only one fitting mode config option for all fitting modes. --- YACReader/configuration.cpp | 8 ++++---- YACReader/configuration.h | 11 +++++++++-- YACReader/main_window_viewer.cpp | 29 +++++++++++++++++++---------- YACReader/viewer.cpp | 31 ++++++++++++++++--------------- common/yacreader_global.h | 1 + 5 files changed, 49 insertions(+), 31 deletions(-) diff --git a/YACReader/configuration.cpp b/YACReader/configuration.cpp index 13e7a9b2..909a76c8 100644 --- a/YACReader/configuration.cpp +++ b/YACReader/configuration.cpp @@ -33,8 +33,8 @@ void Configuration::load(QSettings * settings) settings->setValue(MAG_GLASS_SIZE,QSize(350,175)); if(!settings->contains(ZOOM_LEVEL)) settings->setValue(MAG_GLASS_SIZE,QSize(350,175)); - if(!settings->contains(FIT)) - settings->setValue(FIT,false); + //if(!settings->contains(FIT)) + // settings->setValue(FIT,false); if(!settings->contains(FLOW_TYPE)) settings->setValue(FLOW_TYPE,0); if(!settings->contains(FULLSCREEN)) @@ -47,8 +47,8 @@ void Configuration::load(QSettings * settings) settings->setValue(MAXIMIZED,false); if(!settings->contains(DOUBLE_PAGE)) settings->setValue(DOUBLE_PAGE,false); - if(!settings->contains(ADJUST_TO_FULL_SIZE)) - settings->setValue(ADJUST_TO_FULL_SIZE,false); + //if(!settings->contains(ADJUST_TO_FULL_SIZE)) + // settings->setValue(ADJUST_TO_FULL_SIZE,false); if(!settings->contains(BACKGROUND_COLOR)) settings->setValue(BACKGROUND_COLOR,QColor(40,40,40)); if(!settings->contains(ALWAYS_ON_TOP)) diff --git a/YACReader/configuration.h b/YACReader/configuration.h index edd42b29..213e58ce 100644 --- a/YACReader/configuration.h +++ b/YACReader/configuration.h @@ -62,10 +62,19 @@ using namespace YACReader; void setZoomLevel(float zl) { settings->setValue(ZOOM_LEVEL,zl);} float getPageZoomLevel() { return settings->value(PAGE_ZOOM_LEVEL).toFloat();} void setPageZoomLevel(float zl) { settings->setValue(PAGE_ZOOM_LEVEL,zl);} + /* + //Old fitting modes bool getAdjustToWidth() {return settings->value(FIT).toBool();} void setAdjustToWidth(bool atw=true) {settings->setValue(FIT,atw);} bool getFitToPage() {return settings->value(PAGEFIT).toBool();} void setFitToPage(bool b=true) {settings->setValue(PAGEFIT,b);} + bool getAdjustToFullSize(){return settings->value(ADJUST_TO_FULL_SIZE).toBool();} + void setAdjustToFullSize(bool b){settings->setValue(ADJUST_TO_FULL_SIZE,b);} + */ + + QString getFitMode() { return settings->value(FITMODE).toString(); } + void setFitMode ( QString fitMode ){settings->setValue(FITMODE, fitMode);} + FlowType getFlowType(){return (FlowType)settings->value(FLOW_TYPE_SW).toInt();} void setFlowType(FlowType type){settings->setValue(FLOW_TYPE_SW,type);} bool getFullScreen(){return settings->value(FULLSCREEN).toBool();} @@ -82,8 +91,6 @@ using namespace YACReader; void setDoublePage(bool b){settings->setValue(DOUBLE_PAGE,b);} bool getDoubleMangaPage(){return settings->value(DOUBLE_MANGA_PAGE).toBool();} void setDoubleMangaPage(bool b){settings->setValue(DOUBLE_MANGA_PAGE,b);} - bool getAdjustToFullSize(){return settings->value(ADJUST_TO_FULL_SIZE).toBool();} - void setAdjustToFullSize(bool b){settings->setValue(ADJUST_TO_FULL_SIZE,b);} QColor getBackgroundColor(){return settings->value(BACKGROUND_COLOR).value();} void setBackgroundColor(const QColor& color){settings->value(BACKGROUND_COLOR,color);} bool getAlwaysOnTop(){return settings->value(ALWAYS_ON_TOP).toBool();} diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index c5959923..1198ecb5 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -262,7 +262,7 @@ void MainWindowViewer::createActions() adjustHeightAction->setIcon(QIcon(":/images/viewer_toolbar/toHeight.png")); //adjustWidth->setCheckable(true); adjustHeightAction->setDisabled(true); - adjustHeightAction->setChecked(Configuration::getConfiguration().getAdjustToWidth()); + //adjustHeightAction->setChecked(Configuration::getConfiguration().getAdjustToWidth()); adjustHeightAction->setToolTip(tr("Fit image to height")); //adjustWidth->setIcon(QIcon(":/images/fitWidth.png")); adjustHeightAction->setData(ADJUST_HEIGHT_ACTION_Y); @@ -273,7 +273,7 @@ void MainWindowViewer::createActions() adjustWidthAction->setIcon(QIcon(":/images/viewer_toolbar/toWidth.png")); //adjustWidth->setCheckable(true); adjustWidthAction->setDisabled(true); - adjustWidthAction->setChecked(Configuration::getConfiguration().getAdjustToWidth()); + //adjustWidthAction->setChecked(Configuration::getConfiguration().getAdjustToWidth()); adjustWidthAction->setToolTip(tr("Fit image to width")); //adjustWidth->setIcon(QIcon(":/images/fitWidth.png")); adjustWidthAction->setData(ADJUST_WIDTH_ACTION_Y); @@ -405,9 +405,9 @@ void MainWindowViewer::createActions() adjustToFullSizeAction = new QAction(tr("Show full size"),this); adjustToFullSizeAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); - adjustToFullSizeAction->setCheckable(true); + //adjustToFullSizeAction->setCheckable(true); adjustToFullSizeAction->setDisabled(true); - adjustToFullSizeAction->setChecked(Configuration::getConfiguration().getAdjustToFullSize()); + //adjustToFullSizeAction->setChecked(Configuration::getConfiguration().getAdjustToFullSize()); adjustToFullSizeAction->setData(ADJUST_TO_FULL_SIZE_ACTION_Y); adjustToFullSizeAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ADJUST_TO_FULL_SIZE_ACTION_Y)); connect(adjustToFullSizeAction,SIGNAL(triggered()),this,SLOT(adjustToFullSizeSwitch())); @@ -416,7 +416,7 @@ void MainWindowViewer::createActions() //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); fitToPageAction->setCheckable(true); fitToPageAction->setDisabled(true); - fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); + //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); fitToPageAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(FIT_TO_PAGE_ACTION_Y)); connect(fitToPageAction,SIGNAL(triggered()),this,SLOT(fitToPageSwitch())); @@ -971,21 +971,28 @@ void MainWindowViewer::showToolBars() } void MainWindowViewer::fitToWidth() { + Configuration::getConfiguration().setFitMode("to_width"); + viewer->updatePage(); +/* Configuration & conf = Configuration::getConfiguration(); if(!conf.getAdjustToWidth()) { conf.setAdjustToWidth(true); viewer->updatePage(); } +*/ } void MainWindowViewer::fitToHeight() { + Configuration::getConfiguration().setFitMode("to_height"); + viewer->updatePage(); + /* Configuration & conf = Configuration::getConfiguration(); if(conf.getAdjustToWidth()) { conf.setAdjustToWidth(false); viewer->updatePage(); - } + }*/ } void MainWindowViewer::checkNewVersion() @@ -1189,8 +1196,9 @@ void MainWindowViewer::toggleFitToWidthSlider() void MainWindowViewer::changeFit() { + //TODO: this is depreceated Configuration & conf = Configuration::getConfiguration(); - conf.setAdjustToWidth(!conf.getAdjustToWidth()); + //conf.setAdjustToWidth(!conf.getAdjustToWidth()); viewer->updatePage(); } @@ -1403,19 +1411,20 @@ void MainWindowViewer::alwaysOnTopSwitch() void MainWindowViewer::adjustToFullSizeSwitch() { - Configuration::getConfiguration().setAdjustToFullSize(!Configuration::getConfiguration().getAdjustToFullSize()); + //Configuration::getConfiguration().setAdjustToFullSize(!Configuration::getConfiguration().getAdjustToFullSize()); + Configuration::getConfiguration().setFitMode("full_size"); viewer->updatePage(); } void MainWindowViewer::fitToPageSwitch() { - Configuration::getConfiguration().setFitToPage(!Configuration::getConfiguration().getFitToPage()); + //Configuration::getConfiguration().setFitToPage(!Configuration::getConfiguration().getFitToPage()); + Configuration::getConfiguration().setFitMode("full_page"); viewer->updatePage(); } void MainWindowViewer::increasePageZoomLevel() { - qDebug() << "Increase page zoom level!"; Configuration::getConfiguration().setPageZoomLevel(Configuration::getConfiguration().getPageZoomLevel() + 0.1); viewer->updatePage(); } diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index 1594b9ea..b9717a46 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -314,21 +314,22 @@ void Viewer::updateContentSize() //there is an image to resize if(currentPage !=0 && !currentPage->isNull()) { - if(Configuration::getConfiguration().getAdjustToFullSize()) - { - content->resize(currentPage->size()); - } - else if(Configuration::getConfiguration().getFitToPage()) - { - QSize pagefit=currentPage->size(); - pagefit.scale(size(), Qt::KeepAspectRatio); - content->resize(pagefit); - } - else + if(!Configuration::getConfiguration().getFitMode().isNull()) { + if(Configuration::getConfiguration().getFitMode()=="full_size") + { + content->resize(currentPage->size()); + } + if(Configuration::getConfiguration().getFitMode()=="full_page") + { + QSize pagefit=currentPage->size(); + pagefit.scale(size(), Qt::KeepAspectRatio); + content->resize(pagefit); + } + //float aspectRatio = (float)currentPage->width()/currentPage->height(); //Fit to width - if(Configuration::getConfiguration().getAdjustToWidth()) + if(Configuration::getConfiguration().getFitMode()=="to_width") { QSize pagefit=currentPage->size(); pagefit.scale(width(), 0, Qt::KeepAspectRatioByExpanding); @@ -355,7 +356,7 @@ void Viewer::updateContentSize() else content->resize(static_cast(height()*aspectRatio),height()); }*/ - else + if(Configuration::getConfiguration().getFitMode()=="to_height") { QSize pagefit=currentPage->size(); pagefit.scale(0, height(), Qt::KeepAspectRatioByExpanding); @@ -373,7 +374,6 @@ void Viewer::updateContentSize() if(devicePixelRatio()>1)//only in retina display { - qDebug() << "Retina Display detected" << "devicePixelRatio:" << devicePixelRatio(); QPixmap page = currentPage->scaled(content->width()*devicePixelRatio(), content->height()*devicePixelRatio(), Qt::KeepAspectRatio, Qt::SmoothTransformation); page.setDevicePixelRatio(devicePixelRatio()); content->setPixmap(page); @@ -899,7 +899,8 @@ void Viewer::mouseReleaseEvent ( QMouseEvent * event ) void Viewer::updateFitToWidthRatio(float ratio) { - Configuration::getConfiguration().setAdjustToWidth(true); + //Configuration::getConfiguration().setAdjustToWidth(true); + Configuration::getConfiguration().setFitMode("to_width"); adjustToWidthRatio = ratio; updateContentSize(); } diff --git a/common/yacreader_global.h b/common/yacreader_global.h index faa516f3..e57f4105 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -20,6 +20,7 @@ #define FLOW_TYPE_SW "FLOW_TYPE_SW" #define FIT "FIT" #define PAGEFIT "PAGEFIT" +#define FITMODE "FITMODE" #define FLOW_TYPE "FLOW_TYPE" #define FULLSCREEN "FULLSCREEN" #define FIT_TO_WIDTH_RATIO "FIT_TO_WIDTH_RATIO" From c180b6e8a8c4648e99224ec358bd24b475ee8309 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 14:30:40 +0100 Subject: [PATCH 5/8] More refactoring. Add zoom actions to shortcut manager. --- YACReader/configuration.cpp | 3 +++ YACReader/configuration.h | 2 +- YACReader/main_window_viewer.cpp | 25 ++++++++++++---------- common/yacreader_global.h | 6 +++--- shortcuts_management/shortcuts_manager.cpp | 4 +++- shortcuts_management/shortcuts_manager.h | 2 ++ 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/YACReader/configuration.cpp b/YACReader/configuration.cpp index 909a76c8..059d4090 100644 --- a/YACReader/configuration.cpp +++ b/YACReader/configuration.cpp @@ -39,8 +39,11 @@ void Configuration::load(QSettings * settings) settings->setValue(FLOW_TYPE,0); if(!settings->contains(FULLSCREEN)) settings->setValue(FULLSCREEN,false); + +//TODO: Replace this with zoom mode if(!settings->contains(FIT_TO_WIDTH_RATIO)) settings->setValue(FIT_TO_WIDTH_RATIO,1); + if(!settings->contains(Y_WINDOW_SIZE)) settings->setValue(Y_WINDOW_SIZE,QSize(0,0)); if(!settings->contains(MAXIMIZED)) diff --git a/YACReader/configuration.h b/YACReader/configuration.h index 213e58ce..559e05d1 100644 --- a/YACReader/configuration.h +++ b/YACReader/configuration.h @@ -27,7 +27,7 @@ using namespace YACReader; QSize magnifyingGlassSize; QSize gotoSlideSize; float zoomLevel; - bool adjustToWidth; + //bool adjustToWidth; bool fullScreen; FlowType flowType; float fitToWidthRatio; diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index 1198ecb5..e1f738c8 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -414,7 +414,7 @@ void MainWindowViewer::createActions() fitToPageAction = new QAction(tr("Fit to page"),this); //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); - fitToPageAction->setCheckable(true); + //fitToPageAction->setCheckable(true); fitToPageAction->setDisabled(true); //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); @@ -422,19 +422,20 @@ void MainWindowViewer::createActions() connect(fitToPageAction,SIGNAL(triggered()),this,SLOT(fitToPageSwitch())); increasePageZoomAction = new QAction(tr("Zoom+"),this); - //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); - //fitToPageAction->setDisabled(true); - //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); - //fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); - increasePageZoomAction->setShortcut(QKeySequence::ZoomIn); + //increasePageZoomAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); + increasePageZoomAction->setDisabled(true); + increasePageZoomAction->setData(ZOOM_PLUS_ACTION_Y); + increasePageZoomAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_PLUS_ACTION_Y)); + connect(increasePageZoomAction,SIGNAL(triggered()),this,SLOT(increasePageZoomLevel())); decreasePageZoomAction = new QAction(tr("Zoom-"),this); - //fitToPageAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); - //fitToPageAction->setDisabled(true); - //fitToPageAction->setChecked(Configuration::getConfiguration().getFitToPage()); - //fitToPageAction->setData(FIT_TO_PAGE_ACTION_Y); - decreasePageZoomAction->setShortcut(QKeySequence::ZoomOut); + //decreasePageZoomAction->setIcon(QIcon(":/images/viewer_toolbar/full.png")); + decreasePageZoomAction->setDisabled(true); + decreasePageZoomAction->setData(ZOOM_MINUS_ACTION_Y); + decreasePageZoomAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(ZOOM_MINUS_ACTION_Y)); + //decreasePageZoomAction->setShortcut(QKeySequence::ZoomOut); + connect(decreasePageZoomAction,SIGNAL(triggered()),this,SLOT(decreasePageZoomLevel())); showFlowAction = new QAction(tr("Show go to flow"),this); @@ -839,6 +840,8 @@ void MainWindowViewer::enableActions() doubleMangaPageAction->setDisabled(false); adjustToFullSizeAction->setDisabled(false); fitToPageAction->setDisabled(false); + increasePageZoomAction->setDisabled(false); + decreasePageZoomAction->setDisabled(false); //setBookmark->setDisabled(false); showBookmarksAction->setDisabled(false); showInfoAction->setDisabled(false); //TODO enable goTo and showInfo (or update) when numPages emited diff --git a/common/yacreader_global.h b/common/yacreader_global.h index e57f4105..2ce3de78 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -18,8 +18,8 @@ #define SLIDE_SIZE "SLIDE_SIZE" #define GO_TO_FLOW_SIZE "GO_TO_FLOW_SIZE" #define FLOW_TYPE_SW "FLOW_TYPE_SW" -#define FIT "FIT" -#define PAGEFIT "PAGEFIT" +//#define FIT "FIT" +//#define PAGEFIT "PAGEFIT" #define FITMODE "FITMODE" #define FLOW_TYPE "FLOW_TYPE" #define FULLSCREEN "FULLSCREEN" @@ -29,7 +29,7 @@ #define MAXIMIZED "MAXIMIZED" #define DOUBLE_PAGE "DOUBLE_PAGE" #define DOUBLE_MANGA_PAGE "DOUBLE_MANGA_PAGE" -#define ADJUST_TO_FULL_SIZE "ADJUST_TO_FULL_SIZE" +//#define ADJUST_TO_FULL_SIZE "ADJUST_TO_FULL_SIZE" #define BACKGROUND_COLOR "BACKGROUND_COLOR" #define ALWAYS_ON_TOP "ALWAYS_ON_TOP" #define SHOW_TOOLBARS "SHOW_TOOLBARS" diff --git a/shortcuts_management/shortcuts_manager.cpp b/shortcuts_management/shortcuts_manager.cpp index 40e725de..5558b617 100644 --- a/shortcuts_management/shortcuts_manager.cpp +++ b/shortcuts_management/shortcuts_manager.cpp @@ -52,7 +52,9 @@ void ShortcutsManager::initDefaultShorcuts() defaultShorcuts.insert(ALWAYS_ON_TOP_ACTION_Y, Qt::Key_Q); //deprecated defaultShorcuts.insert(ADJUST_TO_FULL_SIZE_ACTION_Y, Qt::Key_W); defaultShorcuts.insert(SHOW_FLOW_ACTION_Y, Qt::Key_S); - + defaultShorcuts.insert(ZOOM_PLUS_ACTION_Y, QKeySequence::ZoomIn); + defaultShorcuts.insert(ZOOM_MINUS_ACTION_Y, QKeySequence::ZoomOut); + //main_window_viewer defaultShorcuts.insert(TOGGLE_FULL_SCREEN_ACTION_Y, Qt::Key_F); defaultShorcuts.insert(TOGGLE_TOOL_BARS_ACTION_Y, Qt::Key_H); diff --git a/shortcuts_management/shortcuts_manager.h b/shortcuts_management/shortcuts_manager.h index b3f7bd13..5ed39454 100644 --- a/shortcuts_management/shortcuts_manager.h +++ b/shortcuts_management/shortcuts_manager.h @@ -109,6 +109,8 @@ public: #define ALWAYS_ON_TOP_ACTION_Y "ALWAYS_ON_TOP_ACTION_Y" #define ADJUST_TO_FULL_SIZE_ACTION_Y "ADJUST_TO_FULL_SIZE_ACTION_Y" #define FIT_TO_PAGE_ACTION_Y "FIT_TO_PAGE_ACTION_Y" +#define ZOOM_PLUS_ACTION_Y "ZOOM_PLUS_ACTION_Y" +#define ZOOM_MINUS_ACTION_Y "ZOOM_MINUS_ACTION_Y" #define SHOW_FLOW_ACTION_Y "SHOW_FLOW_ACTION_Y" #define SHOW_EDIT_SHORTCUTS_ACTION_Y "SHOW_EDIT_SHORTCUTS_ACTION_Y" From 142c962a9a6afee7b4771e8f284b70c91a0614a6 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 14:34:53 +0100 Subject: [PATCH 6/8] Set default fit mode to full_page --- YACReader/configuration.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/YACReader/configuration.cpp b/YACReader/configuration.cpp index 059d4090..f2145873 100644 --- a/YACReader/configuration.cpp +++ b/YACReader/configuration.cpp @@ -58,4 +58,6 @@ void Configuration::load(QSettings * settings) settings->setValue(ALWAYS_ON_TOP,false); if(!settings->contains(SHOW_TOOLBARS)) settings->setValue(SHOW_TOOLBARS, true); + if(!settings->contains(FITMODE)) + settings->setValue(FITMODE, "full_page"); } \ No newline at end of file From 84607127fec2f03fd4a2078392ce503f59b6a440 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 14:39:13 +0100 Subject: [PATCH 7/8] Make sure we always have a valid fit mode, even if someone or something screws with the config --- YACReader/viewer.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index b9717a46..67c0169e 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -320,7 +320,7 @@ void Viewer::updateContentSize() { content->resize(currentPage->size()); } - if(Configuration::getConfiguration().getFitMode()=="full_page") + else if(Configuration::getConfiguration().getFitMode()=="full_page") { QSize pagefit=currentPage->size(); pagefit.scale(size(), Qt::KeepAspectRatio); @@ -329,7 +329,7 @@ void Viewer::updateContentSize() //float aspectRatio = (float)currentPage->width()/currentPage->height(); //Fit to width - if(Configuration::getConfiguration().getFitMode()=="to_width") + else if(Configuration::getConfiguration().getFitMode()=="to_width") { QSize pagefit=currentPage->size(); pagefit.scale(width(), 0, Qt::KeepAspectRatioByExpanding); @@ -356,13 +356,21 @@ void Viewer::updateContentSize() else content->resize(static_cast(height()*aspectRatio),height()); }*/ - if(Configuration::getConfiguration().getFitMode()=="to_height") + else if(Configuration::getConfiguration().getFitMode()=="to_height") { QSize pagefit=currentPage->size(); pagefit.scale(0, height(), Qt::KeepAspectRatioByExpanding); content->resize(pagefit); } + else //if everything else fails use full_page + { + Configuration::getConfiguration().setFitMode("full_page"); + QSize pagefit=currentPage->size(); + pagefit.scale(size(), Qt::KeepAspectRatio); + content->resize(pagefit); + } + } if(Configuration::getConfiguration().getPageZoomLevel()) From 6688346ce8a981f265232a0f5aa8c5dc6bcc7147 Mon Sep 17 00:00:00 2001 From: Felix Kauselmann <2039670+selmf@users.noreply.github.com> Date: Fri, 2 Jan 2015 14:43:31 +0100 Subject: [PATCH 8/8] Reset zoom level to 100% when switching fit modes. --- YACReader/main_window_viewer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index e1f738c8..bb4a3760 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -975,6 +975,7 @@ void MainWindowViewer::showToolBars() void MainWindowViewer::fitToWidth() { Configuration::getConfiguration().setFitMode("to_width"); + Configuration::getConfiguration().setPageZoomLevel(1); viewer->updatePage(); /* Configuration & conf = Configuration::getConfiguration(); @@ -988,6 +989,7 @@ void MainWindowViewer::fitToWidth() void MainWindowViewer::fitToHeight() { Configuration::getConfiguration().setFitMode("to_height"); + Configuration::getConfiguration().setPageZoomLevel(1); viewer->updatePage(); /* Configuration & conf = Configuration::getConfiguration(); @@ -1416,6 +1418,7 @@ void MainWindowViewer::adjustToFullSizeSwitch() { //Configuration::getConfiguration().setAdjustToFullSize(!Configuration::getConfiguration().getAdjustToFullSize()); Configuration::getConfiguration().setFitMode("full_size"); + Configuration::getConfiguration().setPageZoomLevel(1); viewer->updatePage(); } @@ -1423,6 +1426,7 @@ void MainWindowViewer::fitToPageSwitch() { //Configuration::getConfiguration().setFitToPage(!Configuration::getConfiguration().getFitToPage()); Configuration::getConfiguration().setFitMode("full_page"); + Configuration::getConfiguration().setPageZoomLevel(1); viewer->updatePage(); }