[Goodies-commits] r7010 - in xfce4-power-manager/trunk: . libxfpm src

Ali Abdallah aliov at xfce.org
Sat Mar 28 14:48:03 CET 2009


Author: aliov
Date: 2009-03-28 13:48:02 +0000 (Sat, 28 Mar 2009)
New Revision: 7010

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/hal-iface.c
   xfce4-power-manager/trunk/src/xfpm-battery.c
   xfce4-power-manager/trunk/src/xfpm-battery.h
   xfce4-power-manager/trunk/src/xfpm-engine.c
   xfce4-power-manager/trunk/src/xfpm-supply.c
   xfce4-power-manager/trunk/src/xfpm-tray-icon.c
   xfce4-power-manager/trunk/src/xfpm-tray-icon.h
   xfce4-power-manager/trunk/src/xfpm-xfconf.c
Log:
Move the context menu to xfpm-tray-icon

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/ChangeLog	2009-03-28 13:48:02 UTC (rev 7010)
@@ -1,4 +1,7 @@
 
+2009-03-28 14:47 Ali aliov at xfce.org 
+	 * : Move the context menu to xfpm-tray-icon
+
 2009-03-27 15:37 Ali aliov at xfce.org 
 	 * : Move the configuration loading to xfpm-xfconf
 

Modified: xfce4-power-manager/trunk/libxfpm/hal-iface.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-iface.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/libxfpm/hal-iface.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -75,7 +75,88 @@
     
 G_DEFINE_TYPE(HalIface, hal_iface, G_TYPE_OBJECT)
 
+
+static gboolean
+hal_iface_check_interface (HalIface *iface, const gchar *interface)
+{
+    DBusMessage *message;
+    DBusMessage *reply;
+    DBusError error ;
+    
+    message = dbus_message_new_method_call ("org.freedesktop.Hal",
+					    "/org/freedesktop/Hal",
+					    interface,
+					    "JustToCheck");
+    
+    if (!message)
+    	return FALSE;
+    
+    dbus_error_init (&error);
+    
+    reply = 
+    	dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection(iface->priv->bus),
+						   message, 2000, &error);
+    dbus_message_unref (message);
+    
+    if ( reply ) dbus_message_unref (reply);
+    
+    if ( dbus_error_is_set(&error) )
+    {
+	if (!xfpm_strcmp(error.name,"org.freedesktop.DBus.Error.UnknownMethod"))
+        {
+            dbus_error_free(&error);
+	    return TRUE;
+        }
+    }
+    
+    return FALSE;
+}
+
+static gboolean
+get_property_bool (HalIface *iface, const gchar *property)
+{
+    GError *error = NULL;
+    gboolean ret;
+    DBusGProxy *proxy = dbus_g_proxy_new_for_name (iface->priv->bus, 
+						   "org.freedesktop.Hal",
+					           "/org/freedesktop/Hal/devices/computer",
+					           "org.freedesktop.Hal.Device");
+    dbus_g_proxy_call (proxy, "GetPropertyBoolean", &error,
+		       G_TYPE_STRING, property,
+		       G_TYPE_INVALID,
+		       G_TYPE_BOOLEAN, &ret,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_critical ("Unable to get bool property: %s\n", error->message);
+	g_error_free (error);
+    }
+    
+    g_object_unref (proxy);
+    
+    return ret;
+}
+
 static void
+hal_iface_power_management_check (HalIface *iface)
+{
+    iface->priv->caller_privilege =
+	hal_iface_check_interface (iface,  "org.freedesktop.Hal.Device.SystemPowerManagement");
+    
+    iface->priv->can_suspend   = get_property_bool (iface, "power_management.can_suspend");
+    iface->priv->can_hibernate = get_property_bool (iface, "power_management.can_hibernate");
+}
+
+static void
+hal_iface_cpu_check (HalIface *iface)
+{
+    iface->priv->cpu_freq_iface_can_be_used  = 
+	hal_iface_check_interface (iface, "org.freedesktop.Hal.Device.CPUFreq");
+}
+
+
+static void
 hal_iface_class_init(HalIfaceClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -118,6 +199,8 @@
 static void
 hal_iface_init(HalIface *iface)
 {
+    GError *error = NULL;
+    
     iface->priv = HAL_IFACE_GET_PRIVATE(iface);
     
     iface->priv->bus 			= NULL;
@@ -126,6 +209,19 @@
     iface->priv->can_hibernate  	= FALSE;
     iface->priv->caller_privilege       = FALSE;
     iface->priv->cpu_freq_iface_can_be_used = FALSE;
+    
+    iface->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+    
+    if ( error )
+    {
+	g_critical ("Unable to get system bus %s.", error->message);
+	g_error_free (error);
+	return;
+    }
+    
+    iface->priv->connected = TRUE;
+    hal_iface_power_management_check (iface);
+    hal_iface_cpu_check (iface);
 }
 
 static void hal_iface_get_property(GObject *object,
@@ -182,105 +278,12 @@
     return HAL_IFACE (hal_iface_object);
 }
 
-static gboolean
-hal_iface_check_interface (HalIface *iface, const gchar *interface)
-{
-    DBusMessage *message;
-    DBusMessage *reply;
-    DBusError error ;
-    
-    message = dbus_message_new_method_call ("org.freedesktop.Hal",
-					    "/org/freedesktop/Hal",
-					    interface,
-					    "JustToCheck");
-    
-    if (!message)
-    	return FALSE;
-    
-    dbus_error_init (&error);
-    
-    reply = 
-    	dbus_connection_send_with_reply_and_block (dbus_g_connection_get_connection(iface->priv->bus),
-						   message, 2000, &error);
-    dbus_message_unref (message);
-    
-    if ( reply ) dbus_message_unref (reply);
-    
-    if ( dbus_error_is_set(&error) )
-    {
-	if (!xfpm_strcmp(error.name,"org.freedesktop.DBus.Error.UnknownMethod"))
-        {
-            dbus_error_free(&error);
-	    return TRUE;
-        }
-    }
-    
-    return FALSE;
-}
-
-static gboolean
-get_property_bool (HalIface *iface, const gchar *property)
-{
-    GError *error = NULL;
-    gboolean ret;
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (iface->priv->bus, 
-						   "org.freedesktop.Hal",
-					           "/org/freedesktop/Hal/devices/computer",
-					           "org.freedesktop.Hal.Device");
-    dbus_g_proxy_call (proxy, "GetPropertyBoolean", &error,
-		       G_TYPE_STRING, property,
-		       G_TYPE_INVALID,
-		       G_TYPE_BOOLEAN, &ret,
-		       G_TYPE_INVALID);
-		       
-    if ( error )
-    {
-	g_critical ("Unable to get bool property: %s\n", error->message);
-	g_error_free (error);
-    }
-    
-    g_object_unref (proxy);
-    
-    return ret;
-}
-
-static void
-hal_iface_power_management_check (HalIface *iface)
-{
-    iface->priv->caller_privilege =
-	hal_iface_check_interface (iface,  "org.freedesktop.Hal.Device.SystemPowerManagement");
-    
-    iface->priv->can_suspend   = get_property_bool (iface, "power_management.can_suspend");
-    iface->priv->can_hibernate = get_property_bool (iface, "power_management.can_hibernate");
-}
-
-static void
-hal_iface_cpu_check (HalIface *iface)
-{
-    iface->priv->cpu_freq_iface_can_be_used  = 
-	hal_iface_check_interface (iface, "org.freedesktop.Hal.Device.CPUFreq");
-}
-
 gboolean
 hal_iface_connect (HalIface *iface)
 {
     g_return_val_if_fail (HAL_IS_IFACE (iface), FALSE);
     
-    GError *error = NULL;
-    
-    iface->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
-    
-    if ( error )
-    {
-	g_critical ("Unable to get system bus %s.", error->message);
-	g_error_free (error);
-	return FALSE;
-    }
-    
-    iface->priv->connected = TRUE;
-    hal_iface_power_management_check (iface);
-    hal_iface_cpu_check (iface);
-    
+       
     return TRUE;
 }
 

Modified: xfce4-power-manager/trunk/src/xfpm-battery.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-battery.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -34,6 +34,7 @@
 #include <libxfce4util/libxfce4util.h>
 
 #include "libxfpm/xfpm-string.h"
+#include "libxfpm/xfpm-notify.h"
 
 #include "xfpm-battery.h"
 #include "xfpm-tray-icon.h"
@@ -59,19 +60,18 @@
     XfpmAdapter     *adapter;
     HalBattery      *device;
     XfpmXfconf      *conf;
+    XfpmNotify      *notify;
 
     HalDeviceType    type;
     gchar 	    *icon_prefix;
     
     gboolean         adapter_present;
     XfpmBatteryState state;
-   
 };
 
 enum
 {
     BATTERY_STATE_CHANGED,
-    POPUP_BATTERY_MENU,
     LAST_SIGNAL
 };
 
