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

Ali Abdallah aliov at xfce.org
Fri Mar 13 16:31:40 CET 2009


Author: aliov
Date: 2009-03-13 15:31:39 +0000 (Fri, 13 Mar 2009)
New Revision: 6892

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/libxfpm/hal-battery.c
   xfce4-power-manager/trunk/libxfpm/hal-device.c
   xfce4-power-manager/trunk/libxfpm/hal-device.h
   xfce4-power-manager/trunk/libxfpm/hal-manager.c
   xfce4-power-manager/trunk/libxfpm/hal-manager.h
   xfce4-power-manager/trunk/libxfpm/hal-power.c
   xfce4-power-manager/trunk/src/xfpm-adapter.c
   xfce4-power-manager/trunk/src/xfpm-lid-hal.c
   xfce4-power-manager/trunk/src/xfpm-supply.c
Log:
Move common code to hal-device+ fix issue with the apater of the previous revision

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/ChangeLog	2009-03-13 15:31:39 UTC (rev 6892)
@@ -1,4 +1,7 @@
 
+2009-03-13 16:31 Ali aliov at xfce.org 
+	 * : Move common code to hal-device+ fix issue with the apater of the previous revision
+
 2009-03-13 14:01 Ali aliov at xfce.org 
 	 * : Dropping the libhal dependency, just doing simple proxy calls to get informations from hald
 

Modified: xfce4-power-manager/trunk/libxfpm/hal-battery.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-battery.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-battery.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -381,15 +381,16 @@
 static HalDeviceType
 hal_battery_get_device_type (HalBattery *battery)
 {
-    gchar *udi = NULL;
+    const gchar *udi;
     gchar *type = NULL;
+    
     HalDeviceType type_enum = HAL_DEVICE_TYPE_UNKNOWN;
     
-    g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
+    udi = hal_device_get_udi (HAL_DEVICE(battery));
     
     g_return_val_if_fail (udi != NULL, HAL_DEVICE_TYPE_UNKNOWN);
     
-    type = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.type");
+    type = hal_device_get_property_string (HAL_DEVICE(battery), "battery.type");
     
     if ( type )
     {
@@ -397,49 +398,44 @@
 	g_free(type);
     }
  
-    g_free (udi);
+    //g_free (udi);
     return type_enum;
 }
 
 static void
 hal_battery_refresh_all (HalBattery *battery)
 {
-    gchar *udi = NULL;
     
-    g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
-    
-    g_return_if_fail (udi != NULL);
-    
     battery->priv->is_present = 
-    	hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.present");
+    	hal_device_get_property_bool(HAL_DEVICE(battery), "battery.present");
 	
     battery->priv->is_charging = 
-    	hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.rechargeable.is_charging");
+    	hal_device_get_property_bool(HAL_DEVICE(battery), "battery.rechargeable.is_charging");
     
     battery->priv->is_discharging = 
-    	hal_manager_get_device_property_bool(battery->priv->manager, udi, "battery.rechargeable.is_discharging");
+    	hal_device_get_property_bool(HAL_DEVICE(battery), "battery.rechargeable.is_discharging");
     
     battery->priv->current_charge = 
-    	hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.current");
+    	hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.current");
 	
     battery->priv->last_full = 
-    	hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.last_full");
+    	hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.last_full");
     
-    if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.remaining_time") )
+    if ( hal_device_has_key (HAL_DEVICE(battery), "battery.remaining_time") )
     	battery->priv->time = 
-    		hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.remaining_time");
+    		hal_device_get_property_int(HAL_DEVICE(battery), "battery.remaining_time");
     else
     	battery->priv->time = 0;
     
     //FIXME: calculate the percentage if it is not found on HAL
-    if ( hal_manager_device_has_key(battery->priv->manager, udi, "battery.charge_level.percentage") )
+    if ( hal_device_has_key(HAL_DEVICE(battery), "battery.charge_level.percentage") )
      	battery->priv->percentage = 
-    		hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.charge_level.percentage");
+    		hal_device_get_property_int(HAL_DEVICE(battery), "battery.charge_level.percentage");
     else battery->priv->percentage = 0;
     
-    if ( hal_manager_device_has_key(battery->priv->manager, udi, "battery.reporting.last_full") )
+    if ( hal_device_has_key(HAL_DEVICE(battery), "battery.reporting.last_full") )
      	battery->priv->reporting_last_full = 
-    		hal_manager_get_device_property_int(battery->priv->manager, udi, "battery.reporting.last_full");
+    		hal_device_get_property_int(HAL_DEVICE(battery), "battery.reporting.last_full");
 		
 }
 
