File indexing completed on 2024-05-05 17:39:42

0001 /*
0002  * SPDX-FileCopyrightText: 2014 Daniel Vratil <dvratil@redhat.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-or-later
0005  *
0006  */
0007 
0008 #ifndef CONFIGSERIALIZER_H
0009 #define CONFIGSERIALIZER_H
0010 
0011 #include <QDBusArgument>
0012 #include <QJsonArray>
0013 #include <QJsonObject>
0014 #include <QVariant>
0015 
0016 #include "kscreen_export.h"
0017 #include "types.h"
0018 
0019 namespace KScreen
0020 {
0021 namespace ConfigSerializer
0022 {
0023 KSCREEN_EXPORT QJsonObject serializePoint(const QPoint &point);
0024 KSCREEN_EXPORT QJsonObject serializeSize(const QSize &size);
0025 template<typename T> KSCREEN_EXPORT QJsonArray serializeList(const QList<T> &list)
0026 {
0027     QJsonArray arr;
0028     for (const T &t : list) {
0029         arr.append(t);
0030     }
0031     return arr;
0032 }
0033 
0034 KSCREEN_EXPORT QJsonObject serializeConfig(const KScreen::ConfigPtr &config);
0035 KSCREEN_EXPORT QJsonObject serializeOutput(const KScreen::OutputPtr &output);
0036 KSCREEN_EXPORT QJsonObject serializeMode(const KScreen::ModePtr &mode);
0037 KSCREEN_EXPORT QJsonObject serializeScreen(const KScreen::ScreenPtr &screen);
0038 
0039 KSCREEN_EXPORT QPoint deserializePoint(const QDBusArgument &map);
0040 KSCREEN_EXPORT QSize deserializeSize(const QDBusArgument &map);
0041 template<typename T> KSCREEN_EXPORT QList<T> deserializeList(const QDBusArgument &arg)
0042 {
0043     QList<T> list;
0044     arg.beginArray();
0045     while (!arg.atEnd()) {
0046         QVariant v;
0047         arg >> v;
0048         list.append(v.value<T>());
0049     }
0050     arg.endArray();
0051     return list;
0052 }
0053 KSCREEN_EXPORT KScreen::ConfigPtr deserializeConfig(const QVariantMap &map);
0054 KSCREEN_EXPORT KScreen::OutputPtr deserializeOutput(const QDBusArgument &output);
0055 KSCREEN_EXPORT KScreen::ModePtr deserializeMode(const QDBusArgument &mode);
0056 KSCREEN_EXPORT KScreen::ScreenPtr deserializeScreen(const QDBusArgument &screen);
0057 
0058 }
0059 
0060 }
0061 
0062 #endif // CONFIGSERIALIZER_H