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"