power: Make insensitive any sleep actions the hardware cannot do
This commit is contained in:
parent
90ec42cdef
commit
4f08a32570
3 changed files with 78 additions and 5 deletions
|
@ -102,7 +102,8 @@ PKG_CHECK_MODULES(MOUSE_PANEL, $COMMON_MODULES xi >= 1.2
|
|||
gnome-settings-daemon >= $GSD_REQUIRED_VERSION x11)
|
||||
PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON_MODULES)
|
||||
PKG_CHECK_MODULES(ONLINE_ACCOUNTS_PANEL, $COMMON_MODULES goa-1.0 goa-backend-1.0)
|
||||
PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.9.1)
|
||||
PKG_CHECK_MODULES(POWER_PANEL, $COMMON_MODULES upower-glib >= 0.9.1
|
||||
gnome-settings-daemon >= $GSD_REQUIRED_VERSION)
|
||||
PKG_CHECK_MODULES(COLOR_PANEL, $COMMON_MODULES colord >= 0.1.8)
|
||||
PKG_CHECK_MODULES(PRINTERS_PANEL, $COMMON_MODULES dbus-glib-1
|
||||
polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION)
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include <libupower-glib/upower.h>
|
||||
#include <glib/gi18n.h>
|
||||
#include <gnome-settings-daemon/gsd-enums.h>
|
||||
|
||||
#include "cc-power-panel.h"
|
||||
|
||||
|
@ -44,6 +45,12 @@ struct _CcPowerPanelPrivate
|
|||
UpClient *up_client;
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ACTION_MODEL_TEXT,
|
||||
ACTION_MODEL_VALUE,
|
||||
ACTION_MODEL_SENSITIVE
|
||||
};
|
||||
|
||||
static void
|
||||
cc_power_panel_get_property (GObject *object,
|
||||
|
@ -416,6 +423,53 @@ combo_enum_changed_cb (GtkWidget *widget, CcPowerPanel *self)
|
|||
g_settings_set_enum (self->priv->gsd_settings, key, value);
|
||||
}
|
||||
|
||||
static void
|
||||
disable_unavailable_combo_items (CcPowerPanel *self,
|
||||
GtkComboBox *combo_box)
|
||||
{
|
||||
gboolean enabled;
|
||||
gboolean ret;
|
||||
gint value_tmp;
|
||||
GtkCellRenderer *renderer;
|
||||
GtkTreeIter iter;
|
||||
GtkTreeModel *model;
|
||||
|
||||
/* setup the renderer */
|
||||
renderer = gtk_cell_renderer_text_new ();
|
||||
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo_box), renderer, TRUE);
|
||||
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo_box), renderer,
|
||||
"text", ACTION_MODEL_TEXT,
|
||||
"sensitive", ACTION_MODEL_SENSITIVE,
|
||||
NULL);
|
||||
|
||||
/* get entry */
|
||||
model = gtk_combo_box_get_model (combo_box);
|
||||
ret = gtk_tree_model_get_iter_first (model, &iter);
|
||||
if (!ret)
|
||||
return;
|
||||
|
||||
/* disable any actions we cannot do */
|
||||
do
|
||||
{
|
||||
gtk_tree_model_get (model, &iter,
|
||||
ACTION_MODEL_VALUE, &value_tmp,
|
||||
-1);
|
||||
switch (value_tmp) {
|
||||
case GSD_POWER_ACTION_SUSPEND:
|
||||
enabled = up_client_get_can_suspend (self->priv->up_client);
|
||||
break;
|
||||
case GSD_POWER_ACTION_HIBERNATE:
|
||||
enabled = up_client_get_can_hibernate (self->priv->up_client);
|
||||
break;
|
||||
default:
|
||||
enabled = TRUE;
|
||||
}
|
||||
gtk_list_store_set (GTK_LIST_STORE (model), &iter,
|
||||
ACTION_MODEL_SENSITIVE, enabled,
|
||||
-1);
|
||||
} while (gtk_tree_model_iter_next (model, &iter));
|
||||
}
|
||||
|
||||
static void
|
||||
set_value_for_combo (GtkComboBox *combo_box, gint value)
|
||||
{
|
||||
|
@ -613,6 +667,7 @@ cc_power_panel_init (CcPowerPanel *self)
|
|||
value = g_settings_get_enum (self->priv->gsd_settings, "critical-battery-action");
|
||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||
"combobox_critical"));
|
||||
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "critical-battery-action");
|
||||
g_signal_connect (widget, "changed",
|
||||
|
@ -622,6 +677,7 @@ cc_power_panel_init (CcPowerPanel *self)
|
|||
value = g_settings_get_enum (self->priv->gsd_settings, "button-power");
|
||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||
"combobox_button_power"));
|
||||
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-power");
|
||||
g_signal_connect (widget, "changed",
|
||||
|
@ -631,6 +687,7 @@ cc_power_panel_init (CcPowerPanel *self)
|
|||
value = g_settings_get_enum (self->priv->gsd_settings, "button-sleep");
|
||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||
"combobox_button_sleep"));
|
||||
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-sleep");
|
||||
g_signal_connect (widget, "changed",
|
||||
|
|
|
@ -8,15 +8,19 @@
|
|||
<column type="gchararray"/>
|
||||
<!-- column-name value -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name sensitive -->
|
||||
<column type="gboolean"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Suspend</col>
|
||||
<col id="1">1</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Hibernate</col>
|
||||
<col id="1">3</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
|
@ -26,27 +30,34 @@
|
|||
<column type="gchararray"/>
|
||||
<!-- column-name value -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name sensitive -->
|
||||
<column type="gboolean"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Suspend</col>
|
||||
<col id="1">1</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Hibernate</col>
|
||||
<col id="1">3</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Do nothing</col>
|
||||
<col id="1">5</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Ask me</col>
|
||||
<col id="1">4</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Shutdown</col>
|
||||
<col id="1">2</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
|
@ -54,17 +65,21 @@
|
|||
<columns>
|
||||
<!-- column-name name -->
|
||||
<column type="gchararray"/>
|
||||
<!-- column-name gint1 -->
|
||||
<!-- column-name value -->
|
||||
<column type="gint"/>
|
||||
<!-- column-name sensitive -->
|
||||
<column type="gboolean"/>
|
||||
</columns>
|
||||
<data>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Hibernate</col>
|
||||
<col id="1">3</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
<row>
|
||||
<col id="0" translatable="yes">Shutdown</col>
|
||||
<col id="1">2</col>
|
||||
<col id="2">True</col>
|
||||
</row>
|
||||
</data>
|
||||
</object>
|
||||
|
@ -304,7 +319,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="combobox_critical">
|
||||
<object class="GtkComboBox" id="combobox_critical">
|
||||
<property name="visible">True</property>
|
||||
<property name="model">liststore_critical</property>
|
||||
</object>
|
||||
|
@ -359,7 +374,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="combobox_button_power">
|
||||
<object class="GtkComboBox" id="combobox_button_power">
|
||||
<property name="visible">True</property>
|
||||
<property name="model">liststore_power</property>
|
||||
</object>
|
||||
|
@ -404,7 +419,7 @@
|
|||
</packing>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkComboBoxText" id="combobox_button_sleep">
|
||||
<object class="GtkComboBox" id="combobox_button_sleep">
|
||||
<property name="visible">True</property>
|
||||
<property name="model">liststore_sleep</property>
|
||||
</object>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue