Save magnifying glass size and zoom level

This commit is contained in:
Luis Ángel San Martín 2024-03-02 12:14:01 +01:00
parent 390883080d
commit 2bebec95bf
12 changed files with 54 additions and 12 deletions

View File

@ -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

View File

@ -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))

View File

@ -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(); }

View File

@ -4,14 +4,14 @@
#include <QScrollBar>
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();
}

View File

@ -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

View File

@ -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<QAction *>()

View File

@ -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);

View File

@ -210,6 +210,7 @@ signals:
void magnifyingGlassSizeDown();
void magnifyingGlassZoomIn();
void magnifyingGlassZoomOut();
void resetMagnifyingGlass();
};
#endif

View File

@ -6,7 +6,7 @@
#include <QMetaType>
#include <QAbstractItemModel>
#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.

View File

@ -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"

View File

@ -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);

View File

@ -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