Updating branch refs/heads/master
         to 05b6149b1b1070c9808bfbbc787c362efd1652e7 (commit)
       from 3e26c5d1eee93c073ece30655a133af50d8d1338 (commit)

commit 05b6149b1b1070c9808bfbbc787c362efd1652e7
Author: Ali Abdallah <[email protected]>
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
      **/
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits

Reply via email to