[Xfce4-commits] <xfce4-power-manager:master> Add configuration for tuning brightness level on AC and on battery power
Ali Abdallah
noreply at xfce.org
Tue Feb 15 15:06:03 CET 2011
Updating branch refs/heads/master
to 05b6149b1b1070c9808bfbbc787c362efd1652e7 (commit)
from 3e26c5d1eee93c073ece30655a133af50d8d1338 (commit)
commit 05b6149b1b1070c9808bfbbc787c362efd1652e7
Author: Ali Abdallah <aliov at xfce.org>
Date: Tue Feb 15 14:06:23 2011 +0100
Add configuration for tuning brightness level on AC and on battery power
data/interfaces/xfpm-settings.ui | 81 ++++++++++++++++++++++++++++++++++++++
settings/xfpm-settings.c | 54 +++++++++++++++++++++++++-
src/xfpm-backlight.c | 13 +++++-
src/xfpm-config.h | 4 ++
src/xfpm-xfconf.c | 27 +++++++++++++
5 files changed, 176 insertions(+), 3 deletions(-)
diff --git a/data/interfaces/xfpm-settings.ui b/data/interfaces/xfpm-settings.ui
index 2614fb5..98f8710 100644
--- a/data/interfaces/xfpm-settings.ui
+++ b/data/interfaces/xfpm-settings.ui
@@ -662,6 +662,41 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Level:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="brg-level-on-ac">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment10</property>
+ <property name="update_policy">if-valid</property>
+ <signal name="value_changed" handler="brightness_level_on_ac"/>
+ <signal name="output" handler="critical_spin_output_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -1055,6 +1090,40 @@
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkHBox" id="hbox2">
+ <property name="visible">True</property>
+ <property name="spacing">10</property>
+ <child>
+ <object class="GtkLabel" id="label2">
+ <property name="visible">True</property>
+ <property name="xalign">0.46000000834465027</property>
+ <property name="label" translatable="yes">Level:</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="brg-level-on-battery">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">●</property>
+ <property name="adjustment">adjustment11</property>
+ <signal name="value_changed" handler="brightness_level_on_battery"/>
+ <signal name="output" handler="critical_spin_output_cb"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
</child>
</object>
@@ -1360,4 +1429,16 @@
<action-widget response="0">close-button</action-widget>
</action-widgets>
</object>
+ <object class="GtkAdjustment" id="adjustment10">
+ <property name="value">80</property>
+ <property name="lower">1</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment11">
+ <property name="value">20</property>
+ <property name="lower">1</property>
+ <property name="upper">100</property>
+ <property name="step_increment">1</property>
+ </object>
</interface>
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index 1d686ac..0d83734 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -62,6 +62,12 @@ static gboolean lcd_brightness = FALSE;
/*
* GtkBuilder callbacks
*/
+void brightness_level_on_ac (GtkSpinButton *w,
+ XfconfChannel *channel);
+
+void brightness_level_on_battery (GtkSpinButton *w,
+ XfconfChannel *channel);
+
void battery_critical_changed_cb (GtkWidget *w,
XfconfChannel *channel);
@@ -158,6 +164,28 @@ void on_ac_spin_changed (GtkWidget *w,
void _cursor_changed_cb (GtkTreeView *view,
gpointer data);
+
+
+void brightness_level_on_ac (GtkSpinButton *w, XfconfChannel *channel)
+{
+ gint val = (gint) gtk_spin_button_get_value (w);
+
+ if (!xfconf_channel_set_int (channel, PROPERTIES_PREFIX BRIGHTNESS_LEVEL_ON_AC, val) )
+ {
+ g_critical ("Unable to set value %d for property %s\n", val, BRIGHTNESS_LEVEL_ON_AC);
+ }
+}
+
+void brightness_level_on_battery (GtkSpinButton *w, XfconfChannel *channel)
+{
+ gint val = (gint) gtk_spin_button_get_value (w);
+
+ if (!xfconf_channel_set_int (channel, PROPERTIES_PREFIX BRIGHTNESS_LEVEL_ON_BATTERY, val) )
+ {
+ g_critical ("Unable to set value %d for property %s\n", val, BRIGHTNESS_LEVEL_ON_BATTERY);
+ }
+}
+
void
battery_critical_changed_cb (GtkWidget *w, XfconfChannel *channel)
{
@@ -860,6 +888,8 @@ xfpm_settings_on_battery (XfconfChannel *channel, gboolean auth_hibernate,
gtk_list_store_append(list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Lock screen"), 1, LID_TRIGGER_LOCK_SCREEN, -1);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (lid), XFPM_DO_NOTHING);
+
val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX LID_SWITCH_ON_BATTERY_CFG, LID_TRIGGER_LOCK_SCREEN);
for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
@@ -889,10 +919,17 @@ xfpm_settings_on_battery (XfconfChannel *channel, gboolean auth_hibernate,
brg = GTK_WIDGET (gtk_builder_get_object (xml ,"brg-on-battery"));
if ( has_lcd_brightness )
{
+ GtkWidget *brg_level;
+
val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX BRIGHTNESS_ON_BATTERY, 120);
gtk_range_set_value (GTK_RANGE(brg), val);
+ brg_level = GTK_WIDGET (gtk_builder_get_object (xml ,"brg-level-on-battery"));
+
+ val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX BRIGHTNESS_LEVEL_ON_BATTERY, 20);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (brg_level), val);
+
}
else
{
@@ -998,6 +1035,8 @@ xfpm_settings_on_ac (XfconfChannel *channel, gboolean auth_suspend,
gtk_list_store_append(list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Lock screen"), 1, LID_TRIGGER_LOCK_SCREEN, -1);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (lid), 0);
+
val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX LID_SWITCH_ON_AC_CFG, LID_TRIGGER_LOCK_SCREEN);
for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
valid;
@@ -1027,10 +1066,17 @@ xfpm_settings_on_ac (XfconfChannel *channel, gboolean auth_suspend,
brg = GTK_WIDGET (gtk_builder_get_object (xml ,"brg-on-ac"));
if ( has_lcd_brightness )
{
+ GtkWidget *brg_level;
+
val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX BRIGHTNESS_ON_AC, 9);
gtk_range_set_value (GTK_RANGE(brg), val);
+ brg_level = GTK_WIDGET (gtk_builder_get_object (xml ,"brg-level-on-ac"));
+
+ val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX BRIGHTNESS_LEVEL_ON_AC, 80);
+ gtk_spin_button_set_value (GTK_SPIN_BUTTON (brg_level), val);
+
}
else
{
@@ -1169,6 +1215,8 @@ xfpm_settings_general (XfconfChannel *channel, gboolean auth_hibernate,
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Ask"), 1, XFPM_ASK, -1);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (power), 0);
+
value = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX POWER_SWITCH_CFG, XFPM_DO_NOTHING);
for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
valid;
@@ -1220,6 +1268,8 @@ xfpm_settings_general (XfconfChannel *channel, gboolean auth_hibernate,
value = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX HIBERNATE_SWITCH_CFG, XFPM_DO_NOTHING);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (hibernate), 0);
+
for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
valid;
valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list_store), &iter) )
@@ -1268,6 +1318,8 @@ xfpm_settings_general (XfconfChannel *channel, gboolean auth_hibernate,
gtk_list_store_append (list_store, &iter);
gtk_list_store_set (list_store, &iter, 0, _("Ask"), 1, XFPM_ASK, -1);
+ gtk_combo_box_set_active (GTK_COMBO_BOX (sleep_w), 0);
+
value = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX SLEEP_SWITCH_CFG, XFPM_DO_NOTHING);
for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list_store), &iter);
valid;
@@ -1384,7 +1436,7 @@ xfpm_settings_advanced (XfconfChannel *channel, gboolean system_laptop,
val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX CRITICAL_POWER_LEVEL, 10);
- if ( val > 20 || val < 5)
+ if ( val > 20 || val < 1)
{
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);
diff --git a/src/xfpm-backlight.c b/src/xfpm-backlight.c
index f6043bc..d69c588 100644
--- a/src/xfpm-backlight.c
+++ b/src/xfpm-backlight.c
@@ -88,6 +88,12 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
if (xfpm_power_get_mode (backlight->priv->power) == XFPM_POWER_MODE_NORMAL )
{
+ gint dim_level;
+
+ g_object_get (G_OBJECT (backlight->priv->conf),
+ backlight->priv->on_battery ? BRIGHTNESS_LEVEL_ON_BATTERY : BRIGHTNESS_LEVEL_ON_AC, &dim_level,
+ NULL);
+
ret = xfpm_brightness_get_level (backlight->priv->brightness, &backlight->priv->last_level);
if ( !ret )
@@ -95,9 +101,12 @@ xfpm_backlight_dim_brightness (XfpmBacklight *backlight)
g_warning ("Unable to get current brightness level");
return;
}
- XFPM_DEBUG ("Current brightness level before dimming : %u", backlight->priv->last_level);
- backlight->priv->dimmed = xfpm_brightness_dim_down (backlight->priv->brightness);
+ dim_level = dim_level * backlight->priv->max_level / 100;
+
+ XFPM_DEBUG ("Current brightness level before dimming : %i, new %i", backlight->priv->last_level, dim_level);
+
+ backlight->priv->dimmed = xfpm_brightness_set_level (backlight->priv->brightness, dim_level);
}
}
diff --git a/src/xfpm-config.h b/src/xfpm-config.h
index 87767cb..39f55cc 100644
--- a/src/xfpm-config.h
+++ b/src/xfpm-config.h
@@ -58,6 +58,10 @@ G_BEGIN_DECLS
#define BRIGHTNESS_ON_AC "brightness-on-ac"
#define BRIGHTNESS_ON_BATTERY "brightness-on-battery"
+
+#define BRIGHTNESS_LEVEL_ON_AC "brightness-level-on-ac"
+#define BRIGHTNESS_LEVEL_ON_BATTERY "brightness-level-on-battery"
+
#define CRITICAL_POWER_LEVEL "critical-power-level"
#define SHOW_BRIGHTNESS_POPUP "show-brightness-popup"
#define ENABLE_BRIGHTNESS_CONTROL "change-brightness-on-key-events"
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index 68f409e..9bef947 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -64,6 +64,8 @@ enum
PROP_SLEEP_BUTTON,
PROP_LID_ACTION_ON_AC,
PROP_LID_ACTION_ON_BATTERY,
+ PROP_BRIGHTNESS_LEVEL_ON_AC,
+ PROP_BRIGHTNESS_LEVEL_ON_BATTERY,
#ifdef HAVE_DPMS
PROP_ENABLE_DPMS,
PROP_DPMS_SLEEP_ON_AC,
@@ -331,6 +333,31 @@ xfpm_xfconf_class_init (XfpmXfconfClass *klass)
LID_TRIGGER_LOCK_SCREEN,
LID_TRIGGER_LOCK_SCREEN,
G_PARAM_READWRITE));
+
+ /**
+ * XfpmXfconf::brightness-level-on-ac
+ **/
+ g_object_class_install_property (object_class,
+ PROP_BRIGHTNESS_LEVEL_ON_AC,
+ g_param_spec_int (BRIGHTNESS_LEVEL_ON_AC,
+ NULL, NULL,
+ 1,
+ 100,
+ 80,
+ G_PARAM_READWRITE));
+
+ /**
+ * XfpmXfconf::brightness-level-on-battery
+ **/
+ g_object_class_install_property (object_class,
+ PROP_BRIGHTNESS_LEVEL_ON_BATTERY,
+ g_param_spec_int (BRIGHTNESS_LEVEL_ON_BATTERY,
+ NULL, NULL,
+ 1,
+ 100,
+ 20,
+ G_PARAM_READWRITE));
+
/**
* XfpmXfconf::lid-action-on-battery
**/
More information about the Xfce4-commits
mailing list