@@ -484,14 +480,9 @@
 static void
 hal_battery_get_battery_info (HalBattery *battery)
 {
-    gchar *udi = NULL;
-    g_object_get (G_OBJECT(battery), "udi", &udi, NULL);
-    
-    g_return_if_fail (udi != NULL);
-    
-    if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.technology") )
+    if ( hal_device_has_key (HAL_DEVICE(battery), "battery.technology") )
     {
-	gchar *tech = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.technology");
+	gchar *tech = hal_device_get_property_string (HAL_DEVICE(battery), "battery.technology");
 	if ( tech )
 	{
 	    battery->priv->technology = g_strdup (_translate_technology (tech));
@@ -499,9 +490,9 @@
 	}
     }
     
-    if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.vendor") )
+    if ( hal_device_has_key (HAL_DEVICE(battery), "battery.vendor") )
     {
-	gchar *vendor = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.vendor");
+	gchar *vendor = hal_device_get_property_string (HAL_DEVICE(battery), "battery.vendor");
 	if ( vendor )
 	{
 	    battery->priv->vendor = g_strdup ( vendor);
@@ -509,9 +500,9 @@
 	}
     }
     
-    if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.model") )
+    if ( hal_device_has_key (HAL_DEVICE(battery), "battery.model") )
     {
-	gchar *model = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.model");
+	gchar *model = hal_device_get_property_string (HAL_DEVICE(battery), "battery.model");
 	if ( model )
 	{
 	    battery->priv->model = g_strdup (model);
@@ -519,13 +510,12 @@
 	}
     }
     
-    battery->priv->reporting_design = hal_manager_get_device_property_int (battery->priv->manager, 
-									   udi, 
+    battery->priv->reporting_design = hal_device_get_property_int (HAL_DEVICE(battery), 
 							                   "battery.reporting.design");
 							      
-    if ( hal_manager_device_has_key (battery->priv->manager, udi, "battery.reporting.unit") )
+    if ( hal_device_has_key (HAL_DEVICE(battery), "battery.reporting.unit") )
     {
-	gchar *unit = hal_manager_get_device_property_string (battery->priv->manager, udi, "battery.reporting.unit");
+	gchar *unit = hal_device_get_property_string (HAL_DEVICE(battery), "battery.reporting.unit");
 	
 	if ( unit )
 	{
@@ -568,14 +558,16 @@
 {
     HalBattery *battery = NULL;
     
-    battery = g_object_new (HAL_TYPE_BATTERY, "udi", udi, NULL);
+    battery = g_object_new (HAL_TYPE_BATTERY, NULL);
+    hal_device_set_udi (HAL_DEVICE(battery), udi);
     
     battery->priv->type = hal_battery_get_device_type (battery);
    
     hal_battery_refresh_all (battery);
-    hal_battery_get_battery_info    (battery);
+    hal_battery_get_battery_info (battery);
 	
     hal_device_watch (HAL_DEVICE(battery));
+    
     g_signal_connect (G_OBJECT(battery), "device-changed",
 		      G_CALLBACK(hal_battery_property_modified_cb), battery);
     return battery;

Modified: xfce4-power-manager/trunk/libxfpm/hal-device.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -36,16 +36,6 @@
 static void hal_device_init       (HalDevice *device);
 static void hal_device_finalize   (GObject *object);
 
-static void hal_device_set_property(GObject *object,
-				    guint prop_id,
-				    const GValue *value,
-				    GParamSpec *pspec);
-
-static void hal_device_get_property(GObject *object,
-				    guint prop_id,
-				    GValue *value,
-				    GParamSpec *pspec);
-
 #define HAL_DEVICE_GET_PRIVATE(o) \
 (G_TYPE_INSTANCE_GET_PRIVATE((o), HAL_TYPE_DEVICE, HalDevicePrivate))
 
@@ -60,12 +50,6 @@
 
 enum
 {
-    PROP_0,
-    PROP_UDI
-};
-
-enum
-{
     DEVICE_CHANGED,
     LAST_SIGNAL
 };
@@ -75,12 +59,10 @@
 G_DEFINE_TYPE(HalDevice, hal_device, G_TYPE_OBJECT)
 
 static void
-hal_device_class_init(HalDeviceClass *klass)
+hal_device_class_init (HalDeviceClass *klass)
 {
     GObjectClass *object_class = G_OBJECT_CLASS(klass);
     
-    object_class->set_property = hal_device_set_property;
-    object_class->get_property = hal_device_get_property;
     
     signals[DEVICE_CHANGED] =
 	    g_signal_new("device-changed",
@@ -93,57 +75,11 @@
 			 G_TYPE_STRING, G_TYPE_STRING,
 			 G_TYPE_BOOLEAN, G_TYPE_BOOLEAN);
 			 
-    g_object_class_install_property(object_class,
-				    PROP_UDI,
-				    g_param_spec_string("udi",
-							NULL, NULL,
-						        NULL,
-						        G_PARAM_CONSTRUCT_ONLY | 
-							G_PARAM_WRITABLE |
-							G_PARAM_READABLE));
     object_class->finalize = hal_device_finalize;
 
-    g_type_class_add_private(klass,sizeof(HalDevicePrivate));
+    g_type_class_add_private (klass, sizeof(HalDevicePrivate));
 }
 
-static void hal_device_set_property(GObject *object,
-				    guint prop_id,
-				    const GValue *value,
-				    GParamSpec *pspec)
-{
-    HalDevice *device = (HalDevice *) object;
-    
-    switch (prop_id )
-    {
-	case PROP_UDI:
-	    device->priv->udi = g_strdup(g_value_get_string (value) );
-	    break;
-	default:
-	    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-	    break;
-    }
-    
-}
-
-static void hal_device_get_property(GObject *object,
-				    guint prop_id,
-				    GValue *value,
-				    GParamSpec *pspec)
-{
-    HalDevice *device = (HalDevice *) object;
-    
-    switch (prop_id )
-    {
-	case PROP_UDI:
-	    g_value_set_string (value, device->priv->udi);
-	    break;
-	default:
-	    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-	    break;
-    }
-    
-}
-
 static void
 hal_device_property_modified_cb (DBusGProxy *proxy, 
 				 gint type, 
@@ -176,10 +112,6 @@
 hal_device_add_watch (HalDevice *device)
 {
     GType array_gtype, gtype;
-    device->priv->proxy = dbus_g_proxy_new_for_name (device->priv->bus,
-						     "org.freedesktop.Hal",
-						     device->priv->udi,
-						     "org.freedesktop.Hal.Device");
 
     g_return_if_fail ( DBUS_IS_G_PROXY (device->priv->proxy) );
 
@@ -209,15 +141,24 @@
 }
 
 static void
-hal_device_init(HalDevice *device)
+hal_device_init (HalDevice *device)
 {
     device->priv = HAL_DEVICE_GET_PRIVATE(device);
     
-    device->priv->bus    	= NULL;
     device->priv->proxy  	= NULL;
     device->priv->udi           = NULL;
     device->priv->watch_added 	= FALSE;
     
+    GError *error = NULL;
+    
+    device->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+    
+    if ( error )
+    {
+	g_critical ("Unable to get bus system: %s\n", error->message);
+	g_error_free (error);
+    }
+   
 }
 
 static void
@@ -244,30 +185,161 @@
 }
 
 HalDevice *
-hal_device_new (const gchar *udi)
+hal_device_new (void)
 {
     HalDevice *device = NULL;
-    device = g_object_new (HAL_TYPE_DEVICE, "udi", udi, NULL);
+    device = g_object_new (HAL_TYPE_DEVICE, NULL);
+    
     return device;
 }
 
+void hal_device_set_udi (HalDevice *device, const gchar *udi)
+{
+    g_return_if_fail (HAL_IS_DEVICE (device));
+    
+    if ( device->priv->udi )
+    {
+	g_free (device->priv->udi);
+	device->priv->udi = NULL;
+	g_object_unref (device->priv->proxy);
+    }
+	
+    device->priv->udi = g_strdup (udi);
+    
+    device->priv->proxy = dbus_g_proxy_new_for_name (device->priv->bus,
+						     "org.freedesktop.Hal",
+						     device->priv->udi,
+						     "org.freedesktop.Hal.Device");
+}
+
+const gchar *hal_device_get_udi (HalDevice *device)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);
+    
+    return device->priv->udi;
+}
+
 gboolean
 hal_device_watch (HalDevice *device)
 {
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+    hal_device_add_watch(device);
+
+    return device->priv->watch_added;
+}
+									 
+gboolean hal_device_get_property_bool (HalDevice *device, const gchar *property)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+    
+    gboolean value = FALSE;
     GError *error = NULL;
+    
+    dbus_g_proxy_call (device->priv->proxy, "GetPropertyBoolean", &error,
+		       G_TYPE_STRING, property,
+		       G_TYPE_INVALID,
+		       G_TYPE_BOOLEAN, &value,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_critical ("Error getting bool property on device %s: %s\n", device->priv->udi, error->message);
+	g_error_free (error);
+    }
+    
+    return value;
+}
+									 
+gint hal_device_get_property_int (HalDevice *device, const gchar *property)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), 0);
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), 0);
+    
+    gint value = 0;
+    GError *error = NULL;
+    
+    dbus_g_proxy_call (device->priv->proxy, "GetPropertyInteger", &error,
+		       G_TYPE_STRING, property,
+		       G_TYPE_INVALID,
+		       G_TYPE_INT, &value,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_critical ("Error getting integer property on device %s: %s\n", device->priv->udi, error->message);
+	g_error_free (error);
+    }
+    
+    return value;
+}
+									 
+gchar *hal_device_get_property_string  (HalDevice *device, const gchar *property)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), NULL);
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), NULL);
+    
+    gchar *value = NULL;
+    GError *error = NULL;
+    
+    dbus_g_proxy_call (device->priv->proxy, "GetPropertyString", &error,
+		       G_TYPE_STRING, property,
+		       G_TYPE_INVALID,
+		       G_TYPE_STRING, &value,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_critical ("Error getting string property on device %s: %s\n", device->priv->udi, error->message);
+	g_error_free (error);
+    }
+    
+    return value;
+}
 
