[Goodies-commits] r7706 - in xfce4-power-manager/trunk: . data/interfaces settings src

Ali Abdallah aliov at xfce.org
Thu Jul 9 15:18:49 CEST 2009


Author: aliov
Date: 2009-07-09 13:18:49 +0000 (Thu, 09 Jul 2009)
New Revision: 7706

Modified:
   xfce4-power-manager/trunk/ChangeLog
   xfce4-power-manager/trunk/configure.ac.in
   xfce4-power-manager/trunk/data/interfaces/xfpm-settings.ui
   xfce4-power-manager/trunk/settings/xfpm-settings.c
   xfce4-power-manager/trunk/src/xfpm-brightness-widget.c
   xfce4-power-manager/trunk/src/xfpm-xfconf.c
Log:
	* settings/xfpm-settings.c automatically switch inactivity sleep mode 
	to hibernate if suspend is not supported.
	* Allow 15 minutes as a minimum value for idle.
	* src/xfpm-dbus-monitor.c Fix regression for detecting when HAL restarts.
	* src/xfpm-brightness-widget.c automatically detect if the running 
	Notification daemon is notify-osd and use its brightness feedback interface for 
	displaying the brightness level.
	* configure.ac.in add 'r' as a prefix for version tag.

Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/ChangeLog	2009-07-09 13:18:49 UTC (rev 7706)
@@ -1,3 +1,13 @@
+2009-07-09: Ali aliov at xfce.org
+	* settings/xfpm-settings.c automatically switch inactivity sleep mode 
+	to hibernate if suspend is not supported.
+	* Allow 15 minutes as a minimum value for idle.
+	* src/xfpm-dbus-monitor.c Fix regression for detecting when HAL restarts.
+	* src/xfpm-brightness-widget.c automatically detect if the running 
+	Notification daemon is notify-osd and use its brightness feedback interface for 
+	displaying the brightness level.
+	* configure.ac.in add 'r' as a prefix for version tag.
+
 2009-07-06 10:00 Ali aliov at xfce.org
 	* 0.8.1.1 release.
 

Modified: xfce4-power-manager/trunk/configure.ac.in
===================================================================
--- xfce4-power-manager/trunk/configure.ac.in	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/configure.ac.in	2009-07-09 13:18:49 UTC (rev 7706)
@@ -3,7 +3,7 @@
 m4_define([xfpm_version_minor],  [8])
 m4_define([xfpm_version_micro],  [1.1])
 m4_define([xfpm_version_build],  [])
-m4_define([xfpm_version_tag],[@REVISION@])
+m4_define([xfpm_version_tag],[r at REVISION@])
 m4_define([xfpm_version], [xfpm_version_major().xfpm_version_minor().xfpm_version_micro()ifelse(xfpm_version_tag(), [svn], [xfpm_version_tag().xfpm_version_build()], [xfpm_version_tag()])])
 
 AC_INIT([xfce4-power-manager], [xfpm_version], [http://bugzilla.xfce.org/])

Modified: xfce4-power-manager/trunk/data/interfaces/xfpm-settings.ui
===================================================================
--- xfce4-power-manager/trunk/data/interfaces/xfpm-settings.ui	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/data/interfaces/xfpm-settings.ui	2009-07-09 13:18:49 UTC (rev 7706)
@@ -4,8 +4,8 @@
   <requires lib="xfce4" version="2360.6128"/>
   <!-- interface-naming-policy toplevel-contextual -->
   <object class="GtkAdjustment" id="adjustment1">
-    <property name="value">30</property>
-    <property name="lower">30</property>
+    <property name="value">14</property>
+    <property name="lower">14</property>
     <property name="upper">360</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>
@@ -29,8 +29,8 @@
     <property name="step_increment">1</property>
   </object>
   <object class="GtkAdjustment" id="adjustment5">
-    <property name="value">30</property>
-    <property name="lower">30</property>
+    <property name="value">15</property>
+    <property name="lower">14</property>
     <property name="upper">360</property>
     <property name="step_increment">1</property>
     <property name="page_increment">10</property>

Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c	2009-07-09 13:18:49 UTC (rev 7706)
@@ -546,7 +546,7 @@
 {
     gint h, min;
     
-    if ( (gint)value <= 30 )
+    if ( (gint)value <= 14 )
 	return g_strdup (_("Never"));
     else if ( (gint)value < 60 )
 	return g_strdup_printf ("%d %s", (gint)value, _("Minutes"));
@@ -746,7 +746,7 @@
 	gtk_widget_set_tooltip_text (inact, _("Hibernate and suspend operations not permitted"));
     }
     
-    val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_BATTERY_INACTIVITY_TIMEOUT, 30);
+    val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_BATTERY_INACTIVITY_TIMEOUT, 14);
     gtk_range_set_value (GTK_RANGE (inact), val);
     
     
