File indexing completed on 2024-05-05 05:34:21

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