20 #include "unitymenumodelpaths.h"
21 #include <QDBusArgument>
23 static QVariant parseVariantData(
const QVariant& var);
25 const QDBusArgument &operator>>(
const QDBusArgument &arg, QVariantMap &map)
29 while (!arg.atEnd()) {
35 map.insertMulti(key, parseVariantData(value));
43 static QVariant parseVariantData(
const QVariant& var) {
44 if ((
int)var.type() == QMetaType::User && var.userType() == qMetaTypeId<QDBusArgument>()) {
45 QDBusArgument arg(var.value<QDBusArgument>());
46 if (arg.currentType() == QDBusArgument::MapType) {
51 return arg.asVariant();
57 UnityMenuModelPaths::UnityMenuModelPaths(QObject *parent)
62 QVariant UnityMenuModelPaths::source()
const
67 void UnityMenuModelPaths::setSource(
const QVariant& data)
69 if (m_sourceData != data) {
71 Q_EMIT sourceChanged();
77 void UnityMenuModelPaths::updateData()
79 QVariantMap dataMap = parseVariantData(m_sourceData).toMap();
81 if (!m_busNameHint.isEmpty() && dataMap.contains(m_busNameHint)) {
82 setBusName(dataMap[m_busNameHint].toByteArray());
87 if (!m_menuObjectPathHint.isEmpty() && dataMap.contains(m_menuObjectPathHint)) {
88 setMenuObjectPath(dataMap[m_menuObjectPathHint].toByteArray());
90 setMenuObjectPath(
"");
93 if (!m_actionsHint.isEmpty() && dataMap.contains(m_actionsHint)) {
94 setActions(dataMap[m_actionsHint].toMap());
96 setActions(QVariantMap());
100 QByteArray UnityMenuModelPaths::busName()
const
105 void UnityMenuModelPaths::setBusName(
const QByteArray &name)
107 if (m_busName != name) {
109 Q_EMIT busNameChanged();
113 QVariantMap UnityMenuModelPaths::actions()
const
118 void UnityMenuModelPaths::setActions(
const QVariantMap &actions)
120 if (m_actions != actions) {
122 Q_EMIT actionsChanged();
126 QByteArray UnityMenuModelPaths::menuObjectPath()
const
128 return m_menuObjectPath;
131 void UnityMenuModelPaths::setMenuObjectPath(
const QByteArray &path)
133 if (m_menuObjectPath != path) {
134 m_menuObjectPath = path;
135 Q_EMIT menuObjectPathChanged();
139 QByteArray UnityMenuModelPaths::busNameHint()
const
141 return m_busNameHint;
144 void UnityMenuModelPaths::setBusNameHint(
const QByteArray &nameHint)
146 if (m_busNameHint != nameHint) {
147 m_busNameHint = nameHint;
148 Q_EMIT busNameHintChanged();
154 QByteArray UnityMenuModelPaths::actionsHint()
const
156 return m_actionsHint;
159 void UnityMenuModelPaths::setActionsHint(
const QByteArray &actionsHint)
161 if (m_actionsHint != actionsHint) {
162 m_actionsHint = actionsHint;
163 Q_EMIT actionsHintChanged();
169 QByteArray UnityMenuModelPaths::menuObjectPathHint()
const
171 return m_menuObjectPathHint;
174 void UnityMenuModelPaths::setMenuObjectPathHint(
const QByteArray &pathHint)
176 if (m_menuObjectPathHint != pathHint) {
177 m_menuObjectPathHint = pathHint;
178 Q_EMIT menuObjectPathHintChanged();