@@ -922,7 +922,7 @@
 	gtk_widget_set_tooltip_text (inact, _("Hibernate and suspend operations not permitted"));
     }
     
-    val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_AC_INACTIVITY_TIMEOUT, 30);
+    val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX ON_AC_INACTIVITY_TIMEOUT, 14);
     gtk_range_set_value (GTK_RANGE (inact), val);
    
 #ifdef HAVE_DPMS
@@ -1286,6 +1286,7 @@
     
     if ( !can_suspend )
     {
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (inact_hibernate), TRUE);
 	gtk_widget_set_sensitive (inact_suspend, FALSE);
 	gtk_widget_set_tooltip_text (inact_suspend, _("Suspend operation not permitted"));
     }

Modified: xfce4-power-manager/trunk/src/xfpm-brightness-widget.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-brightness-widget.c	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/src/xfpm-brightness-widget.c	2009-07-09 13:18:49 UTC (rev 7706)
@@ -32,11 +32,14 @@
 #include <glib.h>
 #include <cairo.h>
 
+#include <libnotify/notify.h>
+
 #include <libxfce4util/libxfce4util.h>
 
 #include "libxfpm/xfpm-common.h"
 
 #include "xfpm-brightness-widget.h"
+#include "xfpm-dbus-monitor.h"
 
 static void xfpm_brightness_widget_finalize   (GObject *object);
 
@@ -47,17 +50,93 @@
 
 struct XfpmBrightnessWidgetPrivate
 {
-    GtkWidget *window;
-    GdkPixbuf *pix;
+    XfpmDBusMonitor     *monitor;
+    GtkWidget 		*window;
+    GdkPixbuf 		*pix;
     
-    guint      level;
-    guint      max_level;
-    gulong     timeout_id;
+    guint      		 level;
+    guint      		 max_level;
+    gulong     		 timeout_id;
+    
+    gboolean		 check_server_caps;
+    gboolean		 notify_osd;
+    NotifyNotification	*n;
+    
+    gulong		 sig_1;
 };
 
 G_DEFINE_TYPE (XfpmBrightnessWidget, xfpm_brightness_widget, G_TYPE_OBJECT)
 
+static void
+xfpm_brightness_widget_service_connection_changed_cb (XfpmDBusMonitor *monitor, gchar *service_name, 
+						      gboolean connected, gboolean on_session,
+						      XfpmBrightnessWidget *widget)
+{
+    if ( !g_strcmp0 (service_name, "org.freedesktop.Notifications")  && on_session )
+    {
+	if ( connected )
+	    widget->priv->check_server_caps = TRUE;
+	else
+	    widget->priv->notify_osd = FALSE;
+    }
+}
+
 static gboolean
