From 014f00c11f69a60fa33509bf11b9ebda986f6dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= Date: Wed, 2 Jan 2013 13:48:33 +0100 Subject: Add QMacPasteboardMime. Equivalent to QMacPasteboardMime from Qt 4. Requires exported functions from QPlatformNativeInterface. The API from Qt 4 is in large parts kept, with the exception of the static functions used internally by Qt (?) The implementation is based on having two equal classes and keeping them in sync: One internal to the Cocoa platform plugin and one public in QtMacExtras. Change-Id: I334fc982355fbb6315d7a44eeca8551071ba60be Reviewed-by: Gabriel de Dietrich --- examples/macpasteboardmime/macpasteboardmime.pro | 6 + examples/macpasteboardmime/main.cpp | 152 +++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 examples/macpasteboardmime/macpasteboardmime.pro create mode 100644 examples/macpasteboardmime/main.cpp (limited to 'examples') diff --git a/examples/macpasteboardmime/macpasteboardmime.pro b/examples/macpasteboardmime/macpasteboardmime.pro new file mode 100644 index 0000000..f2bcd2e --- /dev/null +++ b/examples/macpasteboardmime/macpasteboardmime.pro @@ -0,0 +1,6 @@ +include (../../src/qtmacextras.pri) + +SOURCES += main.cpp + + + diff --git a/examples/macpasteboardmime/main.cpp b/examples/macpasteboardmime/main.cpp new file mode 100644 index 0000000..718626a --- /dev/null +++ b/examples/macpasteboardmime/main.cpp @@ -0,0 +1,152 @@ +/**************************************************************************** + ** + ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). + ** Contact: http://www.qt-project.org/legal + ** + ** This file is part of QtMacExtras in the Qt Toolkit. + ** + ** $QT_BEGIN_LICENSE:LGPL$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and Digia. For licensing terms and + ** conditions see http://qt.digia.com/licensing. For further information + ** use the contact form at http://qt.digia.com/contact-us. + ** + ** GNU Lesser General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU Lesser + ** General Public License version 2.1 as published by the Free Software + ** Foundation and appearing in the file LICENSE.LGPL included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU Lesser General Public License version 2.1 requirements + ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. + ** + ** In addition, as a special exception, Digia gives you certain additional + ** rights. These rights are described in the Digia Qt LGPL Exception + ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 3.0 as published by the Free Software + ** Foundation and appearing in the file LICENSE.GPL included in the + ** packaging of this file. Please review the following information to + ** ensure the GNU General Public License version 3.0 requirements will be + ** met: http://www.gnu.org/copyleft/gpl.html. + ** + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#include +#include + +#include + +class VCardMime : public QMacPasteboardMime +{ +public: + VCardMime() : QMacPasteboardMime(MIME_ALL) + { } + + QString convertorName() + { + return QString("VCardMime"); + } + + bool canConvert(const QString &mime, QString flav) + { + return mimeFor(flav) == mime; + } + + QString mimeFor(QString flav) + { + if (flav == QString("public.vcard")) + return QString("application/x-mycompany-VCard"); + return QString(); + } + + QString flavorFor(const QString &mime) + { + if (mime == QString("application/x-mycompany-VCard")) + return QString("public.vcard"); + return QString(); + } + + QVariant convertToMime(const QString &mime, QList data, QString flav) + { + Q_UNUSED(mime); + Q_UNUSED(flav); + + QByteArray all; + foreach (QByteArray i, data) { + all += i; + } + return QVariant(all); + } + + QList convertFromMime(const QString &mime, QVariant data, QString flav) + { + Q_UNUSED(mime); + Q_UNUSED(data); + Q_UNUSED(flav); + // Todo: implement! + return QList(); + } + +}; + +class TestWidget : public QWidget +{ +public: + TestWidget() : QWidget(0) + { + vcardMime = new VCardMime(); + setAcceptDrops(true); + } + + ~TestWidget() + { + delete vcardMime; + } + + void dragEnterEvent(QDragEnterEvent *e) + { + e->accept(); + + } + + virtual void dropEvent(QDropEvent *e) + { + e->accept(); + contentsDropEvent(e); + } + + void contentsDropEvent(QDropEvent* e) + { + if ( e->mimeData()->hasFormat( "application/x-mycompany-VCard" ) ) + { + QString s = QString( e->mimeData()->data( "application/x-mycompany-VCard" ) ); + + // s now contains text of vcard + qDebug() << "got vcard" << s.count(); + + e->acceptProposedAction(); + } + } +private: + VCardMime *vcardMime; +}; + +int main(int argc, char **argv) +{ + QApplication app(argc, argv); + + qRegisterDraggedTypes(QStringList() << QStringLiteral("public.vcard")); + + TestWidget wid1; + wid1.show(); + + return app.exec(); +} -- cgit v1.2.3