[Xfce4-commits] [xfce/xfce4-power-manager] 47/64: Use a single combobox to manage hdd spindown

noreply at xfce.org noreply at xfce.org
Mon May 26 06:00:42 CEST 2014


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository xfce/xfce4-power-manager.

commit d07ff1b789618514cdc118a51526eadc772dc665
Author: Simon Steinbeiss <simon.steinbeiss at elfenbeinturm.at>
Date:   Thu May 15 19:55:07 2014 +0200

    Use a single combobox to manage hdd spindown
---
 common/xfpm-enum-glib.h          |    9 ++++
 data/interfaces/xfpm-settings.ui |   57 ++++++++++++-----------
 settings/xfpm-settings.c         |   94 ++++++++++++++++++++++++++------------
 src/xfpm-config.h                |    3 +-
 src/xfpm-disks.c                 |   20 +++++---
 src/xfpm-xfconf.c                |   23 +++-------
 6 files changed, 122 insertions(+), 84 deletions(-)

diff --git a/common/xfpm-enum-glib.h b/common/xfpm-enum-glib.h
index 65a3a4e..c7cfe3f 100644
--- a/common/xfpm-enum-glib.h
+++ b/common/xfpm-enum-glib.h
@@ -75,6 +75,15 @@ typedef enum
 } XfpmButtonKey;
 
 typedef enum
