[Goodies-commits] r6886 - in xfce4-power-manager/trunk: . settings src
Ali Abdallah
aliov at xfce.org
Wed Mar 11 20:38:52 CET 2009
Author: aliov
Date: 2009-03-11 19:38:52 +0000 (Wed, 11 Mar 2009)
New Revision: 6886
Modified:
xfce4-power-manager/trunk/ChangeLog
xfce4-power-manager/trunk/settings/xfpm-settings.c
xfce4-power-manager/trunk/settings/xfpm-settings.glade
xfce4-power-manager/trunk/src/xfpm-battery.c
xfce4-power-manager/trunk/src/xfpm-battery.h
xfce4-power-manager/trunk/src/xfpm-config.h
xfce4-power-manager/trunk/src/xfpm-engine.c
xfce4-power-manager/trunk/src/xfpm-supply.c
Log:
Implement critical battery level settings+the option to disable lock screen when suspend/hibernate
Modified: xfce4-power-manager/trunk/ChangeLog
===================================================================
--- xfce4-power-manager/trunk/ChangeLog 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/ChangeLog 2009-03-11 19:38:52 UTC (rev 6886)
@@ -1,4 +1,7 @@
+2009-03-11 20:38 Ali aliov at xfce.org
+ * : Implement critical battery level settings+the option to disable lock screen when suspend/hibernate
+
2009-03-11 13:33 Ali aliov at xfce.org
* : Set dpms to standby or suspend depending on the user settings
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.c
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.c 2009-03-11 19:38:52 UTC (rev 6886)
@@ -286,6 +286,18 @@
}
#endif
+static gboolean
+critical_spin_output_cb (GtkSpinButton *w, gpointer data)
+{
+ gint val = (gint) gtk_spin_button_get_value (w);
+ gchar *text = g_strdup_printf ("%d %%", val);
+
+ gtk_entry_set_text (GTK_ENTRY(w), text);
+ g_free (text);
+
+ return TRUE;
+}
+
static void
on_battery_lid_changed_cb (GtkWidget *w, XfconfChannel *channel)
{
@@ -335,6 +347,27 @@
}
static void
+critical_level_value_changed_cb (GtkSpinButton *w, XfconfChannel *channel)
+{
+ guint val = (guint) gtk_spin_button_get_value (w);
+
+ if (!xfconf_channel_get_uint (channel, CRITICAL_POWER_LEVEL, val) )
+ {
+ g_critical ("Unable to set value %d for property %s\n", val, CRITICAL_POWER_LEVEL);
+ }
+}
+
+static void
+lock_screen_toggled_cb (GtkWidget *w, XfconfChannel *channel)
+{
+ gboolean val = (gint) gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
+ if ( !xfconf_channel_set_bool (channel, LOCK_SCREEN_ON_SLEEP, val) )
+ {
+ g_critical ("Unable to set value for property %s\n", LOCK_SCREEN_ON_SLEEP);
+ }
+}
+
+static void
xfpm_settings_on_battery (XfconfChannel *channel)
{
gint val;
@@ -348,12 +381,13 @@
gtk_list_store_append(list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Nothing"), 1, 0, -1);
- gtk_list_store_append(list_store, &iter);
- gtk_list_store_set (list_store, &iter, 0, _("Suspend"), 1, 1, -1);
gtk_list_store_append(list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Hibernate"), 1, 2, -1);
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set (list_store, &iter, 0, _("Shutdown"), 1, 3, -1);
+
g_signal_connect (battery_critical, "changed",
G_CALLBACK(battery_critical_changed_cb), channel);
@@ -361,7 +395,7 @@
val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 || val == 3 /*we don't do shutdown here */)
+ if ( val == -1 || val == 1 /* we don't do suspend */)
{
g_warning ("Invalid value %s for property %s\n", str, CRITICAL_BATT_ACTION_CFG);
gtk_combo_box_set_active (GTK_COMBO_BOX(battery_critical), 0);
@@ -573,15 +607,12 @@
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Hibernate"), 1, 2, -1);
- gtk_list_store_append(list_store, &iter);
- gtk_list_store_set (list_store, &iter, 0, _("Shutdown"), 1, 3, -1);
-
g_signal_connect (sleep, "changed",
G_CALLBACK(set_sleep_changed_cb), channel);
gchar *default_sleep_value = xfconf_channel_get_string (channel, SLEEP_SWITCH_CFG, "Nothing");
gint sleep_val_int = xfpm_shutdown_string_to_int (default_sleep_value );
- if ( sleep_val_int == -1)
+ if ( sleep_val_int == -1 || sleep_val_int == 3 )
{
g_warning ("Invalid value %s for property %s\n", default_sleep_value, SLEEP_SWITCH_CFG);
gtk_combo_box_set_active (GTK_COMBO_BOX(sleep), 0);
@@ -631,6 +662,36 @@
#endif
+ /*
+ * Critical battery level
+ */
+ GtkWidget *critical_level = glade_xml_get_widget (xml, "critical-spin");
+
+ g_signal_connect (critical_level, "output",
+ G_CALLBACK(critical_spin_output_cb), NULL);
+ g_signal_connect (critical_level, "value-changed",
+ G_CALLBACK(critical_level_value_changed_cb), channel);
+
+ guint val = xfconf_channel_get_uint (channel, CRITICAL_POWER_LEVEL, 10 );
+
+ if ( val > 20 )
+ {
+ g_critical ("Value %d if out of range for property %s\n", val, CRITICAL_POWER_LEVEL);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(critical_level), 10);
+ }
+ else
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON(critical_level), 10);
+
+ /*
+ * Lock screen for suspend/hibernate
+ */
+ GtkWidget *lock = glade_xml_get_widget (xml, "lock-screen");
+
+ val = xfconf_channel_get_bool (channel, LOCK_SCREEN_ON_SLEEP, TRUE);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(lock), val);
+ g_signal_connect (lock, "toggled",
+ G_CALLBACK(lock_screen_toggled_cb), channel);
+
}
static void
Modified: xfce4-power-manager/trunk/settings/xfpm-settings.glade
===================================================================
--- xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/settings/xfpm-settings.glade 2009-03-11 19:38:52 UTC (rev 6886)
@@ -876,7 +876,7 @@
<child>
<widget class="GtkLabel" id="label3">
<property name="visible">True</property>
- <property name="label" translatable="yes">Considre the computer on low power when the main power reaches:</property>
+ <property name="label" translatable="yes">Consider the computer on low power when the main power reaches:</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -884,13 +884,14 @@
</packing>
</child>
<child>
- <widget class="GtkSpinButton" id="spinbutton1">
+ <widget class="GtkSpinButton" id="critical-spin">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="invisible_char">●</property>
+ <property name="caps_lock_warning">False</property>
+ <property name="adjustment">5 5 20 1 0 0</property>
</widget>
<packing>
- <property name="expand">False</property>
<property name="position">1</property>
</packing>
</child>
@@ -901,7 +902,17 @@
</packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkCheckButton" id="lock-screen">
+ <property name="label" translatable="yes">Lock screen when going for suspend/hibernate</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">2</property>
+ </packing>
</child>
</widget>
</child>
Modified: xfce4-power-manager/trunk/src/xfpm-battery.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.c 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/src/xfpm-battery.c 2009-03-11 19:38:52 UTC (rev 6886)
@@ -63,6 +63,7 @@
XfpmShowIcon show_icon;
XfpmBatteryState state;
+ guint critical_level;
};
enum
@@ -269,7 +270,8 @@
gboolean is_discharging,
guint32 last_full,
guint32 current_charge,
- guint percentage)
+ guint percentage,
+ guint8 critical_level)
{
if ( !is_charging && !is_discharging && last_full == current_charge )
{
@@ -288,17 +290,17 @@
}
else if ( !is_charging && is_discharging )
{
- if ( percentage > 20 )
+ if ( percentage >= 30 )
{
*state = BATTERY_IS_DISCHARGING;
return _("is discharging");
}
- else if ( percentage >= 10 && percentage < 20)
+ else if ( percentage >= critical_level && percentage < 30)
{
*state = BATTERY_CHARGE_LOW;
return _("charge is low");
}
- else if ( percentage < 10 )
+ else if ( percentage < critical_level )
{
*state = BATTERY_CHARGE_CRITICAL;
return _("is almost empty");
@@ -324,7 +326,8 @@
XfpmBatteryState state = battery->priv->state;
const gchar *str = xfpm_battery_get_battery_state (&state, is_charging, is_discharging,
- last_full, current_charge, percentage);
+ last_full, current_charge, percentage,
+ battery->priv->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);
@@ -349,7 +352,7 @@
}
str = xfpm_battery_get_battery_state (&state, is_charging, is_discharging,
- last_full, current_charge, percentage);
+ last_full, current_charge, percentage, battery->priv->critical_level);
if ( time != 0 && time <= 28800 /* 8 hours */ &&
state != BATTERY_FULLY_CHARGED && state != BATTERY_NOT_FULLY_CHARGED )
@@ -568,3 +571,10 @@
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-battery.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-battery.h 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/src/xfpm-battery.h 2009-03-11 19:38:52 UTC (rev 6886)
@@ -69,6 +69,8 @@
GtkStatusIcon *xfpm_battery_get_status_icon (XfpmBattery *battery);
const gchar *xfpm_battery_get_icon_name (XfpmBattery *battery);
void xfpm_battery_show_info (XfpmBattery *battery);
+void xfpm_battery_set_critical_level (XfpmBattery *battery,
+ guint8 critical_level);
G_END_DECLS
Modified: xfce4-power-manager/trunk/src/xfpm-config.h
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-config.h 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/src/xfpm-config.h 2009-03-11 19:38:52 UTC (rev 6886)
@@ -31,9 +31,12 @@
/* Configuration */
#define XFPM_CHANNEL_CFG "xfce4-power-manager"
#define CRITICAL_BATT_ACTION_CFG "/xfce4-power-manager/critical-battery-action"
+#define CRITICAL_POWER_LEVEL "/xfce4-power-manager/critical-power-level"
#define POWER_SAVE_ON_BATTERY "/xfce4-power-manager/power-save-on-battery"
+#define LOCK_SCREEN_ON_SLEEP "/xfce4-power-manager/lock-screen-suspend-hibernate"
+
#define LCD_BRIGHTNESS_CFG "/xfce4-power-manager/lcd-brightness"
#define LID_SWITCH_ON_AC_CFG "/xfce4-power-manager/lid-action-on-ac"
#define LID_SWITCH_ON_BATTERY_CFG "/xfce4-power-manager/lid-action-on-battery"
Modified: xfce4-power-manager/trunk/src/xfpm-engine.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/src/xfpm-engine.c 2009-03-11 19:38:52 UTC (rev 6886)
@@ -93,6 +93,7 @@
XfpmShutdownRequest sleep_button;
XfpmShutdownRequest lid_button_ac;
XfpmShutdownRequest lid_button_battery;
+ gboolean lock_screen;
};
@@ -174,9 +175,10 @@
{
TRACE("Going to do %s\n", action);
xfpm_send_message_to_network_manager ("sleep");
- xfpm_lock_screen ();
- if ( shutdown != XFPM_DO_SHUTDOWN )
+
+ if ( shutdown != XFPM_DO_SHUTDOWN && engine->priv->lock_screen )
xfpm_lock_screen ();
+
dbus_hal_shutdown (engine->priv->hbus, action, NULL);
xfpm_send_message_to_network_manager ("wake");
}
@@ -307,7 +309,7 @@
str = xfconf_channel_get_string (engine->priv->channel, SLEEP_SWITCH_CFG, "Nothing");
val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 )
+ 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;
@@ -343,6 +345,7 @@
g_free (str);
+ engine->priv->lock_screen = xfconf_channel_get_bool (engine->priv->channel, LOCK_SCREEN_ON_SLEEP, TRUE);
}
static void
@@ -355,7 +358,7 @@
{
const gchar *str = g_value_get_string (value);
gint val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 )
+ if ( val == -1 || val == 1 )
{
g_warning ("Invalid value %s for property %s, using default\n", str, SLEEP_SWITCH_CFG);
engine->priv->sleep_button = XFPM_DO_NOTHING;
@@ -387,18 +390,12 @@
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_reset_all_properties (XfpmEngine *engine)
-{
-
-}
-*/
XfpmEngine *
xfpm_engine_new(void)
{
Modified: xfce4-power-manager/trunk/src/xfpm-supply.c
===================================================================
--- xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-11 12:33:35 UTC (rev 6885)
+++ xfce4-power-manager/trunk/src/xfpm-supply.c 2009-03-11 19:38:52 UTC (rev 6886)
@@ -65,7 +65,7 @@
gboolean adapter_found;
gboolean adapter_present;
-
+ guint8 critical_level;
guint8 power_management;
};
@@ -611,6 +611,7 @@
XfpmBattery *battery = xfpm_battery_new (device);
xfpm_battery_set_show_icon (battery, supply->priv->show_icon);
xfpm_battery_set_adapter_presence (battery, supply->priv->adapter_present);
+ xfpm_battery_set_critical_level (battery, supply->priv->critical_level);
g_hash_table_insert (supply->priv->hash, g_strdup(udi), battery);
g_signal_connect (G_OBJECT(battery), "battery-state-changed",
@@ -713,9 +714,31 @@
g_list_free (list);
}
-//static void
-//xfpm_supply_check_configuration (const gchar *property,
static void
+xfpm_supply_set_critical_power_level (XfpmSupply *supply)
+{
+ GList *list = NULL;
+
+ list = g_hash_table_get_values (supply->priv->hash);
+
+ if ( !list )
+ return;
+
+ int i;
+ for ( i = 0; i<g_list_length(list); i++)
+ {
+ XfpmBattery *battery = NULL;
+ battery = (XfpmBattery *) g_list_nth_data(list, i);
+
+ if ( battery )
+ {
+ xfpm_battery_set_critical_level (battery, supply->priv->critical_level);
+ }
+ }
+ g_list_free (list);
+}
+
+static void
xfpm_supply_property_changed_cb (XfconfChannel *channel, gchar *property, GValue *value, XfpmSupply *supply)
{
if ( G_VALUE_TYPE(value) == G_TYPE_INVALID )
@@ -725,7 +748,7 @@
{
const gchar *str = g_value_get_string (value);
gint val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 || val == 3 )
+ 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;
@@ -739,6 +762,19 @@
supply->priv->show_icon = val;
xfpm_supply_set_battery_show_tray_icon (supply);
}
+ 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);
+ supply->priv->critical_level = 10;
+ }
+ else
+ supply->priv->critical_level = val;
+
+ xfpm_supply_set_critical_power_level (supply);
+ }
}
static void
@@ -751,7 +787,7 @@
str = xfconf_channel_get_string (supply->priv->channel, CRITICAL_BATT_ACTION_CFG, "Nothing");
val = xfpm_shutdown_string_to_int (str);
- if ( val == -1 || val > 3 )
+ 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;
More information about the Goodies-commits
mailing list