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 }