@@ -96,6 +96,28 @@
     return "100";
 }
 
+static const gchar *
+xfpm_battery_get_message_from_battery_state (XfpmBatteryState state, gboolean adapter_present)
+{
+    switch (state)
+    {
+	case BATTERY_FULLY_CHARGED:
+	    return _("Your battery is fully charged");
+	    break;
+	case BATTERY_IS_CHARGING:
+	    return  _("Battery is charging");
+	    break;
+	case BATTERY_IS_DISCHARGING:
+	    return  adapter_present ? _("Your battery is discharging"): _("System is running on battery power");
+	    break;
+	case BATTERY_CHARGE_LOW:
+	    return adapter_present ? _("Your battery charge is low") : _("System is running on low power"); 
+	    break;
+	default:
+	    return NULL;
+    }
+}
+
 static void
 xfpm_battery_refresh_visible_icon (XfpmBattery *battery)
 {
@@ -178,9 +200,24 @@
 static void
 xfpm_battery_refresh_state (XfpmBattery *battery, XfpmBatteryState state)
 {
+    const gchar *message;
+    
     if ( battery->priv->state != state)
     {
 	battery->priv->state = state;
+	message = xfpm_battery_get_message_from_battery_state (state, battery->priv->adapter_present );
+	if ( !message )
+	    goto signal;
+	xfpm_notify_show_notification (battery->priv->notify, 
+				   _("Xfce power manager"), 
+				   message, 
+				   xfpm_tray_icon_get_icon_name (battery->priv->icon),
+				   10000,
+				   battery->priv->type == HAL_DEVICE_TYPE_PRIMARY ? FALSE : TRUE,
+				   XFPM_NOTIFY_NORMAL,
+				   xfpm_tray_icon_get_tray_icon(battery->priv->icon));
+	
+signal:
 	g_signal_emit (G_OBJECT(battery), signals[BATTERY_STATE_CHANGED], 0, state);
 	TRACE("Emitting signal battery state changed");
     }
@@ -423,13 +460,6 @@
 }
 
 static void
-xfpm_battery_popup_menu_cb (GtkStatusIcon *icon, guint button, guint activate_time, XfpmBattery *battery)
-{
-    g_signal_emit (G_OBJECT(battery), signals[POPUP_BATTERY_MENU], 0,
-    		   icon, button, activate_time, battery->priv->type);
-}
-
-static void
 xfpm_battery_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmBattery *battery)
 {
     battery->priv->adapter_present = present;
@@ -443,6 +473,20 @@
 }
 
 static void
+xfpm_battery_show_info (XfpmTrayIcon *tray, XfpmBattery *battery)
+{
+    gchar *icon = g_strdup_printf("%s%s",
+				  battery->priv->icon_prefix, 
+	    			  xfpm_battery_get_icon_index(battery->priv->type, 100));
+				      
+    GtkWidget *info = xfpm_battery_info_new (battery->priv->device, icon);
+    
+    g_free (icon);
+    
+    gtk_widget_show_all (info);
+}
+
+static void
 xfpm_battery_class_init(XfpmBatteryClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -456,19 +500,6 @@
 		      g_cclosure_marshal_VOID__ENUM,
 		      G_TYPE_NONE, 1, XFPM_TYPE_BATTERY_STATE);
 
