aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Uebernickel <lars.uebernickel@canonical.com>2012-11-30 18:43:34 +0100
committerLars Uebernickel <lars.uebernickel@canonical.com>2012-11-30 18:43:34 +0100
commitfd565c27f8ae579aa28e4aac459488b3dd7af119 (patch)
treedccd99c28c75618dadaed5c30377ddbdc28d9f96
parent16aeadbeb7f0b108c2ba5e68a6ad0d96766380ba (diff)
parenta128285efe183232aa3a5a6058cd9983fc7375c3 (diff)
downloadayatana-indicator-messages-fd565c27f8ae579aa28e4aac459488b3dd7af119.tar.gz
ayatana-indicator-messages-fd565c27f8ae579aa28e4aac459488b3dd7af119.tar.bz2
ayatana-indicator-messages-fd565c27f8ae579aa28e4aac459488b3dd7af119.zip
Merge trunk and fix conflicts
-rw-r--r--debian/changelog8
-rw-r--r--src/im-application-list.c15
-rw-r--r--src/messages-service.c100
3 files changed, 22 insertions, 101 deletions
diff --git a/debian/changelog b/debian/changelog
index d30e1f1..a1a6b2d 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,11 @@
+indicator-messages (12.10.6-0ubuntu1phablet3) quantal; urgency=low
+
+ [Lars Uebernickel]
+ * expose root menu item of which the indicator menu is a submenu
+ * fix crash in im-application-list on arm
+
+ -- Lars Uebernickel <lars.uebernickel@ubuntu.com> Thu, 29 Nov 2012 21:44:19 +0100
+
indicator-messages (12.10.6-0ubuntu1phablet2) quantal; urgency=low
[Lars Uebernickel]
diff --git a/src/im-application-list.c b/src/im-application-list.c
index 70d288c..d4c5687 100644
--- a/src/im-application-list.c
+++ b/src/im-application-list.c
@@ -339,22 +339,21 @@ im_application_list_class_init (ImApplicationListClass *klass)
static void
im_application_list_init (ImApplicationList *list)
{
+ const GActionEntry action_entries[] = {
+ { "messages", NULL, NULL, "('', 'indicator-messages', 'Messages', true)", NULL },
+ { "remove-all", im_application_list_remove_all }
+ };
+
GSimpleActionGroup *actions;
- GSimpleAction *remove_all_action;
list->applications = g_hash_table_new_full (g_str_hash, g_str_equal, NULL, application_free);
- list->muxer = g_action_muxer_new ();
actions = g_simple_action_group_new ();
+ g_simple_action_group_add_entries (actions, action_entries, G_N_ELEMENTS (action_entries), list);
- remove_all_action = g_simple_action_new ("remove-all", NULL);
- g_signal_connect (remove_all_action, "activate", G_CALLBACK (im_application_list_remove_all), list);
-
- g_simple_action_group_insert (actions, G_ACTION (remove_all_action));
-
+ list->muxer = g_action_muxer_new ();
g_action_muxer_insert (list->muxer, NULL, G_ACTION_GROUP (actions));
- g_object_unref (remove_all_action);
g_object_unref (actions);
}
diff --git a/src/messages-service.c b/src/messages-service.c
index b3731a8..61e786f 100644
--- a/src/messages-service.c
+++ b/src/messages-service.c
@@ -40,45 +40,9 @@ with this program. If not, see <http://www.gnu.org/licenses/>.
static ImApplicationList *applications;
static IndicatorMessagesService *messages_service;
-static GSimpleActionGroup *actions;
static GMenu *toplevel_menu;
static ImPhoneMenu *menu;
static GSettings *settings;
-static gboolean draws_attention;
-static const gchar *global_status[6]; /* max 5: available, away, busy, invisible, offline */
-
-static gchar *
-indicator_messages_get_icon_name ()
-{
- GString *name;
- GIcon *icon;
- gchar *iconstr;
-
- name = g_string_new ("indicator-messages");
-
- if (global_status[0] != NULL)
- {
- if (global_status[1] != NULL)
- g_string_append (name, "-mixed");
- else
- g_string_append_printf (name, "-%s", global_status[0]);
- }
-
- if (draws_attention)
- g_string_append (name, "-new");
-
- icon = g_themed_icon_new (name->str);
- g_themed_icon_append_name (G_THEMED_ICON (icon),
- draws_attention ? "indicator-messages-new"
- : "indicator-messages");
-
- iconstr = g_icon_to_string (icon);
-
- g_object_unref (icon);
- g_string_free (name, TRUE);
-
- return iconstr;
-}
static void
service_shutdown (IndicatorService * service, gpointer user_data)
@@ -90,26 +54,6 @@ service_shutdown (IndicatorService * service, gpointer user_data)
}
static void
-clear_action_activate (GSimpleAction *simple,
- GVariant *param,
- gpointer user_data)
-{
- /* TODO */
-}
-
-static void
-status_action_activate (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
-{
- const gchar *status;
-
- status = g_variant_get_string (parameter, NULL);
-
- indicator_messages_service_emit_status_changed (messages_service, status);
-}
-
-static void
register_application (IndicatorMessagesService *service,
GDBusMethodInvocation *invocation,
const gchar *desktop_id,
@@ -142,39 +86,6 @@ unregister_application (IndicatorMessagesService *service,
indicator_messages_service_complete_unregister_application (service, invocation);
}
-static GSimpleActionGroup *
-create_action_group (void)
-{
- GSimpleActionGroup *actions;
- GSimpleAction *messages;
- GSimpleAction *clear;
- GSimpleAction *status;
- const gchar *default_status[] = { "offline", NULL };
- gchar *icon;
-
- actions = g_simple_action_group_new ();
-
- /* state of the messages action is its icon name */
- icon = indicator_messages_get_icon_name ();
- messages = g_simple_action_new_stateful ("messages", G_VARIANT_TYPE ("s"),
- g_variant_new_string (icon));
-
- status = g_simple_action_new_stateful ("status", G_VARIANT_TYPE ("s"),
- g_variant_new_strv (default_status, -1));
- g_signal_connect (status, "activate", G_CALLBACK (status_action_activate), NULL);
-
- clear = g_simple_action_new ("clear", NULL);
- g_simple_action_set_enabled (clear, FALSE);
- g_signal_connect (clear, "activate", G_CALLBACK (clear_action_activate), NULL);
-
- g_simple_action_group_insert (actions, G_ACTION (messages));
- g_simple_action_group_insert (actions, G_ACTION (status));
- g_simple_action_group_insert (actions, G_ACTION (clear));
-
- g_free (icon);
- return actions;
-}
-
static void
got_bus (GObject *object,
GAsyncResult * res,
@@ -200,7 +111,7 @@ got_bus (GObject *object,
}
g_dbus_connection_export_menu_model (bus, INDICATOR_MESSAGES_DBUS_OBJECT "/phone",
- im_phone_menu_get_model (menu), &error);
+ G_MENU_MODEL (toplevel_menu), &error);
if (error) {
g_warning ("unable to export menu on dbus: %s", error->message);
g_error_free (error);
@@ -224,6 +135,7 @@ main (int argc, char ** argv)
{
GMainLoop * mainloop = NULL;
IndicatorService * service = NULL;
+ GMenuItem *root;
/* Glib init */
g_type_init();
@@ -245,8 +157,6 @@ main (int argc, char ** argv)
g_bus_get (G_BUS_TYPE_SESSION, NULL, got_bus, NULL);
- actions = create_action_group ();
-
g_signal_connect (messages_service, "handle-register-application",
G_CALLBACK (register_application), NULL);
g_signal_connect (messages_service, "handle-unregister-application",
@@ -255,7 +165,10 @@ main (int argc, char ** argv)
menu = im_phone_menu_new ();
toplevel_menu = g_menu_new ();
- g_menu_append_submenu (toplevel_menu, NULL, im_phone_menu_get_model (menu));
+ root = g_menu_item_new (NULL, "messages");
+ g_menu_item_set_attribute (root, "x-canonical-type", "s", "com.canonical.indicator.root");
+ g_menu_item_set_submenu (root, im_phone_menu_get_model (menu));
+ g_menu_append_item (toplevel_menu, root);
settings = g_settings_new ("com.canonical.indicator.messages");
@@ -274,6 +187,7 @@ main (int argc, char ** argv)
g_main_loop_run(mainloop);
/* Clean up */
+ g_object_unref (root);
g_object_unref (messages_service);
g_object_unref (settings);
g_object_unref (applications);