+xfpm_brightness_widget_server_is_notify_osd (void)
+{
+    gboolean supports_sync = FALSE;
+    GList *caps = NULL;
+
+    caps = notify_get_server_caps ();
+    if (caps != NULL) 
+    {
+	if (g_list_find_custom (caps, "x-canonical-private-synchronous", (GCompareFunc) g_strcmp0) != NULL)
+	    supports_sync = TRUE;
+
+	    g_list_foreach(caps, (GFunc)g_free, NULL);
+	    g_list_free(caps);
+    }
+
+    return supports_sync;
+}
+
+static void
+xfpm_brightness_widget_display_notification (XfpmBrightnessWidget *widget)
+{
+    guint i;
+    gfloat value = 0;
+    
+    static const char *display_icon_name[] = 
+    {
+	"notification-display-brightness-off",
+	"notification-display-brightness-low",
+	"notification-display-brightness-medium",
+	"notification-display-brightness-high",
+	"notification-display-brightness-full",
+	NULL
+    };
+    
+    value = (gfloat) 100 * widget->priv->level / widget->priv->max_level;
+    
+    i = (gint)value / 25;
+    
+    notify_notification_set_hint_int32 (widget->priv->n,
+					"value",
+					 value);
+    
+    notify_notification_set_hint_string (widget->priv->n,
+					 "x-canonical-private-synchronous",
+					 "brightness");
+					 
+    notify_notification_update (widget->priv->n,
+			        " ",
+				"",
+				display_icon_name[i]);
+				
+    notify_notification_show (widget->priv->n, NULL);
+}
+
+static gboolean
 xfpm_brightness_widget_timeout (XfpmBrightnessWidget *widget)
 {
     gtk_widget_hide (widget->priv->window);
@@ -131,7 +210,16 @@
 xfpm_brightness_widget_init (XfpmBrightnessWidget *widget)
 {
     widget->priv = XFPM_BRIGHTNESS_WIDGET_GET_PRIVATE (widget);
+    widget->priv->monitor = xfpm_dbus_monitor_new ();
     
+    xfpm_dbus_monitor_add_service (widget->priv->monitor, 
+				   DBUS_BUS_SESSION,
+				   "org.freedesktop.Notifications");
+    
+    widget->priv->sig_1 = g_signal_connect (widget->priv->monitor, "service-connection-changed",
+					    G_CALLBACK (xfpm_brightness_widget_service_connection_changed_cb),
+					    widget);
+    
     widget->priv->window = gtk_window_new (GTK_WINDOW_POPUP);
 
     g_object_set (G_OBJECT (widget->priv->window), 
@@ -146,6 +234,8 @@
     widget->priv->level  = 0;
     widget->priv->max_level = 0;
     widget->priv->timeout_id = 0;
+    widget->priv->notify_osd = FALSE;
+    widget->priv->check_server_caps = TRUE;
 
     gtk_widget_set_size_request (GTK_WIDGET (widget->priv->window), BRIGHTNESS_POPUP_SIZE, BRIGHTNESS_POPUP_SIZE);
     
@@ -155,6 +245,11 @@
 
     g_signal_connect (widget->priv->window, "expose_event",
 		      G_CALLBACK (xfpm_brightness_widget_expose_event), widget);
+		      
+    widget->priv->n = notify_notification_new (" ",
+					       "",
+					       NULL,
+					       NULL);
 }
 
 static void
@@ -166,6 +261,12 @@
     
     if ( widget->priv->pix )
 	gdk_pixbuf_unref (widget->priv->pix);
+	
+    if ( g_signal_handler_is_connected (G_OBJECT (widget->priv->monitor), widget->priv->sig_1) )
+	g_signal_handler_disconnect (G_OBJECT (widget->priv->monitor), widget->priv->sig_1);
+	
+    g_object_unref (widget->priv->n);
+    g_object_unref (widget->priv->monitor);
 
     G_OBJECT_CLASS (xfpm_brightness_widget_parent_class)->finalize (object);
 }
@@ -192,11 +293,24 @@
     
     widget->priv->level = level;
 
-    gtk_window_present (GTK_WINDOW (widget->priv->window));
-    
-    if ( widget->priv->timeout_id != 0 )
-	g_source_remove (widget->priv->timeout_id);
+    if ( widget->priv->check_server_caps )
+    {
+	widget->priv->notify_osd = xfpm_brightness_widget_server_is_notify_osd ();
+	widget->priv->check_server_caps = FALSE;
+    }
 	
-    widget->priv->timeout_id = 
-	g_timeout_add (900, (GSourceFunc) xfpm_brightness_widget_timeout, widget);
+    if ( widget->priv->notify_osd )
+    {
+	xfpm_brightness_widget_display_notification (widget);
+    }
+    else
+    {
+	gtk_window_present (GTK_WINDOW (widget->priv->window));
+	
+	if ( widget->priv->timeout_id != 0 )
+	    g_source_remove (widget->priv->timeout_id);
+	    
+	widget->priv->timeout_id = 
+	    g_timeout_add (900, (GSourceFunc) xfpm_brightness_widget_timeout, widget);
+    }
 }

Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.c	2009-07-09 12:31:21 UTC (rev 7705)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.c	2009-07-09 13:18:49 UTC (rev 7706)
@@ -416,7 +416,7 @@
                                                         NULL, NULL,
 							0,
 							G_MAXUINT,
-							30,
+							14,
                                                         G_PARAM_READWRITE));
 
     /**
@@ -428,7 +428,7 @@
                                                         NULL, NULL,
 							0,
 							G_MAXUINT,
-							30,
+							14,
                                                         G_PARAM_READWRITE));
 
      /**




More information about the Goodies-commits mailing list