From c092d555bd6d3e93a11625bfe76bb59b2e64e994 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Sat, 29 Jul 2017 16:42:52 -0600 Subject: SelectableLabel to support copying individual labels --- framework/src/CMakeLists.txt | 1 + framework/src/clipboardproxy.cpp | 52 +++++++++++++++++++++++++++++++++++++++ framework/src/clipboardproxy.h | 39 +++++++++++++++++++++++++++++ framework/src/frameworkplugin.cpp | 2 ++ 4 files changed, 94 insertions(+) create mode 100644 framework/src/clipboardproxy.cpp create mode 100644 framework/src/clipboardproxy.h (limited to 'framework/src') diff --git a/framework/src/CMakeLists.txt b/framework/src/CMakeLists.txt index 034feba9..85ad8344 100644 --- a/framework/src/CMakeLists.txt +++ b/framework/src/CMakeLists.txt @@ -40,6 +40,7 @@ set(SRCS fabric.cpp sinkfabric.cpp kubeimage.cpp + clipboardproxy.cpp ) add_library(frameworkplugin SHARED ${SRCS}) diff --git a/framework/src/clipboardproxy.cpp b/framework/src/clipboardproxy.cpp new file mode 100644 index 00000000..aaa5052b --- /dev/null +++ b/framework/src/clipboardproxy.cpp @@ -0,0 +1,52 @@ +/* + Copyright (c) 2016 Christian Mollekofp + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#include "clipboardproxy.h" + +#include +#include + +ClipboardProxy::ClipboardProxy(QObject *parent) + : QObject(parent) +{ + QClipboard *clipboard = QApplication::clipboard(); + QObject::connect(clipboard, &QClipboard::dataChanged, + this, &ClipboardProxy::dataChanged); + QObject::connect(clipboard, &QClipboard::selectionChanged, + this, &ClipboardProxy::selectionChanged); +} + +void ClipboardProxy::setDataText(const QString &text) +{ + QApplication::clipboard()->setText(text, QClipboard::Clipboard); +} + +QString ClipboardProxy::dataText() const +{ + return QGuiApplication::clipboard()->text(QClipboard::Clipboard); +} + +void ClipboardProxy::setSelectionText(const QString &text) +{ + QApplication::clipboard()->setText(text, QClipboard::Selection); +} + +QString ClipboardProxy::selectionText() const +{ + return QApplication::clipboard()->text(QClipboard::Selection); +} diff --git a/framework/src/clipboardproxy.h b/framework/src/clipboardproxy.h new file mode 100644 index 00000000..9a965004 --- /dev/null +++ b/framework/src/clipboardproxy.h @@ -0,0 +1,39 @@ +/* + Copyright (c) 2016 Christian Mollekofp + + This library is free software; you can redistribute it and/or modify it + under the terms of the GNU Library General Public License as published by + the Free Software Foundation; either version 2 of the License, or (at your + option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public + License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. +*/ +#pragma once + +#include +class ClipboardProxy : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString text READ dataText WRITE setDataText NOTIFY dataChanged) + Q_PROPERTY(QString selectionText READ selectionText WRITE setSelectionText NOTIFY selectionChanged) +public: + explicit ClipboardProxy(QObject *parent = 0); + + void setDataText(const QString &text); + QString dataText() const; + + void setSelectionText(const QString &text); + QString selectionText() const; + +signals: + void dataChanged(); + void selectionChanged(); +}; diff --git a/framework/src/frameworkplugin.cpp b/framework/src/frameworkplugin.cpp index 9c79f515..33bc8cbc 100644 --- a/framework/src/frameworkplugin.cpp +++ b/framework/src/frameworkplugin.cpp @@ -34,6 +34,7 @@ #include "settings/settings.h" #include "fabric.h" #include "kubeimage.h" +#include "clipboardproxy.h" #include @@ -65,4 +66,5 @@ void FrameworkPlugin::registerTypes (const char *uri) qmlRegisterSingletonType(uri, 1, 0, "Fabric", fabric_singletontype_provider); qmlRegisterType(uri, 1, 0, "KubeImage"); + qmlRegisterType(uri, 1, 0, "Clipboard"); } -- cgit v1.2.3