diff options
author | Lars Uebernickel <lars.uebernickel@canonical.com> | 2013-09-02 18:35:00 +0200 |
---|---|---|
committer | Lars Uebernickel <lars.uebernickel@canonical.com> | 2013-09-02 18:35:00 +0200 |
commit | 2641328dca5a7db154e5dbca7d9904d3c321974e (patch) | |
tree | 3f92b3b800ad4d3779da1d3048cb9f45feccc7ec /libqmenumodel/src/unitymenumodel.cpp | |
parent | f58b7c76605623a171d2e6eba82cdbf7a788657d (diff) | |
download | qmenumodel-2641328dca5a7db154e5dbca7d9904d3c321974e.tar.gz qmenumodel-2641328dca5a7db154e5dbca7d9904d3c321974e.tar.bz2 qmenumodel-2641328dca5a7db154e5dbca7d9904d3c321974e.zip |
Add UnityMenuModel::getAction
A method that returns a UnityMenuAction for a menu item. It must be used if the
action name came from an attribute on the menu item so that the menu item's
namespace can be prepended to the action name.
Diffstat (limited to 'libqmenumodel/src/unitymenumodel.cpp')
-rw-r--r-- | libqmenumodel/src/unitymenumodel.cpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/libqmenumodel/src/unitymenumodel.cpp b/libqmenumodel/src/unitymenumodel.cpp index ff65e69..026cb93 100644 --- a/libqmenumodel/src/unitymenumodel.cpp +++ b/libqmenumodel/src/unitymenumodel.cpp @@ -641,6 +641,34 @@ QVariant UnityMenuModel::get(int row, const QByteArray &role) return this->data(this->index(row, 0), priv->roles[role]); } +UnityMenuAction * UnityMenuModel::getAction(int row, const QByteArray &name) +{ + GSequenceIter *iter; + GtkMenuTrackerItem *item; + const gchar *action_namespace; + gchar *action_name; + UnityMenuAction *action; + + iter = g_sequence_get_iter_at_pos (priv->items, row); + if (g_sequence_iter_is_end (iter)) + return NULL; + + item = (GtkMenuTrackerItem *) g_sequence_get (iter); + action_namespace = gtk_menu_tracker_item_get_action_namespace (item); + if (action_namespace != NULL) + action_name = g_strjoin (".", action_namespace, name.constData(), NULL); + else + action_name = g_strdup (name.constData()); + + action = new UnityMenuAction(this); + action->setModel(this); + action->setName(action_name); + + g_free (action_name); + + return action; +} + void UnityMenuModel::activate(int index, const QVariant& parameter) { GtkMenuTrackerItem *item; |