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)
|
gnome-settings-daemon >= $GSD_REQUIRED_VERSION x11)
|
||||||
PKG_CHECK_MODULES(NETWORK_PANEL, $COMMON_MODULES)
|
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(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(COLOR_PANEL, $COMMON_MODULES colord >= 0.1.8)
|
||||||
PKG_CHECK_MODULES(PRINTERS_PANEL, $COMMON_MODULES dbus-glib-1
|
PKG_CHECK_MODULES(PRINTERS_PANEL, $COMMON_MODULES dbus-glib-1
|
||||||
polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION)
|
polkit-gobject-1 >= $POLKIT_REQUIRED_VERSION)
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
|
|
||||||
#include <libupower-glib/upower.h>
|
#include <libupower-glib/upower.h>
|
||||||
#include <glib/gi18n.h>
|
#include <glib/gi18n.h>
|
||||||
|
#include <gnome-settings-daemon/gsd-enums.h>
|
||||||
|
|
||||||
#include "cc-power-panel.h"
|
#include "cc-power-panel.h"
|
||||||
|
|
||||||
|
@ -44,6 +45,12 @@ struct _CcPowerPanelPrivate
|
||||||
UpClient *up_client;
|
UpClient *up_client;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
ACTION_MODEL_TEXT,
|
||||||
|
ACTION_MODEL_VALUE,
|
||||||
|
ACTION_MODEL_SENSITIVE
|
||||||
|
};
|
||||||
|
|
||||||
static void
|
static void
|
||||||
cc_power_panel_get_property (GObject *object,
|
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);
|
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
|
static void
|
||||||
set_value_for_combo (GtkComboBox *combo_box, gint value)
|
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");
|
value = g_settings_get_enum (self->priv->gsd_settings, "critical-battery-action");
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||||
"combobox_critical"));
|
"combobox_critical"));
|
||||||
|
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "critical-battery-action");
|
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "critical-battery-action");
|
||||||
g_signal_connect (widget, "changed",
|
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");
|
value = g_settings_get_enum (self->priv->gsd_settings, "button-power");
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||||
"combobox_button_power"));
|
"combobox_button_power"));
|
||||||
|
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-power");
|
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-power");
|
||||||
g_signal_connect (widget, "changed",
|
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");
|
value = g_settings_get_enum (self->priv->gsd_settings, "button-sleep");
|
||||||
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
|
||||||
"combobox_button_sleep"));
|
"combobox_button_sleep"));
|
||||||
|
disable_unavailable_combo_items (self, GTK_COMBO_BOX (widget));
|
||||||
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
set_value_for_combo (GTK_COMBO_BOX (widget), value);
|
||||||
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-sleep");
|
g_object_set_data (G_OBJECT(widget), "_gsettings_key", "button-sleep");
|
||||||
g_signal_connect (widget, "changed",
|
g_signal_connect (widget, "changed",
|
||||||
|
|
|
@ -8,15 +8,19 @@
|
||||||
<column type="gchararray"/>
|
<column type="gchararray"/>
|
||||||
<!-- column-name value -->
|
<!-- column-name value -->
|
||||||
<column type="gint"/>
|
<column type="gint"/>
|
||||||
|
<!-- column-name sensitive -->
|
||||||
|
<column type="gboolean"/>
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Suspend</col>
|
<col id="0" translatable="yes">Suspend</col>
|
||||||
<col id="1">1</col>
|
<col id="1">1</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Hibernate</col>
|
<col id="0" translatable="yes">Hibernate</col>
|
||||||
<col id="1">3</col>
|
<col id="1">3</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -26,27 +30,34 @@
|
||||||
<column type="gchararray"/>
|
<column type="gchararray"/>
|
||||||
<!-- column-name value -->
|
<!-- column-name value -->
|
||||||
<column type="gint"/>
|
<column type="gint"/>
|
||||||
|
<!-- column-name sensitive -->
|
||||||
|
<column type="gboolean"/>
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Suspend</col>
|
<col id="0" translatable="yes">Suspend</col>
|
||||||
<col id="1">1</col>
|
<col id="1">1</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Hibernate</col>
|
<col id="0" translatable="yes">Hibernate</col>
|
||||||
<col id="1">3</col>
|
<col id="1">3</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Do nothing</col>
|
<col id="0" translatable="yes">Do nothing</col>
|
||||||
<col id="1">5</col>
|
<col id="1">5</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Ask me</col>
|
<col id="0" translatable="yes">Ask me</col>
|
||||||
<col id="1">4</col>
|
<col id="1">4</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Shutdown</col>
|
<col id="0" translatable="yes">Shutdown</col>
|
||||||
<col id="1">2</col>
|
<col id="1">2</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -54,17 +65,21 @@
|
||||||
<columns>
|
<columns>
|
||||||
<!-- column-name name -->
|
<!-- column-name name -->
|
||||||
<column type="gchararray"/>
|
<column type="gchararray"/>
|
||||||
<!-- column-name gint1 -->
|
<!-- column-name value -->
|
||||||
<column type="gint"/>
|
<column type="gint"/>
|
||||||
|
<!-- column-name sensitive -->
|
||||||
|
<column type="gboolean"/>
|
||||||
</columns>
|
</columns>
|
||||||
<data>
|
<data>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Hibernate</col>
|
<col id="0" translatable="yes">Hibernate</col>
|
||||||
<col id="1">3</col>
|
<col id="1">3</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
<row>
|
<row>
|
||||||
<col id="0" translatable="yes">Shutdown</col>
|
<col id="0" translatable="yes">Shutdown</col>
|
||||||
<col id="1">2</col>
|
<col id="1">2</col>
|
||||||
|
<col id="2">True</col>
|
||||||
</row>
|
</row>
|
||||||
</data>
|
</data>
|
||||||
</object>
|
</object>
|
||||||
|
@ -304,7 +319,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBoxText" id="combobox_critical">
|
<object class="GtkComboBox" id="combobox_critical">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="model">liststore_critical</property>
|
<property name="model">liststore_critical</property>
|
||||||
</object>
|
</object>
|
||||||
|
@ -359,7 +374,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBoxText" id="combobox_button_power">
|
<object class="GtkComboBox" id="combobox_button_power">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="model">liststore_power</property>
|
<property name="model">liststore_power</property>
|
||||||
</object>
|
</object>
|
||||||
|
@ -404,7 +419,7 @@
|
||||||
</packing>
|
</packing>
|
||||||
</child>
|
</child>
|
||||||
<child>
|
<child>
|
||||||
<object class="GtkComboBoxText" id="combobox_button_sleep">
|
<object class="GtkComboBox" id="combobox_button_sleep">
|
||||||
<property name="visible">True</property>
|
<property name="visible">True</property>
|
||||||
<property name="model">liststore_sleep</property>
|
<property name="model">liststore_sleep</property>
|
||||||
</object>
|
</object>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue