aboutsummaryrefslogtreecommitdiff
path: root/libqmenumodel/src/unitymenumodel.cpp
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2013-09-02 18:35:00 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2013-09-02 18:35:00 +0200
commit2641328dca5a7db154e5dbca7d9904d3c321974e (patch)
tree3f92b3b800ad4d3779da1d3048cb9f45feccc7ec /libqmenumodel/src/unitymenumodel.cpp
parentf58b7c76605623a171d2e6eba82cdbf7a788657d (diff)
downloadqmenumodel-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.cpp28
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;