[Xfce4-commits] <xfce4-power-manager:master> Check dkp daemon version as the minimum allowed version is 011 since earlier versions of devkit-power uses dash-dash property names while newer version uses FirstLetterCaps.

Ali Abdallah noreply at xfce.org
Sat Jan 30 02:18:19 CET 2010


Updating branch refs/heads/master
         to 13c68f4148f2ffd91a3c562bc5588c42a3d3219d (commit)
       from 4ab79e4744caf4a5649407d44df025d1122451dd (commit)

commit 13c68f4148f2ffd91a3c562bc5588c42a3d3219d
Author: Ali Abdallah <ali at ali-xfce.org>
Date:   Fri Nov 6 20:58:02 2009 +0100

    Check dkp daemon version as the minimum allowed version is 011 since
    earlier versions of devkit-power uses dash-dash property names
    while newer version uses FirstLetterCaps.

 src/xfpm-dkp.c    |   77 +++++++++++++++++++++++++++++++++++++++++++++-------
 src/xfpm-xfconf.c |    7 +++-
 src/xfpm-xfconf.h |    3 ++
 3 files changed, 74 insertions(+), 13 deletions(-)

diff --git a/src/xfpm-dkp.c b/src/xfpm-dkp.c
index 69a6343..9397869 100644
--- a/src/xfpm-dkp.c
+++ b/src/xfpm-dkp.c
@@ -242,6 +242,67 @@ xfpm_dkp_check_lid (XfpmDkp *dkp, GHashTable *props)
     }
 }
 
+static void
+xfpm_dkp_check_daemon_version (XfpmDkp *dkp, GHashTable *props)
+{
+    GValue *value;
+    gint dkp_version;
+	
+    value = g_hash_table_lookup (props, "DaemonVersion");
+
+    if (value == NULL) 
+    {
+	g_warning ("No 'DaemonVersion' property");
+	/*
+	 * Version less than 011 uses dash-dash
+	 */
+	value = g_hash_table_lookup (props, "daemon-version");
+	
+	if (value == NULL) 
+	{
+	    g_warning ("No 'daemon-version' property");
+	    goto out;
+	}
+    }
+    
+    dkp->priv->daemon_version = g_strdup (g_value_get_string (value));
+    XFPM_DEBUG ("Dkp daemon version %s", dkp->priv->daemon_version);
+    dkp_version = strtol (dkp->priv->daemon_version, NULL, 10);
+    
+    if ( dkp_version < 15)
+    {
+	XfconfChannel *channel;
+	gboolean show_error;
+	
+	channel = xfpm_xfconf_get_channel (dkp->priv->conf);
+	
+	show_error = xfconf_channel_get_bool (channel, PROPERTIES_PREFIX "show-dkp-version-error", TRUE);
+	
+	XFPM_WARNING ("Dkp version %d is less than the required minimum version 011", dkp_version);
+	
+	
+	if ( show_error )
+	{
+	    GError *error = NULL;
+	    gchar *message;
+	    message = g_strdup_printf ("%s %s", 
+				   _("Xfce Power Manager requires version 011 of devicekit-power " 
+				   "to work properly while the version found is"), 
+				   dkp->priv->daemon_version);
+		
+	    g_set_error (&error, 0, 0, message);
+	    xfce_dialog_show_error (NULL, error, "%s", _("Devicekit-power version 011 or above not found"));
+	    xfconf_channel_set_bool (channel, PROPERTIES_PREFIX "show-dkp-version-error", FALSE);
+	    g_free (message);
+	    g_error_free (error);
+	}
+	
+	g_error (_("Devicekit-power version 011 or above not found"));
+    }
+out:
+    ;
+}
+
 /*
  * Get the properties on org.freedesktop.DeviceKit.Power
  * 
@@ -263,20 +324,12 @@ xfpm_dkp_get_properties (XfpmDkp *dkp)
     xfpm_dkp_check_pm (dkp, props);
     xfpm_dkp_check_lid (dkp, props);
     xfpm_dkp_check_power (dkp, props);
-    /*
+
     if ( dkp->priv->daemon_version == NULL )
     {
-	value = g_hash_table_lookup (props, "DaemonVersion");
-    
-	if (value == NULL) 
-	{
-	    g_warning ("No 'DaemonVersion' property");
-	    goto out;
-	}
-	//FIXME: Check daemon version
-	client->priv->daemon_version = g_strdup (g_value_get_string (value));
+	xfpm_dkp_check_daemon_version (dkp, props);
     }
-    */
+out:
     g_hash_table_destroy (props);
 }
 
@@ -1268,6 +1321,8 @@ xfpm_dkp_finalize (GObject *object)
 
     dkp = XFPM_DKP (object);
     
+    g_free (dkp->priv->daemon_version);
+    
     g_object_unref (dkp->priv->inhibit);
     g_object_unref (dkp->priv->notify);
     g_object_unref (dkp->priv->conf);
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index e1b8366..3ac3a46 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -29,8 +29,6 @@
 #include <glib.h>
 #include <libxfce4util/libxfce4util.h>
 
-#include <xfconf/xfconf.h>
-
 #include "xfpm-xfconf.h"
 #include "xfpm-config.h"
 #include "xfpm-enum-glib.h"
@@ -578,3 +576,8 @@ xfpm_xfconf_new (void)
     }
     return XFPM_XFCONF (xfpm_xfconf_object);
 }
+
+XfconfChannel *xfpm_xfconf_get_channel (XfpmXfconf *conf)
+{
+    return conf->priv->channel;
+}
diff --git a/src/xfpm-xfconf.h b/src/xfpm-xfconf.h
index 1fb4af1..15eccc5 100644
--- a/src/xfpm-xfconf.h
+++ b/src/xfpm-xfconf.h
@@ -22,6 +22,7 @@
 #define __XFPM_XFCONF_H
 
 #include <glib-object.h>
+#include <xfconf/xfconf.h>
 
 G_BEGIN_DECLS
 
@@ -48,6 +49,8 @@ GType        		  xfpm_xfconf_get_type           	(void) G_GNUC_CONST;
 
 XfpmXfconf       	 *xfpm_xfconf_new                 	(void);
 
+XfconfChannel 		 *xfpm_xfconf_get_channel		(XfpmXfconf *conf);
+
 G_END_DECLS
 
 #endif /* __XFPM_XFCONF_H */



More information about the Xfce4-commits mailing list