swift
dbusutils.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2017 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "misc/dbusutils.h"
5 
6 #include <QString>
7 #include <QStringBuilder>
8 #include <QVariant>
9 
10 namespace swift::misc
11 {
12  QString CDBusUtils::getQDBusArgumentSignature(const QDBusArgument &arg, int level)
13  {
14  arg.beginArray();
15  QVariant qv;
16  const QString indent(level * 2, ' ');
17  QString out;
18 
19  while (!arg.atEnd())
20  {
21  const QString type = CDBusUtils::dbusTypeAsString(arg.currentType());
22  const QString signature = arg.currentSignature();
23  qv = arg.asVariant(); // this advances in the stream
24  if (qv.canConvert<QDBusArgument>())
25  {
26  out += indent % type % u"signature " % signature % u'\n';
27  out += CDBusUtils::getQDBusArgumentSignature(qv.value<QDBusArgument>(), level + 1) % u'\n';
28  }
29  else { out += indent % u"type: " % type % u"signature " % signature % u" value " % qv.toString() % u'\n'; }
30  }
31  arg.endArray();
32  return out;
33  }
34 
35  QString CDBusUtils::dbusTypeAsString(QDBusArgument::ElementType type)
36  {
37  switch (type)
38  {
39  case QDBusArgument::BasicType: return QLatin1String("BasicType");
40  case QDBusArgument::VariantType: return QLatin1String("VariantType");
41  case QDBusArgument::ArrayType: return QLatin1String("ArrayType");
42  case QDBusArgument::StructureType: return QLatin1String("StructureType");
43  case QDBusArgument::MapType: return QLatin1String("MapType");
44  case QDBusArgument::MapEntryType: return QLatin1String("MapEntryType");
45  case QDBusArgument::UnknownType:
46  default: return QLatin1String("Unknown type");
47  }
48  }
49 } // namespace swift::misc
static QString dbusTypeAsString(QDBusArgument::ElementType type)
Type as string.
Definition: dbusutils.cpp:35
static QString getQDBusArgumentSignature(const QDBusArgument &arg, int level=0)
Get QDBusArgument signature (formatted)
Definition: dbusutils.cpp:12
Free functions in swift::misc.