From fa8e6a76dbf09473fc6daabe5a4e00bb87ad89cd Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 16 Jun 2018 15:37:55 +0200 Subject: [PATCH] Allow to copy in Qt Quick GUI --- qml/EntriesPage.qml | 8 ++++++++ quickgui/controller.cpp | 18 ++++++++++++++++++ quickgui/controller.h | 1 + 3 files changed, 27 insertions(+) diff --git a/qml/EntriesPage.qml b/qml/EntriesPage.qml index af0d7b9..b11e2d2 100644 --- a/qml/EntriesPage.qml +++ b/qml/EntriesPage.qml @@ -172,6 +172,14 @@ Kirigami.ScrollablePage { fieldsListView.model.index(index, 0), model.isPassword ? 0 : 1, 0x0100 + 1) } + Controls.MenuItem { + icon.name: "edit-copy" + text: qsTr("Copy password") + onClicked: showPassiveNotification( + nativeInterface.copyToClipboard( + model.actualValue) ? qsTr("Copied") : qsTr( + "Unable to access clipboard")) + } Controls.MenuItem { icon.name: "edit-delete" text: qsTr("Delete field") diff --git a/quickgui/controller.cpp b/quickgui/controller.cpp index a5cb1bf..04a1a5e 100644 --- a/quickgui/controller.cpp +++ b/quickgui/controller.cpp @@ -8,8 +8,12 @@ #include #include +#ifndef QT_NO_CLIPBOARD +#include +#endif #include #include +#include #include #include #include @@ -191,6 +195,20 @@ QStringList Controller::pasteEntries(const QModelIndex &destinationParent, int r return successfullyMovedEntries; } +bool Controller::copyToClipboard(const QString &text) const +{ +#ifndef QT_NO_CLIPBOARD + auto *clipboard(QGuiApplication::clipboard()); + if (!clipboard) { + return false; + } + clipboard->setText(text); + return true; +#else + return false; +#endif +} + void Controller::resetFileStatus() { setFileOpen(false); diff --git a/quickgui/controller.h b/quickgui/controller.h index 15156ee..96fce56 100644 --- a/quickgui/controller.h +++ b/quickgui/controller.h @@ -50,6 +50,7 @@ class Controller : public QObject { QString currentAccountName() const; Q_INVOKABLE void cutEntry(const QModelIndex &entryIndex); Q_INVOKABLE QStringList pasteEntries(const QModelIndex &destinationParent, int row = -1); + Q_INVOKABLE bool copyToClipboard(const QString &text) const; bool canPaste() const; const QStringList &recentFiles() const;