[Goodies-commits] r7007 - in xfce4-power-manager/trunk: . src
Ali Abdallah
aliov at xfce.org
Fri Mar 27 15:37:30 CET 2009
Author: aliov
Date: 2009-03-27 14:37:29 +0000 (Fri, 27 Mar 2009)
New Revision: 7007
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/src/xfpm-battery.c
xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
xfce4-power-manager/trunk/src/xfpm-cpu.c
xfce4-power-manager/trunk/src/xfpm-dpms.c
xfce4-power-manager/trunk/src/xfpm-dpms.h
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-supply.c
xfce4-power-manager/trunk/src/xfpm-xfconf.c
xfce4-power-manager/trunk/src/xfpm-xfconf.h
Log:
Move the configuration loading to xfpm-xfconf
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-27 14:37:29 UTC (rev 7007)
@@ -1,4 +1,7 @@
+2009-03-27 15:37 Ali aliov at xfce.org
+ * : Move the configuration loading to xfpm-xfconf
+
2009-03-25 13:03 Ali aliov at xfce.org
* : Added xfpm-errors quark for the common errors
Modified: xfce4-power-manager/trunk/src/xfpm-battery.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-battery.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -64,10 +64,8 @@
gchar *icon_prefix;
gboolean adapter_present;
-
- XfpmShowIcon show_icon;
XfpmBatteryState state;
- guint critical_level;
+
};
enum
@@ -101,17 +99,20 @@
static void
xfpm_battery_refresh_visible_icon (XfpmBattery *battery)
{
+ XfpmShowIcon show_icon;
gboolean visible = TRUE;
- if ( battery->priv->show_icon == SHOW_ICON_ALWAYS )
+ show_icon = xfpm_xfconf_get_property_enum (battery->priv->conf, SHOW_TRAY_ICON_CFG);
+
+ if ( show_icon == SHOW_ICON_ALWAYS )
visible = TRUE;
- else if ( battery->priv->show_icon == SHOW_ICON_WHEN_BATTERY_PRESENT )
+ else if ( show_icon == SHOW_ICON_WHEN_BATTERY_PRESENT )
{
if ( battery->priv->state == BATTERY_NOT_PRESENT )
visible = FALSE;
else visible = TRUE;
}
- else if ( battery->priv->show_icon == SHOW_ICON_WHEN_BATTERY_CHARGING_DISCHARGING )
+ else if ( show_icon == SHOW_ICON_WHEN_BATTERY_CHARGING_DISCHARGING )
{
if ( battery->priv->state == BATTERY_FULLY_CHARGED )
visible = FALSE;
@@ -254,6 +255,8 @@
guint percentage, guint time)
{
gchar *tip;
+ guint critical_level = xfpm_xfconf_get_property_int (battery->priv->conf, CRITICAL_POWER_LEVEL );
+
if ( !is_present )
{
tip = g_strdup_printf ("%s %s", _get_battery_name(battery->priv->type), _("is not present"));
@@ -265,7 +268,7 @@
XfpmBatteryState state = battery->priv->state;
const gchar *str = xfpm_battery_get_battery_state (&state, is_charging, is_discharging,
last_full, current_charge, percentage,
- battery->priv->critical_level);
+ critical_level);
tip = g_strdup_printf("%i%% %s %s", percentage, _get_battery_name(battery->priv->type), str);
//FIXME: Time for misc batteries
xfpm_tray_icon_set_tooltip (battery->priv->icon, tip);
@@ -281,6 +284,8 @@
{
gchar *tip;
const gchar *str;
+ guint critical_level = xfpm_xfconf_get_property_int (battery->priv->conf, CRITICAL_POWER_LEVEL );
+
XfpmBatteryState state = battery->priv->state;
if ( !is_present )
@@ -290,7 +295,7 @@
}
str = xfpm_battery_get_battery_state (&state, is_charging, is_discharging,
- last_full, current_charge, percentage, battery->priv->critical_level);
+ last_full, current_charge, percentage, critical_level);
if ( time != 0 && time <= 28800 /* 8 hours */ &&
state != BATTERY_FULLY_CHARGED && state != BATTERY_NOT_FULLY_CHARGED )
@@ -432,53 +437,12 @@
}
static void
-xfpm_battery_property_changed_cb (XfconfChannel *channel, gchar *property,
- GValue *value, XfpmBattery *battery)
+xfpm_battery_tray_icon_settings_changed (XfpmXfconf *conf, XfpmBattery *battery)
{
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- if ( xfpm_strequal (property, SHOW_TRAY_ICON_CFG) )
- {
- guint val = g_value_get_uint (value);
- battery->priv->show_icon = val;
- xfpm_battery_refresh_visible_icon (battery);
- }
- else if ( xfpm_strequal( property, CRITICAL_POWER_LEVEL) )
- {
- guint val = g_value_get_uint (value);
- if ( val > 20 )
- {
- g_warning ("Value %d for property %s is out of range \n", val, CRITICAL_POWER_LEVEL);
- battery->priv->critical_level = 10;
- }
- else
- battery->priv->critical_level = val;
- }
+ xfpm_battery_refresh_visible_icon (battery);
}
static void
-xfpm_battery_load_configuration (XfpmBattery *battery)
-{
- battery->priv->show_icon =
- xfconf_channel_get_uint (battery->priv->conf->channel, SHOW_TRAY_ICON_CFG, SHOW_ICON_WHEN_BATTERY_PRESENT);
- if ( battery->priv->show_icon < 0 || battery->priv->show_icon > 3 )
- {
- g_warning ("Invalid value %d for property %s, using default\n", battery->priv->show_icon, SHOW_TRAY_ICON_CFG);
- xfconf_channel_set_uint (battery->priv->conf->channel, CRITICAL_BATT_ACTION_CFG, SHOW_ICON_WHEN_BATTERY_PRESENT);
- }
-
- battery->priv->critical_level =
- xfconf_channel_get_uint (battery->priv->conf->channel, CRITICAL_POWER_LEVEL, 0);
-
- if ( battery->priv->critical_level <0 || battery->priv->critical_level > 20 )
- {
- g_warning ("Value %d for property %s is out of range \n", battery->priv->critical_level, CRITICAL_POWER_LEVEL);
- battery->priv->critical_level = 10;
- }
-}
-
-static void
xfpm_battery_class_init(XfpmBatteryClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -516,7 +480,6 @@
battery->priv = XFPM_BATTERY_GET_PRIVATE(battery);
battery->priv->icon = xfpm_tray_icon_new ();
- battery->priv->show_icon = SHOW_ICON_WHEN_BATTERY_PRESENT;
battery->priv->adapter = xfpm_adapter_new ();
battery->priv->conf = xfpm_xfconf_new ();
@@ -524,11 +487,6 @@
g_signal_connect (battery->priv->adapter ,"adapter-changed",
G_CALLBACK(xfpm_battery_adapter_changed_cb), battery);
-
- g_signal_connect (battery->priv->conf->channel ,"property-changed",
- G_CALLBACK(xfpm_battery_property_changed_cb), battery);
-
- xfpm_battery_load_configuration (battery);
}
static void
@@ -571,19 +529,13 @@
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);
return battery;
}
-void xfpm_battery_set_show_icon (XfpmBattery *battery, XfpmShowIcon show_icon)
-{
- g_return_if_fail (XFPM_IS_BATTERY(battery));
-
- battery->priv->show_icon = show_icon;
-
- xfpm_battery_refresh_visible_icon (battery);
-}
-
const HalBattery*
xfpm_battery_get_device (XfpmBattery *battery)
{
@@ -629,10 +581,3 @@
gtk_widget_show_all (info);
}
-
-void xfpm_battery_set_critical_level (XfpmBattery *battery, guint8 critical_level)
-{
- g_return_if_fail (XFPM_IS_BATTERY(battery));
-
- battery->priv->critical_level = critical_level;
-}
Modified: xfce4-power-manager/trunk/src/xfpm-brightness-hal.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-brightness-hal.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-brightness-hal.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -81,69 +81,17 @@
gboolean on_battery;
- guint on_battery_timeout;
- guint on_ac_timeout;
};
enum
{
- TIMEOUT_INPUT,
+ TIMEOUT_INPUT = 0,
TIMEOUT_ON_AC_ID,
TIMEOUT_ON_BATTERY_ID
};
G_DEFINE_TYPE(XfpmBrightnessHal, xfpm_brightness_hal, G_TYPE_OBJECT)
-static void
-xfpm_brightness_hal_class_init(XfpmBrightnessHalClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
- object_class->finalize = xfpm_brightness_hal_finalize;
-
- g_type_class_add_private(klass,sizeof(XfpmBrightnessHalPrivate));
-}
-
-static void
-xfpm_brightness_hal_init(XfpmBrightnessHal *brg)
-{
- brg->priv = XFPM_BRIGHTNESS_HAL_GET_PRIVATE(brg);
-
- brg->priv->proxy = NULL;
- brg->priv->idle = NULL;
- brg->priv->hw_found = FALSE;
- brg->priv->on_battery = FALSE;
- brg->priv->block = FALSE;
- brg->priv->brightness_in_hw = FALSE;
- brg->priv->max_level = 0;
- brg->priv->inhibited = FALSE;
-}
-
-static void
-xfpm_brightness_hal_finalize (GObject *object)
-{
- XfpmBrightnessHal *brg;
-
- brg = XFPM_BRIGHTNESS_HAL(object);
-
- if ( brg->priv->proxy )
- g_object_unref (brg->priv->proxy);
-
- if ( brg->priv->idle )
- g_object_unref (brg->priv->idle);
-
- if ( brg->priv->conf )
- g_object_unref (brg->priv->conf);
-
- if (brg->priv->adapter)
- g_object_unref (brg->priv->adapter);
-
- if ( brg->priv->inhibit )
- g_object_unref (brg->priv->inhibit);
-
- G_OBJECT_CLASS(xfpm_brightness_hal_parent_class)->finalize(object);
-}
-
static gint
xfpm_brightness_hal_get_level (XfpmBrightnessHal *brg)
{
@@ -307,7 +255,7 @@
{
gint level;
- if (brg->priv->block )
+ if (brg->priv->block)
return;
if ( brg->priv->inhibited )
@@ -323,69 +271,56 @@
}
static void
-xfpm_brightness_hal_alarm_timeout_cb (XfpmIdle *idle, guint id, XfpmBrightnessHal *brg)
+xfpm_brightness_timeout_on_ac (XfpmBrightnessHal *brg)
{
gint level;
- if ( brg->priv->block )
- brg->priv->block = FALSE;
+ if ( brg->priv->on_battery )
+ return;
level = xfpm_brightness_hal_get_level(brg);
- TRACE("Alarm timeout id=%d\n", id);
- if ( brg->priv->inhibited )
- return;
-
- if ( id == TIMEOUT_ON_AC_ID && brg->priv->on_ac_timeout != 9)
+ if ( level != 0 )
{
- if ( brg->priv->on_battery )
- return;
-
- if ( level != 0 )
- {
- TRACE ("Reducing brightness, on AC power\n");
- xfpm_brightness_hal_set_level(brg, 0);
- }
+ TRACE ("Reducing brightness, on AC power\n");
+ xfpm_brightness_hal_set_level(brg, 0);
}
- else if ( id == TIMEOUT_ON_BATTERY_ID && brg->priv->on_battery_timeout != 9)
- {
- if ( !brg->priv->on_battery )
+}
+
+static void
+xfpm_brightness_timeout_on_battery (XfpmBrightnessHal *brg)
+{
+ gint level;
+
+ if ( !brg->priv->on_battery )
return;
-
- if ( level != 0 )
- {
- xfpm_brightness_hal_set_level(brg, 0);
- TRACE ("Reducing brightness, on battery power\n");
- }
+
+ level = xfpm_brightness_hal_get_level(brg);
+
+ if ( level != 0 )
+ {
+ xfpm_brightness_hal_set_level(brg, 0);
+ TRACE ("Reducing brightness, on battery power\n");
}
}
static void
-xfpm_brightness_hal_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmBrightnessHal *brg)
+xfpm_brightness_hal_alarm_timeout_cb (XfpmIdle *idle, guint id, XfpmBrightnessHal *brg)
{
- brg->priv->on_battery = !present;
+ if ( brg->priv->block )
+ brg->priv->block = FALSE;
+
+ if ( brg->priv->inhibited )
+ return;
+
+ id == TIMEOUT_ON_AC_ID ? xfpm_brightness_timeout_on_ac (brg) :
+ xfpm_brightness_timeout_on_battery (brg);
}
static void
-xfpm_brightness_hal_load_config (XfpmBrightnessHal *brg)
+xfpm_brightness_hal_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmBrightnessHal *brg)
{
- brg->priv->on_ac_timeout =
- xfconf_channel_get_uint (brg->priv->conf->channel, BRIGHTNESS_ON_AC, 9);
-
- if ( brg->priv->on_ac_timeout > 120 || brg->priv->on_ac_timeout < 9)
- {
- g_warning ("Value %d for %s is out of range", brg->priv->on_ac_timeout, BRIGHTNESS_ON_AC );
- brg->priv->on_ac_timeout = 9;
- }
-
- brg->priv->on_battery_timeout =
- xfconf_channel_get_uint (brg->priv->conf->channel, BRIGHTNESS_ON_BATTERY, 10);
-
- if ( brg->priv->on_battery_timeout > 120 || brg->priv->on_battery_timeout < 9)
- {
- g_warning ("Value %d for %s is out of range", brg->priv->on_battery_timeout, BRIGHTNESS_ON_BATTERY );
- brg->priv->on_battery_timeout = 10;
- }
+ brg->priv->on_battery = !present;
}
static void
@@ -396,61 +331,61 @@
}
static void
+xfpm_brightness_get_user_timeouts (XfpmBrightnessHal *brg, guint16 *on_ac, guint16 *on_battery)
+{
+ *on_ac = xfpm_xfconf_get_property_int (brg->priv->conf, BRIGHTNESS_ON_AC);
+ *on_battery = xfpm_xfconf_get_property_int (brg->priv->conf, BRIGHTNESS_ON_BATTERY);
+}
+
+static void
xfpm_brightness_hal_set_timeouts (XfpmBrightnessHal *brg )
{
- xfpm_idle_set_alarm (brg->priv->idle, TIMEOUT_ON_AC_ID, brg->priv->on_ac_timeout * 1000);
+ guint16 on_ac, on_battery;
- xfpm_idle_set_alarm (brg->priv->idle, TIMEOUT_ON_BATTERY_ID, brg->priv->on_battery_timeout * 1000);
+ xfpm_brightness_get_user_timeouts (brg, &on_ac, &on_battery);
+ if ( on_ac == 9 )
+ on_ac = 0;
+ if ( on_battery == 9 )
+ on_battery = 0;
+
+ xfpm_idle_set_alarm (brg->priv->idle, TIMEOUT_ON_AC_ID, on_ac * 1000);
+
+ xfpm_idle_set_alarm (brg->priv->idle, TIMEOUT_ON_BATTERY_ID, on_battery * 1000);
+
xfpm_idle_alarm_reset_all (brg->priv->idle);
}
static void
-xfpm_brightness_hal_property_changed_cb (XfconfChannel *channel, gchar *property,
- GValue *value, XfpmBrightnessHal *brg)
+xfpm_brightness_hal_settings_changed_cb (XfpmXfconf *conf, XfpmBrightnessHal *brg)
{
- gboolean set = FALSE;
-
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- if ( xfpm_strequal (property, BRIGHTNESS_ON_AC ) )
- {
- guint val = g_value_get_uint (value);
-
- if ( val > 120 || val < 9)
- {
- g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_AC );
- }
- else
- {
- brg->priv->on_ac_timeout = val;
- }
- set = TRUE;
- }
- else if ( xfpm_strequal (property, BRIGHTNESS_ON_BATTERY ) )
- {
- guint val = g_value_get_uint (value);
-
- if ( val > 120 || val < 9)
- {
- g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_BATTERY );
- }
- else
- brg->priv->on_battery_timeout = val;
- set = TRUE;
- }
-
- if ( set )
- xfpm_brightness_hal_set_timeouts (brg);
+ xfpm_brightness_hal_set_timeouts (brg);
}
-XfpmBrightnessHal *
-xfpm_brightness_hal_new ()
+static void
+xfpm_brightness_hal_class_init(XfpmBrightnessHalClass *klass)
{
- XfpmBrightnessHal *brg = NULL;
- brg = g_object_new (XFPM_TYPE_BRIGHTNESS_HAL, NULL);
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+
+ object_class->finalize = xfpm_brightness_hal_finalize;
+
+ g_type_class_add_private(klass,sizeof(XfpmBrightnessHalPrivate));
+}
+
+static void
+xfpm_brightness_hal_init(XfpmBrightnessHal *brg)
+{
+ brg->priv = XFPM_BRIGHTNESS_HAL_GET_PRIVATE(brg);
+ brg->priv->proxy = NULL;
+ brg->priv->idle = NULL;
+ brg->priv->hw_found = FALSE;
+ brg->priv->on_battery = FALSE;
+ brg->priv->block = FALSE;
+ brg->priv->brightness_in_hw = FALSE;
+ brg->priv->max_level = 0;
+ brg->priv->inhibited = FALSE;
+
xfpm_brightness_hal_setup (brg);
if ( brg->priv->hw_found || brg->priv->max_level != 0 )
@@ -478,10 +413,8 @@
g_signal_connect (brg->priv->idle, "reset",
G_CALLBACK(xfpm_brightness_hal_reset_cb), brg);
- xfpm_brightness_hal_load_config (brg);
-
- g_signal_connect (brg->priv->conf->channel, "property-changed",
- G_CALLBACK(xfpm_brightness_hal_property_changed_cb), brg);
+ g_signal_connect (brg->priv->conf, "brightness-settings-changed",
+ G_CALLBACK(xfpm_brightness_hal_settings_changed_cb), brg);
xfpm_brightness_hal_set_timeouts (brg);
}
@@ -489,7 +422,38 @@
{
TRACE("No lcd brightness control found in the system");
}
+}
+
+static void
+xfpm_brightness_hal_finalize (GObject *object)
+{
+ XfpmBrightnessHal *brg;
+
+ brg = XFPM_BRIGHTNESS_HAL(object);
+ if ( brg->priv->proxy )
+ g_object_unref (brg->priv->proxy);
+
+ if ( brg->priv->idle )
+ g_object_unref (brg->priv->idle);
+
+ if ( brg->priv->conf )
+ g_object_unref (brg->priv->conf);
+
+ if (brg->priv->adapter)
+ g_object_unref (brg->priv->adapter);
+
+ if ( brg->priv->inhibit )
+ g_object_unref (brg->priv->inhibit);
+
+ G_OBJECT_CLASS(xfpm_brightness_hal_parent_class)->finalize(object);
+}
+
+XfpmBrightnessHal *
+xfpm_brightness_hal_new ()
+{
+ XfpmBrightnessHal *brg = NULL;
+ brg = g_object_new (XFPM_TYPE_BRIGHTNESS_HAL, NULL);
return brg;
}
Modified: xfce4-power-manager/trunk/src/xfpm-cpu.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-cpu.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-cpu.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -62,8 +62,6 @@
HalIface *iface;
gboolean on_battery;
- gboolean power_save;
-
guint8 cpu_governors;
};
@@ -73,6 +71,7 @@
xfpm_cpu_set_governor (XfpmCpu *cpu, const gchar *governor)
{
GError *error = NULL;
+ TRACE("Settings cpu governor to %s", governor);
if (! hal_iface_set_cpu_governor(cpu->priv->iface, governor, &error))
{
@@ -93,79 +92,45 @@
return CPU_UNKNOWN;
}
-static void
-xfpm_cpu_update_governor (XfpmCpu *cpu)
+static XfpmCpuGovernor
+xfpm_cpu_get_current_governor (XfpmCpu *cpu)
{
- GError *error = NULL;
- gboolean cpu_freq_iface;
+ gchar *current_governor = NULL;
+ XfpmCpuGovernor governor_enum;
- g_object_get (G_OBJECT(cpu->priv->iface),
- "cpu-freq-iface", &cpu_freq_iface,
- NULL);
-
- if ( !cpu_freq_iface)
- return;
+ current_governor = hal_iface_get_cpu_current_governor (cpu->priv->iface, NULL);
- gchar *current_governor = hal_iface_get_cpu_current_governor (cpu->priv->iface, &error);
-
- if ( error )
- {
- g_warning ("Get cpu governor failed: %s.", error->message);
- g_error_free (error);
- return;
- }
-
if ( !current_governor )
- return;
-
- XfpmCpuGovernor current = _governor_name_to_enum (current_governor);
-
- if ( !cpu->priv->power_save || ( !cpu->priv->on_battery && cpu->priv->power_save) )
{
- if ( cpu->priv->cpu_governors & CPU_ONDEMAND )
- xfpm_cpu_set_governor (cpu, "ondemand");
- else if ( cpu->priv->cpu_governors & CPU_PERFORMANCE )
- xfpm_cpu_set_governor (cpu, "performance");
- else
- g_critical ("No conveniant cpu governor found\n");
- return;
+ g_warning ("Unable to get current governor");
+ return CPU_UNKNOWN;
}
-
- if ( cpu->priv->on_battery && cpu->priv->power_save )
- {
- if ( current != CPU_POWERSAVE )
- {
- TRACE ("Settings cpu governor to powersave");
- xfpm_cpu_set_governor (cpu, "powersave");
- }
- }
+
+ governor_enum = _governor_name_to_enum (current_governor);
+
g_free (current_governor);
+ return governor_enum;
}
-static gboolean
+/*
+ * Get the available CPU governors on the system
+ */
+static void
xfpm_cpu_get_available_governors (XfpmCpu *cpu)
{
- GError *error = NULL;
- gchar **governors =
- hal_iface_get_cpu_governors (cpu->priv->iface, &error);
+ int i;
+ gchar **governors = NULL;
+ governors = hal_iface_get_cpu_governors (cpu->priv->iface, NULL);
- if ( error )
+ if ( !governors || !governors[0])
{
- g_critical ("Error getting available cpu governors");
- return FALSE;
- }
-
- if ( !governors )
- {
g_critical ("Unable to get CPU governors\n");
- return FALSE;
+ return;
}
- int i =0 ;
for ( i = 0; governors[i]; i++)
{
TRACE("found CPU governor %s", governors[i]);
-
if (xfpm_strequal(governors[i], "powersave") )
cpu->priv->cpu_governors |= CPU_POWERSAVE;
else if ( xfpm_strequal(governors[i], "ondemand") )
@@ -173,38 +138,13 @@
else if ( xfpm_strequal(governors[i], "performance") )
cpu->priv->cpu_governors |= CPU_PERFORMANCE;
}
-
hal_iface_free_string_array (governors);
-
- return TRUE;
}
-static void
-xfpm_cpu_load_configuration (XfpmCpu *cpu)
+static gboolean
+xfpm_cpu_check_iface (XfpmCpu *cpu)
{
- cpu->priv->power_save =
- xfconf_channel_get_bool (cpu->priv->conf->channel, POWER_SAVE_ON_BATTERY, TRUE);
-}
-
-static void
-xfpm_cpu_property_changed_cb (XfconfChannel *channel, gchar *property, GValue *value, XfpmCpu *cpu)
-{
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- if ( xfpm_strequal(property, POWER_SAVE_ON_BATTERY) )
- {
- gboolean val = g_value_get_boolean (value);
- cpu->priv->power_save = val;
- xfpm_cpu_update_governor(cpu);
- }
-}
-
-static void
-xfpm_cpu_check (XfpmCpu *cpu)
-{
gboolean caller_privilege, cpu_freq_iface;
-
g_object_get (G_OBJECT(cpu->priv->iface),
"caller-privilege", &caller_privilege,
"cpu-freq-iface", &cpu_freq_iface,
@@ -213,32 +153,69 @@
if ( !caller_privilege )
{
g_warning ("Using CPU FREQ interface permission denied");
- goto out;
+ return FALSE;
}
if (!cpu_freq_iface)
{
g_warning ("CPU FREQ interface cannot be used");
- goto out;
+ return FALSE;
}
- if ( !xfpm_cpu_get_available_governors (cpu) )
+ xfpm_cpu_get_available_governors (cpu);
+
+ if ( !cpu->priv->cpu_governors & CPU_POWERSAVE ||
+ !cpu->priv->cpu_governors & CPU_ONDEMAND ||
+ !cpu->priv->cpu_governors & CPU_PERFORMANCE )
{
- g_critical ("Failed to handle cpu governors");
- goto out;
+ g_warning ("No convenient cpu governors found on the system, cpu frequency control will be disabled");
+ return FALSE;
}
-out:
- ;
+ return TRUE;
}
static void
+xfpm_cpu_set_power_save (XfpmCpu *cpu)
+{
+ if ( xfpm_cpu_get_current_governor (cpu) != CPU_POWERSAVE )
+ xfpm_cpu_set_governor (cpu, "powersave");
+}
+
+static void
+xfpm_cpu_set_performance_ondemand (XfpmCpu *cpu)
+{
+ if ( xfpm_cpu_get_current_governor (cpu) != CPU_ONDEMAND )
+ xfpm_cpu_set_governor (cpu, "ondemand");
+}
+
+static void
+xfpm_cpu_refresh (XfpmCpu *cpu)
+{
+ gboolean power_save = xfpm_xfconf_get_property_bool (cpu->priv->conf, POWER_SAVE_ON_BATTERY);
+
+ if (!power_save)
+ return;
+
+ if ( cpu->priv->on_battery )
+ xfpm_cpu_set_power_save (cpu);
+ else
+ xfpm_cpu_set_performance_ondemand (cpu);
+}
+
+static void
xfpm_cpu_adapter_changed_cb (XfpmAdapter *adapter, gboolean is_present, XfpmCpu *cpu)
{
cpu->priv->on_battery = !is_present;
- xfpm_cpu_update_governor (cpu);
+ xfpm_cpu_refresh (cpu);
}
static void
+xfpm_cpu_power_save_settings_changed_cb (XfpmXfconf *conf, XfpmCpu *cpu)
+{
+ xfpm_cpu_refresh (cpu);
+}
+
+static void
xfpm_cpu_class_init(XfpmCpuClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
@@ -252,23 +229,24 @@
xfpm_cpu_init(XfpmCpu *cpu)
{
cpu->priv = XFPM_CPU_GET_PRIVATE(cpu);
-
cpu->priv->cpu_governors = 0;
+
cpu->priv->iface = hal_iface_new ();
- cpu->priv->adapter = xfpm_adapter_new ();
- cpu->priv->conf = xfpm_xfconf_new ();
- xfpm_cpu_load_configuration (cpu);
+ if ( xfpm_cpu_check_iface (cpu))
+ {
+ cpu->priv->adapter = xfpm_adapter_new ();
+ cpu->priv->conf = xfpm_xfconf_new ();
+
+ g_signal_connect (cpu->priv->adapter, "adapter-changed",
+ G_CALLBACK(xfpm_cpu_adapter_changed_cb), cpu);
+
+ g_signal_connect (cpu->priv->conf, "power-save-settings-changed",
+ G_CALLBACK(xfpm_cpu_power_save_settings_changed_cb), cpu);
+
+ cpu->priv->on_battery = !xfpm_adapter_get_present (cpu->priv->adapter);
+ }
- g_signal_connect (cpu->priv->conf->channel, "property-changed",
- G_CALLBACK(xfpm_cpu_property_changed_cb), cpu);
-
- g_signal_connect (cpu->priv->adapter, "adapter-changed",
- G_CALLBACK(xfpm_cpu_adapter_changed_cb), cpu);
-
- cpu->priv->on_battery = !xfpm_adapter_get_present (cpu->priv->adapter);
-
- xfpm_cpu_check (cpu);
}
static void
Modified: xfce4-power-manager/trunk/src/xfpm-dpms.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dpms.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-dpms.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -56,8 +56,6 @@
#ifdef HAVE_DPMS
-#define CHECK_DPMS_TIMEOUT 120
-
/* Init */
static void xfpm_dpms_class_init (XfpmDpmsClass *klass);
static void xfpm_dpms_init (XfpmDpms *xfpm_dpms);
@@ -73,17 +71,8 @@
XfpmInhibit *inhibit;
gboolean dpms_capable;
- gboolean dpms_enabled;
-
gboolean inhibited;
-
- guint16 sleep_on_battery;
- guint16 off_on_battery;
- guint16 sleep_on_ac;
- guint16 off_on_ac;
-
gboolean on_battery;
- guint8 sleep_dpms_mode; /*0=sleep 1=suspend*/
};
G_DEFINE_TYPE(XfpmDpms, xfpm_dpms, G_TYPE_OBJECT)
@@ -91,7 +80,7 @@
static void
xfpm_dpms_set_timeouts (XfpmDpms *dpms, guint16 standby, guint16 suspend, guint off)
{
- CARD16 x_standby = 0 ,x_suspend = 0,x_off = 0;
+ CARD16 x_standby = 0 , x_suspend = 0, x_off = 0;
DPMSGetTimeouts (GDK_DISPLAY(), &x_standby, &x_suspend, &x_off);
@@ -102,199 +91,125 @@
suspend,
off );
}
-
}
+/*
+ * Disable DPMS
+ */
static void
-xfpm_dpms_timeouts_on_battery (XfpmDpms *dpms)
+xfpm_dpms_disable (XfpmDpms *dpms)
{
- if ( dpms->priv->sleep_dpms_mode == 0 )
- {
- xfpm_dpms_set_timeouts (dpms,
- dpms->priv->sleep_on_battery ,
- 0,
- dpms->priv->off_on_battery );
- }
- else
- {
- xfpm_dpms_set_timeouts (dpms,
- 0,
- dpms->priv->sleep_on_battery ,
- dpms->priv->off_on_battery );
- }
+ BOOL state;
+ CARD16 power_level;
+
+ if (!DPMSInfo (GDK_DISPLAY(), &power_level, &state) )
+ g_warning ("Cannot get DPMSInfo");
+
+ if ( state )
+ DPMSDisable (GDK_DISPLAY());
}
+/*
+ * Enable DPMS
+ */
static void
-xfpm_dpms_timeouts_on_adapter (XfpmDpms *dpms)
+xfpm_dpms_enable (XfpmDpms *dpms)
{
- if ( dpms->priv->sleep_dpms_mode == 0 )
- {
- xfpm_dpms_set_timeouts (dpms,
- dpms->priv->sleep_on_ac ,
- 0,
- dpms->priv->off_on_ac );
- }
- else
- {
- xfpm_dpms_set_timeouts (dpms,
- 0,
- dpms->priv->sleep_on_ac ,
- dpms->priv->off_on_ac );
- }
+ BOOL state;
+ CARD16 power_level;
+
+ if (!DPMSInfo (GDK_DISPLAY(), &power_level, &state) )
+ g_warning ("Cannot get DPMSInfo");
+
+ if ( !state )
+ DPMSEnable (GDK_DISPLAY());
}
-static gboolean
-xfpm_dpms_enable_disable (XfpmDpms *dpms)
+static void
+xfpm_dpms_get_enabled (XfpmDpms *dpms, gboolean *dpms_enabled)
{
- BOOL on_off;
- CARD16 state = 0;
-
- if ( !dpms->priv->dpms_capable )
- return FALSE;
-
- DPMSInfo (GDK_DISPLAY(), &state, &on_off);
-
- if ( dpms->priv->inhibited && on_off )
- {
- TRACE("Power manager inhibited, disabling DPMS");
- DPMSDisable (GDK_DISPLAY());
- }
- else if ( !on_off && dpms->priv->dpms_enabled && !dpms->priv->inhibited )
- {
- TRACE("DPMS is disabled, enabling it: user settings");
- DPMSEnable(GDK_DISPLAY());
- }
- else if ( on_off && !dpms->priv->dpms_enabled && !dpms->priv->inhibited)
- {
- TRACE("DPMS is enabled, disabling it: user settings");
- DPMSDisable(GDK_DISPLAY());
- }
- return TRUE;
+ *dpms_enabled = xfpm_xfconf_get_property_bool (dpms->priv->conf, DPMS_ENABLED_CFG);
}
static void
-xfpm_dpms_check (XfpmDpms *dpms)
+xfpm_dpms_get_sleep_mode (XfpmDpms *dpms, gboolean *sleep_mode)
{
- xfpm_dpms_enable_disable (dpms);
-
- if ( dpms->priv->inhibited == TRUE || dpms->priv->dpms_enabled == FALSE )
- return;
-
- if ( !dpms->priv->on_battery )
- xfpm_dpms_timeouts_on_adapter (dpms);
- else
- xfpm_dpms_timeouts_on_battery (dpms);
+ *sleep_mode = xfpm_xfconf_get_property_bool (dpms->priv->conf, DPMS_SLEEP_MODE);
}
static void
-xfpm_dpms_value_changed_cb (XfconfChannel *channel, gchar *property,
- GValue *value, XfpmDpms *dpms)
+xfpm_dpms_get_configuration_timeouts (XfpmDpms *dpms, guint16 *sleep, guint16 *off )
{
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- gboolean set = FALSE;
-
- if ( xfpm_strequal (property, DPMS_ENABLED_CFG) )
- {
- gboolean val = g_value_get_boolean (value);
- dpms->priv->dpms_enabled = val;
- set = TRUE;
- }
- else if ( xfpm_strequal (property, ON_AC_DPMS_SLEEP) )
- {
- guint val = g_value_get_uint (value);
- dpms->priv->sleep_on_ac = MIN(3600, val * 60);
- set = TRUE;
- }
- else if ( xfpm_strequal (property, ON_AC_DPMS_OFF) )
- {
- guint val = g_value_get_uint (value);
- dpms->priv->off_on_ac = MIN(3600, val * 60);
- set = TRUE;
- }
- else if ( xfpm_strequal (property, ON_BATT_DPMS_SLEEP) )
- {
- guint val = g_value_get_uint (value);
- dpms->priv->sleep_on_battery = MIN(3600, val * 60);
- set = TRUE;
- }
- else if ( xfpm_strequal (property, ON_BATT_DPMS_OFF) )
- {
- guint val = g_value_get_uint (value);
- dpms->priv->off_on_battery = MIN (3600, val * 60);
- set = TRUE;
- }
- else if ( xfpm_strequal (property, DPMS_SLEEP_MODE) )
- {
- const gchar *str = g_value_get_string (value);
- if ( xfpm_strequal (str, "sleep" ) )
- {
- dpms->priv->sleep_dpms_mode = 0;
- }
- else if ( xfpm_strequal (str, "suspend") )
- {
- dpms->priv->sleep_dpms_mode = 1;
- }
- else
- {
- g_critical("Invalid value %s for property %s\n", str, DPMS_SLEEP_MODE);
- dpms->priv->sleep_dpms_mode = 0;
- }
- set = TRUE;
- }
-
- if ( set )
- xfpm_dpms_check (dpms);
+ *sleep = xfpm_xfconf_get_property_int (dpms->priv->conf,
+ dpms->priv->on_battery ? ON_BATT_DPMS_SLEEP :
+ ON_AC_DPMS_SLEEP);
+
+ *off = xfpm_xfconf_get_property_int (dpms->priv->conf,
+ dpms->priv->on_battery ? ON_BATT_DPMS_OFF :
+ ON_AC_DPMS_OFF);
}
static void
-xfpm_dpms_load_configuration (XfpmDpms *dpms)
+xfpm_dpms_refresh (XfpmDpms *dpms)
{
- dpms->priv->dpms_enabled =
- xfconf_channel_get_bool (dpms->priv->conf->channel, DPMS_ENABLED_CFG, TRUE);
+ gboolean enabled;
+ guint16 off_timeout;
+ guint16 sleep_timeout;
+ gboolean sleep_mode;
- dpms->priv->sleep_on_battery =
- MIN( xfconf_channel_get_uint( dpms->priv->conf->channel, ON_BATT_DPMS_SLEEP, 3) * 60, 3600);
-
- dpms->priv->off_on_battery =
- MIN(xfconf_channel_get_uint( dpms->priv->conf->channel, ON_BATT_DPMS_OFF, 5) * 60, 3600);
-
- dpms->priv->sleep_on_ac =
- MIN(xfconf_channel_get_uint( dpms->priv->conf->channel, ON_AC_DPMS_SLEEP, 10) * 60, 3600);
+ if ( dpms->priv->inhibited )
+ {
+ xfpm_dpms_disable (dpms);
+ return;
+ }
- dpms->priv->off_on_ac =
- MIN(xfconf_channel_get_uint( dpms->priv->conf->channel, ON_AC_DPMS_OFF, 15) * 60, 3600);
-
- gchar *str = xfconf_channel_get_string (dpms->priv->conf->channel, DPMS_SLEEP_MODE, "sleep");
+ xfpm_dpms_get_enabled (dpms, &enabled);
- if ( xfpm_strequal (str, "sleep" ) )
+ if ( !enabled )
{
- dpms->priv->sleep_dpms_mode = 0;
+ xfpm_dpms_disable (dpms);
+ return;
}
- else if ( xfpm_strequal (str, "suspend") )
+
+ xfpm_dpms_enable (dpms);
+ xfpm_dpms_get_configuration_timeouts (dpms, &sleep_timeout, &off_timeout);
+ xfpm_dpms_get_sleep_mode (dpms, &sleep_mode);
+
+ if (sleep_mode == TRUE )
{
- dpms->priv->sleep_dpms_mode = 1;
+ xfpm_dpms_set_timeouts (dpms,
+ sleep_timeout,
+ 0,
+ off_timeout);
}
else
{
- g_critical("Invalid value %s for property %s\n", str, DPMS_SLEEP_MODE);
- dpms->priv->sleep_dpms_mode = 0;
+ xfpm_dpms_set_timeouts (dpms,
+ 0,
+ sleep_timeout,
+ off_timeout );
}
- g_free (str);
}
static void
+xfpm_dpms_settings_changed_cb (XfpmXfconf *conf, XfpmDpms *dpms)
+{
+ xfpm_dpms_refresh (dpms);
+}
+
+static void
xfpm_dpms_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmDpms *dpms)
{
dpms->priv->on_battery = !present;
+ xfpm_dpms_refresh (dpms);
}
static void
xfpm_dpms_inhibit_changed_cb (XfpmInhibit *inhibit, gboolean inhibited, XfpmDpms *dpms)
{
dpms->priv->inhibited = inhibited;
- xfpm_dpms_enable_disable (dpms);
+
+ xfpm_dpms_refresh (dpms);
}
static void
@@ -307,22 +222,31 @@
g_type_class_add_private(klass,sizeof(XfpmDpmsPrivate));
}
+/*
+ * Check if the display is DPMS capabale if not do nothing.
+ */
static void
xfpm_dpms_init(XfpmDpms *dpms)
{
dpms->priv = XFPM_DPMS_GET_PRIVATE(dpms);
dpms->priv->dpms_capable = DPMSCapable (GDK_DISPLAY());
- dpms->priv->adapter = xfpm_adapter_new ();
- dpms->priv->inhibit = xfpm_inhibit_new ();
- g_signal_connect (dpms->priv->inhibit, "has-inhibit-changed",
- G_CALLBACK(xfpm_dpms_inhibit_changed_cb), dpms);
+ if ( dpms->priv->dpms_capable )
+ {
+ dpms->priv->adapter = xfpm_adapter_new ();
+ dpms->priv->inhibit = xfpm_inhibit_new ();
+ dpms->priv->conf = xfpm_xfconf_new ();
- g_signal_connect (dpms->priv->adapter, "adapter-changed",
- G_CALLBACK(xfpm_dpms_adapter_changed_cb), dpms);
-
- dpms->priv->conf = NULL;
+ g_signal_connect (dpms->priv->inhibit, "has-inhibit-changed",
+ G_CALLBACK(xfpm_dpms_inhibit_changed_cb), dpms);
+
+ g_signal_connect (dpms->priv->adapter, "adapter-changed",
+ G_CALLBACK(xfpm_dpms_adapter_changed_cb), dpms);
+
+ g_signal_connect (dpms->priv->conf, "dpms-settings-changed",
+ G_CALLBACK (xfpm_dpms_settings_changed_cb), dpms);
+ }
}
static void
@@ -337,6 +261,9 @@
if ( dpms->priv->adapter )
g_object_unref (dpms->priv->adapter);
+
+ if ( dpms->priv->inhibit )
+ g_object_unref ( dpms->priv->inhibit);
G_OBJECT_CLASS(xfpm_dpms_parent_class)->finalize(object);
}
@@ -346,39 +273,17 @@
{
XfpmDpms *dpms = NULL;
dpms = g_object_new (XFPM_TYPE_DPMS, NULL);
-
- if ( !dpms->priv->dpms_capable )
- {
- g_warning ("Display dpms incapable\n");
- goto out;
- }
-
- dpms->priv->conf = xfpm_xfconf_new ();
- xfpm_dpms_load_configuration (dpms);
-
- g_signal_connect (dpms->priv->conf->channel, "property-changed",
- G_CALLBACK(xfpm_dpms_value_changed_cb), dpms);
-
- g_timeout_add_seconds ( CHECK_DPMS_TIMEOUT,
- (GSourceFunc) xfpm_dpms_enable_disable, dpms);
-out:
return dpms;
}
-void xfpm_dpms_set_on_battery (XfpmDpms *dpms, gboolean on_battery)
-{
- g_return_if_fail (XFPM_IS_DPMS(dpms));
-
- dpms->priv->on_battery = on_battery;
-
- xfpm_dpms_check (dpms);
-}
-
+/*
+ * Get if the display is DPMS capable. if not the dpms
+ * object is freed by xfpm-engine
+ */
gboolean xfpm_dpms_capable (XfpmDpms *dpms)
{
g_return_val_if_fail (XFPM_IS_DPMS(dpms), FALSE);
return dpms->priv->dpms_capable;
}
-
#endif /* HAVE_DPMS */
Modified: xfce4-power-manager/trunk/src/xfpm-dpms.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-dpms.h 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-dpms.h 2009-03-27 14:37:29 UTC (rev 7007)
@@ -55,9 +55,8 @@
GType xfpm_dpms_get_type (void) G_GNUC_CONST;
XfpmDpms *xfpm_dpms_new (void);
-gboolean xfpm_dpms_capable (XfpmDpms *dpms);
+gboolean xfpm_dpms_capable (XfpmDpms *dpms) G_GNUC_PURE;
-
G_END_DECLS
#endif /* HAVE_DPMS */
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -66,516 +66,410 @@
#include "xfpm-config.h"
/* Init */
-static void xfpm_engine_class_init (XfpmEngineClass *klass);
-static void xfpm_engine_init (XfpmEngine *engine);
-static void xfpm_engine_finalize (GObject *object);
+static void xfpm_engine_class_init (XfpmEngineClass * klass);
+static void xfpm_engine_init (XfpmEngine * engine);
+static void xfpm_engine_finalize (GObject * object);
-static void xfpm_engine_dbus_class_init (XfpmEngineClass *klass);
-static void xfpm_engine_dbus_init (XfpmEngine *engine);
+static void xfpm_engine_dbus_class_init (XfpmEngineClass * klass);
+static void xfpm_engine_dbus_init (XfpmEngine * engine);
#define XFPM_ENGINE_GET_PRIVATE(o) \
(G_TYPE_INSTANCE_GET_PRIVATE((o), XFPM_TYPE_ENGINE, XfpmEnginePrivate))
struct XfpmEnginePrivate
{
- XfpmXfconf *conf;
- XfpmSupply *supply;
- XfpmNotify *notify;
-
- XfpmCpu *cpu;
- XfpmButtonXf86 *xf86_button;
- XfpmLidHal *lid;
- XfpmBacklight *bk;
- XfpmAdapter *adapter;
- XfpmInhibit *inhibit;
- HalIface *iface;
+ XfpmXfconf *conf;
+ XfpmSupply *supply;
+ XfpmNotify *notify;
+
+ XfpmCpu *cpu;
+ XfpmButtonXf86 *xf86_button;
+ XfpmLidHal *lid;
+ XfpmBacklight *bk;
+ XfpmAdapter *adapter;
+ XfpmInhibit *inhibit;
+ HalIface *iface;
#ifdef HAVE_DPMS
- XfpmDpms *dpms;
+ XfpmDpms *dpms;
#endif
- gboolean inhibited;
+ gboolean inhibited;
- guint8 power_management;
- gboolean on_battery;
-
- gboolean block_shutdown;
-
- gboolean is_laptop;
- gboolean has_lcd_brightness;
- gboolean has_lid;
-
- /*Configuration */
- XfpmShutdownRequest sleep_button;
- XfpmShutdownRequest lid_button_ac;
- XfpmShutdownRequest lid_button_battery;
- gboolean lock_screen;
-};
+ guint8 power_management;
+ gboolean on_battery;
-G_DEFINE_TYPE(XfpmEngine, xfpm_engine, G_TYPE_OBJECT)
+ gboolean block_shutdown;
-static gboolean
-xfpm_engine_do_suspend (XfpmEngine *engine)
+ gboolean is_laptop;
+ gboolean has_lcd_brightness;
+ gboolean has_lid;
+};
+
+G_DEFINE_TYPE (XfpmEngine, xfpm_engine, G_TYPE_OBJECT)
+ static gboolean xfpm_engine_do_suspend (XfpmEngine * engine)
{
- GError *error = NULL;
-
- hal_iface_shutdown (engine->priv->iface, "Suspend", &error);
-
- if ( error )
+ GError *error = NULL;
+
+ hal_iface_shutdown (engine->priv->iface, "Suspend", &error);
+
+ if (error)
{
- g_warning ("%s", error->message);
- g_error_free (error);
+ g_warning ("%s", error->message);
+ g_error_free (error);
}
- xfpm_send_message_to_network_manager ("wake");
- return FALSE;
+ xfpm_send_message_to_network_manager ("wake");
+ engine->priv->block_shutdown = FALSE;
+ return FALSE;
}
static gboolean
-xfpm_engine_do_hibernate (XfpmEngine *engine)
+xfpm_engine_do_hibernate (XfpmEngine * engine)
{
- GError *error = NULL;
-
- hal_iface_shutdown (engine->priv->iface, "Hibernate", &error);
-
- if ( error )
+ GError *error = NULL;
+
+ hal_iface_shutdown (engine->priv->iface, "Hibernate", &error);
+
+ if (error)
{
- g_warning ("%s", error->message);
- g_error_free (error);
+ g_warning ("%s", error->message);
+ g_error_free (error);
}
- xfpm_send_message_to_network_manager ("wake");
- return FALSE;
+ xfpm_send_message_to_network_manager ("wake");
+ engine->priv->block_shutdown = FALSE;
+ return FALSE;
}
static gboolean
-xfpm_engine_do_shutdown (XfpmEngine *engine)
+xfpm_engine_do_shutdown (XfpmEngine * engine)
{
- GError *error = NULL;
-
- hal_iface_shutdown (engine->priv->iface, "Shutdown", &error);
-
- if ( error )
+ GError *error = NULL;
+
+ hal_iface_shutdown (engine->priv->iface, "Shutdown", &error);
+
+ if (error)
{
- g_warning ("%s", error->message);
- g_error_free (error);
+ g_warning ("%s", error->message);
+ g_error_free (error);
}
- return FALSE;
+ return FALSE;
}
static void
-xfpm_engine_shutdown_request (XfpmEngine *engine, XfpmShutdownRequest shutdown, gboolean critical)
+xfpm_engine_shutdown_request (XfpmEngine * engine,
+ XfpmShutdownRequest shutdown, gboolean critical)
{
- const gchar *action = xfpm_int_to_shutdown_string (shutdown);
-
- if ( xfpm_strequal(action, "Nothing") )
+ gboolean lock_screen;
+ const gchar *action = xfpm_int_to_shutdown_string (shutdown);
+
+ lock_screen =
+ xfpm_xfconf_get_property_bool (engine->priv->conf, LOCK_SCREEN_ON_SLEEP);
+
+ if (xfpm_strequal (action, "Nothing"))
{
- TRACE("Sleep button disabled in configuration");
- return;
+ TRACE ("Sleep button disabled in configuration");
+ return;
}
- else if ( !engine->priv->inhibited )
+ else if (!engine->priv->inhibited)
{
- TRACE("Going to do %s\n", action);
- xfpm_send_message_to_network_manager ("sleep");
-
- if ( shutdown == XFPM_DO_SHUTDOWN)
+ TRACE ("Going to do %s\n", action);
+ xfpm_send_message_to_network_manager ("sleep");
+ engine->priv->block_shutdown = TRUE;
+
+ if (shutdown == XFPM_DO_SHUTDOWN)
{
- xfpm_engine_do_shutdown (engine);
+ xfpm_engine_do_shutdown (engine);
}
- else if ( shutdown == XFPM_DO_HIBERNATE )
+ else if (shutdown == XFPM_DO_HIBERNATE)
{
- g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_hibernate, engine);
+ g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_hibernate,
+ engine);
}
- else if ( shutdown == XFPM_DO_SUSPEND )
+ else if (shutdown == XFPM_DO_SUSPEND)
{
- g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_suspend, engine);
+ g_timeout_add_seconds (3, (GSourceFunc) xfpm_engine_do_suspend,
+ engine);
}
-
- if ( engine->priv->lock_screen )
- xfpm_lock_screen ();
+
+ if (lock_screen)
+ xfpm_lock_screen ();
}
}
static void
-xfpm_engine_shutdown_request_battery_cb (XfpmSupply *supply, gboolean critical,
- XfpmShutdownRequest action, XfpmEngine *engine)
+xfpm_engine_shutdown_request_battery_cb (XfpmSupply * supply,
+ gboolean critical,
+ XfpmShutdownRequest action,
+ XfpmEngine * engine)
{
- xfpm_engine_shutdown_request (engine, action, critical);
+ xfpm_engine_shutdown_request (engine, action, critical);
}
static void
-xfpm_engine_xf86_button_pressed_cb (XfpmButtonXf86 *button, XfpmXF86Button type, XfpmEngine *engine)
+xfpm_engine_xf86_button_pressed_cb (XfpmButtonXf86 * button,
+ XfpmXF86Button type, XfpmEngine * engine)
{
- TRACE("Received button press event type %d", type);
-
- if ( type == BUTTON_POWER_OFF || type == BUTTON_SLEEP )
+ TRACE ("Received button press event type %d", type);
+ XfpmShutdownRequest shutdown;
+
+ shutdown = xfpm_xfconf_get_property_enum (engine->priv->conf, SLEEP_SWITCH_CFG );
+
+ if (type == BUTTON_POWER_OFF || type == BUTTON_SLEEP)
{
- if ( engine->priv->block_shutdown )
- return;
-
- TRACE("Accepting shutdown request");
- xfpm_engine_shutdown_request (engine, engine->priv->sleep_button, FALSE);
+ if (engine->priv->block_shutdown)
+ return;
+
+ TRACE ("Accepting shutdown request");
+ xfpm_engine_shutdown_request (engine, shutdown, FALSE);
}
}
static void
-xfpm_engine_lid_closed_cb (XfpmLidHal *lid, XfpmEngine *engine)
+xfpm_engine_lid_closed_cb (XfpmLidHal * lid, XfpmEngine * engine)
{
- g_return_if_fail (engine->priv->lid_button_ac != XFPM_DO_SHUTDOWN );
- g_return_if_fail (engine->priv->lid_button_battery != XFPM_DO_SHUTDOWN );
+ XfpmShutdownRequest shutdown;
- if ( engine->priv->on_battery && engine->priv->lid_button_battery == XFPM_DO_NOTHING )
- {
- TRACE("System on battery, doing nothing: user settings\n");
- return;
- }
-
- if ( !engine->priv->on_battery && engine->priv->lid_button_ac == XFPM_DO_NOTHING )
- {
- TRACE("System on AC, doing nothing: user settings\n");
- return;
- }
-
- if ( engine->priv->block_shutdown )
- return;
-
- TRACE("Accepting shutdown request");
-
- xfpm_engine_shutdown_request (engine, engine->priv->on_battery ?
- engine->priv->lid_button_battery :
- engine->priv->lid_button_ac,
- FALSE);
+ shutdown = xfpm_xfconf_get_property_enum (engine->priv->conf,
+ engine->priv->
+ on_battery ?
+ LID_SWITCH_ON_BATTERY_CFG :
+ LID_SWITCH_ON_AC_CFG);
+
+ if (engine->priv->block_shutdown)
+ return;
+
+ TRACE ("Accepting shutdown request");
+
+ xfpm_engine_shutdown_request (engine, shutdown, FALSE);
}
static void
-xfpm_engine_check_hal_iface (XfpmEngine *engine)
+xfpm_engine_check_hal_iface (XfpmEngine * engine)
{
- gboolean can_suspend, can_hibernate, caller, cpu;
-
- if (!hal_iface_connect (engine->priv->iface))
- return;
-
- g_object_get (G_OBJECT(engine->priv->iface),
- "caller-privilege", &caller,
- "can-suspend", &can_suspend,
- "can-hibernate", &can_hibernate,
- "cpu-freq-iface", &cpu,
- NULL);
-
- if ( can_hibernate )
- engine->priv->power_management |= SYSTEM_CAN_HIBERNATE;
- if ( can_suspend )
- engine->priv->power_management |= SYSTEM_CAN_SUSPEND;
-
- //FIXME: Show errors here
+ gboolean can_suspend, can_hibernate, caller, cpu;
+
+ if (!hal_iface_connect (engine->priv->iface))
+ return;
+
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "caller-privilege", &caller,
+ "can-suspend", &can_suspend,
+ "can-hibernate", &can_hibernate,
+ "cpu-freq-iface", &cpu, NULL);
+
+ if (can_hibernate)
+ engine->priv->power_management |= SYSTEM_CAN_HIBERNATE;
+ if (can_suspend)
+ engine->priv->power_management |= SYSTEM_CAN_SUSPEND;
+
+ //FIXME: Show errors here
}
static void
-xfpm_engine_load_all (XfpmEngine *engine)
+xfpm_engine_load_all (XfpmEngine * engine)
{
- HalDevice *device;
- gchar *form_factor = NULL;
-
- xfpm_engine_check_hal_iface (engine);
-
- device = hal_device_new ();
-
- hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
-
- form_factor = hal_device_get_property_string (device, "system.formfactor");
-
- TRACE("System formfactor=%s\n", form_factor);
- if ( xfpm_strequal (form_factor, "laptop") )
+ HalDevice *device;
+ gchar *form_factor = NULL;
+
+ xfpm_engine_check_hal_iface (engine);
+
+ device = hal_device_new ();
+
+ hal_device_set_udi (device, "/org/freedesktop/Hal/devices/computer");
+
+ form_factor = hal_device_get_property_string (device, "system.formfactor");
+
+ TRACE ("System formfactor=%s\n", form_factor);
+ if (xfpm_strequal (form_factor, "laptop"))
{
- engine->priv->is_laptop = TRUE;
- TRACE("System is identified as a laptop");
+ engine->priv->is_laptop = TRUE;
+ TRACE ("System is identified as a laptop");
}
- else
+ else
{
- engine->priv->is_laptop = FALSE;
- TRACE("System is not identified as a laptop");
+ engine->priv->is_laptop = FALSE;
+ TRACE ("System is not identified as a laptop");
}
- if ( form_factor )
- g_free (form_factor);
-
- g_object_unref (device);
-
-#ifdef HAVE_DPMS
- engine->priv->dpms = xfpm_dpms_new ();
+ if (form_factor)
+ g_free (form_factor);
+
+ g_object_unref (device);
+
+#ifdef HAVE_DPMS
+ engine->priv->dpms = xfpm_dpms_new ();
#endif
- if ( engine->priv->is_laptop )
- engine->priv->cpu = xfpm_cpu_new ();
+ if (engine->priv->is_laptop)
+ engine->priv->cpu = xfpm_cpu_new ();
- engine->priv->supply = xfpm_supply_new (engine->priv->power_management);
- g_signal_connect (G_OBJECT(engine->priv->supply), "shutdown-request",
- G_CALLBACK (xfpm_engine_shutdown_request_battery_cb), engine);
- xfpm_supply_monitor (engine->priv->supply);
-
- /*
- * Keys from XF86
- */
- engine->priv->xf86_button = xfpm_button_xf86_new ();
-
- g_signal_connect (engine->priv->xf86_button, "xf86-button-pressed",
- G_CALLBACK(xfpm_engine_xf86_button_pressed_cb), engine);
-
- /*
- * Lid from HAL
- */
- if ( engine->priv->is_laptop )
- {
- engine->priv->lid = xfpm_lid_hal_new ();
- engine->priv->has_lid = xfpm_lid_hw_found (engine->priv->lid );
- if ( engine->priv->has_lid )
- g_signal_connect (engine->priv->lid, "lid-closed",
- G_CALLBACK(xfpm_engine_lid_closed_cb), engine);
- else
- g_object_unref (engine->priv->lid);
- }
-
- /*
- * Brightness HAL
- */
- if ( engine->priv->is_laptop )
- {
- engine->priv->bk = xfpm_backlight_new ();
- engine->priv->has_lcd_brightness = xfpm_backlight_has_hw (engine->priv->bk);
- }
-}
+ engine->priv->supply = xfpm_supply_new (engine->priv->power_management);
+ g_signal_connect (G_OBJECT (engine->priv->supply), "shutdown-request",
+ G_CALLBACK (xfpm_engine_shutdown_request_battery_cb),
+ engine);
+ xfpm_supply_monitor (engine->priv->supply);
-static void
-xfpm_engine_load_configuration (XfpmEngine *engine)
-{
- gchar *str;
- gint val;
-
- str = xfconf_channel_get_string (engine->priv->conf->channel, SLEEP_SWITCH_CFG, "Nothing");
- val = xfpm_shutdown_string_to_int (str);
-
- if ( val == -1 || val == 3)
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
- engine->priv->sleep_button = XFPM_DO_NOTHING;
- xfconf_channel_set_string (engine->priv->conf->channel, SLEEP_SWITCH_CFG, "Nothing");
- }
- else engine->priv->sleep_button = val;
-
- g_free (str);
-
- str = xfconf_channel_get_string (engine->priv->conf->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
- val = xfpm_shutdown_string_to_int (str);
+ /*
+ * Keys from XF86
+ */
+ engine->priv->xf86_button = xfpm_button_xf86_new ();
- if ( val == -1 || val == 3)
+ g_signal_connect (engine->priv->xf86_button, "xf86-button-pressed",
+ G_CALLBACK (xfpm_engine_xf86_button_pressed_cb), engine);
+
+ /*
+ * Lid from HAL
+ */
+ if (engine->priv->is_laptop)
{
- g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_AC_CFG);
- engine->priv->lid_button_ac = XFPM_DO_NOTHING;
- xfconf_channel_set_string (engine->priv->conf->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
+ engine->priv->lid = xfpm_lid_hal_new ();
+ engine->priv->has_lid = xfpm_lid_hw_found (engine->priv->lid);
+ if (engine->priv->has_lid)
+ g_signal_connect (engine->priv->lid, "lid-closed",
+ G_CALLBACK (xfpm_engine_lid_closed_cb), engine);
+ else
+ g_object_unref (engine->priv->lid);
}
- else engine->priv->lid_button_ac = val;
-
- g_free (str);
-
- str = xfconf_channel_get_string (engine->priv->conf->channel, LID_SWITCH_ON_BATTERY_CFG, "Nothing");
- val = xfpm_shutdown_string_to_int (str);
-
- if ( val == -1 || val == 3)
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_BATTERY_CFG);
- engine->priv->lid_button_battery = XFPM_DO_NOTHING;
- xfconf_channel_set_string (engine->priv->conf->channel, LID_SWITCH_ON_BATTERY_CFG, "Nothing");
- }
- else engine->priv->lid_button_battery = val;
-
- g_free (str);
-
- engine->priv->lock_screen = xfconf_channel_get_bool (engine->priv->conf->channel, LOCK_SCREEN_ON_SLEEP, TRUE);
-}
-static void
-xfpm_engine_property_changed_cb (XfconfChannel *channel, gchar *property, GValue *value, XfpmEngine *engine)
-{
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- if ( xfpm_strequal (property, SLEEP_SWITCH_CFG) )
+ /*
+ * Brightness HAL
+ */
+ if (engine->priv->is_laptop)
{
- const gchar *str = g_value_get_string (value);
- gint val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 || val == 3 )
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
- engine->priv->sleep_button = XFPM_DO_NOTHING;
- }
- else
- engine->priv->sleep_button = val;
+ engine->priv->bk = xfpm_backlight_new ();
+ engine->priv->has_lcd_brightness =
+ xfpm_backlight_has_hw (engine->priv->bk);
}
- 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 )
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_AC_CFG);
- engine->priv->lid_button_ac = XFPM_DO_NOTHING;
- }
- else
- engine->priv->lid_button_ac = val;
- }
- 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 )
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, LID_SWITCH_ON_BATTERY_CFG);
- engine->priv->lid_button_battery = XFPM_DO_NOTHING;
- }
- else
- engine->priv->lid_button_battery = val;
- }
- else if ( xfpm_strequal (property, LOCK_SCREEN_ON_SLEEP ) )
- {
- engine->priv->lock_screen = g_value_get_boolean (value);
- }
}
static void
-xfpm_engine_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmEngine *engine)
+xfpm_engine_adapter_changed_cb (XfpmAdapter * adapter, gboolean present,
+ XfpmEngine * engine)
{
- engine->priv->on_battery = !present;
+ engine->priv->on_battery = !present;
}
static void
-xfpm_engine_inhibit_changed_cb (XfpmInhibit *inhibit, gboolean inhibited, XfpmEngine *engine)
+xfpm_engine_inhibit_changed_cb (XfpmInhibit * inhibit, gboolean inhibited,
+ XfpmEngine * engine)
{
- engine->priv->inhibited = inhibited;
+ engine->priv->inhibited = inhibited;
}
static void
-xfpm_engine_class_init(XfpmEngineClass *klass)
+xfpm_engine_class_init (XfpmEngineClass * klass)
{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GObjectClass *object_class = G_OBJECT_CLASS (klass);
- object_class->finalize = xfpm_engine_finalize;
+ object_class->finalize = xfpm_engine_finalize;
- g_type_class_add_private (klass, sizeof(XfpmEnginePrivate));
-
- xfpm_engine_dbus_class_init (klass);
+ g_type_class_add_private (klass, sizeof (XfpmEnginePrivate));
+
+ xfpm_engine_dbus_class_init (klass);
}
static void
-xfpm_engine_init (XfpmEngine *engine)
+xfpm_engine_init (XfpmEngine * engine)
{
- GError *error = NULL;
- engine->priv = XFPM_ENGINE_GET_PRIVATE(engine);
-
- engine->priv->iface = hal_iface_new ();
- engine->priv->adapter = xfpm_adapter_new ();
- engine->priv->notify = xfpm_notify_new ();
+ engine->priv = XFPM_ENGINE_GET_PRIVATE (engine);
- engine->priv->inhibit = xfpm_inhibit_new ();
- engine->priv->inhibited = FALSE;
-
- g_signal_connect (engine->priv->inhibit, "has-inhibit-changed",
- G_CALLBACK(xfpm_engine_inhibit_changed_cb), engine);
-
- engine->priv->conf = NULL;
- engine->priv->supply = NULL;
+ engine->priv->iface = hal_iface_new ();
+ engine->priv->adapter = xfpm_adapter_new ();
+ engine->priv->notify = xfpm_notify_new ();
+
+ engine->priv->inhibit = xfpm_inhibit_new ();
+ engine->priv->inhibited = FALSE;
+
+ g_signal_connect (engine->priv->inhibit, "has-inhibit-changed",
+ G_CALLBACK (xfpm_engine_inhibit_changed_cb), engine);
+
+ engine->priv->conf = NULL;
+ engine->priv->supply = NULL;
#ifdef HAVE_DPMS
- engine->priv->dpms = NULL;
-#endif
- engine->priv->cpu = NULL;
- engine->priv->xf86_button = NULL;
- engine->priv->lid = NULL;
- engine->priv->bk = NULL;
-
- engine->priv->power_management = 0;
-
- xfpm_engine_dbus_init (engine);
-
- if ( !xfconf_init(&error) )
- {
- g_critical ("xfconf_init failed: %s\n", error->message);
- g_error_free (error);
- }
-
- engine->priv->conf = xfpm_xfconf_new ();
-
- engine->priv->on_battery = ! xfpm_adapter_get_present (engine->priv->adapter);
-
- g_signal_connect (engine->priv->adapter, "adapter-changed",
- G_CALLBACK(xfpm_engine_adapter_changed_cb), engine);
-
- g_signal_connect (engine->priv->conf->channel, "property-changed",
- G_CALLBACK(xfpm_engine_property_changed_cb), engine);
-
- xfpm_engine_load_configuration (engine);
- xfpm_engine_load_all (engine);
+ engine->priv->dpms = NULL;
+#endif
+ engine->priv->cpu = NULL;
+ engine->priv->xf86_button = NULL;
+ engine->priv->lid = NULL;
+ engine->priv->bk = NULL;
+
+ engine->priv->power_management = 0;
+
+ xfpm_engine_dbus_init (engine);
+
+ engine->priv->conf = xfpm_xfconf_new ();
+
+ engine->priv->on_battery =
+ !xfpm_adapter_get_present (engine->priv->adapter);
+
+ g_signal_connect (engine->priv->adapter, "adapter-changed",
+ G_CALLBACK (xfpm_engine_adapter_changed_cb), engine);
+
+ xfpm_engine_load_all (engine);
}
static void
-xfpm_engine_finalize (GObject *object)
+xfpm_engine_finalize (GObject * object)
{
- XfpmEngine *engine;
+ XfpmEngine *engine;
- engine = XFPM_ENGINE(object);
-
- if ( engine->priv->conf )
- g_object_unref (engine->priv->conf);
-
- if ( engine->priv->supply )
- g_object_unref (engine->priv->supply);
-
+ engine = XFPM_ENGINE (object);
+
+ if (engine->priv->conf)
+ g_object_unref (engine->priv->conf);
+
+ if (engine->priv->supply)
+ g_object_unref (engine->priv->supply);
+
#ifdef HAVE_DPMS
- if ( engine->priv->dpms )
- g_object_unref (engine->priv->dpms);
+ if (engine->priv->dpms)
+ g_object_unref (engine->priv->dpms);
#endif
- if ( engine->priv->cpu )
- g_object_unref (engine->priv->cpu);
+ if (engine->priv->cpu)
+ g_object_unref (engine->priv->cpu);
- if ( engine->priv->lid)
- g_object_unref(engine->priv->lid);
-
- if ( engine->priv->iface)
- g_object_unref(engine->priv->iface);
+ if (engine->priv->lid)
+ g_object_unref (engine->priv->lid);
- if ( engine->priv->adapter)
- g_object_unref (engine->priv->adapter);
-
- if ( engine->priv->bk )
- g_object_unref (engine->priv->bk);
-
- g_object_unref (engine->priv->notify);
-
- G_OBJECT_CLASS(xfpm_engine_parent_class)->finalize(object);
+ if (engine->priv->iface)
+ g_object_unref (engine->priv->iface);
+
+ if (engine->priv->adapter)
+ g_object_unref (engine->priv->adapter);
+
+ if (engine->priv->bk)
+ g_object_unref (engine->priv->bk);
+
+ g_object_unref (engine->priv->notify);
+
+ G_OBJECT_CLASS (xfpm_engine_parent_class)->finalize (object);
}
XfpmEngine *
-xfpm_engine_new(void)
+xfpm_engine_new (void)
{
- XfpmEngine *engine = NULL;
- engine = g_object_new (XFPM_TYPE_ENGINE, NULL);
+ XfpmEngine *engine = NULL;
+ engine = g_object_new (XFPM_TYPE_ENGINE, NULL);
- return engine;
+ return engine;
}
-void xfpm_engine_get_info (XfpmEngine *engine,
- gboolean *system_laptop,
- gboolean *user_privilege,
- gboolean *can_suspend,
- gboolean *can_hibernate,
- gboolean *has_lcd_brightness,
- gboolean *has_lid)
+void
+xfpm_engine_get_info (XfpmEngine * engine,
+ gboolean * system_laptop,
+ gboolean * user_privilege,
+ gboolean * can_suspend,
+ gboolean * can_hibernate,
+ gboolean * has_lcd_brightness, gboolean * has_lid)
{
- g_return_if_fail (XFPM_IS_ENGINE(engine));
-
- g_object_get (G_OBJECT(engine->priv->iface),
- "caller-privilege", user_privilege,
- "can-suspend", can_suspend,
- "can-hibernate",can_hibernate,
- NULL);
-
- *system_laptop = engine->priv->is_laptop;
- *has_lcd_brightness = engine->priv->has_lcd_brightness;
- *has_lid = engine->priv->has_lid;
+ g_return_if_fail (XFPM_IS_ENGINE (engine));
+
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "caller-privilege", user_privilege,
+ "can-suspend", can_suspend,
+ "can-hibernate", can_hibernate, NULL);
+
+ *system_laptop = engine->priv->is_laptop;
+ *has_lcd_brightness = engine->priv->has_lcd_brightness;
+ *has_lid = engine->priv->has_lid;
}
/*
@@ -584,147 +478,147 @@
*
*/
-static gboolean xfpm_engine_dbus_hibernate (XfpmEngine *engine,
- GError **error);
-
-static gboolean xfpm_engine_dbus_suspend (XfpmEngine *engine,
- GError **error);
-
-static gboolean xfpm_engine_dbus_can_hibernate (XfpmEngine *engine,
- gboolean *OUT_can_hibernate,
- GError **error);
+static gboolean xfpm_engine_dbus_hibernate (XfpmEngine * engine,
+ GError ** error);
-static gboolean xfpm_engine_dbus_can_suspend (XfpmEngine *engine,
- gboolean *OUT_can_suspend,
- GError **error);
+static gboolean xfpm_engine_dbus_suspend (XfpmEngine * engine,
+ GError ** error);
-static gboolean xfpm_engine_dbus_get_on_battery (XfpmEngine *engine,
- gboolean *OUT_on_battery,
- GError **error);
+static gboolean xfpm_engine_dbus_can_hibernate (XfpmEngine * engine,
+ gboolean * OUT_can_hibernate,
+ GError ** error);
-static gboolean xfpm_engine_dbus_get_low_battery(XfpmEngine *engine,
- gboolean *OUT_low_battery,
- GError **error);
+static gboolean xfpm_engine_dbus_can_suspend (XfpmEngine * engine,
+ gboolean * OUT_can_suspend,
+ GError ** error);
+static gboolean xfpm_engine_dbus_get_on_battery (XfpmEngine * engine,
+ gboolean * OUT_on_battery,
+ GError ** error);
+
+static gboolean xfpm_engine_dbus_get_low_battery (XfpmEngine * engine,
+ gboolean * OUT_low_battery,
+ GError ** error);
+
#include "org.freedesktop.PowerManagement.h"
static void
-xfpm_engine_dbus_class_init(XfpmEngineClass *klass)
+xfpm_engine_dbus_class_init (XfpmEngineClass * klass)
{
- dbus_g_object_type_install_info(G_TYPE_FROM_CLASS(klass),
- &dbus_glib_xfpm_engine_object_info);
-
- dbus_g_error_domain_register (XFPM_ERROR,
- "org.freedesktop.PowerManagement",
- XFPM_TYPE_ERROR);
+ dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
+ &dbus_glib_xfpm_engine_object_info);
+
+ dbus_g_error_domain_register (XFPM_ERROR,
+ "org.freedesktop.PowerManagement",
+ XFPM_TYPE_ERROR);
}
static void
-xfpm_engine_dbus_init (XfpmEngine *engine)
+xfpm_engine_dbus_init (XfpmEngine * engine)
{
- DBusGConnection *bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
-
- dbus_g_connection_register_g_object (bus,
- "/org/freedesktop/PowerManagement",
- G_OBJECT(engine));
+ DBusGConnection *bus = dbus_g_bus_get (DBUS_BUS_SESSION, NULL);
+
+ dbus_g_connection_register_g_object (bus,
+ "/org/freedesktop/PowerManagement",
+ G_OBJECT (engine));
}
-static gboolean xfpm_engine_dbus_hibernate (XfpmEngine *engine,
- GError **error)
+static gboolean
+xfpm_engine_dbus_hibernate (XfpmEngine * engine, GError ** error)
{
- TRACE("Hibernate message received");
- gboolean caller_privilege, can_hibernate;
-
- g_object_get (G_OBJECT(engine->priv->iface),
- "caller-privilege", &caller_privilege,
- "can-hibernate", &can_hibernate,
- NULL);
+ TRACE ("Hibernate message received");
+ gboolean caller_privilege, can_hibernate;
- if ( !caller_privilege)
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "caller-privilege", &caller_privilege,
+ "can-hibernate", &can_hibernate, NULL);
+
+ if (!caller_privilege)
{
- g_set_error (error, XFPM_ERROR, XFPM_ERROR_PERMISSION_DENIED, _("Permission denied"));
- return FALSE;
+ g_set_error (error, XFPM_ERROR, XFPM_ERROR_PERMISSION_DENIED,
+ _("Permission denied"));
+ return FALSE;
}
-
- if ( !can_hibernate )
+
+ if (!can_hibernate)
{
- g_set_error (error, XFPM_ERROR, XFPM_ERROR_HIBERNATE_NOT_SUPPORTED, _("Hibernate not supported"));
- return FALSE;
+ g_set_error (error, XFPM_ERROR, XFPM_ERROR_HIBERNATE_NOT_SUPPORTED,
+ _("Hibernate not supported"));
+ return FALSE;
}
-
- xfpm_engine_shutdown_request (engine, XFPM_DO_HIBERNATE, FALSE);
- return TRUE;
+ xfpm_engine_shutdown_request (engine, XFPM_DO_HIBERNATE, FALSE);
+
+ return TRUE;
}
-
-static gboolean xfpm_engine_dbus_suspend (XfpmEngine *engine,
- GError **error)
+
+static gboolean
+xfpm_engine_dbus_suspend (XfpmEngine * engine, GError ** error)
{
- TRACE("Suspend message received");
- gboolean caller_privilege, can_suspend;
-
- g_object_get (G_OBJECT(engine->priv->iface),
- "caller-privilege", &caller_privilege,
- "can-suspend", &can_suspend,
- NULL);
-
- if ( !caller_privilege)
+ TRACE ("Suspend message received");
+ gboolean caller_privilege, can_suspend;
+
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "caller-privilege", &caller_privilege,
+ "can-suspend", &can_suspend, NULL);
+
+ if (!caller_privilege)
{
- g_set_error (error, XFPM_ERROR, XFPM_ERROR_PERMISSION_DENIED, _("Permission denied"));
- return FALSE;
+ g_set_error (error, XFPM_ERROR, XFPM_ERROR_PERMISSION_DENIED,
+ _("Permission denied"));
+ return FALSE;
}
-
- if ( !can_suspend )
+
+ if (!can_suspend)
{
- g_set_error (error, XFPM_ERROR, XFPM_ERROR_SUSPEND_NOT_SUPPORTED, _("Suspend not supported"));
- return FALSE;
+ g_set_error (error, XFPM_ERROR, XFPM_ERROR_SUSPEND_NOT_SUPPORTED,
+ _("Suspend not supported"));
+ return FALSE;
}
-
- xfpm_engine_shutdown_request (engine, XFPM_DO_SUSPEND, FALSE);
-
- return TRUE;
+
+ xfpm_engine_shutdown_request (engine, XFPM_DO_SUSPEND, FALSE);
+
+ return TRUE;
}
-
-static gboolean xfpm_engine_dbus_can_hibernate (XfpmEngine *engine,
- gboolean *OUT_can_hibernate,
- GError **error)
+
+static gboolean
+xfpm_engine_dbus_can_hibernate (XfpmEngine * engine,
+ gboolean * OUT_can_hibernate, GError ** error)
{
- TRACE("Can hibernate message received");
- g_object_get (G_OBJECT(engine->priv->iface),
- "can-hibernate", OUT_can_hibernate,
- NULL);
-
- return TRUE;
+ TRACE ("Can hibernate message received");
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "can-hibernate", OUT_can_hibernate, NULL);
+
+ return TRUE;
}
-static gboolean xfpm_engine_dbus_can_suspend (XfpmEngine *engine,
- gboolean *OUT_can_suspend,
- GError **error)
+static gboolean
+xfpm_engine_dbus_can_suspend (XfpmEngine * engine,
+ gboolean * OUT_can_suspend, GError ** error)
{
- TRACE("Can suspend message received");
- g_object_get (G_OBJECT(engine->priv->iface),
- "can-suspend", OUT_can_suspend,
- NULL);
-
- return TRUE;
+ TRACE ("Can suspend message received");
+ g_object_get (G_OBJECT (engine->priv->iface),
+ "can-suspend", OUT_can_suspend, NULL);
+
+ return TRUE;
}
-static gboolean xfpm_engine_dbus_get_on_battery (XfpmEngine *engine,
- gboolean *OUT_on_battery,
- GError **error)
+static gboolean
+xfpm_engine_dbus_get_on_battery (XfpmEngine * engine,
+ gboolean * OUT_on_battery, GError ** error)
{
- TRACE("On battery message received");
- *OUT_on_battery = engine->priv->on_battery;
-
- return TRUE;
+ TRACE ("On battery message received");
+ *OUT_on_battery = engine->priv->on_battery;
+
+ return TRUE;
}
-static gboolean xfpm_engine_dbus_get_low_battery(XfpmEngine *engine,
- gboolean *OUT_low_battery,
- GError **error)
+static gboolean
+xfpm_engine_dbus_get_low_battery (XfpmEngine * engine,
+ gboolean * OUT_low_battery, GError ** error)
{
- TRACE("On low battery message received");
- *OUT_low_battery = xfpm_supply_on_low_battery (engine->priv->supply);
-
- return TRUE;
+ TRACE ("On low battery message received");
+ *OUT_low_battery = xfpm_supply_on_low_battery (engine->priv->supply);
+
+ return TRUE;
}
Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -63,9 +63,6 @@
GHashTable *hash;
gboolean adapter_present;
-
- XfpmShutdownRequest critical_action;
-
guint8 power_management;
};
@@ -248,10 +245,13 @@
static void
xfpm_supply_process_critical_action (XfpmSupply *supply)
{
- //FIXME: shouldn't happen
- g_return_if_fail (supply->priv->critical_action != XFPM_DO_SUSPEND );
-
- g_signal_emit (G_OBJECT(supply ), signals[SHUTDOWN_REQUEST], 0, TRUE, supply->priv->critical_action);
+ XfpmShutdownRequest critical_action =
+ xfpm_xfconf_get_property_enum (supply->priv->conf, CRITICAL_BATT_ACTION_CFG);
+
+ if ( G_UNLIKELY (critical_action == XFPM_DO_SUSPEND ) )
+ return;
+
+ g_signal_emit (G_OBJECT(supply ), signals[SHUTDOWN_REQUEST], 0, TRUE, critical_action);
}
static void
@@ -307,10 +307,13 @@
static void
xfpm_supply_handle_primary_critical (XfpmSupply *supply, XfpmBattery *battery)
{
+ XfpmShutdownRequest critical_action =
+ xfpm_xfconf_get_property_enum (supply->priv->conf, CRITICAL_BATT_ACTION_CFG);
+
if ( xfpm_supply_on_low_power (supply) )
{
TRACE ("System is running on low power");
- if ( supply->priv->critical_action == XFPM_DO_NOTHING )
+ if ( critical_action == XFPM_DO_NOTHING )
{
xfpm_supply_show_critical_action (supply, battery);
}
@@ -583,49 +586,6 @@
}
static void
-xfpm_supply_property_changed_cb (XfconfChannel *channel, gchar *property, GValue *value, XfpmSupply *supply)
-{
- if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
- return;
-
- 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)
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, CRITICAL_BATT_ACTION_CFG);
- supply->priv->critical_action = XFPM_DO_NOTHING;
- }
- else
- supply->priv->critical_action = val;
- }
-
-}
-
-static void
-xfpm_supply_load_configuration (XfpmSupply *supply)
-{
- //FIXME: Check if the action specified we can actually do it
- gchar *str;
- gint val;
-
- str = xfconf_channel_get_string (supply->priv->conf->channel, CRITICAL_BATT_ACTION_CFG, "Nothing");
- val = xfpm_shutdown_string_to_int (str);
-
- if ( val == -1 || val > 3 || val == 1)
- {
- g_warning ("Invalid value %s for property %s, using default\n", str, CRITICAL_BATT_ACTION_CFG);
- supply->priv->critical_action = XFPM_DO_NOTHING;
- xfconf_channel_set_string ( supply->priv->conf->channel, CRITICAL_BATT_ACTION_CFG, "Nothing");
- }
- else supply->priv->critical_action = val;
-
- g_free (str);
-
-}
-
-static void
xfpm_supply_adapter_changed_cb (XfpmAdapter *adapter, gboolean present, XfpmSupply *supply)
{
supply->priv->adapter_present = present;
@@ -650,14 +610,9 @@
supply->priv->adapter = xfpm_adapter_new ();
supply->priv->adapter_present = xfpm_adapter_get_present (supply->priv->adapter);
- xfpm_supply_load_configuration (supply);
-
g_signal_connect (supply->priv->adapter, "adapter-changed",
G_CALLBACK(xfpm_supply_adapter_changed_cb), supply);
- g_signal_connect (supply->priv->conf->channel, "property-changed",
- G_CALLBACK(xfpm_supply_property_changed_cb), supply);
-
xfpm_supply_monitor_start (supply);
g_signal_connect(supply->priv->power, "battery-added",
Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.c 2009-03-27 14:37:29 UTC (rev 7007)
@@ -26,41 +26,433 @@
#include <stdlib.h>
#include <string.h>
+#include <glib.h>
+#include <libxfce4util/libxfce4util.h>
+
+#include "libxfpm/xfpm-string.h"
+#include "libxfpm/xfpm-common.h"
+
#include "xfpm-xfconf.h"
+#include "xfpm-config.h"
+#include "xfpm-enum-glib.h"
/* Init */
static void xfpm_xfconf_class_init (XfpmXfconfClass *klass);
-static void xfpm_xfconf_init (XfpmXfconf *xfconf);
+static void xfpm_xfconf_init (XfpmXfconf *conf);
static void xfpm_xfconf_finalize (GObject *object);
+#define XFPM_XFCONF_GET_PRIVATE(o) \
+(G_TYPE_INSTANCE_GET_PRIVATE ((o), XFPM_TYPE_XFCONF, XfpmXfconfPrivate ))
+
static gpointer xfpm_xfconf_object = NULL;
+struct XfpmXfconfPrivate
+{
+ XfconfChannel *channel;
+
+ XfpmShutdownRequest sleep_button;
+ XfpmShutdownRequest lid_button_ac;
+ XfpmShutdownRequest lid_button_battery;
+ XfpmShutdownRequest critical_action;
+
+ gboolean lock_screen;
+#ifdef HAVE_DPMS
+ gboolean dpms_enabled;
+
+ guint16 dpms_sleep_on_battery;
+ guint16 dpms_off_on_battery;
+ guint16 dpms_sleep_on_ac;
+ guint16 dpms_off_on_ac;
+
+ gboolean sleep_dpms_mode; /*TRUE = standby FALSE = suspend*/
+#endif
+ gboolean power_save_on_battery;
+
+ guint16 brightness_on_ac_timeout;
+ guint16 brightness_on_battery_timeout;
+
+ XfpmShowIcon show_icon;
+ guint critical_level;
+};
+
+enum
+{
+ DPMS_SETTINGS_CHANGED,
+ POWER_SAVE_SETTINGS_CHANGED,
+ BRIGHTNESS_SETTINGS_CHANGED,
+ TRAY_ICON_SETTINGS_CHANGED,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
G_DEFINE_TYPE(XfpmXfconf, xfpm_xfconf, G_TYPE_OBJECT)
static void
+xfpm_xfconf_property_changed_cb (XfconfChannel *channel, gchar *property,
+ GValue *value, XfpmXfconf *conf)
+{
+ if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
+ return;
+
+ TRACE("Property modified: %s\n", property);
+
+ 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 )
+ {
+ g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
+ conf->priv->sleep_button = XFPM_DO_NOTHING;
+ }
+ else
+ conf->priv->sleep_button = val;
+ }
+ 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 )
+ {
+ 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;
+ }
+ else
+ conf->priv->lid_button_ac = val;
+ }
+ 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 )
+ {
+ 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;
+ }
+ else
+ conf->priv->lid_button_battery = val;
+ }
+ else if ( xfpm_strequal (property, LOCK_SCREEN_ON_SLEEP ) )
+ {
+ conf->priv->lock_screen = g_value_get_boolean (value);
+ }
+#ifdef HAVE_DPMS
+ if ( xfpm_strequal (property, DPMS_ENABLED_CFG) )
+ {
+ gboolean val = g_value_get_boolean (value);
+ conf->priv->dpms_enabled = val;
+ 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);
+ 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);
+ 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);
+ 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);
+ 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);
+ if ( xfpm_strequal (str, "sleep" ) )
+ {
+ conf->priv->sleep_dpms_mode = TRUE;
+ }
+ else if ( xfpm_strequal (str, "suspend") )
+ {
+ conf->priv->sleep_dpms_mode = FALSE;
+ }
+ else
+ {
+ g_critical("Invalid value %s for property %s\n", str, DPMS_SLEEP_MODE);
+ conf->priv->sleep_dpms_mode = TRUE;
+ }
+ g_signal_emit (G_OBJECT(conf), signals[DPMS_SETTINGS_CHANGED], 0);
+ }
+#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;
+ 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);
+
+ if ( val > 120 || val < 9)
+ {
+ g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_AC );
+ }
+ 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);
+
+ if ( val > 120 || val < 9)
+ {
+ g_warning ("Value %d for %s is out of range", val, BRIGHTNESS_ON_BATTERY );
+ }
+ 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)
+ {
+ g_warning ("Invalid value %s for property %s, using default\n", str, CRITICAL_BATT_ACTION_CFG);
+ conf->priv->critical_action = XFPM_DO_NOTHING;
+ }
+ else
+ conf->priv->critical_action = val;
+ }
+ else if ( xfpm_strequal (property, SHOW_TRAY_ICON_CFG) )
+ {
+ guint val = g_value_get_uint (value);
+ conf->priv->show_icon = val;
+ 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 )
+ {
+ g_warning ("Value %d for property %s is out of range \n", val, CRITICAL_POWER_LEVEL);
+ conf->priv->critical_level = 10;
+ }
+ else
+ conf->priv->critical_level = val;
+ }
+}
+
+static void
+xfpm_xfconf_load_configuration (XfpmXfconf *conf)
+{
+ gchar *str;
+ gint val;
+
+ str = xfconf_channel_get_string (conf->priv->channel, SLEEP_SWITCH_CFG, "Nothing");
+ val = xfpm_shutdown_string_to_int (str);
+
+ if ( 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;
+ xfconf_channel_set_string (conf->priv->channel, SLEEP_SWITCH_CFG, "Nothing");
+ }
+ else conf->priv->sleep_button = val;
+
+ g_free (str);
+
+ 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)
+ {
+ 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;
+ xfconf_channel_set_string (conf->priv->channel, LID_SWITCH_ON_AC_CFG, "Nothing");
+ }
+ else conf->priv->lid_button_ac = val;
+
+ g_free (str);
+
+ 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)
+ {
+ 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;
+ xfconf_channel_set_string (conf->priv->channel, LID_SWITCH_ON_BATTERY_CFG, "Nothing");
+ }
+ else conf->priv->lid_button_battery = val;
+
+ g_free (str);
+
+ conf->priv->lock_screen = xfconf_channel_get_bool (conf->priv->channel, LOCK_SCREEN_ON_SLEEP, TRUE);
+
+#ifdef HAVE_DPMS
+ conf->priv->dpms_enabled =
+ xfconf_channel_get_bool (conf->priv->channel, DPMS_ENABLED_CFG, TRUE);
+
+ conf->priv->dpms_sleep_on_battery =
+ MIN( xfconf_channel_get_uint( conf->priv->channel, ON_BATT_DPMS_SLEEP, 3) * 60, 3600);
+
+ conf->priv->dpms_off_on_battery =
+ MIN(xfconf_channel_get_uint( conf->priv->channel, ON_BATT_DPMS_OFF, 5) * 60, 3600);
+
+ conf->priv->dpms_sleep_on_ac =
+ MIN(xfconf_channel_get_uint( conf->priv->channel, ON_AC_DPMS_SLEEP, 10) * 60, 3600);
+
+ conf->priv->dpms_off_on_ac =
+ MIN(xfconf_channel_get_uint( conf->priv->channel, ON_AC_DPMS_OFF, 15) * 60, 3600);
+
+ str = xfconf_channel_get_string (conf->priv->channel, DPMS_SLEEP_MODE, "sleep");
+
+ if ( xfpm_strequal (str, "sleep" ) )
+ {
+ conf->priv->sleep_dpms_mode = 0;
+ }
+ else if ( xfpm_strequal (str, "suspend") )
+ {
+ conf->priv->sleep_dpms_mode = 1;
+ }
+ else
+ {
+ g_critical("Invalid value %s for property %s\n", str, DPMS_SLEEP_MODE);
+ conf->priv->sleep_dpms_mode = 0;
+ }
+ g_free (str);
+#endif /* HAVE_DPMS */
+ conf->priv->power_save_on_battery =
+ xfconf_channel_get_bool (conf->priv->channel, POWER_SAVE_ON_BATTERY, TRUE);
+
+ 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)
+ {
+ 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;
+ }
+
+ 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)
+ {
+ 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;
+ }
+
+ //FIXME: check if valid
+ str = xfconf_channel_get_string (conf->priv->channel, CRITICAL_BATT_ACTION_CFG, "Nothing");
+ conf->priv->critical_action = xfpm_shutdown_string_to_int (str);
+ g_free (str);
+
+ 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 )
+ {
+ 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);
+ }
+
+ 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 )
+ {
+ g_warning ("Value %d for property %s is out of range \n", conf->priv->critical_level, CRITICAL_POWER_LEVEL);
+ conf->priv->critical_level = 10;
+ }
+}
+
+static void
xfpm_xfconf_class_init (XfpmXfconfClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ signals[DPMS_SETTINGS_CHANGED] =
+ g_signal_new("dpms-settings-changed",
+ XFPM_TYPE_XFCONF,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(XfpmXfconfClass, dpms_settings_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0, G_TYPE_NONE);
+
+ signals[DPMS_SETTINGS_CHANGED] =
+ g_signal_new("power-save-settings-changed",
+ XFPM_TYPE_XFCONF,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(XfpmXfconfClass, power_save_settings_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0, G_TYPE_NONE);
+
+ signals[BRIGHTNESS_SETTINGS_CHANGED] =
+ g_signal_new("brightness-settings-changed",
+ XFPM_TYPE_XFCONF,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(XfpmXfconfClass, brightness_settings_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0, G_TYPE_NONE);
+
+ signals[TRAY_ICON_SETTINGS_CHANGED] =
+ g_signal_new("tray-icon-settings-changed",
+ XFPM_TYPE_XFCONF,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(XfpmXfconfClass, tray_icon_settings_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0, G_TYPE_NONE);
+
object_class->finalize = xfpm_xfconf_finalize;
+ g_type_class_add_private (klass, sizeof(XfpmXfconfPrivate));
}
static void
-xfpm_xfconf_init (XfpmXfconf *xfconf)
+xfpm_xfconf_init (XfpmXfconf *conf)
{
- xfconf->channel = xfconf_channel_new ("xfce4-power-manager");
+ GError *error = NULL;
+
+ conf->priv = XFPM_XFCONF_GET_PRIVATE (conf);
+
+ if ( !xfconf_init(&error) )
+ {
+ g_critical ("xfconf_init failed: %s\n", error->message);
+ g_error_free (error);
+ }
+ else
+ {
+
+ conf->priv->channel = xfconf_channel_new ("xfce4-power-manager");
+
+ g_signal_connect (conf->priv->channel, "property-changed",
+ G_CALLBACK (xfpm_xfconf_property_changed_cb), conf);
+ xfpm_xfconf_load_configuration (conf);
+ }
+ conf->channel = xfconf_channel_new ("xfce4-power-manager");
}
static void
xfpm_xfconf_finalize(GObject *object)
{
- XfpmXfconf *xfconf;
-
- xfconf = XFPM_XFCONF(object);
+ XfpmXfconf *conf;
- if (xfconf->channel )
- g_object_unref (xfconf->channel);
+ conf = XFPM_XFCONF(object);
+ if (conf->priv->channel )
+ g_object_unref (conf->priv->channel);
+
G_OBJECT_CLASS(xfpm_xfconf_parent_class)->finalize(object);
}
@@ -76,6 +468,74 @@
xfpm_xfconf_object = g_object_new (XFPM_TYPE_XFCONF, NULL);
g_object_add_weak_pointer (xfpm_xfconf_object, &xfpm_xfconf_object);
}
-
return XFPM_XFCONF (xfpm_xfconf_object);
}
+
+gboolean xfpm_xfconf_get_property_bool (XfpmXfconf *conf, const gchar *property)
+{
+ g_return_val_if_fail (XFPM_IS_XFCONF(conf), FALSE);
+
+ if ( xfpm_strequal (property, LOCK_SCREEN_ON_SLEEP))
+ return conf->priv->lock_screen;
+ else if ( xfpm_strequal (property, POWER_SAVE_ON_BATTERY ) )
+ return conf->priv->power_save_on_battery;
+#ifdef HAVE_DPMS
+ else if ( xfpm_strequal (property, DPMS_SLEEP_MODE ))
+ return conf->priv->sleep_dpms_mode;
+ else if ( xfpm_strequal (property, DPMS_ENABLED_CFG) )
+ return conf->priv->dpms_enabled;
+#endif /* HAVE_DPMS */
+
+#if GLIB_CHECK_VERSION (2, 16, 0)
+ g_warn_if_reached ();
+#endif
+ return FALSE;
+}
+
+guint8 xfpm_xfconf_get_property_enum (XfpmXfconf *conf, const gchar *property)
+{
+ g_return_val_if_fail (XFPM_IS_XFCONF(conf), 0);
+
+ if ( xfpm_strequal (property, LID_SWITCH_ON_AC_CFG) )
+ return conf->priv->lid_button_ac;
+ else if ( xfpm_strequal (property, LID_SWITCH_ON_BATTERY_CFG) )
+ return conf->priv->lid_button_battery;
+ else if ( xfpm_strequal (property, SLEEP_SWITCH_CFG) )
+ return conf->priv->sleep_button;
+ else if ( xfpm_strequal (property, CRITICAL_BATT_ACTION_CFG) )
+ return conf->priv->critical_action;
+ else if ( xfpm_strequal (property, SHOW_TRAY_ICON_CFG ) )
+ return conf->priv->show_icon;
+
+#if GLIB_CHECK_VERSION (2, 16, 0)
+ g_warn_if_reached ();
+#endif
+ return 0;
+}
+
+gint xfpm_xfconf_get_property_int (XfpmXfconf *conf, const gchar *property)
+{
+ g_return_val_if_fail (XFPM_IS_XFCONF(conf), 0);
+
+#ifdef HAVE_DPMS
+ if ( xfpm_strequal (property, ON_AC_DPMS_SLEEP))
+ return conf->priv->dpms_sleep_on_ac;
+ else if ( xfpm_strequal (property, ON_BATT_DPMS_SLEEP))
+ return conf->priv->dpms_sleep_on_battery;
+ else if ( xfpm_strequal (property, ON_AC_DPMS_OFF))
+ return conf->priv->dpms_off_on_ac;
+ else if ( xfpm_strequal (property, ON_BATT_DPMS_OFF))
+ return conf->priv->dpms_off_on_battery;
+ else if ( xfpm_strequal (property, BRIGHTNESS_ON_AC ) )
+ return conf->priv->brightness_on_ac_timeout;
+ else if ( xfpm_strequal (property, BRIGHTNESS_ON_BATTERY ))
+ return conf->priv->brightness_on_battery_timeout;
+ else if ( xfpm_strequal (property, CRITICAL_POWER_LEVEL) )
+ return conf->priv->critical_level;
+#endif /* HAVE_DPMS */
+
+#if GLIB_CHECK_VERSION (2, 16, 0)
+ g_warn_if_reached ();
+#endif
+ return 0;
+}
Modified: xfce4-power-manager/trunk/src/xfpm-xfconf.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-xfconf.h 2009-03-26 19:43:39 UTC (rev 7006)
+++ xfce4-power-manager/trunk/src/xfpm-xfconf.h 2009-03-27 14:37:29 UTC (rev 7007)
@@ -31,11 +31,13 @@
#define XFPM_XFCONF(o) (G_TYPE_CHECK_INSTANCE_CAST((o), XFPM_TYPE_XFCONF, XfpmXfconf))
#define XFPM_IS_XFCONF(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), XFPM_TYPE_XFCONF))
+typedef struct XfpmXfconfPrivate XfpmXfconfPrivate;
typedef struct
{
GObject parent;
XfconfChannel *channel;
+ XfpmXfconfPrivate *priv;
} XfpmXfconf;
@@ -43,11 +45,27 @@
{
GObjectClass parent_class;
+ void (*dpms_settings_changed) (XfpmXfconf *conf);
+
+ void (*power_save_settings_changed) (XfpmXfconf *conf);
+
+ void (*brightness_settings_changed) (XfpmXfconf *conf);
+
+ void (*tray_icon_settings_changed) (XfpmXfconf *conf);
+
} XfpmXfconfClass;
-GType xfpm_xfconf_get_type (void) G_GNUC_CONST;
-XfpmXfconf *xfpm_xfconf_new (void);
+GType xfpm_xfconf_get_type (void) G_GNUC_CONST;
+XfpmXfconf *xfpm_xfconf_new (void);
+gboolean xfpm_xfconf_get_property_bool (XfpmXfconf *conf,
+ const gchar *property) G_GNUC_PURE;
+
+guint8 xfpm_xfconf_get_property_enum (XfpmXfconf *conf,
+ const gchar *property) G_GNUC_PURE;
+
+gint xfpm_xfconf_get_property_int (XfpmXfconf *conf,
+ const gchar *property) G_GNUC_PURE;
G_END_DECLS
#endif /* __XFPM_XFCONF_H */
More information about the Goodies-commits
mailing list