Add C++ Clipboard class accessible from QML
This commit is contained in:
parent
7090ff601f
commit
30823a9bf5
|
@ -12,8 +12,8 @@ RCC_DIR = $$BUILD_DIR/rcc
|
||||||
QRC_FILE = $$BUILD_DIR/resources.qrc
|
QRC_FILE = $$BUILD_DIR/resources.qrc
|
||||||
|
|
||||||
RESOURCES += $$QRC_FILE
|
RESOURCES += $$QRC_FILE
|
||||||
HEADERS += src/utils.h
|
HEADERS += src/utils.h src/clipboard.h
|
||||||
SOURCES += src/main.cpp src/utils.cpp
|
SOURCES += src/main.cpp src/utils.cpp src/clipboard.cpp
|
||||||
TARGET = harmonyqml
|
TARGET = harmonyqml
|
||||||
|
|
||||||
|
|
||||||
|
|
38
src/clipboard.cpp
Normal file
38
src/clipboard.cpp
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
#include <QClipboard>
|
||||||
|
#include "clipboard.h"
|
||||||
|
|
||||||
|
|
||||||
|
Clipboard::Clipboard(QObject *parent)
|
||||||
|
: QObject(parent) {
|
||||||
|
|
||||||
|
connect(m_clipboard, &QClipboard::dataChanged,
|
||||||
|
this, &Clipboard::textChanged);
|
||||||
|
|
||||||
|
connect(m_clipboard, &QClipboard::selectionChanged,
|
||||||
|
this, &Clipboard::selectionChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString Clipboard::text() const {
|
||||||
|
return m_clipboard->text(QClipboard::Clipboard);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clipboard::setText(const QString &text) {
|
||||||
|
m_clipboard->setText(text, QClipboard::Clipboard);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QString Clipboard::selection() const {
|
||||||
|
return m_clipboard->text(QClipboard::Selection);
|
||||||
|
}
|
||||||
|
|
||||||
|
void Clipboard::setSelection(const QString &text) {
|
||||||
|
if (m_clipboard->supportsSelection()) {
|
||||||
|
m_clipboard->setText(text, QClipboard::Selection);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bool Clipboard::supportsSelection() const {
|
||||||
|
return m_clipboard->supportsSelection();
|
||||||
|
}
|
37
src/clipboard.h
Normal file
37
src/clipboard.h
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
#ifndef CLIPBOARD_H
|
||||||
|
#define CLIPBOARD_H
|
||||||
|
|
||||||
|
#include <QGuiApplication>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
|
||||||
|
class Clipboard : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged)
|
||||||
|
Q_PROPERTY(QString selection READ selection WRITE setSelection
|
||||||
|
NOTIFY selectionChanged)
|
||||||
|
|
||||||
|
Q_PROPERTY(bool supportsSelection READ supportsSelection CONSTANT)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit Clipboard(QObject *parent = 0);
|
||||||
|
|
||||||
|
QString text() const;
|
||||||
|
void setText(const QString &text);
|
||||||
|
|
||||||
|
QString selection() const;
|
||||||
|
void setSelection(const QString &text);
|
||||||
|
|
||||||
|
bool supportsSelection() const;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void textChanged();
|
||||||
|
void selectionChanged();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QClipboard *m_clipboard = QGuiApplication::clipboard();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
|
@ -5,6 +5,7 @@
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
|
#include "clipboard.h"
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
@ -25,6 +26,7 @@ int main(int argc, char *argv[]) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
objectContext->setContextProperty("CppUtils", new Utils());
|
objectContext->setContextProperty("CppUtils", new Utils());
|
||||||
|
objectContext->setContextProperty("Clipboard", new Clipboard());
|
||||||
|
|
||||||
QFileInfo qrcPath(":src/qml/Window.qml");
|
QFileInfo qrcPath(":src/qml/Window.qml");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user