+ {
+    SPIN_DOWN_HDD_NEVER,
+    SPIN_DOWN_HDD_ON_BATTERY,
+    SPIN_DOWN_HDD_PLUGGED_IN,
+    SPIN_DOWN_HDD_ALWAYS
+
+} XfpmSpindownRequest;
+
+typedef enum
 {
     SHOW_ICON_ALWAYS,
     SHOW_ICON_WHEN_BATTERY_PRESENT,
diff --git a/data/interfaces/xfpm-settings.ui b/data/interfaces/xfpm-settings.ui
index 0e85e9a..44baeec 100644
--- a/data/interfaces/xfpm-settings.ui
+++ b/data/interfaces/xfpm-settings.ui
@@ -658,35 +658,23 @@
                                   </packing>
                                 </child>
                                 <child>
-                                  <object class="GtkCheckButton" id="spin-down-on-battery">
-                                     <property name="visible">True</property>
-                                     <property name="can_focus">True</property>
-                                     <property name="receives_default">False</property>
-                                     <property name="label" translatable="yes">On battery</property>
-                                     <property name="draw_indicator">True</property>
-                                     <signal name="toggled" handler="on_battery_spin_changed"/>
-                                   </object>
-                                   <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                   </packing>
-                                 </child>
-                                 <child>
-                                  <object class="GtkCheckButton" id="spin-down-on-ac">
-                                     <property name="visible">True</property>
-                                     <property name="can_focus">True</property>
-                                     <property name="receives_default">False</property>
-                                     <property name="label" translatable="yes">Plugged in</property>
-                                     <property name="draw_indicator">True</property>
-                                     <signal name="toggled" handler="on_ac_spin_changed"/>
-                                   </object>
-                                   <packing>
-                                    <property name="expand">False</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">2</property>
-                                   </packing>
-                                 </child>
+                                  <object class="GtkComboBox" id="spin-down-hdd">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <signal name="changed" handler="on_spindown_hdd_changed" swapped="no"/>
+                                    <child>
+                                      <object class="GtkCellRendererText" id="renderer10"/>
+                                      <attributes>
+                                        <attribute name="text">0</attribute>
+                                      </attributes>
+                                    </child>
+                                  </object>
+                                  <packing>
+                                   <property name="expand">False</property>
+                                   <property name="fill">True</property>
+                                   <property name="position">1</property>
+                                  </packing>
+                                </child>
                               </object>
                             </child>
                           </object>
@@ -1304,4 +1292,15 @@
       </row>
     </data>
   </object>
+  <object class="GtkListStore" id="model10">
+    <columns>
+      <!-- column-name gchararray -->
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">Nothing</col>
+      </row>
+    </data>
+  </object>
 </interface>
diff --git a/settings/xfpm-settings.c b/settings/xfpm-settings.c
index fd02639..660cb06 100644
--- a/settings/xfpm-settings.c
+++ b/settings/xfpm-settings.c
@@ -144,10 +144,7 @@ void        critical_level_value_changed_cb        (GtkSpinButton *w,
 void        lock_screen_toggled_cb                 (GtkWidget *w, 
 						    XfconfChannel *channel);
 
-void        on_battery_spin_changed		   (GtkWidget *w,
-						    XfconfChannel *channel);
-
-void        on_ac_spin_changed		   	   (GtkWidget *w,
+void        on_spindown_hdd_changed		   (GtkWidget *w,
 						    XfconfChannel *channel);
 
 void        _cursor_changed_cb 			   (GtkTreeView *view, 
@@ -690,24 +687,26 @@ lock_screen_toggled_cb (GtkWidget *w, XfconfChannel *channel)
     }
 }
 
-void on_battery_spin_changed (GtkWidget *w,  XfconfChannel *channel)
+void on_spindown_hdd_changed	(GtkWidget *w, XfconfChannel *channel)
 {
-    gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
-    
-    if ( !xfconf_channel_set_bool (channel, PROPERTIES_PREFIX SPIN_DOWN_ON_BATTERY, val) )
-    {
-	g_critical ("Unable to set value for property %s", SPIN_DOWN_ON_BATTERY);
-    }
+    GtkTreeModel     *model;
+    GtkTreeIter       selected_row;
+    gint value = 0;
     
-}
+    if (!gtk_combo_box_get_active_iter (GTK_COMBO_BOX (w), &selected_row))
+	return;
 
-void on_ac_spin_changed	(GtkWidget *w, XfconfChannel *channel)
-{
-    gboolean val = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(w));
+    model = gtk_combo_box_get_model (GTK_COMBO_BOX(w));
+
+    gtk_tree_model_get(model,
+                       &selected_row,
+                       1,
+                       &value,
+                       -1);
     
-    if ( !xfconf_channel_set_bool (channel, PROPERTIES_PREFIX SPIN_DOWN_ON_AC, val) )
+    if ( !xfconf_channel_set_uint (channel, PROPERTIES_PREFIX SPIN_DOWN_HDD, value) )
     {
-	g_critical ("Unable to set value for property %s", SPIN_DOWN_ON_AC);
+	g_critical ("Unable to set value for property %s", SPIN_DOWN_HDD);
     }
 }
 
@@ -731,7 +730,7 @@ xfpm_settings_on_battery (XfconfChannel *channel, gboolean auth_hibernate,
     GtkWidget *label;
     GtkWidget *brg;
     GtkWidget *brg_level;
-    GtkWidget *spin_down;
+    GtkWidget *spin_down_hdd;
 
     battery_critical = GTK_WIDGET (gtk_builder_get_object (xml, "battery-critical-combox"));
     
@@ -894,18 +893,52 @@ xfpm_settings_on_battery (XfconfChannel *channel, gboolean auth_hibernate,
     }
 #endif
 
-    spin_down = GTK_WIDGET (gtk_builder_get_object (xml, "spin-down-on-battery"));
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (spin_down), 
-				  xfconf_channel_get_bool (channel, PROPERTIES_PREFIX SPIN_DOWN_ON_BATTERY, TRUE));
-    gtk_widget_set_sensitive (spin_down, can_spin_down);
+    spin_down_hdd = GTK_WIDGET (gtk_builder_get_object (xml, "spin-down-hdd"));
+
+    if ( can_spin_down && devkit_disk )
+    {
+	list_store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_INT);
+
+	gtk_combo_box_set_model (GTK_COMBO_BOX(spin_down_hdd), GTK_TREE_MODEL(list_store));
+
+	gtk_list_store_append(list_store, &iter);
+	gtk_list_store_set (list_store, &iter, 0, _("Never"), 1, SPIN_DOWN_HDD_NEVER, -1);
+
+	gtk_list_store_append(list_store, &iter);
+	gtk_list_store_set (list_store, &iter, 0, _("On battery"), 1, SPIN_DOWN_HDD_ON_BATTERY, -1);
+
+	gtk_list_store_append(list_store, &iter);
+	gtk_list_store_set (list_store, &iter, 0, _("Plugged in"), 1, SPIN_DOWN_HDD_PLUGGED_IN, -1);
+
+	gtk_list_store_append(list_store, &iter);
+	gtk_list_store_set (list_store, &iter, 0, _("Always"), 1, SPIN_DOWN_HDD_ALWAYS, -1);
+
+	gtk_combo_box_set_active (GTK_COMBO_BOX (spin_down_hdd), 0);
+
+	val = xfconf_channel_get_uint (channel, PROPERTIES_PREFIX SPIN_DOWN_HDD, SPIN_DOWN_HDD_NEVER);
+
+	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) )
+	{
+	    gtk_tree_model_get (GTK_TREE_MODEL (list_store), &iter,
+				1, &list_value, -1);
+	    if ( val == list_value )
+	    {
+		gtk_combo_box_set_active_iter (GTK_COMBO_BOX (lid), &iter);
+		break;
+	    }
+	}
+    }
+    gtk_widget_set_sensitive (spin_down_hdd, can_spin_down);
     
     if ( !devkit_disk )
     {
-	gtk_widget_hide (spin_down);
+	gtk_widget_hide (spin_down_hdd);
     }
     else if ( !can_spin_down )
     {
-	gtk_widget_set_tooltip_text (spin_down, _("Spinning down hard disks permission denied"));
+	gtk_widget_set_tooltip_text (spin_down_hdd, _("Spinning down hard disks permission denied"));
     }
 }
 
