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