summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/divepicturewidget.cpp14
-rw-r--r--desktop-widgets/divepicturewidget.h2
-rw-r--r--desktop-widgets/tab-widgets/TabDivePhotos.cpp9
-rw-r--r--desktop-widgets/tab-widgets/TabDivePhotos.h1
-rw-r--r--desktop-widgets/tab-widgets/TabDivePhotos.ui36
5 files changed, 62 insertions, 0 deletions
diff --git a/desktop-widgets/divepicturewidget.cpp b/desktop-widgets/divepicturewidget.cpp
index a6864a5d9..46de16d09 100644
--- a/desktop-widgets/divepicturewidget.cpp
+++ b/desktop-widgets/divepicturewidget.cpp
@@ -59,3 +59,17 @@ void DivePictureWidget::mousePressEvent(QMouseEvent *event)
QListView::mousePressEvent(event);
}
}
+
+void DivePictureWidget::wheelEvent(QWheelEvent *event)
+{
+ if (event->modifiers() == Qt::ControlModifier) {
+ // Angle delta is given in eighth parts of a degree. A classical mouse
+ // wheel click is 15 degrees. Each click should correspond to one zoom step.
+ // Therefore, divide by 15*8=120. To also support touch pads and finer-grained
+ // mouse wheels, take care to always round away from zero.
+ int delta = event->angleDelta().y();
+ int carry = delta > 0 ? 119 : -119;
+ emit zoomLevelChanged((delta + carry) / 120);
+ } else
+ QListView::wheelEvent(event);
+}
diff --git a/desktop-widgets/divepicturewidget.h b/desktop-widgets/divepicturewidget.h
index 09d4608c4..bf48a9d1b 100644
--- a/desktop-widgets/divepicturewidget.h
+++ b/desktop-widgets/divepicturewidget.h
@@ -14,9 +14,11 @@ public:
protected:
void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE;
+ void wheelEvent(QWheelEvent *event) Q_DECL_OVERRIDE;
signals:
void photoDoubleClicked(const QString filePath);
+ void zoomLevelChanged(int delta);
};
class DivePictureThumbnailThread : public QThread {
diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.cpp b/desktop-widgets/tab-widgets/TabDivePhotos.cpp
index 86749e770..571e0a3ac 100644
--- a/desktop-widgets/tab-widgets/TabDivePhotos.cpp
+++ b/desktop-widgets/tab-widgets/TabDivePhotos.cpp
@@ -29,6 +29,10 @@ TabDivePhotos::TabDivePhotos(QWidget *parent)
QDesktopServices::openUrl(QUrl::fromLocalFile(path));
}
);
+ connect(ui->photosView, &DivePictureWidget::zoomLevelChanged,
+ this, &TabDivePhotos::changeZoomLevel);
+ connect(ui->zoomSlider, &QAbstractSlider::valueChanged,
+ DivePictureModel::instance(), &DivePictureModel::setZoomLevel);
}
TabDivePhotos::~TabDivePhotos()
@@ -98,3 +102,8 @@ void TabDivePhotos::updateData()
divePictureModel->updateDivePictures();
}
+void TabDivePhotos::changeZoomLevel(int delta)
+{
+ // We count on QSlider doing bound checks
+ ui->zoomSlider->setValue(ui->zoomSlider->value() + delta);
+}
diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.h b/desktop-widgets/tab-widgets/TabDivePhotos.h
index 9b711595c..e2e7aa05c 100644
--- a/desktop-widgets/tab-widgets/TabDivePhotos.h
+++ b/desktop-widgets/tab-widgets/TabDivePhotos.h
@@ -26,6 +26,7 @@ private slots:
void addPhotosFromURL();
void removeAllPhotos();
void removeSelectedPhotos();
+ void changeZoomLevel(int delta);
private:
Ui::TabDivePhotos *ui;
diff --git a/desktop-widgets/tab-widgets/TabDivePhotos.ui b/desktop-widgets/tab-widgets/TabDivePhotos.ui
index 35cfd375a..21e4544e6 100644
--- a/desktop-widgets/tab-widgets/TabDivePhotos.ui
+++ b/desktop-widgets/tab-widgets/TabDivePhotos.ui
@@ -21,6 +21,42 @@
</property>
</widget>
</item>
+ <item>
+ <layout class="QHBoxLayout" name="zoomLayout">
+ <item>
+ <widget class="QLabel" name="zoomLabel">
+ <property name="text">
+ <string>Zoom level</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="zoomSlider">
+ <property name="minimum">
+ <number>-10</number>
+ </property>
+ <property name="maximum">
+ <number>10</number>
+ </property>
+ <property name="singleStep">
+ <number>1</number>
+ </property>
+ <property name="pageStep">
+ <number>1</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="tickPosition">
+ <enum>QSlider::TicksBelow</enum>
+ </property>
+ <property name="tickInterval">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
</layout>
</widget>
<customwidgets>