@@ -919,7 +952,7 @@ xfpm_settings_on_ac (XfconfChannel *channel, gboolean auth_suspend,
     GtkWidget *lid;
     GtkWidget *brg;
     GtkWidget *brg_level;
-    GtkWidget *spin_down;
+    GtkWidget *spin_down_hdd;
     GtkListStore *list_store;
     GtkTreeIter iter;
     guint val;
@@ -1036,19 +1069,20 @@ xfpm_settings_on_ac (XfconfChannel *channel, gboolean auth_suspend,
     }
 #endif
 
-    spin_down = GTK_WIDGET (gtk_builder_get_object (xml, "spin-down-on-ac"));
+    spin_down_hdd = GTK_WIDGET (gtk_builder_get_object (xml, "spin-down-hdd"));
+    /*
     gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (spin_down), 
-				  xfconf_channel_get_bool (channel, PROPERTIES_PREFIX SPIN_DOWN_ON_AC, FALSE));
+				  xfconf_channel_get_bool (channel, PROPERTIES_PREFIX SPIN_DOWN_ON_AC, FALSE)); */
 				  
-    gtk_widget_set_sensitive (spin_down, can_spin_down);
+    gtk_widget_set_sensitive (spin_down_hdd, can_spin_down);
     
     if ( !devkit_disk )
     {
-	gtk_widget_hide (spin_down);
+	gtk_widget_hide (spin_down_hdd);
     }
     else if ( !can_spin_down )
     {
-	gtk_widget_set_tooltip_text (spin_down, _("Spinning down hard disks permission denied"));
+	gtk_widget_set_tooltip_text (spin_down_hdd, _("Spinning down hard disks permission denied"));
     }
 
 }
diff --git a/src/xfpm-config.h b/src/xfpm-config.h
index 6f7c52b..c6ffa26 100644
--- a/src/xfpm-config.h
+++ b/src/xfpm-config.h
@@ -76,8 +76,7 @@ G_BEGIN_DECLS
 #define 	LID_SWITCH_ON_AC_CFG        	"lid-action-on-ac"
 #define 	LID_SWITCH_ON_BATTERY_CFG   	"lid-action-on-battery"
 
-#define         SPIN_DOWN_ON_AC			"spin-down-on-ac"
-#define         SPIN_DOWN_ON_BATTERY		"spin-down-on-battery"
+#define         SPIN_DOWN_HDD			"spin-down-hdd"
 
 #define         SPIN_DOWN_ON_AC_TIMEOUT		"spin-down-on-ac-timeout"
 #define         SPIN_DOWN_ON_BATTERY_TIMEOUT	"spin-down-on-battery-timeout"
