aboutsummaryrefslogtreecommitdiff
path: root/libqmenumodel/src/unitymenumodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libqmenumodel/src/unitymenumodel.cpp')
-rw-r--r--libqmenumodel/src/unitymenumodel.cpp26
1 files changed, 26 insertions, 0 deletions
diff --git a/libqmenumodel/src/unitymenumodel.cpp b/libqmenumodel/src/unitymenumodel.cpp
index 920761c..953af01 100644
--- a/libqmenumodel/src/unitymenumodel.cpp
+++ b/libqmenumodel/src/unitymenumodel.cpp
@@ -727,6 +727,8 @@ void UnityMenuModel::registerAction(UnityMenuAction* action)
priv->registeredActions[action] = observer_item;
connect(action, SIGNAL(nameChanged(const QString&)), SLOT(onRegisteredActionNameChanged(const QString&)));
+ connect(action, SIGNAL(activate(const QVariant&)), SLOT(onRegisteredActionActivated(const QVariant&)));
+ connect(action, SIGNAL(changeState(const QVariant&)), SLOT(onRegisteredActionStateChanged(const QVariant&)));
}
}
@@ -770,6 +772,30 @@ void UnityMenuModel::onRegisteredActionNameChanged(const QString& name)
}
}
+void UnityMenuModel::onRegisteredActionActivated(const QVariant& parameter)
+{
+ UnityMenuAction* action = qobject_cast<UnityMenuAction*>(sender());
+ if (!action || action->name().isEmpty())
+ return;
+
+ QByteArray nameArray = action->name().toUtf8();
+ const gchar* action_name = nameArray.constData();
+
+ g_action_group_activate_action (G_ACTION_GROUP (priv->muxer), action_name, Converter::toGVariant(parameter));
+}
+
+void UnityMenuModel::onRegisteredActionStateChanged(const QVariant& parameter)
+{
+ UnityMenuAction* action = qobject_cast<UnityMenuAction*>(sender());
+ if (!action || action->name().isEmpty())
+ return;
+
+ QByteArray nameArray = action->name().toUtf8();
+ const gchar* action_name = nameArray.constData();
+
+ g_action_group_change_action_state (G_ACTION_GROUP (priv->muxer), action_name, Converter::toGVariant(parameter));
+}
+
void UnityMenuModelPrivate::registeredActionAdded(GtkActionObserverItem *observer_item,
const gchar *action_name,
gboolean enabled,