-    device->priv->bus = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error);
+gboolean hal_device_has_key (HalDevice *device, const gchar *key)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
     
+    gboolean value = FALSE;
+    GError *error = NULL;
+    
+    dbus_g_proxy_call (device->priv->proxy, "PropertyExists", &error,
+		       G_TYPE_STRING, key,
+		       G_TYPE_INVALID,
+		       G_TYPE_BOOLEAN, &value,
+		       G_TYPE_INVALID);
+		       
     if ( error )
     {
-	g_critical ("Unable to get bus system: %s\n", error->message);
+	g_critical ("Error getting property exists on device %s: %s\n", device->priv->udi, error->message);
 	g_error_free (error);
-	goto out;
     }
+    
+    return value;
+}
 
-    hal_device_add_watch(device);
-
-out:
-    return device->priv->watch_added;
-    ;
+									 
+gboolean hal_device_has_capability (HalDevice *device, const gchar *capability)
+{
+    g_return_val_if_fail (HAL_IS_DEVICE(device), FALSE);
+    g_return_val_if_fail (HAL_IS_DEVICE(device->priv->udi != NULL), FALSE);
+    
+    gboolean value = FALSE;
+    GError *error = NULL;
+    
+    dbus_g_proxy_call (device->priv->proxy, "QueryCapability", &error,
+		       G_TYPE_STRING, capability,
+		       G_TYPE_INVALID,
+		       G_TYPE_BOOLEAN, &value,
+		       G_TYPE_INVALID);
+		       
+    if ( error )
+    {
+	g_critical ("Error getting querying capability on device %s: %s\n", device->priv->udi, error->message);
+	g_error_free (error);
+    }
+    
+    return value;
 }