diff --git a/src/xfpm-disks.c b/src/xfpm-disks.c
index e32cbf3..354a9c6 100644
--- a/src/xfpm-disks.c
+++ b/src/xfpm-disks.c
@@ -118,9 +118,10 @@ xfpm_disks_enable_spin_down_timeouts (XfpmDisks *disks, gint timeout)
 static void
 xfpm_disks_set_spin_timeouts (XfpmDisks *disks)
 {
-    gboolean enabled;
+    gboolean enabled = FALSE;
     gboolean on_battery;
     gint timeout = 0;
+    gint value = 0;
     
     if (!disks->priv->can_spin )
 	return;
@@ -132,16 +133,24 @@ xfpm_disks_set_spin_timeouts (XfpmDisks *disks)
     if ( !on_battery )
     {
 	g_object_get (G_OBJECT (disks->priv->conf),
-		      SPIN_DOWN_ON_AC, &enabled,
+		      SPIN_DOWN_HDD, &value,
 		      SPIN_DOWN_ON_AC_TIMEOUT, &timeout,
 		      NULL);
+	if ( value == SPIN_DOWN_HDD_PLUGGED_IN || value == SPIN_DOWN_HDD_ALWAYS )
+	{
+		enabled = TRUE;
+	}
     }
     else
     {
 	g_object_get (G_OBJECT (disks->priv->conf),
-		      SPIN_DOWN_ON_BATTERY, &enabled,
+		      SPIN_DOWN_HDD, &value,
 		      SPIN_DOWN_ON_BATTERY_TIMEOUT, &timeout,
 		      NULL);
+	if ( value == SPIN_DOWN_HDD_ON_BATTERY || value == SPIN_DOWN_HDD_ALWAYS )
+	{
+		enabled = TRUE;
+	}
     }
     
     XFPM_DEBUG ("On Battery=%d spin_down_enabled=%d timeout=%d\n", on_battery, enabled, timeout);
@@ -213,14 +222,11 @@ xfpm_disks_init (XfpmDisks *disks)
     g_signal_connect_swapped (disks->priv->power, "on-battery-changed",
 			      G_CALLBACK (xfpm_disks_set_spin_timeouts), disks);
 
-    g_signal_connect_swapped (disks->priv->conf, "notify::" SPIN_DOWN_ON_AC,
+    g_signal_connect_swapped (disks->priv->conf, "notify::" SPIN_DOWN_HDD,
 			      G_CALLBACK (xfpm_disks_set_spin_timeouts), disks);
 			
     g_signal_connect_swapped (disks->priv->conf, "notify::" SPIN_DOWN_ON_AC_TIMEOUT,
 			      G_CALLBACK (xfpm_disks_set_spin_timeouts), disks);
-			      
-    g_signal_connect_swapped (disks->priv->conf, "notify::" SPIN_DOWN_ON_BATTERY,
-			      G_CALLBACK (xfpm_disks_set_spin_timeouts), disks);
     
     g_signal_connect_swapped (disks->priv->conf, "notify::" SPIN_DOWN_ON_BATTERY_TIMEOUT,
 			      G_CALLBACK (xfpm_disks_set_spin_timeouts), disks);
diff --git a/src/xfpm-xfconf.c b/src/xfpm-xfconf.c
index 364d665..9583896 100644
--- a/src/xfpm-xfconf.c
+++ b/src/xfpm-xfconf.c
@@ -80,8 +80,7 @@ enum
     PROP_IDLE_SLEEP_MODE,
     PROP_DIM_ON_AC_TIMEOUT,
     PROP_DIM_ON_BATTERY_TIMEOUT,
-    PROP_SPIN_DOWN_DISK_ON_AC,
-    PROP_SPIN_DOWN_DISK_ON_BATTERY,
+    PROP_SPIN_DOWN_DISK,
     PROP_SPIN_DOWN_DISK_ON_AC_TIMEOUT,
     PROP_SPIN_DOWN_DISK_ON_BATTERY_TIMEOUT,
 #ifdef WITH_NETWORK_MANAGER
@@ -529,23 +528,15 @@ xfpm_xfconf_class_init (XfpmXfconfClass *klass)
                                                         G_PARAM_READWRITE));
 
     /**
-     * XfpmXfconf::spin-down-on-ac
+     * XfpmXfconf::spin-down-hdd
      **/
     g_object_class_install_property (object_class,
-                                     PROP_SPIN_DOWN_DISK_ON_AC,
-                                     g_param_spec_boolean (SPIN_DOWN_ON_AC,
+                                     PROP_SPIN_DOWN_DISK,
+                                     g_param_spec_uint (SPIN_DOWN_HDD,
                                                            NULL, NULL,
-                                                           FALSE,
-                                                           G_PARAM_READWRITE));
-
-    /**
-     * XfpmXfconf::spin-down-on-battery
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_SPIN_DOWN_DISK_ON_BATTERY,
-                                     g_param_spec_boolean (SPIN_DOWN_ON_BATTERY,
-                                                           NULL, NULL,
-                                                           FALSE,
+							0,
+							G_MAXUINT16,
+							4,
                                                            G_PARAM_READWRITE));
 
     /**

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list