aboutsummaryrefslogtreecommitdiff
path: root/src/messages-service-dbus.c
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-05-30 19:23:43 +0200
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-05-30 19:23:43 +0200
commitcb34c1a8d430a21330edc0119a6b74642f77c274 (patch)
treea849268e122d9089e99c105621e93a09e2231959 /src/messages-service-dbus.c
parent83f04d7c7df43dc4672a5686ecc5810f32efe000 (diff)
downloadayatana-indicator-messages-cb34c1a8d430a21330edc0119a6b74642f77c274.tar.gz
ayatana-indicator-messages-cb34c1a8d430a21330edc0119a6b74642f77c274.tar.bz2
ayatana-indicator-messages-cb34c1a8d430a21330edc0119a6b74642f77c274.zip
Allow applications to (un)register themselves from the messaging menu via d-bus
Diffstat (limited to 'src/messages-service-dbus.c')
-rw-r--r--src/messages-service-dbus.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/messages-service-dbus.c b/src/messages-service-dbus.c
index 2b72f2e..fec15e9 100644
--- a/src/messages-service-dbus.c
+++ b/src/messages-service-dbus.c
@@ -32,6 +32,8 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
enum {
ATTENTION_CHANGED,
ICON_CHANGED,
+ REGISTER_APPLICATION,
+ UNREGISTER_APPLICATION,
LAST_SIGNAL
};
@@ -101,6 +103,22 @@ message_service_dbus_class_init (MessageServiceDbusClass *klass)
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
+ signals[REGISTER_APPLICATION] = g_signal_new(MESSAGE_SERVICE_DBUS_SIGNAL_REGISTER_APPLICATION,
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_generic,
+ G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING);
+
+ signals[UNREGISTER_APPLICATION] = g_signal_new(MESSAGE_SERVICE_DBUS_SIGNAL_UNREGISTER_APPLICATION,
+ G_TYPE_FROM_CLASS(klass),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING);
+
if (bus_node_info == NULL) {
GError * error = NULL;
@@ -418,6 +436,16 @@ bus_method_call (GDBusConnection * connection, const gchar * sender, const gchar
message_service_dbus_set_attention(ms, FALSE);
g_dbus_method_invocation_return_value(invocation, NULL);
return;
+ } else if (g_strcmp0("RegisterApplication", method) == 0) {
+ const gchar *desktop_id, *object_path;
+ g_variant_get(params, "(&s&o)", &desktop_id, &object_path);
+ g_signal_emit(ms, signals[REGISTER_APPLICATION], 0, desktop_id, object_path);
+ g_dbus_method_invocation_return_value(invocation, NULL);
+ } else if (g_strcmp0("UnregisterApplication", method) == 0) {
+ const gchar *desktop_id;
+ g_variant_get(params, "(&s)", &desktop_id);
+ g_signal_emit(ms, signals[UNREGISTER_APPLICATION], 0, desktop_id);
+ g_dbus_method_invocation_return_value(invocation, NULL);
} else {
g_warning("Unknown function call '%s'", method);
}