Modified: xfce4-power-manager/trunk/libxfpm/hal-device.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-device.h	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-device.h	2009-03-13 15:31:39 UTC (rev 6892)
@@ -40,20 +40,42 @@
 
 typedef struct
 {
-    GObjectClass parent_class;
+    GObjectClass 	  parent_class;
     
-    void		(*device_changed)   (HalDevice *device,
-					     const gchar *udi,
-					     const gchar *key,
-					     gboolean is_added,
-					     gboolean is_removed);
+    void		  (*device_changed)               (HalDevice *device,
+							   const gchar *udi,
+							   const gchar *key,
+							   gboolean is_added,
+							   gboolean is_removed);
     
 } HalDeviceClass;
 
-GType        	 hal_device_get_type        (void) G_GNUC_CONST;
-HalDevice       *hal_device_new             (const gchar *udi);
-gboolean         hal_device_watch           (HalDevice *device);
+GType        	 	  hal_device_get_type             (void) G_GNUC_CONST;
 
+HalDevice       	 *hal_device_new                  (void);
+
+void                      hal_device_set_udi              (HalDevice *device,
+							   const gchar *udi);
+
+const gchar 		 *hal_device_get_udi 		  (HalDevice *device);
+
+gboolean         	  hal_device_watch                (HalDevice *device);
+
+gboolean		  hal_device_get_property_bool    (HalDevice *device,
+							   const gchar *property);
+									 
+gint			  hal_device_get_property_int     (HalDevice *device,
+							   const gchar *property);
+									 
+gchar			 *hal_device_get_property_string  (HalDevice *device,
+							   const gchar *property);
+
+gboolean                  hal_device_has_key		  (HalDevice *device,
+							   const gchar *key);
+									 
+gboolean                  hal_device_has_capability       (HalDevice *device, 
+							   const gchar *capability);
+
 G_END_DECLS
 
 #endif /* __HAL_DEVICE_H */

Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -197,189 +197,7 @@
     
     return udi;
 }
