[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">&#x25CF;</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">&#x25CF;</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