-    signals[POPUP_BATTERY_MENU] = 
-   	g_signal_new("popup-battery-menu",
-		      XFPM_TYPE_BATTERY,
-		      G_SIGNAL_RUN_LAST,
-		      G_STRUCT_OFFSET(XfpmBatteryClass, popup_battery_menu),
-		      NULL, NULL,
-		      _xfpm_marshal_VOID__POINTER_UINT_UINT_UINT,
-		      G_TYPE_NONE, 4, 
-		      GTK_TYPE_STATUS_ICON, 
-		      G_TYPE_UINT,
-		      G_TYPE_UINT,
-		      G_TYPE_UINT);
-		      
     object_class->finalize = xfpm_battery_finalize;
     
     g_type_class_add_private(klass,sizeof(XfpmBatteryPrivate));
@@ -482,11 +513,15 @@
     battery->priv->icon      = xfpm_tray_icon_new ();
     battery->priv->adapter   = xfpm_adapter_new ();
     battery->priv->conf      = xfpm_xfconf_new ();
+    battery->priv->notify    = xfpm_notify_new ();
     
     battery->priv->adapter_present = xfpm_adapter_get_present (battery->priv->adapter);
     
     g_signal_connect (battery->priv->adapter ,"adapter-changed",
-		      G_CALLBACK(xfpm_battery_adapter_changed_cb), battery);
+		      G_CALLBACK (xfpm_battery_adapter_changed_cb), battery);
+		      
+    g_signal_connect (battery->priv->icon, "show-information", 
+		      G_CALLBACK (xfpm_battery_show_info), battery);
 }
 
 static void
@@ -505,6 +540,8 @@
     g_object_unref (battery->priv->adapter);
     
     g_object_unref (battery->priv->conf);
+    
+    g_object_unref (battery->priv->notify);
 
     G_OBJECT_CLASS(xfpm_battery_parent_class)->finalize(object);
 }
@@ -527,9 +564,6 @@
     g_signal_connect (G_OBJECT(battery->priv->device), "battery-changed",
 		      G_CALLBACK(xfpm_battery_device_changed_cb), battery);
 		      
-    g_signal_connect (G_OBJECT(xfpm_tray_icon_get_tray_icon(battery->priv->icon)), "popup-menu",
-		      G_CALLBACK(xfpm_battery_popup_menu_cb), battery);
-		      
     g_signal_connect (G_OBJECT(battery->priv->conf), "tray-icon-settings-changed",
 		      G_CALLBACK(xfpm_battery_tray_icon_settings_changed), battery);
     
@@ -566,18 +600,3 @@
     
     return xfpm_tray_icon_get_icon_name (battery->priv->icon);
 }
-    
-void xfpm_battery_show_info (XfpmBattery *battery)
-{
-    g_return_if_fail (XFPM_IS_BATTERY(battery));
-    
-    gchar *icon = g_strdup_printf("%s%s",
-				  battery->priv->icon_prefix, 
-	    			  xfpm_battery_get_icon_index(battery->priv->type, 100));
-				      
-    GtkWidget *info = xfpm_battery_info_new (battery->priv->device, icon);
-    
-    g_free (icon);
-    
-    gtk_widget_show_all (info);
-}

Modified: xfce4-power-manager/trunk/src/xfpm-battery.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.h	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-battery.h	2009-03-28 13:48:02 UTC (rev 7010)
@@ -50,12 +50,6 @@
     
     void	        (*battery_state_changed)	(XfpmBattery *battery,
     					            	 XfpmBatteryState state);
-							 
-    void                (*popup_battery_menu)		(XfpmBattery *battery,
-						         GtkStatusIcon *icon,
-							 guint button,
-							 guint activate_time,
-							 guint type);
        
 } XfpmBatteryClass;
 
@@ -70,8 +64,6 @@
 
 const gchar    		*xfpm_battery_get_icon_name      (XfpmBattery *battery);
 
-void            	 xfpm_battery_show_info          (XfpmBattery *battery);
-
 G_END_DECLS
 
 #endif /* __XFPM_BATTERY_H */

Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -134,6 +134,7 @@
       g_warning ("%s", error->message);
       g_error_free (error);
     }
+    
   xfpm_send_message_to_network_manager ("wake");
   engine->priv->block_shutdown = FALSE;
   return FALSE;
@@ -181,12 +182,12 @@
 	}
       else if (shutdown == XFPM_DO_HIBERNATE)
 	{
-	  g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_hibernate,
+	  g_timeout_add_seconds (4, (GSourceFunc) xfpm_engine_do_hibernate,
 				 engine);
 	}
       else if (shutdown == XFPM_DO_SUSPEND)
 	{
-	  g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_suspend,
+	  g_timeout_add_seconds (4, (GSourceFunc) xfpm_engine_do_suspend,
 				 engine);
 	}
 
@@ -412,8 +413,7 @@
 
   engine = XFPM_ENGINE (object);
 
-  if (engine->priv->conf)
-    g_object_unref (engine->priv->conf);
+  g_object_unref (engine->priv->conf);
 
   if (engine->priv->supply)
     g_object_unref (engine->priv->supply);

Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -115,80 +115,21 @@
     XfpmSupply *supply;
     supply = XFPM_SUPPLY(object);
     
-    if ( supply->priv->power )
-    	g_object_unref(supply->priv->power);
+    g_object_unref(supply->priv->power);
 	
     g_hash_table_destroy (supply->priv->hash);
 	
-    if ( supply->priv->notify )
-    	g_object_unref (supply->priv->notify);
+    g_object_unref (supply->priv->notify);
 	
-    if ( supply->priv->conf )
-    	g_object_unref (supply->priv->conf);
+    g_object_unref (supply->priv->conf);
 	
-    if ( supply->priv->adapter )
-	g_object_unref (supply->priv->adapter);
+    g_object_unref (supply->priv->adapter);
 	
     G_OBJECT_CLASS(xfpm_supply_parent_class)->finalize(object);
 }
 