-									 
-gboolean hal_manager_get_device_property_bool (HalManager *manager, const gchar *udi, const gchar *property)
-{
-    g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
-    g_return_val_if_fail (manager->priv->connected, FALSE);
-    
-    gboolean value = FALSE;
-    GError *error = NULL;
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
-						   "org.freedesktop.Hal",
-						   udi,
-						   "org.freedesktop.Hal.Device");
-    
-    if ( !proxy )
-    {
-	g_critical ("Unable to get proxy on interface %s\n", udi);
-	return value;
-    }
-    
-    dbus_g_proxy_call (proxy, "GetPropertyBoolean", &error,
-		       G_TYPE_STRING, property,
-		       G_TYPE_INVALID,
-		       G_TYPE_BOOLEAN, &value,
-		       G_TYPE_INVALID);
-		       
-    g_object_unref (proxy);
-    
-    if ( error )
-    {
-	g_critical ("Error getting bool property on device %s: %s\n", udi, error->message);
-	g_error_free (error);
-    }
-    
-    return value;
-}
-									 
-gint hal_manager_get_device_property_int (HalManager *manager, const gchar *udi, const gchar *property)
-{
-    g_return_val_if_fail (HAL_IS_MANAGER(manager), 0);
-    g_return_val_if_fail (manager->priv->connected, 0);
-    
-    gint value = 0;
-    GError *error = NULL;
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
-						   "org.freedesktop.Hal",
-						   udi,
-						   "org.freedesktop.Hal.Device");
-    
-    if ( !proxy )
-    {
-	g_critical ("Unable to get proxy on interface %s\n", udi);
-	return value;
-    }
-    
-    dbus_g_proxy_call (proxy, "GetPropertyInteger", &error,
-		       G_TYPE_STRING, property,
-		       G_TYPE_INVALID,
-		       G_TYPE_INT, &value,
-		       G_TYPE_INVALID);
-		       
-    g_object_unref (proxy);
-    
-    if ( error )
-    {
-	g_critical ("Error getting integer property on device %s: %s\n", udi, error->message);
-	g_error_free (error);
-    }
-    
-    return value;
-    
-    return 0;
-}
-									 
-gchar *hal_manager_get_device_property_string  (HalManager *manager, const gchar *udi, const gchar *property)
-{
-    g_return_val_if_fail (HAL_IS_MANAGER(manager), NULL);
-    g_return_val_if_fail (manager->priv->connected, NULL);
-    
-    gchar *value = NULL;
-    GError *error = NULL;
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
-						   "org.freedesktop.Hal",
-						   udi,
-						   "org.freedesktop.Hal.Device");
-    
-    if ( !proxy )
-    {
-	g_critical ("Unable to get proxy on interface %s\n", udi);
-	return value;
-    }
-    
-    dbus_g_proxy_call (proxy, "GetPropertyString", &error,
-		       G_TYPE_STRING, property,
-		       G_TYPE_INVALID,
-		       G_TYPE_STRING, &value,
-		       G_TYPE_INVALID);
-		       
-    g_object_unref (proxy);
-    
-    if ( error )
-    {
-	g_critical ("Error getting string property on device %s: %s\n", udi, error->message);
-	g_error_free (error);
-    }
-    
-    return value;
-    
-    return NULL;
-}
 
