[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