-static void
-xfpm_supply_hibernate_cb (GtkWidget *w, XfpmSupply *supply)
+gboolean xfpm_supply_on_low_power (XfpmSupply *supply)
 {
-    gboolean ret = 
-    xfce_confirm (_("Are you sure you want to hibernate the system?"),
-                  GTK_STOCK_YES,
-                  _("Hibernate"));
-    
-    if ( ret ) 
-    {
-	g_signal_emit (G_OBJECT(supply ), signals[SHUTDOWN_REQUEST], 0, FALSE, XFPM_DO_HIBERNATE);
-    }
-}
-
-static void
-xfpm_supply_suspend_cb (GtkWidget *w, XfpmSupply *supply)
-{
-    gboolean ret = 
-    xfce_confirm (_("Are you sure you want to suspend the system?"),
-                  GTK_STOCK_YES,
-                  _("Suspend"));
-    
-    if ( ret ) 
-    {
-	g_signal_emit (G_OBJECT(supply ), signals[SHUTDOWN_REQUEST], 0, FALSE, XFPM_DO_SUSPEND);
-    }
-}
-
-//FIXME: more types
-static const gchar *
-_get_icon_name_from_battery_type (HalDeviceType type)
-{
-    switch (type)
-    {
-	case HAL_DEVICE_TYPE_PRIMARY:
-	    return "gpm-primary-charged";
-	    break;
-	case HAL_DEVICE_TYPE_UPS:
-	    return "gpm-ups-charged";
-	    break;
-	case HAL_DEVICE_TYPE_MOUSE:
-	    return "gpm-mouse-100";
-	    break;
-	case HAL_DEVICE_TYPE_KEYBOARD:
-	    return "gpm-keyboard-100";
-	    break;
-	case HAL_DEVICE_TYPE_PDA:
-	    return "gpm-phone-100";
-	    break;
-	default:
-	    return "gpm-primary-charged";
-	    break;
-    }
-}
-
-gboolean xfpm_supply_on_low_power ( XfpmSupply *supply)
-{
     GList *list = NULL;
     int i;
     gboolean low_power = FALSE;
@@ -220,28 +161,6 @@
     return low_power;
 }
 
-static const gchar *
-xfpm_supply_get_message_from_battery_state (XfpmBatteryState state, gboolean adapter_present)
-{
-    switch (state)
-    {
-	case BATTERY_FULLY_CHARGED:
-	    return _("Your battery is fully charged");
-	    break;
-	case BATTERY_IS_CHARGING:
-	    return  _("Battery is charging");
-	    break;
-	case BATTERY_IS_DISCHARGING:
-	    return  adapter_present ? _("Your battery is discharging"): _("System is running on battery power");
-	    break;
-	case BATTERY_CHARGE_LOW:
-	    return adapter_present ? _("Your battery charge is low") : _("System is running on low power"); 
-	    break;
-	default:
-	    return NULL;
-    }
-}
-
 static void
 xfpm_supply_process_critical_action (XfpmSupply *supply)
 {
@@ -337,177 +256,21 @@
 }
 
 static void
-xfpm_supply_primary_battery_changed (XfpmSupply *supply, XfpmBattery *battery, XfpmBatteryState state)
+xfpm_supply_primary_critical (XfpmSupply *supply, XfpmBattery *battery, XfpmBatteryState state)
 {
     if ( state == BATTERY_CHARGE_CRITICAL )
     {
 	xfpm_supply_handle_primary_critical (supply, battery);
-	return;
     }
-    
-    const gchar *message 
-    	= xfpm_supply_get_message_from_battery_state (state, supply->priv->adapter_present);
-
-    if ( !message )
-    	return;
-    
-    xfpm_notify_show_notification (supply->priv->notify, 
-				   _("Xfce power manager"), 
-				   message, 
-				   xfpm_battery_get_icon_name (battery),
-				   10000,
-				   FALSE,
-				   XFPM_NOTIFY_NORMAL,
-				   xfpm_battery_get_status_icon (battery));
 }
 
 static void
-xfpm_supply_misc_battery_changed (XfpmSupply *supply, XfpmBattery *battery, XfpmBatteryState state)
-{
-    const gchar *message 
-    	= xfpm_supply_get_message_from_battery_state (state, TRUE);
-	
-    if ( !message )
-    	return;
-    
-    xfpm_notify_show_notification (supply->priv->notify, 
-				   _("Xfce power manager"), 
-				   message, 
-				   xfpm_battery_get_icon_name (battery),
-				   10000,
-				   TRUE, 
-				   XFPM_NOTIFY_NORMAL,
-				   xfpm_battery_get_status_icon (battery));
-}
-
-static void
-xfpm_supply_show_battery_notification (XfpmSupply *supply, XfpmBatteryState state, XfpmBattery *battery)
-{
-    HalDeviceType type;
-    const HalBattery *device = xfpm_battery_get_device (battery);
-    
-    if ( device )
-	g_object_get (G_OBJECT(device), "type", &type, NULL);
-    else
-    {
-	g_critical ("Unable to get device type");
-	return;
-    }
-    
-    if ( type == HAL_DEVICE_TYPE_PRIMARY )
-    {
-	xfpm_supply_primary_battery_changed (supply, battery, state);
-    }
-    else 
-    {
-	xfpm_supply_misc_battery_changed (supply, battery, state);
-    }
-}
-
-static void
 xfpm_supply_battery_state_changed_cb (XfpmBattery *battery, XfpmBatteryState state, XfpmSupply *supply)
 {
-    xfpm_supply_show_battery_notification (supply, state, battery);
+    if ( state == BATTERY_CHARGE_CRITICAL )
+	xfpm_supply_primary_critical (supply, battery, state);
 }
 
