[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