From 2bebec95bf3eefdf9327e398c1a290f09e88a2f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Sat, 2 Mar 2024 12:14:01 +0100 Subject: [PATCH] Save magnifying glass size and zoom level --- CHANGELOG.md | 6 ++++++ YACReader/configuration.cpp | 4 ++-- YACReader/configuration.h | 2 ++ YACReader/magnifying_glass.cpp | 18 ++++++++++++++---- YACReader/magnifying_glass.h | 9 +++++++-- YACReader/main_window_viewer.cpp | 6 +++++- YACReader/viewer.cpp | 14 +++++++++++++- YACReader/viewer.h | 1 + common/yacreader_global.h | 2 +- common/yacreader_global_gui.h | 2 +- shortcuts_management/shortcuts_manager.cpp | 1 + shortcuts_management/shortcuts_manager.h | 1 + 12 files changed, 54 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80ee3d92..c8b1094f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ Version counting is based on semantic versioning (Major.Feature.Patch) +## WIP (9.15.0) + +### YACReader +* Save magnifying glass size and zoom level. +* Add shortcut to reset the magnifying glass to its defaults (size and zoom), it is `slash` by default but it can be reasigned. + ## 9.14.2 ### YACReaderLibrary diff --git a/YACReader/configuration.cpp b/YACReader/configuration.cpp index 9e7f6455..15868a8f 100644 --- a/YACReader/configuration.cpp +++ b/YACReader/configuration.cpp @@ -27,8 +27,8 @@ void Configuration::load(QSettings *settings) settings->setValue(GO_TO_FLOW_SIZE, QSize(126, 200)); if (!settings->contains(MAG_GLASS_SIZE)) settings->setValue(MAG_GLASS_SIZE, QSize(350, 175)); - if (!settings->contains(ZOOM_LEVEL)) - settings->setValue(MAG_GLASS_SIZE, QSize(350, 175)); + if (!settings->contains(MAG_GLASS_ZOOM)) + settings->setValue(MAG_GLASS_ZOOM, 0.5); if (!settings->contains(FLOW_TYPE)) settings->setValue(FLOW_TYPE, 0); if (!settings->contains(FULLSCREEN)) diff --git a/YACReader/configuration.h b/YACReader/configuration.h index 03d9de46..a1694117 100644 --- a/YACReader/configuration.h +++ b/YACReader/configuration.h @@ -36,6 +36,8 @@ public: void setDefaultPath(QString defaultPath) { settings->setValue(PATH, defaultPath); } QSize getMagnifyingGlassSize() { return settings->value(MAG_GLASS_SIZE).toSize(); } void setMagnifyingGlassSize(const QSize &mgs) { settings->setValue(MAG_GLASS_SIZE, mgs); } + float getMagnifyingGlassZoom() { return settings->value(MAG_GLASS_ZOOM, 0.5).toFloat(); } + void setMagnifyingGlassZoom(float mgz) { settings->setValue(MAG_GLASS_ZOOM, mgz); } 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(); } diff --git a/YACReader/magnifying_glass.cpp b/YACReader/magnifying_glass.cpp index 38d8e629..05c919be 100644 --- a/YACReader/magnifying_glass.cpp +++ b/YACReader/magnifying_glass.cpp @@ -4,14 +4,14 @@ #include -MagnifyingGlass::MagnifyingGlass(int w, int h, QWidget *parent) - : QLabel(parent), zoomLevel(0.5) +MagnifyingGlass::MagnifyingGlass(int w, int h, float zoomLevel, QWidget *parent) + : QLabel(parent), zoomLevel(zoomLevel) { setup(QSize(w, h)); } -MagnifyingGlass::MagnifyingGlass(const QSize &size, QWidget *parent) - : QLabel(parent), zoomLevel(0.5) +MagnifyingGlass::MagnifyingGlass(const QSize &size, float zoomLevel, QWidget *parent) + : QLabel(parent), zoomLevel(zoomLevel) { setup(size); } @@ -178,6 +178,7 @@ void MagnifyingGlass::zoomIn() { if (zoomLevel > 0.2f) { zoomLevel -= 0.025f; + emit zoomChanged(zoomLevel); updateImage(); } } @@ -186,6 +187,7 @@ void MagnifyingGlass::zoomOut() { if (zoomLevel < 0.9f) { zoomLevel += 0.025f; + emit zoomChanged(zoomLevel); updateImage(); } } @@ -234,9 +236,17 @@ void MagnifyingGlass::widthDown() resizeAndUpdate(w, height()); } +void MagnifyingGlass::reset() +{ + zoomLevel = 0.5f; + emit zoomChanged(zoomLevel); + resizeAndUpdate(350, 175); +} + void MagnifyingGlass::resizeAndUpdate(int w, int h) { resize(w, h); + emit sizeChanged(size()); updateImage(); } diff --git a/YACReader/magnifying_glass.h b/YACReader/magnifying_glass.h index 77d1462b..33137de0 100644 --- a/YACReader/magnifying_glass.h +++ b/YACReader/magnifying_glass.h @@ -23,8 +23,8 @@ private: bool shrinkHeight(int &h) const; public: - MagnifyingGlass(int width, int height, QWidget *parent); - MagnifyingGlass(const QSize &size, QWidget *parent); + MagnifyingGlass(int width, int height, float zoomLevel, QWidget *parent); + MagnifyingGlass(const QSize &size, float zoomLevel, QWidget *parent); void mouseMoveEvent(QMouseEvent *event) override; public slots: void updateImage(int x, int y); @@ -38,6 +38,11 @@ public slots: void heightDown(); void widthUp(); void widthDown(); + void reset(); + +signals: + void sizeChanged(QSize newSize); + void zoomChanged(float newZoomLevel); }; #endif diff --git a/YACReader/main_window_viewer.cpp b/YACReader/main_window_viewer.cpp index e1153700..1ac26eb5 100644 --- a/YACReader/main_window_viewer.cpp +++ b/YACReader/main_window_viewer.cpp @@ -1187,8 +1187,12 @@ void MainWindowViewer::setUpShortcutsManagement() auto *const zoomOutMglassAction = addActionWithShortcut(tr("Zoom out magnifying glass"), ZOOM_OUT_MGLASS_ACTION_Y); connect(zoomOutMglassAction, &QAction::triggered, viewer, &Viewer::magnifyingGlassZoomOut); + auto *const resetMglassAction = addActionWithShortcut(tr("Reset magnifying glass"), RESET_MGLASS_ACTION_Y); + connect(resetMglassAction, &QAction::triggered, viewer, &Viewer::resetMagnifyingGlass); + mglassActions = { sizeUpMglassAction, sizeDownMglassAction, - zoomInMglassAction, zoomOutMglassAction }; + zoomInMglassAction, zoomOutMglassAction, + resetMglassAction }; editShortcutsDialog->addActionsGroup(tr("Magnifiying glass"), QIcon(":/images/shortcuts_group_mglass.svg"), tmpList = QList() diff --git a/YACReader/viewer.cpp b/YACReader/viewer.cpp index 58973bcf..ef90725a 100644 --- a/YACReader/viewer.cpp +++ b/YACReader/viewer.cpp @@ -61,7 +61,18 @@ Viewer::Viewer(QWidget *parent) palette.setColor(backgroundRole(), Configuration::getConfiguration().getBackgroundColor()); setPalette(palette); //--------------------------------------- - mglass = new MagnifyingGlass(Configuration::getConfiguration().getMagnifyingGlassSize(), this); + mglass = new MagnifyingGlass( + Configuration::getConfiguration().getMagnifyingGlassSize(), + Configuration::getConfiguration().getMagnifyingGlassZoom(), + this); + + connect(mglass, &MagnifyingGlass::sizeChanged, this, [](QSize size) { + Configuration::getConfiguration().setMagnifyingGlassSize(size); + }); + connect(mglass, &MagnifyingGlass::zoomChanged, this, [](float zoom) { + Configuration::getConfiguration().setMagnifyingGlassZoom(zoom); + }); + mglass->hide(); content->setMouseTracking(true); setMouseTracking(true); @@ -159,6 +170,7 @@ void Viewer::createConnections() connect(this, &Viewer::magnifyingGlassSizeDown, mglass, &MagnifyingGlass::sizeDown); connect(this, &Viewer::magnifyingGlassZoomIn, mglass, &MagnifyingGlass::zoomIn); connect(this, &Viewer::magnifyingGlassZoomOut, mglass, &MagnifyingGlass::zoomOut); + connect(this, &Viewer::resetMagnifyingGlass, mglass, &MagnifyingGlass::reset); // goToDialog connect(goToDialog, &GoToDialog::goToPage, this, &Viewer::goTo); diff --git a/YACReader/viewer.h b/YACReader/viewer.h index b17c266a..455cd347 100644 --- a/YACReader/viewer.h +++ b/YACReader/viewer.h @@ -210,6 +210,7 @@ signals: void magnifyingGlassSizeDown(); void magnifyingGlassZoomIn(); void magnifyingGlassZoomOut(); + void resetMagnifyingGlass(); }; #endif diff --git a/common/yacreader_global.h b/common/yacreader_global.h index ff29767e..8a97beb7 100644 --- a/common/yacreader_global.h +++ b/common/yacreader_global.h @@ -6,7 +6,7 @@ #include #include -#define VERSION "9.14.2" +#define VERSION "9.15.0" // Used to check if the database needs to be updated, the version is stored in the database. // This value is only incremented when the database structure changes. diff --git a/common/yacreader_global_gui.h b/common/yacreader_global_gui.h index 6d161ba1..4a940281 100644 --- a/common/yacreader_global_gui.h +++ b/common/yacreader_global_gui.h @@ -8,6 +8,7 @@ #define PATH "PATH" #define MAG_GLASS_SIZE "MAG_GLASS_SIZE" +#define MAG_GLASS_ZOOM "MAG_GLASS_ZOOM" #define ZOOM_LEVEL "ZOOM_LEVEL" #define SLIDE_SIZE "SLIDE_SIZE" #define GO_TO_FLOW_SIZE "GO_TO_FLOW_SIZE" @@ -40,7 +41,6 @@ #define Y_POSITION "Y_POSITION" #define COVER_DISTANCE "COVER_DISTANCE" #define CENTRAL_DISTANCE "CENTRAL_DISTANCE" -#define ZOOM_LEVEL "ZOOM_LEVEL" #define Z_COVER_OFFSET "Z_COVER_OFFSET" #define COVER_ROTATION "COVER_ROTATION" #define FADE_OUT_DIST "FADE_OUT_DIST" diff --git a/shortcuts_management/shortcuts_manager.cpp b/shortcuts_management/shortcuts_manager.cpp index e2ce5841..8dc5c7b2 100644 --- a/shortcuts_management/shortcuts_manager.cpp +++ b/shortcuts_management/shortcuts_manager.cpp @@ -76,6 +76,7 @@ void ShortcutsManager::initDefaultShorcuts() defaultShorcuts.insert(SIZE_DOWN_MGLASS_ACTION_Y, Qt::Key_Minus); defaultShorcuts.insert(ZOOM_IN_MGLASS_ACTION_Y, Qt::Key_Asterisk); defaultShorcuts.insert(ZOOM_OUT_MGLASS_ACTION_Y, Qt::Key_Underscore); + defaultShorcuts.insert(RESET_MGLASS_ACTION_Y, Qt::Key_Slash); #ifdef Q_OS_MACOS defaultShorcuts.insert(NEW_INSTANCE_ACTION_Y, Qt::Key_N); diff --git a/shortcuts_management/shortcuts_manager.h b/shortcuts_management/shortcuts_manager.h index 8f727114..ccf712cc 100644 --- a/shortcuts_management/shortcuts_manager.h +++ b/shortcuts_management/shortcuts_manager.h @@ -159,5 +159,6 @@ public: #define SIZE_DOWN_MGLASS_ACTION_Y "SIZE_DOWN_MGLASS_ACTION_Y" #define ZOOM_IN_MGLASS_ACTION_Y "ZOOM_IN_MGLASS_ACTION_Y" #define ZOOM_OUT_MGLASS_ACTION_Y "ZOOM_OUT_MGLASS_ACTION_Y" +#define RESET_MGLASS_ACTION_Y "RESET_MGLASS_ACTION_Y" #endif // SHORTCUTS_MANAGER_H