diff --git a/qmlUiKirigami/ImageViewer.qml b/qmlUiKirigami/ImageViewer.qml --- a/qmlUiKirigami/ImageViewer.qml +++ b/qmlUiKirigami/ImageViewer.qml @@ -91,6 +91,22 @@ onTriggered: { imageDoc.rotate(90) } + }, + Kirigami.Action { + iconName: "image-flip-horizontal-symbolic" + text: i18n("Flip horizontal") + tooltip: i18n("Flips the image horizontally") + onTriggered: { + imageDoc.mirror( true, false) + } + }, + Kirigami.Action { + iconName: "image-flip-vertical-symbolic" + text: i18n("Flip vertical") + tooltip: i18n("Flips the image vertically") + onTriggered: { + imageDoc.mirror( false, true) + } } ] } @@ -260,6 +276,7 @@ MouseArea { anchors.fill: parent onClicked: { + contextDrawer.drawerOpen = false doubleClickTimer.restart(); } onDoubleClicked: { diff --git a/src/imagedocument.h b/src/imagedocument.h --- a/src/imagedocument.h +++ b/src/imagedocument.h @@ -37,6 +37,7 @@ QImage visualImage(); Q_INVOKABLE void rotate( int angle); + Q_INVOKABLE void mirror( bool horizontal, bool vertical); signals: void pathChanged(const QString &url); diff --git a/src/imagedocument.cpp b/src/imagedocument.cpp --- a/src/imagedocument.cpp +++ b/src/imagedocument.cpp @@ -64,7 +64,16 @@ if (QFileInfo( location).isWritable()) { m_image->save( location); } - + emit visualImageChanged(); +} + +void ImageDocument::mirror(bool horizontal, bool vertical) +{ + *m_image = m_image->mirrored( horizontal, vertical); + QString location = QUrl( m_path).path(); + if (QFileInfo( location).isWritable()) { + m_image->save( location); + } emit visualImageChanged(); }