From d57caa61f787c4bd7cb0823eadbbc5d84f542f0a Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Fri, 26 Jul 2013 15:04:50 +0200 Subject: Expose the state of a menu item's action in model.actionState --- libqmenumodel/src/unitymenumodel.cpp | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) (limited to 'libqmenumodel/src/unitymenumodel.cpp') diff --git a/libqmenumodel/src/unitymenumodel.cpp b/libqmenumodel/src/unitymenumodel.cpp index 418de61..114c985 100644 --- a/libqmenumodel/src/unitymenumodel.cpp +++ b/libqmenumodel/src/unitymenumodel.cpp @@ -17,6 +17,7 @@ */ #include "unitymenumodel.h" +#include "converter.h" extern "C" { #include "gtk/gtkactionmuxer.h" @@ -29,13 +30,13 @@ G_DEFINE_QUARK (UNITY_MENU_ITEM_ITERATOR, unity_menu_item_iterator) G_DEFINE_QUARK (UNITY_MENU_ITEM_EXTENDED_ATTRIBUTES, unity_menu_item_extended_attributes) enum MenuRoles { - ActionRole = Qt::DisplayRole + 1, - LabelRole, + LabelRole = Qt::DisplayRole + 1, SensitiveRole, IsSeparatorRole, IconRole, TypeRole, ExtendedAttributesRole, + ActionStateRole }; class UnityMenuModelPrivate @@ -48,6 +49,7 @@ public: void clearName(); void updateActions(); void updateMenuModel(); + QVariant itemState(GtkMenuTrackerItem *item); UnityMenuModel *model; GtkActionMuxer *muxer; @@ -161,6 +163,19 @@ void UnityMenuModelPrivate::updateMenuModel() } } +QVariant UnityMenuModelPrivate::itemState(GtkMenuTrackerItem *item) +{ + QVariant result; + + GVariant *state = gtk_menu_tracker_item_get_action_state (item); + if (state != NULL) { + result = Converter::toQVariant(state); + g_variant_unref (state); + } + + return result; +} + void UnityMenuModelPrivate::nameAppeared(GDBusConnection *connection, const gchar *name, const gchar *owner, gpointer user_data) { UnityMenuModelPrivate *priv = (UnityMenuModelPrivate *)user_data; @@ -367,6 +382,9 @@ QVariant UnityMenuModel::data(const QModelIndex &index, int role) const return map ? *map : QVariant(); } + case ActionStateRole: + return priv->itemState(item); + default: return QVariant(); } @@ -382,17 +400,18 @@ QModelIndex UnityMenuModel::parent(const QModelIndex &index) const return QModelIndex(); } +#include QHash UnityMenuModel::roleNames() const { QHash names; names[LabelRole] = "label"; - names[ActionRole] = "action"; names[SensitiveRole] = "sensitive"; names[IsSeparatorRole] = "isSeparator"; names[IconRole] = "icon"; names[TypeRole] = "type"; names[ExtendedAttributesRole] = "ext"; + names[ActionStateRole] = "actionState"; return names; } -- cgit v1.2.3