-gboolean hal_manager_device_has_key (HalManager *manager, const gchar *udi, const gchar *key)
-{
-    g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
-    g_return_val_if_fail (manager->priv->connected, FALSE);
-    
-    gboolean value = FALSE;
-    GError *error = NULL;
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
-						   "org.freedesktop.Hal",
-						   udi,
-						   "org.freedesktop.Hal.Device");
-    
-    if ( !proxy )
-    {
-	g_critical ("Unable to get proxy on interface %s\n", udi);
-	return value;
-    }
-    
-    dbus_g_proxy_call (proxy, "PropertyExists", &error,
-		       G_TYPE_STRING, key,
-		       G_TYPE_INVALID,
-		       G_TYPE_BOOLEAN, &value,
-		       G_TYPE_INVALID);
-		       
-    g_object_unref (proxy);
-    
-    if ( error )
-    {
-	g_critical ("Error getting property exists on device %s: %s\n", udi, error->message);
-	g_error_free (error);
-    }
-    
-    return value;
-    
-    return value;
-}
-									 
-gboolean hal_manager_device_has_capability (HalManager *manager, const gchar *udi, const gchar *capability)
-{
-    g_return_val_if_fail (HAL_IS_MANAGER(manager), FALSE);
-    g_return_val_if_fail (manager->priv->connected, FALSE);
-    
-    gboolean value = FALSE;
-    GError *error = NULL;
-    
-    DBusGProxy *proxy = dbus_g_proxy_new_for_name (manager->priv->bus,
-						   "org.freedesktop.Hal",
-						   udi,
-						   "org.freedesktop.Hal.Device");
-    
-    if ( !proxy )
-    {
-	g_critical ("Unable to get proxy on interface %s\n", udi);
-	return value;
-    }
-    
-    dbus_g_proxy_call (proxy, "QueryCapability", &error,
-		       G_TYPE_STRING, capability,
-		       G_TYPE_INVALID,
-		       G_TYPE_BOOLEAN, &value,
-		       G_TYPE_INVALID);
-		       
-    g_object_unref (proxy);
-    
-    if ( error )
-    {
-	g_critical ("Error getting querying capability on device %s: %s\n", udi, error->message);
-	g_error_free (error);
-    }
-    
-    return value;
-}
-
 void hal_manager_free_string_array (gchar **array)
 {
     gint i;

Modified: xfce4-power-manager/trunk/libxfpm/hal-manager.h
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-manager.h	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-manager.h	2009-03-13 15:31:39 UTC (rev 6892)
@@ -54,27 +54,7 @@
 
 gchar 			      **hal_manager_find_device_by_capability 	(HalManager *manager,
 									 const gchar *capability);
-									 
-gboolean			hal_manager_get_device_property_bool    (HalManager *manager,
-									 const gchar *udi,
-									 const gchar *property);
-									 
-gint				hal_manager_get_device_property_int     (HalManager *manager,
-									 const gchar *udi,
-									 const gchar *property);
-									 
-gchar			       *hal_manager_get_device_property_string  (HalManager *manager,
-									 const gchar *udi,
-									 const gchar *property);
-
-gboolean                        hal_manager_device_has_key		(HalManager *manager,
-									 const gchar *udi,
-									 const gchar *key);
-									 
-gboolean                        hal_manager_device_has_capability	(HalManager *manager,
-									 const gchar *udi,
-									 const gchar *capability);
-									 
+						 
 void                            hal_manager_free_string_array           (gchar **array);
 
 G_END_DECLS

Modified: xfce4-power-manager/trunk/libxfpm/hal-power.c
===================================================================
--- xfce4-power-manager/trunk/libxfpm/hal-power.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/libxfpm/hal-power.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -66,13 +66,13 @@
  * Sanity check of the keys present of a battery device
  */
 static gboolean
-hal_power_check_battery (HalPower *power, const gchar *udi)
+hal_power_check_battery (HalPower *power, HalDevice *device)
 {
-    if ( hal_manager_device_has_key(power->priv->manager, udi, "battery.present") &&
-	 hal_manager_device_has_key(power->priv->manager, udi, "battery.rechargeable.is_charging") &&
-         hal_manager_device_has_key(power->priv->manager, udi, "battery.rechargeable.is_discharging") &&
-         hal_manager_device_has_key(power->priv->manager, udi, "battery.charge_level.current") &&
-	 hal_manager_device_has_key(power->priv->manager, udi, "battery.charge_level.last_full") )
+    if ( hal_device_has_key(device, "battery.present") &&
+	 hal_device_has_key(device, "battery.rechargeable.is_charging") &&
+         hal_device_has_key(device, "battery.rechargeable.is_discharging") &&
+         hal_device_has_key(device, "battery.charge_level.current") &&
+	 hal_device_has_key(device, "battery.charge_level.last_full") )
 		 return TRUE;
     
     return FALSE;
@@ -121,19 +121,24 @@
 static void
 hal_power_device_added_cb (HalManager *manager, const gchar *udi, HalPower *power)
 {
-    if ( hal_manager_device_has_capability (manager, udi, "battery") )
+    HalDevice *device = hal_device_new ();
+    hal_device_set_udi (device, udi);
+    
+    if ( hal_device_has_capability (device, "battery") )
     {
 	HalBattery *battery  = hal_power_add_battery (power, udi);
         g_signal_emit (G_OBJECT(power), signals[BATTERY_ADDED], 0, battery);
     }
-    else if ( hal_manager_device_has_capability (manager, udi, "ac_adapter") )
+    else if ( hal_device_has_capability (device, "ac_adapter") )
     {
 	if ( !power->priv->adapter_found )
 	{
-	    power->priv->adapter = hal_device_new (udi);
+	    power->priv->adapter = hal_device_new ();
+	    hal_device_set_udi (power->priv->adapter, udi);
 	    g_signal_emit (G_OBJECT(power), signals[ADAPTER_ADDED], 0, power->priv->adapter);
 	}
     }
+    g_object_unref (device);
 }
 
 static void
@@ -208,6 +213,7 @@
 static void
 hal_power_get_batteries_internal (HalPower *power)
 {
+    HalDevice *device = hal_device_new ();
     gchar **batteries = NULL;
     gint i;
     
@@ -218,7 +224,9 @@
     
     for ( i = 0; batteries[i]; i++ )
     {
-	if (!hal_power_check_battery(power, batteries[i]))
+	hal_device_set_udi (device, batteries[i]);
+	
+	if (!hal_power_check_battery(power, device))
 		continue;
 		
     	hal_power_add_battery (power, batteries[i]);
@@ -227,7 +235,8 @@
     hal_manager_free_string_array (batteries);
     
 out:
-    	;
+
+    g_object_unref (device);
     
 }
 
@@ -242,7 +251,9 @@
     if ( !adapter ) 
     	goto out;
 
-    power->priv->adapter = hal_device_new (adapter[0]);
+    power->priv->adapter = hal_device_new ();
+    hal_device_set_udi (power->priv->adapter, adapter[0]);
+    hal_device_watch (power->priv->adapter);
     power->priv->adapter_found = TRUE;
     
     hal_manager_free_string_array (adapter);

Modified: xfce4-power-manager/trunk/src/xfpm-adapter.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-adapter.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-adapter.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -57,6 +57,7 @@
 {
     XfpmTrayIcon *icon;
     HalDevice    *device;
+    gboolean      present;
 };
 
 enum
@@ -118,16 +119,27 @@
 }
 
 static void
-xfpm_adapter_device_changed_cb (HalDevice *device, XfpmAdapter *adapter)
+xfpm_adapter_changed (XfpmAdapter *adapter)
 {
-    gboolean is_present =
-    	xfpm_adapter_get_presence (adapter);
-    
-    TRACE("Adapter changed is_present =%s", xfpm_bool_to_string(is_present));
-    
-    g_signal_emit (G_OBJECT(adapter), signals[ADAPTER_CHANGED], 0, is_present);
+    adapter->priv->present = hal_device_get_property_bool (adapter->priv->device, "ac_adapter.present");
+    TRACE("Adapter changed is_present =%s", xfpm_bool_to_string(adapter->priv->present));
+    g_signal_emit (G_OBJECT(adapter), signals[ADAPTER_CHANGED], 0, adapter->priv->present);
 }
 
+static void
+xfpm_adapter_device_changed_cb (HalDevice *device,
+				const gchar *udi,
+				const gchar *key, 
+				gboolean is_removed,
+				gboolean is_added,
+				XfpmAdapter *adapter)
+{
+    if ( xfpm_strequal (key, "ac_adapter.present") )
+    {
+	xfpm_adapter_changed (adapter);
+    }
+}
+
 XfpmAdapter *
 xfpm_adapter_new (const HalDevice *device)
 {
@@ -140,16 +152,11 @@
 		      G_CALLBACK (xfpm_adapter_device_changed_cb),
 		      adapter);
     
+    xfpm_adapter_changed (adapter);
+    
     return adapter;
 }
 
-gboolean xfpm_adapter_get_presence (XfpmAdapter *adapter)
-{
-    gboolean is_present;
-    g_object_get (G_OBJECT(adapter->priv->device), "is-present", &is_present, NULL);
-    return is_present;
-}
-
 void xfpm_adapter_set_visible (XfpmAdapter *adapter, gboolean visible)
 {
     g_return_if_fail ( XFPM_IS_ADAPTER (adapter));

Modified: xfce4-power-manager/trunk/src/xfpm-lid-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-lid-hal.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-lid-hal.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -116,6 +116,7 @@
     G_OBJECT_CLASS(xfpm_lid_hal_parent_class)->finalize(object);
 }
 
+
 static void
 xfpm_lid_hal_device_changed_cb(HalDevice *device,
 			       const gchar *udi,
@@ -129,7 +130,7 @@
 	
     TRACE("Property modified key=%s  key=%s\n", key, udi);
     
-    gboolean pressed = hal_manager_get_device_property_bool (lid->priv->manager, udi, key);
+    gboolean pressed = hal_device_get_property_bool (lid->priv->device, key);
     
     if ( pressed )
     {
@@ -139,13 +140,16 @@
     
 }
 
+//FIXME: Review
 static gboolean
 xfpm_lid_hal_setup (XfpmLidHal *lid)
 {
+    HalDevice *device;
+    gchar **udi = NULL;
+    
     lid->priv->manager = hal_manager_new ();
+    device = hal_device_new ();
     
-    gchar **udi = NULL;
-    
     udi = hal_manager_find_device_by_capability (lid->priv->manager, "button");
     
     if ( !udi )
@@ -155,19 +159,24 @@
     
     for ( i = 0; udi[i]; i++ )
     {
-	if ( hal_manager_device_has_key (lid->priv->manager, udi[i], "button.type" ) &&
-	     hal_manager_device_has_key (lid->priv->manager, udi[i], "button.has_state" ) )
+	hal_device_set_udi (device, udi[i]);
+	if ( hal_device_has_key (device,  "button.type" ) &&
+	     hal_device_has_key (device,  "button.has_state" ) )
     	{
+	    
 	    gchar *button_type =
-	    	hal_manager_get_device_property_string (lid->priv->manager, udi[i], "button.type");
+	    	hal_device_get_property_string (device, "button.type");
 		
 	    if ( !button_type )
+	    {
 	    	continue;
+	    }
 		
 	    if ( xfpm_strequal (button_type, "lid") )
 	    {
 	    	lid->priv->hw_found = TRUE;
-		lid->priv->device = hal_device_new (udi[i]);
+		
+		lid->priv->device = device;
 		g_signal_connect (lid->priv->device, "device-changed", 
 				  G_CALLBACK(xfpm_lid_hal_device_changed_cb), lid);
 		if ( !hal_device_watch (lid->priv->device) )
@@ -179,8 +188,12 @@
 	    }
 	}
     }
+
+    if ( !lid->priv->hw_found )
+	g_object_unref (device);
         
     hal_manager_free_string_array (udi);
+    
     return TRUE;
 }
 

Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c	2009-03-13 13:01:30 UTC (rev 6891)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c	2009-03-13 15:31:39 UTC (rev 6892)
@@ -565,7 +565,9 @@
     	g_critical ("Callback from the adapter object but no adapter found in the system\n");
 	
     supply->priv->adapter_present = present;
+    
     xfpm_supply_set_adapter_presence (supply);
+    
     g_signal_emit (G_OBJECT(supply), signals[ON_BATTERY], 0, !supply->priv->adapter_present);
     
 }
@@ -581,14 +583,18 @@
 static void
 xfpm_supply_add_battery (XfpmSupply *supply, const HalBattery *device)
 {
-    gchar *udi = NULL;
+    const gchar *udi;
     
-    g_object_get(G_OBJECT(device), "udi", &udi, NULL);
+    udi = hal_device_get_udi (HAL_DEVICE(device));
 
     TRACE("New battery found %s", udi);
 
     XfpmBattery *battery = xfpm_battery_new (device);
+    
     xfpm_battery_set_show_icon (battery, supply->priv->show_icon);
+    
+    g_print("Adapter %d\n", supply->priv->adapter_present );
+    
     xfpm_battery_set_adapter_presence (battery, supply->priv->adapter_present);
     xfpm_battery_set_critical_level (battery, supply->priv->critical_level);
     g_hash_table_insert (supply->priv->hash, g_strdup(udi), battery);
@@ -599,15 +605,12 @@
     g_signal_connect (G_OBJECT(battery), "popup-battery-menu",
 		      G_CALLBACK(xfpm_supply_popup_battery_menu_cb), supply);
 
-    if (udi)
-    	g_free (udi);
 }
 
 static void
 xfpm_supply_remove_battery (XfpmSupply *supply,  const HalBattery *device)
 {
-    gchar *udi;
-    g_object_get(G_OBJECT(device), "udi", &udi, NULL);
+    const gchar *udi = hal_device_get_udi (HAL_DEVICE(device));
     
     XfpmBattery *battery = xfpm_supply_get_battery(supply, udi);
 	
@@ -619,8 +622,6 @@
 		g_critical ("Unable to removed battery object from hash\n");
     }
     
-    if (udi)
-    	g_free (udi);
 }
 
 static void
@@ -686,7 +687,7 @@
 static void
 xfpm_supply_add_adapter (XfpmSupply *supply, const HalDevice *device)
 {
-    supply->priv->adapter_found = TRUE;
+    supply->priv->adapter_present = TRUE;
 
     supply->priv->adapter = xfpm_adapter_new (device);
 	g_signal_connect (supply->priv->adapter, "adapter-changed", 
@@ -704,10 +705,9 @@
 	if ( device )
 	{
 #ifdef DEBUG
-	    gchar *udi;
-	    g_object_get (G_OBJECT(device), "udi", &udi, NULL);
+	    const gchar *udi;
+	    udi = hal_device_get_udi (HAL_DEVICE(device));
 	    TRACE ("Adapter found in the system with udi=%s\n", udi);
-	    g_free (udi);
 #endif
 	    xfpm_supply_add_adapter (supply, device);
 	}




More information about the Goodies-commits mailing list