From b62772e76c7c5e2c400c100fb34e09a393e3ec78 Mon Sep 17 00:00:00 2001 From: Michael Terry Date: Wed, 3 Aug 2011 13:49:17 -0400 Subject: don't show settings links when used in a greeter --- src/indicator-power.c | 50 ++++++++++++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index 17c6bd5..52843d3 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -419,6 +419,14 @@ menu_add_devices (GtkMenu *menu, return n_devices; } +static gboolean +get_greeter_mode (void) +{ + const gchar *var; + var = g_getenv("INDICATOR_GREETER_MODE"); + return (g_strcmp0(var, "1") == 0); +} + static void build_menu (IndicatorPower *self) { @@ -437,26 +445,28 @@ build_menu (IndicatorPower *self) /* devices */ n_devices = menu_add_devices (priv->menu, priv->devices); - /* only do the separator if we have at least one device */ - if (n_devices != 0) - { - item = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); - } - - /* options */ - item = gtk_check_menu_item_new_with_label (_("Show Time in Menu Bar")); - g_signal_connect (G_OBJECT (item), "toggled", - G_CALLBACK (option_toggled_cb), self); - gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); - - /* preferences */ - item = gtk_image_menu_item_new_with_mnemonic (_("Power Settings ...")); - image = gtk_image_new_from_icon_name (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); - g_signal_connect (G_OBJECT (item), "activate", - G_CALLBACK (show_preferences_cb), NULL); - gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + if (!get_greeter_mode ()) { + /* only do the separator if we have at least one device */ + if (n_devices != 0) + { + item = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + } + + /* options */ + item = gtk_check_menu_item_new_with_label (_("Show Time in Menu Bar")); + g_signal_connect (G_OBJECT (item), "toggled", + G_CALLBACK (option_toggled_cb), self); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + + /* preferences */ + item = gtk_image_menu_item_new_with_mnemonic (_("Power Settings ...")); + image = gtk_image_new_from_icon_name (GTK_STOCK_PREFERENCES, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); + g_signal_connect (G_OBJECT (item), "activate", + G_CALLBACK (show_preferences_cb), NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (priv->menu), item); + } /* show the menu */ gtk_widget_show_all (GTK_WIDGET (priv->menu)); -- cgit v1.2.3 From 68ee93bbc115c0bad5d9ed907f729d9bc0f4d1bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 11 Aug 2011 14:48:20 +0100 Subject: Fix some memory leaks --- src/indicator-power.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/indicator-power.c b/src/indicator-power.c index 17c6bd5..42542cb 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -394,6 +394,9 @@ menu_add_device (GtkMenu *menu, g_signal_connect (G_OBJECT (item), "activate", G_CALLBACK (show_info_cb), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + + g_free (device_icon); + g_free (object_path); } static gsize @@ -523,6 +526,9 @@ get_primary_device (GVariant *devices) } } + g_free (device_icon); + g_free (object_path); + if (discharging) { primary_device = primary_device_discharging; -- cgit v1.2.3 From 329ed974706f08e269fa22a2ab7274cc1dbfc3a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 11 Aug 2011 15:52:41 +0100 Subject: Only batteries can be primary devices So only batteries status icons are allowed in the menu title --- src/indicator-power.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/indicator-power.c b/src/indicator-power.c index 42542cb..bfb625b 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -502,6 +502,10 @@ get_primary_device (GVariant *devices) g_debug ("%s: got data from object %s", G_STRFUNC, object_path); + /* not battery */ + if (kind != UP_DEVICE_KIND_BATTERY) + continue; + if (state == UP_DEVICE_STATE_DISCHARGING) { discharging = TRUE; -- cgit v1.2.3 From b36ac875eec753d2368dad1cf45ab930bc7b52bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 11 Aug 2011 16:17:29 +0100 Subject: Use a string when the energy source is not present Use "not present" instead "0%" --- src/indicator-power.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/indicator-power.c b/src/indicator-power.c index bfb625b..e0d8795 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -315,7 +315,7 @@ build_device_time_details (const gchar *device_name, *accesible_name = g_strdup (*details); *short_details = g_strdup (_("(charged)")); } - else + else if (percentage > 0) { /* TRANSLATORS: %2 is a percentage value. Note: this string is only * used when we don't have a time value */ @@ -325,6 +325,12 @@ build_device_time_details (const gchar *device_name, *short_details = g_strdup_printf (_("(%.0lf%%)"), percentage); } + else + { + *details = g_strdup_printf (_("%s (not present)"), device_name); + *accesible_name = g_strdup (*details); + *short_details = g_strdup (_("(not present)")); + } } } -- cgit v1.2.3 From 632244509d85412748cc2b024a5d92b43306034d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Jard=C3=B3n?= Date: Thu, 11 Aug 2011 17:39:21 +0100 Subject: Fix some memory leaks --- src/indicator-power.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/indicator-power.c b/src/indicator-power.c index 2179c3f..dbc1d6a 100644 --- a/src/indicator-power.c +++ b/src/indicator-power.c @@ -306,6 +306,9 @@ build_device_time_details (const gchar *device_name, device_name, short_timestring); } } + + g_free (short_timestring); + g_free (detailed_timestring); } else { @@ -401,6 +404,9 @@ menu_add_device (GtkMenu *menu, G_CALLBACK (show_info_cb), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), item); + g_free (short_details); + g_free (details); + g_free (accesible_name); g_free (device_icon); g_free (object_path); } @@ -450,6 +456,7 @@ build_menu (IndicatorPower *self) children = gtk_container_get_children (GTK_CONTAINER (priv->menu)); g_list_foreach (children, (GFunc) gtk_widget_destroy, NULL); + g_list_free (children); /* devices */ n_devices = menu_add_devices (priv->menu, priv->devices); @@ -610,6 +617,7 @@ put_primary_device (IndicatorPower *self, g_free (short_details); g_free (details); + g_free (accesible_name); g_free (device_icon); g_free (object_path); } -- cgit v1.2.3