-static void
-xfpm_supply_show_battery_info (GtkWidget *w, XfpmBattery *battery)
-{
-    xfpm_battery_show_info (battery);
-}
-
-static void
-xfpm_supply_popup_battery_menu_cb (XfpmBattery *battery, GtkStatusIcon *icon, 
-				   guint button, guint activate_time, 
-				   guint battery_type, XfpmSupply *supply)
-{
-    GtkWidget *menu, *mi, *img;
-    
-    menu = gtk_menu_new();
-    
-    // Hibernate menu option
-    mi = gtk_image_menu_item_new_with_label(_("Hibernate"));
-    img = gtk_image_new_from_icon_name("gpm-hibernate",GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi),img);
-    gtk_widget_set_sensitive(mi,FALSE);
-    
-    if ( supply->priv->power_management & SYSTEM_CAN_HIBERNATE )
-    {
-	gtk_widget_set_sensitive (mi, TRUE);
-	g_signal_connect (G_OBJECT(mi), "activate",
-			  G_CALLBACK(xfpm_supply_hibernate_cb), supply);
-    }
-    gtk_widget_show(mi);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    // Suspend menu option
-    mi = gtk_image_menu_item_new_with_label(_("Suspend"));
-    img = gtk_image_new_from_icon_name("gpm-suspend",GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi),img);
-    
-    gtk_widget_set_sensitive(mi,FALSE);
-    if ( supply->priv->power_management & SYSTEM_CAN_SUSPEND )
-    {
-	gtk_widget_set_sensitive (mi,TRUE);
-	g_signal_connect(mi,"activate",
-			 G_CALLBACK(xfpm_supply_suspend_cb),
-			 supply);
-    }
-    gtk_widget_show(mi);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    // Separator
-    mi = gtk_separator_menu_item_new();
-    gtk_widget_show(mi);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    // Battery informations
-    mi = gtk_image_menu_item_new_with_label (_("Information"));
-    img = gtk_image_new_from_icon_name (_get_icon_name_from_battery_type(battery_type), GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), img);
-    
-    gtk_widget_set_sensitive(mi,FALSE);
-    gtk_widget_set_sensitive (mi,TRUE);
-    
-    g_signal_connect(mi,"activate",
-		     G_CALLBACK(xfpm_supply_show_battery_info),
-		     battery);
-		     
-    gtk_widget_show(mi);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    // Separator
-    mi = gtk_separator_menu_item_new();
-    gtk_widget_show(mi);
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP,NULL);
-    gtk_widget_set_sensitive(mi,TRUE);
-    gtk_widget_show(mi);
-    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_help),NULL);
-    
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
-    gtk_widget_set_sensitive(mi,TRUE);
-    gtk_widget_show(mi);
-    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about), _("Xfce Power Manager"));
-    
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-    
-    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,NULL);
-    gtk_widget_set_sensitive(mi,TRUE);
-    gtk_widget_show(mi);
-    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_preferences),NULL);
-    
-    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
-
-    // Popup the menu
-    gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
-		   gtk_status_icon_position_menu, 
-		   icon, button, activate_time);
-}
-
 static XfpmBattery *
 xfpm_supply_get_battery (XfpmSupply *supply, const gchar *udi)
 {
@@ -532,9 +295,6 @@
     g_signal_connect (G_OBJECT(battery), "battery-state-changed",
 		      G_CALLBACK(xfpm_supply_battery_state_changed_cb), supply);
 
-    g_signal_connect (G_OBJECT(battery), "popup-battery-menu",
-		      G_CALLBACK(xfpm_supply_popup_battery_menu_cb), supply);
-
 }
 
 static void
@@ -549,7 +309,7 @@
 	TRACE("Removing battery %s", udi);
 	g_object_unref(battery);
 	if (!g_hash_table_remove(supply->priv->hash, udi))
-		g_critical ("Unable to removed battery object from hash");
+		g_critical ("Unable to remove battery object from hash");
     }
 }
 

Modified: xfce4-power-manager/trunk/src/xfpm-tray-icon.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-tray-icon.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-tray-icon.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -33,9 +33,13 @@
 #include <libxfcegui4/libxfcegui4.h>
 
 #include "libxfpm/xfpm-common.h"
+#include "libxfpm/hal-iface.h"
+#include "libxfpm/xfpm-string.h"
 
 #include "xfpm-tray-icon.h"
-#include "xfpm-string.h"
+#include "xfpm-network-manager.h"
+#include "xfpm-xfconf.h"
+#include "xfpm-config.h"
 
 /* Init */
 static void xfpm_tray_icon_class_init (XfpmTrayIconClass *klass);
@@ -47,10 +51,20 @@
 
 struct XfpmTrayIconPrivate
 {
+    HalIface      *iface;
+    XfpmXfconf    *conf;
     GtkStatusIcon *icon;
-    GQuark icon_quark;
+    GQuark         icon_quark;
 };
 
+enum
+{
+    SHOW_INFORMATION,
+    LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
 G_DEFINE_TYPE(XfpmTrayIcon, xfpm_tray_icon, G_TYPE_OBJECT)
 
 static gboolean
@@ -71,15 +85,193 @@
 	g_object_unref (pix);
 	return TRUE;
     }
-    
     return FALSE;
 }
 
 static void
