File indexing completed on 2024-05-12 16:59:36
0001 /* 0002 SPDX-FileCopyrightText: 2015 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "contenttracker.h" 0008 #include <QBuffer> 0009 #include <QImage> 0010 #include <QPixmap> 0011 #include <QQmlEngine> 0012 #include <QQmlExtensionPlugin> 0013 #include <QVariant> 0014 #include <qqml.h> 0015 0016 class PurposeHelper : public QObject 0017 { 0018 Q_OBJECT 0019 public: 0020 Q_INVOKABLE static QByteArray variantToBase64(const QVariant &content) 0021 { 0022 switch (content.type()) { 0023 case QVariant::Image: 0024 return imageToBase64(content.value<QImage>()); 0025 case QVariant::Pixmap: 0026 return imageToBase64(content.value<QPixmap>().toImage()); 0027 case QVariant::ByteArray: 0028 return content.toByteArray().toBase64(); 0029 case QVariant::String: 0030 default: 0031 return content.toString().toLatin1().toBase64(); 0032 } 0033 } 0034 0035 static QByteArray imageToBase64(const QImage &img) 0036 { 0037 QByteArray bytes; 0038 { 0039 QBuffer buffer(&bytes); 0040 buffer.open(QIODevice::WriteOnly); 0041 bool b = img.save(&buffer, "PNG"); 0042 Q_ASSERT(b); 0043 } 0044 return bytes.toBase64(); 0045 } 0046 }; 0047 0048 class NotesPlugin : public QQmlExtensionPlugin 0049 { 0050 Q_OBJECT 0051 Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface") 0052 public: 0053 void registerTypes(const char *uri) override 0054 { 0055 Q_UNUSED(uri); 0056 qmlRegisterSingletonType<PurposeHelper>("org.kde.plasma.private.purpose", 1, 0, "PurposeHelper", [](QQmlEngine *, QJSEngine *) -> QObject * { 0057 return new PurposeHelper; 0058 }); 0059 qmlRegisterType<ContentTracker>("org.kde.plasma.private.purpose", 1, 0, "ContentTracker"); 0060 } 0061 }; 0062 0063 #include "purposeplugin.moc"