[app] Always use the default clipboard
Also, make sure that the QClipboard methods are invoked on the main thread.
This commit is contained in:
parent
6f6e037eb3
commit
a1adc666aa
2 changed files with 73 additions and 16 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 Jolla Ltd.
|
* Copyright (C) 2015-2017 Jolla Ltd.
|
||||||
* Contact: Slava Monich <slava.monich@jolla.com>
|
* Contact: Slava Monich <slava.monich@jolla.com>
|
||||||
*
|
*
|
||||||
* You may use this file under the terms of the BSD license as follows:
|
* You may use this file under the terms of the BSD license as follows:
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
* the documentation and/or other materials provided with the
|
* the documentation and/or other materials provided with the
|
||||||
* distribution.
|
* distribution.
|
||||||
* * Neither the name of Nemo Mobile nor the names of its contributors
|
* * Neither the name of Jolla Ltd nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this
|
* may be used to endorse or promote products derived from this
|
||||||
* software without specific prior written permission.
|
* software without specific prior written permission.
|
||||||
*
|
*
|
||||||
|
@ -43,7 +43,34 @@
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
|
|
||||||
void BooksDialogManager::createApplicationWindow(ZLApplication* aApp) const
|
void BooksDialogManager::createInstance()
|
||||||
|
{
|
||||||
|
if (!ourInstance) {
|
||||||
|
ourInstance = new BooksDialogManager(qApp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
BooksDialogManager::BooksDialogManager(
|
||||||
|
QObject* aParent) :
|
||||||
|
QObject(aParent)
|
||||||
|
{
|
||||||
|
connect(this,
|
||||||
|
SIGNAL(copyTextToClipboard(QString)),
|
||||||
|
SLOT(onCopyTextToClipboard(QString)));
|
||||||
|
connect(this,
|
||||||
|
SIGNAL(copyImageToClipboard(QImage)),
|
||||||
|
SLOT(onCopyImageToClipboard(QImage)));
|
||||||
|
}
|
||||||
|
|
||||||
|
BooksDialogManager::~BooksDialogManager()
|
||||||
|
{
|
||||||
|
HASSERT(this == ourInstance);
|
||||||
|
ourInstance = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BooksDialogManager::createApplicationWindow(
|
||||||
|
ZLApplication* aApp) const
|
||||||
{
|
{
|
||||||
HDEBUG("THIS IS NOT SUPPOSED TO HAPPEN!");
|
HDEBUG("THIS IS NOT SUPPOSED TO HAPPEN!");
|
||||||
}
|
}
|
||||||
|
@ -125,9 +152,11 @@ BooksDialogManager::setClipboardText(
|
||||||
const std::string& text,
|
const std::string& text,
|
||||||
ClipboardType type) const
|
ClipboardType type) const
|
||||||
{
|
{
|
||||||
|
// May be invoked on non-UI thread
|
||||||
if (!text.empty()) {
|
if (!text.empty()) {
|
||||||
QGuiApplication::clipboard()->setText(QString::fromStdString(text),
|
QString str(QString::fromStdString(text));
|
||||||
(type == CLIPBOARD_MAIN) ? QClipboard::Clipboard : QClipboard::Selection);
|
HDEBUG(str);
|
||||||
|
Q_EMIT copyTextToClipboard(str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +165,24 @@ BooksDialogManager::setClipboardImage(
|
||||||
const ZLImageData &imageData,
|
const ZLImageData &imageData,
|
||||||
ClipboardType type) const
|
ClipboardType type) const
|
||||||
{
|
{
|
||||||
QGuiApplication::clipboard()->setImage(
|
// May be invoked on non-UI thread
|
||||||
*static_cast<const ZLQtImageData&>(imageData).image(),
|
QImage image(*((const ZLQtImageData&)imageData).image());
|
||||||
(type == CLIPBOARD_MAIN) ? QClipboard::Clipboard : QClipboard::Selection);
|
if (image.isNull()) {
|
||||||
|
HDEBUG(image.width() << "x" << image.height());
|
||||||
|
Q_EMIT copyImageToClipboard(image);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BooksDialogManager::onCopyTextToClipboard(
|
||||||
|
QString aText)
|
||||||
|
{
|
||||||
|
QGuiApplication::clipboard()->setText(aText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
BooksDialogManager::onCopyImageToClipboard(
|
||||||
|
QImage aImage)
|
||||||
|
{
|
||||||
|
QGuiApplication::clipboard()->setImage(aImage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (C) 2015 Jolla Ltd.
|
* Copyright (C) 2015-2017 Jolla Ltd.
|
||||||
* Contact: Slava Monich <slava.monich@jolla.com>
|
* Contact: Slava Monich <slava.monich@jolla.com>
|
||||||
*
|
*
|
||||||
* You may use this file under the terms of the BSD license as follows:
|
* You may use this file under the terms of the BSD license as follows:
|
||||||
|
@ -14,7 +14,7 @@
|
||||||
* notice, this list of conditions and the following disclaimer in
|
* notice, this list of conditions and the following disclaimer in
|
||||||
* the documentation and/or other materials provided with the
|
* the documentation and/or other materials provided with the
|
||||||
* distribution.
|
* distribution.
|
||||||
* * Neither the name of Nemo Mobile nor the names of its contributors
|
* * Neither the name of Jolla Ltd nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this
|
* may be used to endorse or promote products derived from this
|
||||||
* software without specific prior written permission.
|
* software without specific prior written permission.
|
||||||
*
|
*
|
||||||
|
@ -36,18 +36,29 @@
|
||||||
|
|
||||||
#include <ZLDialogManager.h>
|
#include <ZLDialogManager.h>
|
||||||
|
|
||||||
class BooksDialogManager: public ZLDialogManager {
|
#include <QObject>
|
||||||
|
#include <QString>
|
||||||
|
#include <QImage>
|
||||||
|
|
||||||
|
class BooksDialogManager: public QObject, ZLDialogManager {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static void createInstance() { ourInstance = new BooksDialogManager(); }
|
static void createInstance();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BooksDialogManager() {}
|
BooksDialogManager(QObject* aParent);
|
||||||
|
~BooksDialogManager();
|
||||||
|
|
||||||
|
Q_SIGNALS:
|
||||||
|
void copyTextToClipboard(QString aText) const;
|
||||||
|
void copyImageToClipboard(QImage aImage) const;
|
||||||
|
|
||||||
|
private Q_SLOTS:
|
||||||
|
void onCopyTextToClipboard(QString aText);
|
||||||
|
void onCopyImageToClipboard(QImage aImage);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static const ZLResource& resource(const ZLResourceKey& aKey)
|
|
||||||
{ return ZLDialogManager::resource()[aKey]; }
|
|
||||||
|
|
||||||
void createApplicationWindow(ZLApplication *application) const;
|
void createApplicationWindow(ZLApplication *application) const;
|
||||||
|
|
||||||
shared_ptr<ZLDialog> createDialog(const ZLResourceKey &key) const;
|
shared_ptr<ZLDialog> createDialog(const ZLResourceKey &key) const;
|
||||||
|
|
Loading…
Reference in a new issue