+xfpm_tray_info (GtkWidget *w, XfpmTrayIcon *tray)
+{
+    g_signal_emit (G_OBJECT (tray), signals[SHOW_INFORMATION], 0);
+}
+
+static gboolean
+xfpm_tray_icon_do_suspend (XfpmTrayIcon *tray)
+{
+    GError *error = NULL;
+
+    hal_iface_shutdown (tray->priv->iface, "Suspend", &error);
+
+    if (error)
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    return FALSE;
+}
+
+static gboolean
+xfpm_tray_icon_do_hibernate (XfpmTrayIcon *tray)
+{
+    GError *error = NULL;
+
+    hal_iface_shutdown (tray->priv->iface, "Hibernate", &error);
+
+    if (error)
+    {
+	g_warning ("%s", error->message);
+	g_error_free (error);
+    }
+    return FALSE;
+}
+
+static void
+xfpm_tray_icon_hibernate_cb (GtkWidget *w, XfpmTrayIcon *tray)
+{
+    gboolean lock_screen;
+    gboolean ret = 
+    xfce_confirm (_("Are you sure you want to hibernate the system?"),
+                  GTK_STOCK_YES,
+                  _("Hibernate"));
+    
+    if ( ret ) 
+    {
+	lock_screen = xfpm_xfconf_get_property_bool (tray->priv->conf, LOCK_SCREEN_ON_SLEEP);
+	if ( lock_screen )
+	    xfpm_lock_screen ();
+	g_timeout_add_seconds (4, (GSourceFunc) xfpm_tray_icon_do_hibernate, tray);
+	xfpm_send_message_to_network_manager ("sleep");
+    }
+}
+
+static void
+xfpm_tray_icon_suspend_cb (GtkWidget *w, XfpmTrayIcon *tray)
+{
+    gboolean lock_screen;
+    gboolean ret = 
+    xfce_confirm (_("Are you sure you want to suspend the system?"),
+                  GTK_STOCK_YES,
+                  _("Suspend"));
+    
+    if ( ret ) 
+    {
+	lock_screen = xfpm_xfconf_get_property_bool (tray->priv->conf, LOCK_SCREEN_ON_SLEEP);
+	if ( lock_screen )
+	    xfpm_lock_screen ();
+	g_timeout_add_seconds (4, (GSourceFunc) xfpm_tray_icon_do_suspend, tray);
+	xfpm_send_message_to_network_manager ("sleep");
+    }
+}
+
+static void
+xfpm_tray_icon_popup_menu_cb (GtkStatusIcon *icon, guint button, 
+			      guint activate_time, XfpmTrayIcon *tray)
+{
+    		  
+    GtkWidget *menu, *mi, *img;
+    menu = gtk_menu_new();
+    gboolean can_suspend, can_hibernate, caller;
+
+    g_object_get (G_OBJECT (tray->priv->iface),
+		  "caller-privilege", &caller,
+		  "can-suspend", &can_suspend,
+		  "can-hibernate", &can_hibernate,
+		  NULL);
+    
+    // Hibernate menu option
+    mi = gtk_image_menu_item_new_with_label(_("Hibernate"));
+    img = gtk_image_new_from_icon_name("gpm-hibernate",GTK_ICON_SIZE_MENU);
+    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi),img);
+    gtk_widget_set_sensitive(mi,FALSE);
+    
+    if ( caller && can_hibernate )
+    {
+	gtk_widget_set_sensitive (mi, TRUE);
+	g_signal_connect (G_OBJECT(mi), "activate",
+			  G_CALLBACK(xfpm_tray_icon_hibernate_cb), tray);
+    }
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    // Suspend menu option
+    mi = gtk_image_menu_item_new_with_label(_("Suspend"));
+    img = gtk_image_new_from_icon_name("gpm-suspend",GTK_ICON_SIZE_MENU);
+    gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi),img);
+    
+    gtk_widget_set_sensitive(mi,FALSE);
+    if ( caller && can_suspend )
+    {
+	gtk_widget_set_sensitive (mi,TRUE);
+	g_signal_connect (mi, "activate",
+			  G_CALLBACK (xfpm_tray_icon_suspend_cb), tray);
+    }
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    // Separator
+    mi = gtk_separator_menu_item_new();
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    // Battery informations
+    mi = gtk_image_menu_item_new_with_label (_("Information"));
+    img = gtk_image_new_from_stock (GTK_STOCK_INFO, GTK_ICON_SIZE_MENU);
+    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM(mi), img);
+    
+    gtk_widget_set_sensitive(mi,FALSE);
+    gtk_widget_set_sensitive (mi,TRUE);
+    
+    g_signal_connect(mi,"activate",
+		     G_CALLBACK(xfpm_tray_info), tray);
+		     
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    // Separator
+    mi = gtk_separator_menu_item_new();
+    gtk_widget_show(mi);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_HELP,NULL);
+    gtk_widget_set_sensitive(mi,TRUE);
+    gtk_widget_show(mi);
+    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_help),NULL);
+    
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT,NULL);
+    gtk_widget_set_sensitive(mi,TRUE);
+    gtk_widget_show(mi);
+    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_about), _("Xfce Power Manager"));
+    
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+    
+    mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_PREFERENCES,NULL);
+    gtk_widget_set_sensitive(mi,TRUE);
+    gtk_widget_show(mi);
+    g_signal_connect(mi,"activate",G_CALLBACK(xfpm_preferences),NULL);
+    
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu),mi);
+
+    // Popup the menu
+    gtk_menu_popup(GTK_MENU(menu), NULL, NULL,
+		   gtk_status_icon_position_menu, 
+		   icon, button, activate_time);
+}
+
+static void
 xfpm_tray_icon_class_init(XfpmTrayIconClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
 
+    signals[SHOW_INFORMATION] =
+            g_signal_new("show-information",
+                         XFPM_TYPE_TRAY_ICON,
+                         G_SIGNAL_RUN_LAST,
+                         G_STRUCT_OFFSET(XfpmTrayIconClass, show_info),
+                         NULL, NULL,
+                         g_cclosure_marshal_VOID__VOID,
+                         G_TYPE_NONE, 0, G_TYPE_NONE);
+
     object_class->finalize = xfpm_tray_icon_finalize;
 
     g_type_class_add_private(klass,sizeof(XfpmTrayIconPrivate));
@@ -90,23 +282,31 @@
 {
     tray->priv = XFPM_TRAY_ICON_GET_PRIVATE(tray);
     
-    tray->priv->icon = gtk_status_icon_new();
+    tray->priv->icon  = gtk_status_icon_new();
+    tray->priv->iface = hal_iface_new ();
+    tray->priv->conf  = xfpm_xfconf_new ();
     
     tray->priv->icon_quark = 0;
     
     g_signal_connect (tray->priv->icon, "size-changed",
 		      G_CALLBACK (xfpm_tray_icon_size_changed_cb), tray);
+		      
+    g_signal_connect (tray->priv->icon, "popup-menu",
+		      G_CALLBACK (xfpm_tray_icon_popup_menu_cb), tray);
 }
 
 static void
 xfpm_tray_icon_finalize(GObject *object)
 {
-    XfpmTrayIcon *icon;
+    XfpmTrayIcon *tray;
 
-    icon = XFPM_TRAY_ICON(object);
+    tray = XFPM_TRAY_ICON(object);
 
-    if ( icon->priv->icon )
-    	g_object_unref(icon->priv->icon);
+    g_object_unref (tray->priv->icon);
+	
+    g_object_unref (tray->priv->iface);
+    
+    g_object_unref (tray->priv->conf);
 
     G_OBJECT_CLASS(xfpm_tray_icon_parent_class)->finalize(object);
 }
@@ -115,7 +315,7 @@
 xfpm_tray_icon_new(void)
 {
     XfpmTrayIcon *tray = NULL;
-    tray = g_object_new(XFPM_TYPE_TRAY_ICON,NULL);
+    tray = g_object_new (XFPM_TYPE_TRAY_ICON, NULL);
     return tray;
 }
 

Modified: xfce4-power-manager/trunk/src/xfpm-tray-icon.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-tray-icon.h	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-tray-icon.h	2009-03-28 13:48:02 UTC (rev 7010)
@@ -42,6 +42,8 @@
 typedef struct
 {
     GObjectClass            parent_class;
+    
+    void                    (*show_info)	   (XfpmTrayIcon *icon);
 	
 } XfpmTrayIconClass;
 

Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.c	2009-03-27 22:29:16 UTC (rev 7009)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.c	2009-03-28 13:48:02 UTC (rev 7010)
@@ -92,6 +92,9 @@
 xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property,
 				 GValue *value, XfpmXfconf *conf)
 {
+    const gchar *str;
+    gint val;
+    
     if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
         return;
 
@@ -99,9 +102,10 @@
     
     if ( xfpm_strequal (property, SLEEP_SWITCH_CFG) )
     {
-        const gchar *str = g_value_get_string (value);
-	gint val = xfpm_shutdown_string_to_int (str);
-	if ( val == -1 || val == 3 )
+	str = g_value_get_string (value);
+ 	gint val = xfpm_shutdown_string_to_int (str); 
+
+	if ( G_UNLIKELY (val == -1 || val == 3) )
 	{
 	    g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
 	    conf->priv->sleep_button = XFPM_DO_NOTHING;
@@ -111,9 +115,9 @@
     }
     else if ( xfpm_strequal (property, LID_SWITCH_ON_AC_CFG) )
     {
-	const gchar *str = g_value_get_string (value);
-	gint val = xfpm_shutdown_string_to_int (str);
-	if ( val == -1 || val == 3 )
+	str = g_value_get_string (value);
+ 	gint val = xfpm_shutdown_string_to_int (str);
+	if ( G_UNLIKELY (val == -1 || val == 3) )
 	{
 	    g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_AC_CFG);
 	    conf->priv->lid_button_ac = XFPM_DO_NOTHING;
@@ -123,9 +127,9 @@
     }
     else if ( xfpm_strequal (property, LID_SWITCH_ON_BATTERY_CFG) )
     {
-	const gchar *str = g_value_get_string (value);
-	gint val = xfpm_shutdown_string_to_int (str);
-	if ( val == -1 || val == 3 )
+	str = g_value_get_string (value);
+ 	gint val = xfpm_shutdown_string_to_int (str); 
+	if ( G_UNLIKELY (val == -1 || val == 3) )
 	{
 	    g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_BATTERY_CFG);
 	    conf->priv->lid_button_battery = XFPM_DO_NOTHING;
@@ -140,37 +144,32 @@
 #ifdef HAVE_DPMS
     if ( xfpm_strequal (property, DPMS_ENABLED_CFG) )
     {
-	gboolean val = g_value_get_boolean (value);
-	conf->priv->dpms_enabled = val;
+	conf->priv->dpms_enabled = g_value_get_boolean (value);
 	g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, ON_AC_DPMS_SLEEP) )
     {
-	guint val = g_value_get_uint (value);
-	conf->priv->dpms_sleep_on_ac = MIN(3600, val * 60);
+	conf->priv->dpms_sleep_on_ac = MIN(3600, g_value_get_uint (value) * 60);
 	g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, ON_AC_DPMS_OFF) )
     {
-	guint val = g_value_get_uint (value);
-	conf->priv->dpms_off_on_ac = MIN(3600, val * 60);
+	conf->priv->dpms_off_on_ac = MIN(3600, g_value_get_uint (value) * 60);
 	g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, ON_BATT_DPMS_SLEEP) )
     {
-	guint val = g_value_get_uint (value);
-	conf->priv->dpms_sleep_on_battery = MIN(3600, val * 60);
+	conf->priv->dpms_sleep_on_battery = MIN(3600, g_value_get_uint (value) * 60);
 	g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, ON_BATT_DPMS_OFF) )
     {
-	guint val = g_value_get_uint (value);
-	conf->priv->dpms_off_on_battery = MIN (3600, val * 60);
+	conf->priv->dpms_off_on_battery = MIN (3600, g_value_get_uint (value) * 60);
 	g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, DPMS_SLEEP_MODE) )
     {
-	const gchar *str = g_value_get_string (value);
+	str = g_value_get_string (value);
 	if ( xfpm_strequal (str, "sleep" ) )
 	{
 	    conf->priv->sleep_dpms_mode = TRUE;
@@ -189,41 +188,36 @@
 #endif /* HAVE_DPMS */
     else if ( xfpm_strequal(property, POWER_SAVE_ON_BATTERY) )
     {
-	gboolean val = g_value_get_boolean (value);
-	conf->priv->power_save_on_battery = val;
+	conf->priv->power_save_on_battery = g_value_get_boolean (value);
 	g_signal_emit (G_OBJECT(conf), signals[POWER_SAVE_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, BRIGHTNESS_ON_AC ) )
     {
-	guint val = g_value_get_uint (value);
+	conf->priv->brightness_on_ac_timeout = g_value_get_uint (value);
 	
-	if ( val > 120 || val < 9)
+	if ( G_UNLIKELY (conf->priv->brightness_on_ac_timeout > 120 || conf->priv->brightness_on_ac_timeout < 9 ))
 	{
-	    g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_AC );
+	    g_warning ("Value %d for %s is out of range", conf->priv->brightness_on_ac_timeout, BRIGHTNESS_ON_AC );
+	    conf->priv->brightness_on_ac_timeout = 9;
 	}
-	else
-	{
-	    conf->priv->brightness_on_ac_timeout = val;
-	}
 	g_signal_emit (G_OBJECT(conf), signals[BRIGHTNESS_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, BRIGHTNESS_ON_BATTERY ) )
     {
-	guint val = g_value_get_uint (value);
+	conf->priv->brightness_on_battery_timeout = g_value_get_uint (value);
 	
-	if ( val > 120 || val < 9)
+	if ( G_UNLIKELY (conf->priv->brightness_on_battery_timeout > 120 || conf->priv->brightness_on_battery_timeout < 9 ))
 	{
-	    g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_BATTERY );
+	    g_warning ("Value %d for %s is out of range", conf->priv->brightness_on_battery_timeout, BRIGHTNESS_ON_BATTERY );
+	    conf->priv->brightness_on_battery_timeout = 9;
 	}
-	else
-	    conf->priv->brightness_on_battery_timeout = val;
 	g_signal_emit (G_OBJECT(conf), signals[POWER_SAVE_SETTINGS_CHANGED], 0);
     }
     else if ( xfpm_strequal (property, CRITICAL_BATT_ACTION_CFG) )
     {
-	const gchar *str = g_value_get_string (value);
-	gint val = xfpm_shutdown_string_to_int (str);
-	if ( val == -1 || val == 3 || val == 1)
+	str = g_value_get_string (value);
+	val = xfpm_shutdown_string_to_int (str);
+	if ( G_UNLIKELY (val == -1 || val == 3 || val == 1 ))
 	{
 	    g_warning ("Invalid value %s for property %s, using default\n", str, CRITICAL_BATT_ACTION_CFG);
 	    conf->priv->critical_action = XFPM_DO_NOTHING;
@@ -233,14 +227,13 @@
     }
     else if ( xfpm_strequal (property, SHOW_TRAY_ICON_CFG) )
     {
-	guint val = g_value_get_uint (value);
-	conf->priv->show_icon = val;
+	conf->priv->show_icon = g_value_get_uint (value);
 	g_signal_emit (G_OBJECT(conf), signals[TRAY_ICON_SETTINGS_CHANGED], 0 );
     }
     else if ( xfpm_strequal( property, CRITICAL_POWER_LEVEL) )
     {
-	guint val = g_value_get_uint (value);
-	if ( val > 20 )
+	val = g_value_get_uint (value);
+	if ( G_UNLIKELY (val > 20) )
 	{
 	    g_warning ("Value %d for property %s is out of range \n", val, CRITICAL_POWER_LEVEL);
 	    conf->priv->critical_level = 10;
@@ -259,7 +252,7 @@
     str = xfconf_channel_get_string (conf->priv->channel, SLEEP_SWITCH_CFG, "Nothing");
     val = xfpm_shutdown_string_to_int (str);
     
-    if ( val == -1 || val == 3)
+    if ( G_UNLIKELY (val == -1 || val == 3) )
     {
 	g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
 	conf->priv->sleep_button = XFPM_DO_NOTHING;
@@ -272,7 +265,7 @@
     str = xfconf_channel_get_string (conf->priv->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
     val = xfpm_shutdown_string_to_int (str);
 
-    if ( val == -1 || val == 3)
+    if ( G_UNLIKELY (val == -1 || val == 3) )
     {
 	g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_AC_CFG);
 	conf->priv->lid_button_ac = XFPM_DO_NOTHING;
@@ -285,7 +278,7 @@
     str = xfconf_channel_get_string (conf->priv->channel, LID_SWITCH_ON_BATTERY_CFG, "Nothing");
     val = xfpm_shutdown_string_to_int (str);
     
-    if ( val == -1 || val == 3)
+    if ( G_UNLIKELY (val == -1 || val == 3) )
     {
 	g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_BATTERY_CFG);
 	conf->priv->lid_button_battery = XFPM_DO_NOTHING;
@@ -336,7 +329,7 @@
     conf->priv->brightness_on_ac_timeout =
 	xfconf_channel_get_uint (conf->priv->channel, BRIGHTNESS_ON_AC, 9);
 	
-    if ( conf->priv->brightness_on_ac_timeout > 120 || conf->priv->brightness_on_ac_timeout < 9)
+    if ( G_UNLIKELY (conf->priv->brightness_on_ac_timeout > 120 || conf->priv->brightness_on_ac_timeout < 9 ))
     {
 	g_warning ("Value %d for %s is out of range", conf->priv->brightness_on_ac_timeout, BRIGHTNESS_ON_AC );
 	conf->priv->brightness_on_ac_timeout = 9;
@@ -345,7 +338,7 @@
     conf->priv->brightness_on_battery_timeout =
 	xfconf_channel_get_uint (conf->priv->channel, BRIGHTNESS_ON_BATTERY, 10);
 	
-    if ( conf->priv->brightness_on_battery_timeout > 120 || conf->priv->brightness_on_battery_timeout < 9)
+    if ( G_UNLIKELY (conf->priv->brightness_on_battery_timeout > 120 || conf->priv->brightness_on_battery_timeout < 9) )
     {
 	g_warning ("Value %d for %s is out of range", conf->priv->brightness_on_battery_timeout, BRIGHTNESS_ON_BATTERY );
 	conf->priv->brightness_on_battery_timeout = 10;
@@ -358,7 +351,7 @@
     
     conf->priv->show_icon =
     	xfconf_channel_get_uint (conf->priv->channel, SHOW_TRAY_ICON_CFG, SHOW_ICON_WHEN_BATTERY_PRESENT);
-    if ( conf->priv->show_icon < 0 || conf->priv->show_icon > 3 )
+    if ( G_UNLIKELY (conf->priv->show_icon < 0 || conf->priv->show_icon > 3) )
     {
 	g_warning ("Invalid value %d for property %s, using default\n", conf->priv->show_icon, SHOW_TRAY_ICON_CFG);
 	xfconf_channel_set_uint (conf->priv->channel, CRITICAL_BATT_ACTION_CFG, SHOW_ICON_WHEN_BATTERY_PRESENT);
@@ -367,7 +360,7 @@
     conf->priv->critical_level =
 	xfconf_channel_get_uint (conf->priv->channel, CRITICAL_POWER_LEVEL, 0);
 	
-    if ( conf->priv->critical_level <0 || conf->priv->critical_level > 20 )
+    if ( G_UNLIKELY (conf->priv->critical_level <0 || conf->priv->critical_level > 20) )
     {
 	g_warning ("Value %d for property %s is out of range \n", conf->priv->critical_level, CRITICAL_POWER_LEVEL);
 	conf->priv->critical_level = 10;




More information about the Goodies-commits mailing list