From 462b560f917d51a81c5d6ffa4e21e4e5b0194a99 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 29 Aug 2012 09:17:14 +0200 Subject: libmessaging-menu: add documentation Adds an overview description of the messaging menu and documentation for enums, properties, and signals. --- libmessaging-menu/messaging-menu.c | 132 +++++++++++++++++++++++++++++++++---- libmessaging-menu/messaging-menu.h | 5 ++ 2 files changed, 125 insertions(+), 12 deletions(-) diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index b090352..5bce20b 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -27,6 +27,71 @@ * SECTION:messagingmenuapp * @title: MessagingMenuApp * @short_description: An application section in the messaging menu + * + * A #MessagingMenuApp represents an application section in the + * Messaging Menu. An application section is tied to an installed + * application through a desktop file id, which must be passed to + * messaging_menu_app_new(). + * + * To register the appliction with the Messaging Menu, call + * messaging_menu_app_register(). This signifies that the application + * should be present in the menu and be marked as "running". + * + * The first menu item in an application section represents the + * application itself, using the name and icon found in the associated + * desktop file. Activating this item starts the application. + * + * Following the application item, the Messaging Menu inserts all + * shortcuts actions found in the desktop file which are marked as + * appearing in the Messaging Menu (the TargetEnvironment or OnlyShowIn + * keywords contains "Messaging Menu"). The desktop file specification + * contains a detailed explanation of shortcut actions [1]. An + * application cannot add, remove, or change these shortcut items while + * it is running. + * + * Next, an application section contains menu items for message sources. + * What exactly constitutes a message source depends on the type of + * application: an email client's message sources are folders + * containing new messages, while those of a chat program are persons + * that have contacted the user. + * + * A message source is represented in the menu by a label and optionally + * also an icon. It can be associated with either a count, a time, or + * an arbitrary string, which will appear on the right side of the menu + * item. + * + * When the user activates a source, the source is immediately removed + * from the menu and the "activate-source" signal is emitted. + * + * Applications should always expose all the message sources available. + * However, the Messaging Menu might limit the amount of sources it + * displays to the user. + * + * The Messaging Menu offers users a way to set their chat status + * (available, away, busy, invisible, or offline) for multiple + * applications at once. Applications that appear in the Messaging Menu + * can integrate with this by setting the + * "X-MessagingMenu-UsesChatSection" key in their desktop file to True. + * Use messaging_menu_app_set_status() to signify that the application's + * chat status has changed. When the user changes status through the + * Messaging Menu, the ::status-changed signal will be emitted. + * + * If the application stops running without calling + * messaging_menu_app_unregister(), it will be marked as "not running". + * Its application and shortcut items stay in the menu, but all message + * sources are removed. If messaging_menu_app_unregister() is called, + * the application section is removed completely. + * + * More information about the design and recommended usage of the + * Messaging Menu is available at https://wiki.ubuntu.com/MessagingMenu + * + * [1] http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html#extra-actions + */ + +/** + * MessagingMenuApp: + * + * #MessagingMenuApp is an opaque structure. */ struct _MessagingMenuApp { @@ -157,6 +222,12 @@ messaging_menu_app_class_init (MessagingMenuAppClass *class) object_class->finalize = messaging_menu_app_finalize; object_class->dispose = messaging_menu_app_dispose; + /** + * MessagingMenuApp:desktop-id: + * + * The desktop id of the application associated with this application + * section. Must be given when the #MessagingMenuApp is created. + */ properties[PROP_DESKTOP_ID] = g_param_spec_string ("desktop-id", "Desktop Id", "The desktop id of the associated application", @@ -167,6 +238,16 @@ messaging_menu_app_class_init (MessagingMenuAppClass *class) g_object_class_install_properties (object_class, N_PROPERTIES, properties); + /** + * MessagingMenuApp::activate-source: + * @mmapp: the #MessagingMenuApp + * @source_id: the source id that was activated + * + * Emitted when the user has activated the message source with id + * @source_id. The source is immediately removed from the menu, + * handlers of this signal do not need to call + * mesaging_menu_app_remove(). + */ signals[ACTIVATE_SOURCE] = g_signal_new ("activate-source", MESSAGING_MENU_TYPE_APP, G_SIGNAL_RUN_FIRST | @@ -176,6 +257,18 @@ messaging_menu_app_class_init (MessagingMenuAppClass *class) g_cclosure_marshal_VOID__STRING, G_TYPE_NONE, 1, G_TYPE_STRING); + /** + * MessagingMenuApp::status-changed: + * @mmapp: the #MessagingMenuApp + * @status: a #MessagingMenuStatus + * + * Emitted when the chat status is changed through the messaging menu. + * + * Applications which are registered to use the chat status should + * change their status to @status upon receiving this signal. Call + * messaging_menu_app_set_status() to acknowledge that the application + * changed its status. + */ signals[STATUS_CHANGED] = g_signal_new ("status-changed", MESSAGING_MENU_TYPE_APP, G_SIGNAL_RUN_FIRST, @@ -321,11 +414,8 @@ messaging_menu_app_init (MessagingMenuApp *app) * Creates a new #MessagingMenuApp for the application associated with * @desktop_id. * - * If the application is already registered with the messaging menu, it will be - * marked as "running". Otherwise, call messaging_menu_app_register(). - * - * The messaging menu will return to marking the application as not running as - * soon as the returned #MessagingMenuApp is destroyed. + * The application will not show up (nor be marked as "running") in the + * Messaging Menu before messaging_menu_app_register() has been called. * * Returns: (transfer full): a new #MessagingMenuApp */ @@ -341,13 +431,16 @@ messaging_menu_app_new (const gchar *desktop_id) * messaging_menu_app_register: * @app: a #MessagingMenuApp * - * Registers @app with the messaging menu. + * Registers @app with the Messaging Menu. * - * The messaging menu will add a section with an app launcher and the shortcuts - * defined in its desktop file. + * If the application doesn't already have a section in the Messaging + * Menu, one will be created for it. The application will also be + * marked as "running". * - * The application will be marked as "running" as long as @app is alive or - * messaging_menu_app_unregister() is called. + * The application will be marked as "not running" as soon as @app is + * destroyed. The application launcher as well as shortcut actions will + * remain in the menu. To completely remove the application section + * from the Messaging Menu, call messaging_menu_app_unregister(). */ void messaging_menu_app_register (MessagingMenuApp *app) @@ -371,8 +464,9 @@ messaging_menu_app_register (MessagingMenuApp *app) * messaging_menu_app_unregister: * @app: a #MessagingMenuApp * - * Completely removes the application associated with @desktop_id from the - * messaging menu. + * Completely removes the @app from the Messaging Menu. If the + * application's launcher and shortcut actions should remain in the + * menu, destroying @app with g_object_unref() suffices. * * Note: @app will remain valid and usable after this call. */ @@ -397,6 +491,16 @@ messaging_menu_app_unregister (MessagingMenuApp *app) * messaging_menu_app_set_status: * @app: a #MessagingMenuApp * @status: a #MessagingMenuStatus + * + * Notify the Messaging Menu that the chat status of @app has changed to + * @status. + * + * Connect to the ::status-changed signal to receive notification about + * the user changing their global chat status through the Messaging + * Menu. + * + * This function does nothing for applications whose desktop file does + * not include X-MessagingMenu-UsesChatSection. */ void messaging_menu_app_set_status (MessagingMenuApp *app, @@ -876,6 +980,10 @@ messaging_menu_app_draw_attention (MessagingMenuApp *app, * * Stop indicating that @source_id needs attention. * + * This function does not need to be called when the source is removed + * with messaging_menu_app_remove_source() or the user has activated the + * source. + * * Use messaging_menu_app_draw_attention() to make @source_id draw attention * again. */ diff --git a/libmessaging-menu/messaging-menu.h b/libmessaging-menu/messaging-menu.h index e767099..4668319 100644 --- a/libmessaging-menu/messaging-menu.h +++ b/libmessaging-menu/messaging-menu.h @@ -29,6 +29,11 @@ G_BEGIN_DECLS #define MESSAGING_MENU_APP_CLASS(c) (G_TYPE_CHECK_CLASS_CAST ((c), MESSAGING_MENU_TYPE_APP, MessagingMenuAppClass)) #define MESSAGING_MENU_IS_APP(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), MESSAGING_MENU_TYPE_APP)) +/** + * MessagingMenuStatus: + * + * An enumeration for the possible chat statuses the messaging menu can be in. + */ typedef enum { MESSAGING_MENU_STATUS_AVAILABLE, MESSAGING_MENU_STATUS_AWAY, -- cgit v1.2.3 From c5a99f8bad23f7524c1e5a5da7413e1462a3a7f2 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 29 Aug 2012 13:27:54 +0200 Subject: Add gtk-doc support --- Makefile.am | 6 ++++- autogen.sh | 2 +- configure.ac | 8 +++++-- doc/Makefile.am | 1 + doc/reference/Makefile.am | 21 ++++++++++++++++++ doc/reference/messaging-menu-docs.xml.in | 38 ++++++++++++++++++++++++++++++++ libmessaging-menu/messaging-menu.c | 2 +- 7 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 doc/Makefile.am create mode 100644 doc/reference/Makefile.am create mode 100644 doc/reference/messaging-menu-docs.xml.in diff --git a/Makefile.am b/Makefile.am index ef08e41..daeb2b7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -5,6 +5,10 @@ SUBDIRS = \ data \ po +if ENABLE_GTK_DOC +SUBDIRS += doc +endif + if BUILD_TESTS SUBDIRS += \ test @@ -17,7 +21,7 @@ endif -DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall --enable-deprecations --enable-introspection +DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall --enable-deprecations --enable-introspection --enable-gtk-doc dist-hook: @if test -d "$(top_srcdir)/.bzr"; \ diff --git a/autogen.sh b/autogen.sh index a49cd41..ab2f513 100755 --- a/autogen.sh +++ b/autogen.sh @@ -1,5 +1,5 @@ #!/bin/sh -e +gtkdocize autoreconf -i -f intltoolize -gtkdocize diff --git a/configure.ac b/configure.ac index 4d3ef7a..ea1a0f8 100644 --- a/configure.ac +++ b/configure.ac @@ -57,7 +57,7 @@ AC_SUBST(APPLET_LIBS) GLIB_GSETTINGS -GTK_DOC_CHECK([1.18], []) +GTK_DOC_CHECK([1.18], [--flavour no-tmpl]) GOBJECT_INTROSPECTION_CHECK([$INTROSPECTION_REQUIRED_VERSION]) @@ -178,6 +178,9 @@ po/Makefile.in test/Makefile libmessaging-menu/Makefile libmessaging-menu/messaging-menu.pc +doc/Makefile +doc/reference/Makefile +doc/reference/messaging-menu-docs.xml ]) ########################### @@ -192,5 +195,6 @@ Messaging Indicator Configuration: Indicator Dir: $INDICATORDIR gtest: $enable_tests gcov: $use_gcov - introspecion: $enable_introspection + introspecion: $enable_introspection + documentation: $enable_gtk_doc ]) diff --git a/doc/Makefile.am b/doc/Makefile.am new file mode 100644 index 0000000..f3ddc22 --- /dev/null +++ b/doc/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = reference diff --git a/doc/reference/Makefile.am b/doc/reference/Makefile.am new file mode 100644 index 0000000..023f1e7 --- /dev/null +++ b/doc/reference/Makefile.am @@ -0,0 +1,21 @@ +DOC_MODULE = messaging-menu + +DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml + +DOC_SOURCE_DIR = $(top_srcdir)/libmessaging-menu + +SCANGOBJ_OPTIONS=--type-init-func="g_type_init()" +MKDB_OPTIONS=--xml-mode --output-format=xml + +# Used for dependencies. The docs will be rebuilt if any of these change. +HFILE_GLOB = $(top_srcdir)/libmessaging-menu/*.h +CFILE_GLOB = $(top_srcdir)/libmessaging-menu/*.c + +IGNORE_HFILES= \ + indicator-messages-service.h \ + gtupleaction.h + +INCLUDES=-I$(top_srcdir)/libmessaging-menu $(GIO_CFLAGS) +GTKDOC_LIBS=$(top_builddir)/libmessaging-menu/libmessaging-menu.la + +include $(top_srcdir)/gtk-doc.make diff --git a/doc/reference/messaging-menu-docs.xml.in b/doc/reference/messaging-menu-docs.xml.in new file mode 100644 index 0000000..742d37b --- /dev/null +++ b/doc/reference/messaging-menu-docs.xml.in @@ -0,0 +1,38 @@ + + + +]> + +Messaging Menu Reference Manual + + Messaging Menu Reference Manual + for libmessaging-menu &version; + + + 2012 + Canonical Ltd. + + + + + API Reference + + + + + Object Hierarchy + + + + API Index + + + + Index of deprecated API + + + + + diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index 5bce20b..f910de1 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -24,7 +24,7 @@ #include /** - * SECTION:messagingmenuapp + * SECTION:messaging-menu * @title: MessagingMenuApp * @short_description: An application section in the messaging menu * -- cgit v1.2.3 From 857c8a373f85608bc4df4f689e85a3af3b1966f1 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 29 Aug 2012 13:35:21 +0200 Subject: Fix gtk-doc warnings --- libmessaging-menu/messaging-menu.c | 2 +- libmessaging-menu/messaging-menu.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index f910de1..bf86c39 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -246,7 +246,7 @@ messaging_menu_app_class_init (MessagingMenuAppClass *class) * Emitted when the user has activated the message source with id * @source_id. The source is immediately removed from the menu, * handlers of this signal do not need to call - * mesaging_menu_app_remove(). + * messaging_menu_app_remove_source(). */ signals[ACTIVATE_SOURCE] = g_signal_new ("activate-source", MESSAGING_MENU_TYPE_APP, diff --git a/libmessaging-menu/messaging-menu.h b/libmessaging-menu/messaging-menu.h index 4668319..66f644f 100644 --- a/libmessaging-menu/messaging-menu.h +++ b/libmessaging-menu/messaging-menu.h @@ -31,6 +31,11 @@ G_BEGIN_DECLS /** * MessagingMenuStatus: + * @MESSAGING_MENU_STATUS_AVAILABLE: available + * @MESSAGING_MENU_STATUS_AWAY: away + * @MESSAGING_MENU_STATUS_BUSY: busy + * @MESSAGING_MENU_STATUS_INVISIBLE: invisible + * @MESSAGING_MENU_STATUS_OFFLINE: offline * * An enumeration for the possible chat statuses the messaging menu can be in. */ -- cgit v1.2.3 From 5cef03aeed4b888a03c83e52e37b1c3f2ef1b5dd Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Wed, 29 Aug 2012 13:38:23 +0200 Subject: libmessaging-menu: make real links out of urls in the documentation --- libmessaging-menu/messaging-menu.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index bf86c39..87edcb9 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -44,10 +44,11 @@ * Following the application item, the Messaging Menu inserts all * shortcuts actions found in the desktop file which are marked as * appearing in the Messaging Menu (the TargetEnvironment or OnlyShowIn - * keywords contains "Messaging Menu"). The desktop file specification - * contains a detailed explanation of shortcut actions [1]. An - * application cannot add, remove, or change these shortcut items while - * it is running. + * keywords contains "Messaging Menu"). The + * desktop file specification contains a detailed explanation of + * shortcut actions [1]. An application cannot add, remove, or change + * these shortcut items while it is running. * * Next, an application section contains menu items for message sources. * What exactly constitutes a message source depends on the type of @@ -83,9 +84,8 @@ * the application section is removed completely. * * More information about the design and recommended usage of the - * Messaging Menu is available at https://wiki.ubuntu.com/MessagingMenu - * - * [1] http://standards.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html#extra-actions + * Messaging Menu is available at https://wiki.ubuntu.com/MessagingMenu. */ /** -- cgit v1.2.3 From bca2242896a7b52913aff50757bfff138cefbcba Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Fri, 31 Aug 2012 19:19:21 +0200 Subject: libmessaging-menu: allow changing label and icon of sources --- libmessaging-menu/messaging-menu.c | 101 +++++++++++++++++++++++++++++++++++++ libmessaging-menu/messaging-menu.h | 8 +++ 2 files changed, 109 insertions(+) diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index 87edcb9..03eb49b 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -898,6 +898,107 @@ messaging_menu_app_has_source (MessagingMenuApp *app, return g_simple_action_group_lookup (app->source_actions, source_id) != NULL; } +static GMenuItem * +g_menu_find_item_with_action (GMenu *menu, + const gchar *action, + gint *out_pos) +{ + gint i; + gint n_elements; + GMenuItem *item = NULL; + + n_elements = g_menu_model_get_n_items (G_MENU_MODEL (menu)); + + for (i = 0; i < n_elements && item == NULL; i++) + { + GVariant *attr; + + item = g_menu_item_new_from_model (G_MENU_MODEL (menu), i); + attr = g_menu_item_get_attribute_value (item, G_MENU_ATTRIBUTE_ACTION, G_VARIANT_TYPE_STRING); + + if (!g_str_equal (action, g_variant_get_string (attr, NULL))) + g_clear_object (&item); + + g_variant_unref (attr); + } + + if (item && out_pos) + *out_pos = i - 1; + + return item; +} + +static void +g_menu_replace_item (GMenu *menu, + gint pos, + GMenuItem *item) +{ + g_menu_remove (menu, pos); + g_menu_insert_item (menu, pos, item); +} + +/** + * messaging_menu_app_set_source_label: + * @app: a #MessagingMenuApp + * @source_id: a source id + * @label: the new label for the source + * + * Changes the label of @source_id to @label. + */ +void +messaging_menu_app_set_source_label (MessagingMenuApp *app, + const gchar *source_id, + const gchar *label) +{ + gint pos; + GMenuItem *item; + + g_return_if_fail (MESSAGING_MENU_IS_APP (app)); + g_return_if_fail (source_id != NULL); + g_return_if_fail (label != NULL); + + item = g_menu_find_item_with_action (app->menu, source_id, &pos); + if (item == NULL) + return; + + g_menu_item_set_attribute (item, G_MENU_ATTRIBUTE_LABEL, "s", label); + g_menu_replace_item (app->menu, pos, item); + + g_object_unref (item); +} + +/** + * messaging_menu_app_set_source_icon: + * @app: a #MessagingMenuApp + * @source_id: a source id + * @icon: the new icon for the source + * + * Changes the icon of @source_id to @icon. + */ +void +messaging_menu_app_set_source_icon (MessagingMenuApp *app, + const gchar *source_id, + GIcon *icon) +{ + gint pos; + GMenuItem *item; + gchar *iconstr; + + g_return_if_fail (MESSAGING_MENU_IS_APP (app)); + g_return_if_fail (source_id != NULL); + + item = g_menu_find_item_with_action (app->menu, source_id, &pos); + if (item == NULL) + return; + + iconstr = icon ? g_icon_to_string (icon) : NULL; + g_menu_item_set_attribute (item, "x-canonical-icon", "s", iconstr); + g_menu_replace_item (app->menu, pos, item); + + g_free (iconstr); + g_object_unref (item); +} + /** * messaging_menu_app_set_source_count: * @app: a #MessagingMenuApp diff --git a/libmessaging-menu/messaging-menu.h b/libmessaging-menu/messaging-menu.h index 66f644f..6c405c7 100644 --- a/libmessaging-menu/messaging-menu.h +++ b/libmessaging-menu/messaging-menu.h @@ -117,6 +117,14 @@ void messaging_menu_app_remove_source (MessagingMenuA gboolean messaging_menu_app_has_source (MessagingMenuApp *app, const gchar *source_id); +void messaging_menu_app_set_source_label (MessagingMenuApp *app, + const gchar *source_id, + const gchar *label); + +void messaging_menu_app_set_source_icon (MessagingMenuApp *app, + const gchar *source_id, + GIcon *icon); + void messaging_menu_app_set_source_count (MessagingMenuApp *app, const gchar *source_id, guint count); -- cgit v1.2.3 From 7b3c43de0b6a631fbe8b21ad078bf0e1caed79e7 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Fri, 31 Aug 2012 19:44:08 +0200 Subject: libmessaging-menu: allow using multiple MessagingMenuApps The dbus path was set to /com/canonical/indicator/messages for all MessagingMenuApps that a process created. This patch adds the desktop id into the path. --- libmessaging-menu/messaging-menu.c | 121 ++++++++++++++++++++++--------------- 1 file changed, 73 insertions(+), 48 deletions(-) diff --git a/libmessaging-menu/messaging-menu.c b/libmessaging-menu/messaging-menu.c index 03eb49b..93727fc 100644 --- a/libmessaging-menu/messaging-menu.c +++ b/libmessaging-menu/messaging-menu.c @@ -140,6 +140,67 @@ static void global_status_changed (IndicatorMessagesService *service, const gchar *status_str, gpointer user_data); +static gchar * +messaging_menu_app_get_dbus_object_path (MessagingMenuApp *app) +{ + gchar *path; + + g_return_val_if_fail (app->appinfo != NULL, NULL); + + path = g_strconcat ("/com/canonical/indicator/messages/", + g_app_info_get_id (G_APP_INFO (app->appinfo)), + NULL); + + g_strcanon (path, "/ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", '_'); + + return path; +} + +static void +export_menus_and_actions (GObject *source, + GAsyncResult *res, + gpointer user_data) +{ + MessagingMenuApp *app = user_data; + GDBusConnection *bus; + GError *error = NULL; + guint id; + gchar *object_path; + + bus = g_bus_get_finish (res, &error); + if (bus == NULL) + { + g_warning ("unable to connect to session bus: %s", error->message); + g_error_free (error); + return; + } + + object_path = messaging_menu_app_get_dbus_object_path (app); + + id = g_dbus_connection_export_action_group (bus, + object_path, + G_ACTION_GROUP (app->source_actions), + &error); + if (!id) + { + g_warning ("unable to export action group: %s", error->message); + g_error_free (error); + } + + id = g_dbus_connection_export_menu_model (bus, + object_path, + G_MENU_MODEL (app->menu), + &error); + if (!id) + { + g_warning ("unable to export menu: %s", error->message); + g_error_free (error); + } + + g_object_unref (bus); + g_free (object_path); +} + static void messaging_menu_app_set_desktop_id (MessagingMenuApp *app, const gchar *desktop_id) @@ -153,6 +214,11 @@ messaging_menu_app_set_desktop_id (MessagingMenuApp *app, g_warning ("could not find the desktop file for '%s'", desktop_id); } + + g_bus_get (G_BUS_TYPE_SESSION, + app->cancellable, + export_menus_and_actions, + app); } static void @@ -305,47 +371,6 @@ created_messages_service (GObject *source_object, messaging_menu_app_set_status (app, app->status); } -static void -got_session_bus (GObject *source, - GAsyncResult *res, - gpointer user_data) -{ - MessagingMenuApp *app = user_data; - GDBusConnection *bus; - GError *error = NULL; - guint id; - - bus = g_bus_get_finish (res, &error); - if (bus == NULL) - { - g_warning ("unable to connect to session bus: %s", error->message); - g_error_free (error); - return; - } - - id = g_dbus_connection_export_action_group (bus, - "/com/canonical/indicator/messages", - G_ACTION_GROUP (app->source_actions), - &error); - if (!id) - { - g_warning ("unable to export action group: %s", error->message); - g_error_free (error); - } - - id = g_dbus_connection_export_menu_model (bus, - "/com/canonical/indicator/messages", - G_MENU_MODEL (app->menu), - &error); - if (!id) - { - g_warning ("unable to export menu: %s", error->message); - g_error_free (error); - } - - g_object_unref (bus); -} - static void indicator_messages_appeared (GDBusConnection *bus, const gchar *name, @@ -392,12 +417,6 @@ messaging_menu_app_init (MessagingMenuApp *app) app->cancellable = g_cancellable_new (); - - g_bus_get (G_BUS_TYPE_SESSION, - app->cancellable, - got_session_bus, - app); - app->watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, "com.canonical.indicator.messages", G_BUS_NAME_WATCHER_FLAGS_NONE, @@ -445,6 +464,8 @@ messaging_menu_app_new (const gchar *desktop_id) void messaging_menu_app_register (MessagingMenuApp *app) { + gchar *object_path; + g_return_if_fail (MESSAGING_MENU_IS_APP (app)); app->registered = TRUE; @@ -453,11 +474,15 @@ messaging_menu_app_register (MessagingMenuApp *app) if (!app->messages_service) return; + object_path = messaging_menu_app_get_dbus_object_path (app); + indicator_messages_service_call_register_application (app->messages_service, g_app_info_get_id (G_APP_INFO (app->appinfo)), - "/com/canonical/indicator/messages", + object_path, app->cancellable, NULL, NULL); + + g_free (object_path); } /** -- cgit v1.2.3 From 998854d26580f3c9b001518cc7fcd283e41001f6 Mon Sep 17 00:00:00 2001 From: Lars Uebernickel Date: Fri, 31 Aug 2012 19:49:26 +0200 Subject: 12.10.2 --- NEWS | 12 ++++++++++-- configure.ac | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 95444fd..32b926d 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,13 @@ -Overview of changes from 12.10.0 to 12.10.1 -=========================================== + +12.10.2 + +* libmessaging-menu: + - expand source documentation and add gtk-doc to the build system + - added new API: messaging_menu_app_set_source_{label,icon} + - fix bug: only one MessagingMenuApp was exported to the messaging menu + + +12.10.1 * presence icons are shown again * the icon is changed when a source draws attention diff --git a/configure.ac b/configure.ac index ea1a0f8..37268a2 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ -AC_INIT(indicator-messages, 12.10.1) +AC_INIT(indicator-messages, 12.10.2) AC_PREREQ(2.62) -- cgit v1.2.3