@@ -115,11 +115,11 @@ QString RootActionState::label() const
115 return m_cachedState.value("label", QVariant::fromValue(QString())).toString();
115 return m_cachedState.value("label", QVariant::fromValue(QString())).toString();
118−QString RootActionState::icon() const
118+QStringList RootActionState::icons() const
120− if (!isValid()) return QString();
120+ if (!isValid()) return QStringList();
122− return m_cachedState.value("icon", QVariant::fromValue(QString())).toString();
122+ return m_cachedState.value("icons", QVariant::fromValue(QStringList())).toStringList();
125QString RootActionState::accessibleName() const
125QString RootActionState::accessibleName() const
@@ -198,16 +198,38 @@ QVariant RootActionState::toQVariant(GVariant* state) const
198 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
198 while (g_variant_iter_loop (&iter, "{sv}", &key, &vvalue))
200 QString str = QString::fromUtf8(key);
200 QString str = QString::fromUtf8(key);
201− if (str == "icon") {
201+ if (str == "icon" && !qmap.contains("icons")) {
202 // FIXME - should be sending a url.
204 // FIXME - should be sending a url.
203− GIcon *icon = g_icon_deserialize (vvalue);
205+ GIcon *gicon = g_icon_deserialize (vvalue);
204− if (icon) {
206+ if (gicon) {
205− qmap.insert(str, iconUri(icon));
207+ icons << iconUri(gicon) << iconUri(gicon);
206− g_object_unref (icon);
209− qmap.insert(str, QVariant(""));
209+ qmap.insert("icons", icons);
211+ } else if (str == "icons") {
215+ if (g_variant_type_is_array(g_variant_get_type(vvalue))) {
218+ for (int i = 0, iMax = g_variant_n_children(vvalue); i < iMax; i++) {
219+ GVariant *child = g_variant_get_child_value(vvalue, i);
221+ // FIXME - should be sending a url.
222+ GIcon *gicon = g_icon_deserialize (child);
224+ icons << iconUri(gicon) << iconUri(gicon);
225+ g_object_unref (gicon);
227+ g_variant_unref(child);
230+ // will overwrite icon.
231+ qmap.insert("icons", icons);
212 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
234 qmap.insert(str, ActionStateParser::toQVariant(vvalue));
@@ -235,7 +257,7 @@ QVariant RootActionState::toQVariant(GVariant* state) const
236 gicon = g_icon_new_for_string (icon, NULL);
258 gicon = g_icon_new_for_string (icon, NULL);
237 if (gicon) {
259 if (gicon) {
238− qmap["icon"] = iconUri(gicon);
260+ qmap["icons"] = QStringList() << iconUri(gicon) << iconUri(gicon);
239 g_object_unref (gicon);
261 g_object_unref (gicon);