[gnome-control-center] Revert "Power: Implement the new power panel design"
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] Revert "Power: Implement the new power panel design"
- Date: Thu, 20 Dec 2012 08:36:16 +0000 (UTC)
commit 28ea296f095cbeae69347d7f8e0dd138d0ddbe6b
Author: Bastien Nocera <hadess hadess net>
Date: Thu Dec 20 09:36:06 2012 +0100
Revert "Power: Implement the new power panel design"
This reverts commit a9683772d95a4c3c7b54ea2dc8513f52c54d957a.
configure.ac | 6 -
panels/power/Makefile.am | 10 -
panels/power/cc-power-panel.c | 1315 ++++++++++-------------------------------
panels/power/power.ui | 341 +++++++----
4 files changed, 537 insertions(+), 1135 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index f829426..ed62281 100644
--- a/configure.ac
+++ b/configure.ac
@@ -181,9 +181,6 @@ else
AC_DEFINE(BUILD_NETWORK, 1, [Define to 1 to build the Network panel])
fi
AM_CONDITIONAL(BUILD_NETWORK, [test x$have_networkmanager = xyes])
-if test x${have_networkmanager} = xyes; then
- AC_DEFINE(HAVE_NETWORK_MANAGER, 1, [Define to 1 if NetworkManager is available])
-fi
# Check for gnome-bluetooth
PKG_CHECK_MODULES(BLUETOOTH, $COMMON_MODULES gnome-bluetooth-1.0 >= 3.5.5,
@@ -192,9 +189,6 @@ if test "x$have_bluetooth" = xyes ; then
AC_DEFINE(BUILD_BLUETOOTH, 1, [Define to 1 to build the Network panel])
fi
AM_CONDITIONAL(BUILD_BLUETOOTH, [test x$have_bluetooth = xyes])
-if test x${have_bluetooth} = xyes; then
- AC_DEFINE(HAVE_BLUETOOTH, 1, [Define to 1 if bluetooth support is available])
-fi
# Check for CUPS 1.4 or newer
AC_ARG_ENABLE([cups],
diff --git a/panels/power/Makefile.am b/panels/power/Makefile.am
index 0db4126..3442c38 100644
--- a/panels/power/Makefile.am
+++ b/panels/power/Makefile.am
@@ -19,16 +19,6 @@ libpower_la_SOURCES = \
libpower_la_LIBADD = $(PANEL_LIBS) $(POWER_PANEL_LIBS)
-if BUILD_BLUETOOTH
-INCLUDES += $(BLUETOOTH_CFLAGS)
-libpower_la_LIBADD += $(BLUETOOTH_LIBS)
-endif
-
-if BUILD_NETWORK
-INCLUDES += $(NETWORK_MANAGER_CFLAGS)
-libpower_la_LIBADD += $(NETWORK_MANAGER_LIBS)
-endif
-
uidir = $(pkgdatadir)/ui
dist_ui_DATA = power.ui
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index bb0249b..eeeb560 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -25,15 +25,6 @@
#include <libupower-glib/upower.h>
#include <glib/gi18n.h>
#include <gnome-settings-daemon/gsd-enums.h>
-#include "egg-list-box/egg-list-box.h"
-
-#ifdef HAVE_BLUETOOTH
-#include <bluetooth-killswitch.h>
-#endif
-
-#ifdef HAVE_NETWORK_MANAGER
-#include <nm-client.h>
-#endif
#include "cc-power-panel.h"
@@ -46,41 +37,13 @@ CC_PANEL_REGISTER (CcPowerPanel, cc_power_panel)
struct _CcPowerPanelPrivate
{
+ GSettings *lock_settings;
GSettings *gsd_settings;
GCancellable *cancellable;
GtkBuilder *builder;
GDBusProxy *proxy;
UpClient *up_client;
- GDBusProxy *screen_proxy;
- gboolean has_batteries;
-
- GtkWidget *battery_section;
- GtkWidget *battery_list;
- GtkWidget *label_battery_addon;
- GtkSizeGroup *row_sizegroup;
- GtkSizeGroup *battery_sizegroup;
- GtkSizeGroup *charge_sizegroup;
- GtkSizeGroup *level_sizegroup;
-
- GtkWidget *brightness_row;
- GtkWidget *brightness_scale;
- gboolean setting_brightness;
-
- GtkWidget *automatic_suspend_row;
- GtkWidget *automatic_suspend_label;
- GtkWidget *critical_battery_row;
- GtkWidget *critical_battery_combo;
-
-#ifdef HAVE_BLUETOOTH
- BluetoothKillswitch *bt_killswitch;
- GtkWidget *bt_switch;
-#endif
-
-#ifdef HAVE_NETWORK_MANAGER
- NMClient *nm_client;
- GtkWidget *wifi_switch;
- GtkWidget *wifi_row;
-#endif
+ GtkWidget *levelbar_primary;
};
enum
@@ -91,31 +54,73 @@ enum
};
static void
+cc_power_panel_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id)
+ {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
+cc_power_panel_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id)
+ {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ }
+}
+
+static void
cc_power_panel_dispose (GObject *object)
{
CcPowerPanelPrivate *priv = CC_POWER_PANEL (object)->priv;
- g_clear_object (&priv->gsd_settings);
+ if (priv->gsd_settings)
+ {
+ g_object_unref (priv->gsd_settings);
+ priv->gsd_settings = NULL;
+ }
if (priv->cancellable != NULL)
{
g_cancellable_cancel (priv->cancellable);
g_object_unref (priv->cancellable);
priv->cancellable = NULL;
}
- g_clear_object (&priv->builder);
- g_clear_object (&priv->proxy);
- g_clear_object (&priv->screen_proxy);
- g_clear_object (&priv->up_client);
-#ifdef HAVE_BLUETOOTH
- g_clear_object (&priv->bt_killswitch);
-#endif
-#ifdef HAVE_NETWORK_MANAGER
- g_clear_object (&priv->nm_client);
-#endif
+ if (priv->builder != NULL)
+ {
+ g_object_unref (priv->builder);
+ priv->builder = NULL;
+ }
+ if (priv->proxy != NULL)
+ {
+ g_object_unref (priv->proxy);
+ priv->proxy = NULL;
+ }
+ if (priv->up_client != NULL)
+ {
+ g_object_unref (priv->up_client);
+ priv->up_client = NULL;
+ }
G_OBJECT_CLASS (cc_power_panel_parent_class)->dispose (object);
}
+static void
+on_lock_settings_changed (GSettings *settings,
+ const char *key,
+ CcPowerPanel *panel)
+{
+}
+
static const char *
cc_power_panel_get_help_uri (CcPanel *panel)
{
@@ -130,6 +135,8 @@ cc_power_panel_class_init (CcPowerPanelClass *klass)
g_type_class_add_private (klass, sizeof (CcPowerPanelPrivate));
+ object_class->get_property = cc_power_panel_get_property;
+ object_class->set_property = cc_power_panel_set_property;
object_class->dispose = cc_power_panel_dispose;
panel_class->get_help_uri = cc_power_panel_get_help_uri;
@@ -180,75 +187,13 @@ get_timestring (guint64 time_secs)
}
static void
-add_primary (CcPowerPanel *panel,
- const gchar *name,
- const gchar *details,
- gdouble percentage)
-{
- CcPowerPanelPrivate *priv = panel->priv;
- GtkWidget *box;
- GtkWidget *box2;
- GtkWidget *label;
- GtkWidget *levelbar;
- gchar *s;
-
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- box2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
- gtk_size_group_add_widget (priv->battery_sizegroup, box2);
- gtk_widget_set_margin_left (box2, 20);
- gtk_widget_set_margin_right (box2, 20);
- gtk_widget_set_margin_top (box2, 6);
- gtk_widget_set_margin_bottom (box2, 6);
- gtk_box_pack_start (GTK_BOX (box), box2, FALSE, TRUE, 0);
-
- label = gtk_label_new (name);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_box_pack_start (GTK_BOX (box2), label, TRUE, TRUE, 0);
-
- label = gtk_label_new (details);
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_style_context_add_class (gtk_widget_get_style_context (label), GTK_STYLE_CLASS_DIM_LABEL);
- gtk_box_pack_start (GTK_BOX (box2), label, TRUE, TRUE, 0);
-
- priv->label_battery_addon = label = gtk_label_new ("");
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_style_context_add_class (gtk_widget_get_style_context (label), GTK_STYLE_CLASS_DIM_LABEL);
- gtk_box_pack_start (GTK_BOX (box2), label, TRUE, TRUE, 0);
-
- box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_set_margin_left (box2, 20);
- gtk_widget_set_margin_right (box2, 20);
- s = g_strdup_printf ("%d%%", (int)percentage);
- label = gtk_label_new (s);
- g_free (s);
- gtk_misc_set_alignment (GTK_MISC (label), 1, 0.5);
- gtk_style_context_add_class (gtk_widget_get_style_context (label), GTK_STYLE_CLASS_DIM_LABEL);
- gtk_box_pack_start (GTK_BOX (box2), label, FALSE, TRUE, 0);
- gtk_size_group_add_widget (priv->charge_sizegroup, label);
-
- levelbar = gtk_level_bar_new ();
- gtk_level_bar_set_value (GTK_LEVEL_BAR (levelbar), percentage / 100.0);
- gtk_widget_set_hexpand (levelbar, TRUE);
- gtk_widget_set_halign (levelbar, GTK_ALIGN_FILL);
- gtk_widget_set_valign (levelbar, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box2), levelbar, TRUE, TRUE, 0);
- gtk_size_group_add_widget (priv->level_sizegroup, levelbar);
- gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (priv->battery_list), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
- gtk_widget_show_all (box);
- gtk_widget_hide (priv->label_battery_addon);
-
- g_object_set_data (G_OBJECT (box), "primary", GINT_TO_POINTER (TRUE));
-}
-
-static void
set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
{
+ CcPowerPanelPrivate *priv = panel->priv;
gchar *details = NULL;
gchar *time_string = NULL;
gdouble percentage;
+ GtkWidget *widget;
guint64 time;
UpDeviceState state;
@@ -262,6 +207,15 @@ set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
&state,
&time);
+ /* set the percentage */
+ gtk_level_bar_set_value (GTK_LEVEL_BAR (priv->levelbar_primary),
+ percentage / 100.0f);
+
+ /* clear the warning */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "image_primary_warning"));
+ gtk_widget_hide (widget);
+
/* set the description */
if (time > 0)
{
@@ -271,23 +225,29 @@ set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
case UP_DEVICE_STATE_CHARGING:
case UP_DEVICE_STATE_PENDING_CHARGE:
/* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
- details = g_strdup_printf (_("%s until fully charged"), time_string);
+ details = g_strdup_printf(_("Charging - %s until fully charged"),
+ time_string);
break;
case UP_DEVICE_STATE_DISCHARGING:
case UP_DEVICE_STATE_PENDING_DISCHARGE:
if (percentage < 20)
{
/* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
- details = g_strdup_printf (_("Caution: %s remaining"), time_string);
+ details = g_strdup_printf(_("Caution low battery, %s remaining"),
+ time_string);
+ /* show the warning */
+ gtk_widget_show (widget);
}
else
{
/* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
- details = g_strdup_printf (_("%s remaining"), time_string);
+ details = g_strdup_printf(_("Using battery power - %s remaining"),
+ time_string);
}
break;
default:
- details = g_strdup_printf ("error: %s", up_device_state_to_string (state));
+ details = g_strdup_printf ("error: %s",
+ up_device_state_to_string (state));
break;
}
}
@@ -298,20 +258,20 @@ set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
case UP_DEVICE_STATE_CHARGING:
case UP_DEVICE_STATE_PENDING_CHARGE:
/* TRANSLATORS: primary battery */
- details = g_strdup (_("Charging"));
+ details = g_strdup(_("Charging"));
break;
case UP_DEVICE_STATE_DISCHARGING:
case UP_DEVICE_STATE_PENDING_DISCHARGE:
/* TRANSLATORS: primary battery */
- details = g_strdup (_("Using battery power"));
+ details = g_strdup(_("Using battery power"));
break;
case UP_DEVICE_STATE_FULLY_CHARGED:
/* TRANSLATORS: primary battery */
- details = g_strdup (_("Fully charged"));
+ details = g_strdup(_("Charging - fully charged"));
break;
case UP_DEVICE_STATE_EMPTY:
/* TRANSLATORS: primary battery */
- details = g_strdup (_("Empty"));
+ details = g_strdup(_("Empty"));
break;
default:
details = g_strdup_printf ("error: %s",
@@ -319,9 +279,22 @@ set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
break;
}
}
+ if (details == NULL)
+ goto out;
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "label_battery_primary"));
+ gtk_label_set_label (GTK_LABEL (widget), details);
+
+ /* show the primary device */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_primary"));
+ gtk_widget_show (widget);
- add_primary (panel, _("Battery"), details, percentage);
-
+ /* hide the addon device until we stumble upon the device */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_battery_addon"));
+ gtk_widget_hide (widget);
+out:
g_free (time_string);
g_free (details);
}
@@ -329,9 +302,11 @@ set_device_battery_primary (CcPowerPanel *panel, GVariant *device)
static void
set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
{
+ CcPowerPanelPrivate *priv = panel->priv;
gchar *details = NULL;
gchar *time_string = NULL;
gdouble percentage;
+ GtkWidget *widget;
guint64 time;
UpDeviceState state;
@@ -345,6 +320,15 @@ set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
&state,
&time);
+ /* set the percentage */
+ gtk_level_bar_set_value (GTK_LEVEL_BAR (priv->levelbar_primary),
+ percentage / 100.0f);
+
+ /* always show the warning */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "image_primary_warning"));
+ gtk_widget_show (widget);
+
/* set the description */
if (time > 0)
{
@@ -355,16 +339,19 @@ set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
if (percentage < 20)
{
/* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
- details = g_strdup_printf (_("Caution: %s remaining"), time_string);
+ details = g_strdup_printf(_("Caution low UPS, %s remaining"),
+ time_string);
}
else
{
/* TRANSLATORS: %1 is a time string, e.g. "1 hour 5 minutes" */
- details = g_strdup_printf (_("%s remaining"), time_string);
+ details = g_strdup_printf(_("Using UPS power - %s remaining"),
+ time_string);
}
break;
default:
- details = g_strdup_printf ("error: %s", up_device_state_to_string (state));
+ details = g_strdup_printf ("error: %s",
+ up_device_state_to_string (state));
break;
}
}
@@ -376,12 +363,12 @@ set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
if (percentage < 20)
{
/* TRANSLATORS: UPS battery */
- details = g_strdup (_("Caution low UPS"));
+ details = g_strdup(_("Caution low UPS"));
}
else
{
/* TRANSLATORS: UPS battery */
- details = g_strdup (_("Using UPS power"));
+ details = g_strdup(_("Using UPS power"));
}
break;
default:
@@ -390,9 +377,22 @@ set_device_ups_primary (CcPowerPanel *panel, GVariant *device)
break;
}
}
+ if (details == NULL)
+ goto out;
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "label_battery_primary"));
+ gtk_label_set_label (GTK_LABEL (widget), details);
+
+ /* show the primary device */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_primary"));
+ gtk_widget_show (widget);
- add_primary (panel, _("Uninterruptible power supply"), details, percentage);
-
+ /* hide the addon device as extra UPS devices are not possible */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_battery_addon"));
+ gtk_widget_hide (widget);
+out:
g_free (time_string);
g_free (details);
}
@@ -402,6 +402,7 @@ set_device_battery_additional (CcPowerPanel *panel, GVariant *device)
{
CcPowerPanelPrivate *priv = panel->priv;
gchar *details = NULL;
+ GtkWidget *widget;
UpDeviceState state;
/* set the device */
@@ -429,33 +430,35 @@ set_device_battery_additional (CcPowerPanel *panel, GVariant *device)
break;
}
if (details == NULL)
- {
- gtk_widget_hide (priv->label_battery_addon);
- }
- else
- {
- gtk_label_set_label (GTK_LABEL (priv->label_battery_addon), details);
- gtk_widget_show (priv->label_battery_addon);
- }
-
+ goto out;
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "label_battery_addon"));
+ gtk_label_set_label (GTK_LABEL (widget), details);
+
+ /* show the addon device */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_battery_addon"));
+ gtk_widget_show (widget);
+out:
g_free (details);
}
static void
add_device_secondary (CcPowerPanel *panel,
- GVariant *device)
+ GVariant *device,
+ guint *secondary_devices_cnt)
{
CcPowerPanelPrivate *priv = panel->priv;
+ const gchar *icon_name = NULL;
gdouble percentage;
guint64 time;
UpDeviceKind kind;
UpDeviceState state;
+ GtkWidget *vbox;
GtkWidget *hbox;
- GtkWidget *box2;
GtkWidget *widget;
GString *status;
GString *description;
- gchar *s;
gboolean show_caution = FALSE;
g_variant_get (device,
@@ -469,6 +472,39 @@ add_device_secondary (CcPowerPanel *panel,
switch (kind)
{
+ case UP_DEVICE_KIND_UPS:
+ icon_name = "uninterruptible-power-supply";
+ show_caution = TRUE;
+ break;
+ case UP_DEVICE_KIND_MOUSE:
+ icon_name = "input-mouse";
+ break;
+ case UP_DEVICE_KIND_KEYBOARD:
+ icon_name = "input-keyboard";
+ break;
+ case UP_DEVICE_KIND_TABLET:
+ icon_name = "input-tablet";
+ break;
+ case UP_DEVICE_KIND_PDA:
+ icon_name = "pda";
+ break;
+ case UP_DEVICE_KIND_PHONE:
+ icon_name = "phone";
+ break;
+ case UP_DEVICE_KIND_MEDIA_PLAYER:
+ icon_name = "multimedia-player";
+ break;
+ case UP_DEVICE_KIND_COMPUTER:
+ icon_name = "computer";
+ show_caution = TRUE;
+ break;
+ default:
+ icon_name = "battery";
+ break;
+ }
+
+ switch (kind)
+ {
case UP_DEVICE_KIND_MOUSE:
/* TRANSLATORS: secondary battery */
description = g_string_new (_("Wireless mouse"));
@@ -480,7 +516,6 @@ add_device_secondary (CcPowerPanel *panel,
case UP_DEVICE_KIND_UPS:
/* TRANSLATORS: secondary battery */
description = g_string_new (_("Uninterruptible power supply"));
- show_caution = TRUE;
break;
case UP_DEVICE_KIND_PDA:
/* TRANSLATORS: secondary battery */
@@ -507,6 +542,8 @@ add_device_secondary (CcPowerPanel *panel,
description = g_string_new (_("Battery"));
break;
}
+ g_string_prepend (description, "<b>");
+ g_string_append (description, "</b>");
switch (state)
{
@@ -535,7 +572,7 @@ add_device_secondary (CcPowerPanel *panel,
break;
case UP_DEVICE_STATE_FULLY_CHARGED:
/* TRANSLATORS: primary battery */
- status = g_string_new(C_("Battery power", "Fully charged"));
+ status = g_string_new(C_("Battery power", "Charging - fully charged"));
break;
case UP_DEVICE_STATE_EMPTY:
/* TRANSLATORS: primary battery */
@@ -549,41 +586,43 @@ add_device_secondary (CcPowerPanel *panel,
g_string_append (status, "</small>");
/* create the new widget */
- hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
+ gtk_widget_set_hexpand (hbox, TRUE);
+ widget = gtk_image_new ();
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.5f, 0.0f);
+ gtk_image_set_from_icon_name (GTK_IMAGE (widget), icon_name, GTK_ICON_SIZE_DND);
+ gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, FALSE, 0);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
widget = gtk_label_new ("");
gtk_misc_set_alignment (GTK_MISC (widget), 0.0f, 0.5f);
gtk_label_set_markup (GTK_LABEL (widget), description->str);
- gtk_widget_set_margin_left (widget, 20);
- gtk_widget_set_margin_right (widget, 20);
- gtk_widget_set_margin_top (widget, 6);
- gtk_widget_set_margin_bottom (widget, 6);
- gtk_box_pack_start (GTK_BOX (hbox), widget, FALSE, TRUE, 0);
- gtk_size_group_add_widget (priv->battery_sizegroup, widget);
-
- box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_set_margin_left (box2, 20);
- gtk_widget_set_margin_right (box2, 20);
- s = g_strdup_printf ("%d%%", (int)percentage);
- widget = gtk_label_new (s);
- g_free (s);
- gtk_misc_set_alignment (GTK_MISC (widget), 1, 0.5);
- gtk_style_context_add_class (gtk_widget_get_style_context (widget), GTK_STYLE_CLASS_DIM_LABEL);
- gtk_box_pack_start (GTK_BOX (box2), widget, FALSE, TRUE, 0);
- gtk_size_group_add_widget (priv->charge_sizegroup, widget);
-
+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
+ widget = gtk_label_new ("");
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0f, 0.5f);
+ gtk_label_set_markup (GTK_LABEL (widget), status->str);
+ gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0);
widget = gtk_level_bar_new ();
- gtk_widget_set_halign (widget, TRUE);
- gtk_widget_set_halign (widget, GTK_ALIGN_FILL);
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
+ gtk_widget_set_margin_right (widget, 32);
+ gtk_widget_set_margin_top (widget, 3);
gtk_level_bar_set_value (GTK_LEVEL_BAR (widget), percentage / 100.0f);
- gtk_box_pack_start (GTK_BOX (box2), widget, TRUE, TRUE, 0);
- gtk_size_group_add_widget (priv->level_sizegroup, widget);
- gtk_box_pack_start (GTK_BOX (hbox), box2, TRUE, TRUE, 0);
- gtk_widget_show_all (hbox);
-
- gtk_container_add (GTK_CONTAINER (priv->battery_list), hbox);
- gtk_size_group_add_widget (priv->row_sizegroup, hbox);
- g_object_set_data (G_OBJECT (hbox), "kind", GINT_TO_POINTER (kind));
+ gtk_box_pack_start (GTK_BOX (vbox), widget, TRUE, TRUE, 0);
+ gtk_box_pack_start (GTK_BOX (hbox), vbox, TRUE, TRUE, 0);
+
+ /* add to the grid */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "grid_secondary"));
+
+ /* two devices wide */
+ gtk_grid_attach (GTK_GRID (widget), hbox,
+ *secondary_devices_cnt % 2,
+ (*secondary_devices_cnt / 2) - 1,
+ 1, 1);
+ (*secondary_devices_cnt)++;
+
+ /* show panel */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_secondary"));
+ gtk_widget_show_all (widget);
g_string_free (description, TRUE);
g_string_free (status, TRUE);
@@ -600,7 +639,9 @@ get_devices_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
gsize n_devices;
GList *children;
GList *l;
+ GtkWidget *widget;
guint i;
+ guint secondary_devices_cnt = 0;
GVariant *child;
GVariant *result;
GVariant *untuple;
@@ -617,11 +658,22 @@ get_devices_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
panel = CC_POWER_PANEL (user_data);
priv = panel->priv;
- children = gtk_container_get_children (GTK_CONTAINER (priv->battery_list));
+ /* empty the secondary box */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "grid_secondary"));
+ children = gtk_container_get_children (GTK_CONTAINER (widget));
for (l = children; l != NULL; l = l->next)
- gtk_container_remove (GTK_CONTAINER (priv->battery_list), l->data);
+ gtk_container_remove (GTK_CONTAINER (widget), l->data);
g_list_free (children);
+ /* hide both panels initially */
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_primary"));
+ gtk_widget_hide (widget);
+ widget = GTK_WIDGET (gtk_builder_get_object (priv->builder,
+ "box_secondary"));
+ gtk_widget_hide (widget);
+
if (result == NULL)
{
g_printerr ("Error getting devices: %s\n", error->message);
@@ -688,37 +740,13 @@ get_devices_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
}
else
{
- add_device_secondary (panel, child);
+ add_device_secondary (panel, child, &secondary_devices_cnt);
}
g_variant_unref (child);
}
-#if 0
- g_print ("adding fake devices\n");
- child = g_variant_new_parsed ("('/',%u,'',%d,%u,%t)",
- UP_DEVICE_KIND_MOUSE, 100.0,
- UP_DEVICE_STATE_DISCHARGING, 287);
- add_device_secondary (panel, child);
- g_variant_unref (child);
- child = g_variant_new_parsed ("('/',%u,'',%d,%u,%t)",
- UP_DEVICE_KIND_KEYBOARD, 18.0,
- UP_DEVICE_STATE_DISCHARGING, 287);
- add_device_secondary (panel, child);
- g_variant_unref (child);
- child = g_variant_new_parsed ("('/',%u,'',%d,%u,%t)",
- UP_DEVICE_KIND_BATTERY, 11.0,
- UP_DEVICE_STATE_FULLY_CHARGED, 200);
- set_device_battery_additional (panel, child);
- g_variant_unref (child);
-#endif
-
g_variant_unref (untuple);
g_variant_unref (result);
-
- children = gtk_container_get_children (GTK_CONTAINER (priv->battery_list));
- gtk_widget_set_visible (priv->battery_section, children != NULL);
- gtk_widget_queue_resize (priv->battery_section);
- g_list_free (children);
}
static void
@@ -741,117 +769,6 @@ on_properties_changed (GDBusProxy *proxy,
}
static void
-set_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
-{
- GError *error = NULL;
- GVariant *result;
- CcPowerPanelPrivate *priv = CC_POWER_PANEL (user_data)->priv;
-
- /* not setting, so pay attention to changed signals */
- priv->setting_brightness = FALSE;
- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
- if (result == NULL)
- {
- g_printerr ("Error setting brightness: %s\n", error->message);
- g_error_free (error);
- return;
- }
-}
-
-static void
-brightness_slider_value_changed_cb (GtkRange *range, gpointer user_data)
-{
- guint percentage;
- CcPowerPanelPrivate *priv = CC_POWER_PANEL (user_data)->priv;
-
- /* do not loop */
- if (priv->setting_brightness)
- return;
-
- priv->setting_brightness = TRUE;
-
- /* push this to g-p-m */
- percentage = (guint) gtk_range_get_value (range);
- g_dbus_proxy_call (priv->screen_proxy,
- "SetPercentage",
- g_variant_new ("(u)",
- percentage),
- G_DBUS_CALL_FLAGS_NONE,
- -1,
- priv->cancellable,
- set_brightness_cb,
- user_data);
-}
-
-static void
-get_brightness_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
-{
- CcPowerPanel *self = CC_POWER_PANEL (user_data);
- GError *error = NULL;
- GVariant *result;
- guint brightness;
- GtkRange *range;
-
- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error);
- if (result == NULL)
- {
- /* We got cancelled, so we're probably exiting */
- if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- {
- g_error_free (error);
- return;
- }
-
- gtk_widget_hide (self->priv->brightness_row);
-
- if (error->message &&
- strstr (error->message, "No backlight devices present") == NULL)
- {
- g_warning ("Error getting brightness: %s", error->message);
- }
- g_error_free (error);
- return;
- }
-
- /* set the slider */
- g_variant_get (result, "(u)", &brightness);
- range = GTK_RANGE (self->priv->brightness_scale);
- gtk_range_set_range (range, 0, 100);
- gtk_range_set_increments (range, 1, 10);
- gtk_range_set_value (range, brightness);
- g_signal_connect (range, "value-changed",
- G_CALLBACK (brightness_slider_value_changed_cb), user_data);
- g_variant_unref (result);
-}
-
-static void
-on_signal (GDBusProxy *proxy,
- gchar *sender_name,
- gchar *signal_name,
- GVariant *parameters,
- gpointer user_data)
-{
- CcPowerPanel *self = CC_POWER_PANEL (user_data);
-
- if (g_strcmp0 (signal_name, "Changed") == 0)
- {
- /* changed, but ignoring */
- if (self->priv->setting_brightness)
- return;
-
- /* retrieve the value again from g-s-d */
- g_dbus_proxy_call (self->priv->screen_proxy,
- "GetPercentage",
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- 200, /* we don't want to randomly move the bar */
- self->priv->cancellable,
- get_brightness_cb,
- user_data);
- }
-}
-
-static void
got_power_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
GError *error = NULL;
@@ -889,35 +806,6 @@ got_power_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_dat
}
static void
-got_screen_proxy_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
-{
- GError *error = NULL;
- CcPowerPanelPrivate *priv = CC_POWER_PANEL (user_data)->priv;
-
- priv->screen_proxy = g_dbus_proxy_new_for_bus_finish (res, &error);
- if (priv->screen_proxy == NULL)
- {
- g_printerr ("Error creating proxy: %s\n", error->message);
- g_error_free (error);
- return;
- }
-
- /* we want to change the bar if the user presses brightness buttons */
- g_signal_connect (priv->screen_proxy, "g-signal",
- G_CALLBACK (on_signal), user_data);
-
- /* get the initial state */
- g_dbus_proxy_call (priv->screen_proxy,
- "GetPercentage",
- NULL,
- G_DBUS_CALL_FLAGS_NONE,
- 200, /* we don't want to randomly move the bar */
- priv->cancellable,
- get_brightness_cb,
- user_data);
-}
-
-static void
combo_time_changed_cb (GtkWidget *widget, CcPowerPanel *self)
{
GtkTreeIter iter;
@@ -1030,7 +918,7 @@ set_value_for_combo (GtkComboBox *combo_box, gint value)
do
{
gtk_tree_model_get (model, &iter,
- ACTION_MODEL_VALUE, &value_tmp,
+ 1, &value_tmp,
-1);
if (value == value_tmp)
{
@@ -1050,6 +938,7 @@ set_ac_battery_ui_mode (CcPowerPanel *self)
guint i;
UpDevice *device;
UpDeviceKind kind;
+ CcPowerPanelPrivate *priv = self->priv;
/* this is sync, but it's cached in the daemon and so quick */
ret = up_client_enumerate_devices_sync (self->priv->up_client, NULL, &error);
@@ -1061,10 +950,12 @@ set_ac_battery_ui_mode (CcPowerPanel *self)
}
devices = up_client_get_devices (self->priv->up_client);
- for (i = 0; i < devices->len; i++)
+ for (i=0; i<devices->len; i++)
{
device = g_ptr_array_index (devices, i);
- g_object_get (device, "kind", &kind, NULL);
+ g_object_get (device,
+ "kind", &kind,
+ NULL);
if (kind == UP_DEVICE_KIND_BATTERY ||
kind == UP_DEVICE_KIND_UPS)
{
@@ -1073,642 +964,43 @@ set_ac_battery_ui_mode (CcPowerPanel *self)
}
}
g_ptr_array_unref (devices);
-
-#if 0
- g_print ("forcing no batteries\n");
- has_batteries = FALSE;
-#endif
-
out:
- self->priv->has_batteries = has_batteries;
-
- gtk_widget_set_visible (self->priv->critical_battery_row, has_batteries);
-
- if (!has_batteries)
- {
- gtk_widget_hide (WID (self->priv->builder, "suspend_on_battery_switch"));
- gtk_widget_hide (WID (self->priv->builder, "suspend_on_battery_label"));
- gtk_widget_hide (WID (self->priv->builder, "suspend_on_battery_delay_label"));
- gtk_widget_hide (WID (self->priv->builder, "suspend_on_battery_delay_combo"));
- gtk_label_set_label (GTK_LABEL (WID (self->priv->builder, "suspend_on_ac_label")),
- _("When _idle"));
- }
-}
-
-static void
-update_separator_func (GtkWidget **separator,
- GtkWidget *child,
- GtkWidget *before,
- gpointer user_data)
-{
- if (before == NULL)
- return;
-
- if (*separator == NULL)
- {
- *separator = gtk_separator_new (GTK_ORIENTATION_HORIZONTAL);
- g_object_ref_sink (*separator);
- gtk_widget_show (*separator);
- }
-}
-
-#ifdef HAVE_BLUETOOTH
-static void
-bt_switch_changed (GtkSwitch *sw,
- GParamSpec *pspec,
- CcPowerPanel *panel)
-{
- BluetoothKillswitchState state;
-
- if (gtk_switch_get_active (sw))
- state = BLUETOOTH_KILLSWITCH_STATE_UNBLOCKED;
- else
- state = BLUETOOTH_KILLSWITCH_STATE_SOFT_BLOCKED;
-
- g_debug ("Setting bt killswitch to %s", bluetooth_killswitch_state_to_string (state));
-
- bluetooth_killswitch_set_state (panel->priv->bt_killswitch, state);
+ gtk_widget_set_visible (WID (priv->builder, "label_header_battery"), has_batteries);
+ gtk_widget_set_visible (WID (priv->builder, "label_header_ac"), has_batteries);
+ gtk_widget_set_visible (WID (priv->builder, "combobox_sleep_battery"), has_batteries);
+ gtk_widget_set_visible (WID (priv->builder, "label_critical"), has_batteries);
+ gtk_widget_set_visible (WID (priv->builder, "combobox_critical"), has_batteries);
}
-static void
-bt_killswitch_state_changed (BluetoothKillswitch *killswitch,
- BluetoothKillswitchState state,
- CcPowerPanel *panel)
-{
- CcPowerPanelPrivate *priv = panel->priv;
- gboolean active;
- gboolean sensitive;
-
- g_debug ("bt killswitch state changed to %s", bluetooth_killswitch_state_to_string (state));
-
- active = state == BLUETOOTH_KILLSWITCH_STATE_UNBLOCKED;
- sensitive = state != BLUETOOTH_KILLSWITCH_STATE_HARD_BLOCKED;
-
- g_signal_handlers_block_by_func (priv->bt_switch, bt_switch_changed, panel);
- gtk_switch_set_active (GTK_SWITCH (priv->bt_switch), active);
- gtk_widget_set_sensitive (priv->bt_switch, sensitive);
- g_signal_handlers_unblock_by_func (priv->bt_switch, bt_switch_changed, panel);
-}
-#endif
-
-#ifdef HAVE_NETWORK_MANAGER
static gboolean
-has_wifi_devices (NMClient *client)
-{
- const GPtrArray *devices;
- NMDevice *device;
- gint i;
-
- if (!nm_client_get_manager_running (client))
- return FALSE;
-
- devices = nm_client_get_devices (client);
- if (devices == NULL)
- return FALSE;
-
- for (i = 0; i < devices->len; i++)
- {
- device = g_ptr_array_index (devices, i);
- switch (nm_device_get_device_type (device))
- {
- case NM_DEVICE_TYPE_WIFI:
- case NM_DEVICE_TYPE_WIMAX:
- return TRUE;
- default:
- break;
- }
- }
-
- return FALSE;
-}
-
-static void
-wifi_switch_changed (GtkSwitch *sw,
- GParamSpec *pspec,
- CcPowerPanel *panel)
-{
- gboolean enabled;
-
- enabled = gtk_switch_get_active (sw);
- g_debug ("Setting wifi %s", enabled ? "enabled" : "disabled");
- nm_client_wireless_set_enabled (panel->priv->nm_client, enabled);
-}
-
-static void
-nm_client_state_changed (NMClient *client,
- GParamSpec *pspec,
- CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
- gboolean visible;
- gboolean active;
- gboolean sensitive;
-
- visible = has_wifi_devices (priv->nm_client);
- active = nm_client_networking_get_enabled (client) &&
- nm_client_wireless_get_enabled (client) &&
- nm_client_wireless_hardware_get_enabled (client);
- sensitive = nm_client_networking_get_enabled (client) &&
- nm_client_wireless_hardware_get_enabled (client);
-
- g_debug ("wifi state changed to %s", active ? "enabled" : "disabled");
-
- g_signal_handlers_block_by_func (priv->wifi_switch, wifi_switch_changed, self);
- gtk_switch_set_active (GTK_SWITCH (priv->wifi_switch), active);
- gtk_widget_set_sensitive (priv->wifi_switch, sensitive);
- gtk_widget_set_visible (priv->wifi_row, visible);
- g_signal_handlers_unblock_by_func (priv->wifi_switch, wifi_switch_changed, self);
-}
-
-static void
-nm_device_changed (NMClient *client,
- NMDevice *device,
- CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
-
- gtk_widget_set_visible (priv->wifi_row, has_wifi_devices (priv->nm_client));
-}
-#endif
-
-static void
-add_power_saving_section (CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
- GtkWidget *vbox;
- GtkWidget *widget, *box, *label, *scale;
- GtkWidget *box2;
- GtkWidget *sw;
- gchar *s;
-
- vbox = WID (priv->builder, "vbox_power");
-
- s = g_strdup_printf ("<b>%s</b>", _("Power Saving"));
- widget = gtk_label_new (s);
- g_free (s);
- gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
- gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
- gtk_widget_set_margin_left (widget, 56);
- gtk_widget_set_margin_right (widget, 56);
- gtk_widget_set_margin_bottom (widget, 6);
- gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
- gtk_widget_show (widget);
-
- widget = GTK_WIDGET (egg_list_box_new ());
- egg_list_box_set_selection_mode (EGG_LIST_BOX (widget), GTK_SELECTION_NONE);
- egg_list_box_set_separator_funcs (EGG_LIST_BOX (widget),
- update_separator_func,
- NULL, NULL);
-
- box = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
- gtk_widget_set_margin_left (box, 50);
- gtk_widget_set_margin_right (box, 50);
- gtk_widget_set_margin_bottom (box, 24);
- gtk_widget_show (box);
- gtk_container_add (GTK_CONTAINER (box), widget);
- gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
-
- priv->brightness_row = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- label = gtk_label_new (_("_Screen Brightness"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, FALSE, TRUE, 0);
- gtk_size_group_add_widget (priv->battery_sizegroup, label);
- box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- label = gtk_label_new ("");
- gtk_box_pack_start (GTK_BOX (box2), label, FALSE, TRUE, 0);
- gtk_size_group_add_widget (priv->charge_sizegroup, label);
-
- priv->brightness_scale = scale = gtk_scale_new_with_range (GTK_ORIENTATION_HORIZONTAL, 0, 100, 1);
- gtk_scale_set_draw_value (GTK_SCALE (scale), FALSE);
- gtk_widget_set_margin_left (scale, 20);
- gtk_widget_set_margin_right (scale, 20);
- gtk_box_pack_start (GTK_BOX (box2), scale, TRUE, TRUE, 0);
- gtk_size_group_add_widget (priv->level_sizegroup, scale);
-
- gtk_box_pack_start (GTK_BOX (box), box2, TRUE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
-
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- label = gtk_label_new (_("Screen _Power Saving"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- /* FIXME: implement and use a screen-power-saving setting */
- sw = gtk_switch_new ();
- g_settings_bind (priv->gsd_settings, "idle-dim-battery",
- sw, "active",
- G_SETTINGS_BIND_DEFAULT);
- gtk_widget_set_margin_left (sw, 20);
- gtk_widget_set_margin_right (sw, 20);
- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
-
-#ifdef HAVE_NETWORK_MANAGER
- priv->wifi_row = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- label = gtk_label_new (_("_Wi-Fi"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- priv->wifi_switch = sw = gtk_switch_new ();
- gtk_widget_set_margin_left (sw, 20);
- gtk_widget_set_margin_right (sw, 20);
- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
-
- priv->nm_client = nm_client_new ();
- g_signal_connect (priv->nm_client, "notify",
- G_CALLBACK (nm_client_state_changed), self);
- g_signal_connect (priv->nm_client, "device-added",
- G_CALLBACK (nm_device_changed), self);
- g_signal_connect (priv->nm_client, "device-removed",
- G_CALLBACK (nm_device_changed), self);
- nm_device_changed (priv->nm_client, NULL, self);
-
- g_signal_connect (G_OBJECT (priv->wifi_switch), "notify::active",
- G_CALLBACK (wifi_switch_changed), self);
-#endif
-
-#ifdef HAVE_BLUETOOTH
- {
- BluetoothKillswitchState bt_state;
- priv->bt_killswitch = bluetooth_killswitch_new ();
- bt_state = bluetooth_killswitch_get_state (priv->bt_killswitch);
- if (bt_state != BLUETOOTH_KILLSWITCH_STATE_NO_ADAPTER)
- {
- box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- label = gtk_label_new (_("_Bluetooth"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- priv->bt_switch = sw = gtk_switch_new ();
- gtk_widget_set_sensitive (priv->bt_switch, bt_state == BLUETOOTH_KILLSWITCH_STATE_HARD_BLOCKED);
- gtk_widget_set_margin_left (sw, 20);
- gtk_widget_set_margin_right (sw, 20);
- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
-
- bt_killswitch_state_changed (priv->bt_killswitch, bt_state, self);
- g_signal_connect (G_OBJECT (priv->bt_killswitch), "state-changed",
- G_CALLBACK (bt_killswitch_state_changed), self);
- g_signal_connect (G_OBJECT (priv->bt_switch), "notify::active",
- G_CALLBACK (bt_switch_changed), self);
- }
- }
-#endif
-
- gtk_widget_show_all (widget);
-}
-
-static void
-update_automatic_suspend_label (CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
- gint ac_action;
- gint battery_action;
- gint ac_timeout;
- gint battery_timeout;
- const gchar *s;
-
- ac_action = g_settings_get_enum (priv->gsd_settings, "sleep-inactive-ac-type");
- battery_action = g_settings_get_enum (priv->gsd_settings, "sleep-inactive-battery-type");
- ac_timeout = g_settings_get_int (priv->gsd_settings, "sleep-inactive-ac-timeout");
- battery_timeout = g_settings_get_int (priv->gsd_settings, "sleep-inactive-battery-timeout");
-
- if (ac_action == 5)
- ac_timeout = 0;
- if (battery_action == 5)
- battery_timeout = 0;
-
- if (priv->has_batteries)
- {
- if (ac_timeout == 0 && battery_timeout == 0)
- s = _("Off");
- else if (ac_timeout == 0 && battery_timeout != 0)
- s = _("When on battery power");
- else if (ac_timeout != 0 && battery_timeout == 0)
- s = _("When plugged in");
- else
- s = _("On");
- }
- else
- {
- if (ac_timeout == 0)
- s = _("Off");
- else
- s = _("On");
- }
-
- gtk_label_set_label (GTK_LABEL (priv->automatic_suspend_label), s);
-}
-
-static void
-on_suspend_settings_changed (GSettings *settings,
- const char *key,
- CcPowerPanel *self)
+activate_link_cb (GtkLabel *label, gchar *uri, CcPowerPanel *self)
{
- CcPowerPanelPrivate *priv = self->priv;
- gint value;
-
- if (g_strcmp0 (key, "critical-battery-action") == 0)
- {
- value = g_settings_get_enum (settings, "critical-battery-action");
- set_value_for_combo (GTK_COMBO_BOX (priv->critical_battery_combo), value);
- }
- if (g_str_has_prefix (key, "sleep-inactive-"))
- {
- update_automatic_suspend_label (self);
- }
-}
-
-static void
-activate_child (CcPowerPanel *self,
- GtkWidget *child)
-{
- CcPowerPanelPrivate *priv = self->priv;
- GtkWidget *w;
- GtkWidget *toplevel;
+ CcShell *shell;
+ GError *error = NULL;
- if (child == priv->automatic_suspend_row)
+ shell = cc_panel_get_shell (CC_PANEL (self));
+ if (cc_shell_set_active_panel_from_id (shell, uri, NULL, &error) == FALSE)
{
- w = WID (priv->builder, "automatic_suspend_dialog");
- toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
- gtk_window_set_transient_for (GTK_WINDOW (w), GTK_WINDOW (toplevel));
- gtk_window_set_modal (GTK_WINDOW (w), TRUE);
- gtk_window_present (GTK_WINDOW (w));
+ g_warning ("Failed to activate %s panel: %s", uri, error->message);
+ g_error_free (error);
}
-}
-
-static gboolean
-get_sleep_type (GValue *value,
- GVariant *variant,
- gpointer data)
-{
- gboolean enabled;
-
- if (g_strcmp0 (g_variant_get_string (variant, NULL), "nothing") == 0)
- enabled = FALSE;
- else
- enabled = TRUE;
-
- g_value_set_boolean (value, enabled);
-
return TRUE;
}
-static GVariant *
-set_sleep_type (const GValue *value,
- const GVariantType *expected_type,
- gpointer data)
-{
- GVariant *res;
-
- if (g_value_get_boolean (value))
- res = g_variant_new_string ("suspend");
- else
- res = g_variant_new_string ("nothing");
-
- return res;
-}
-
-static void
-add_automatic_suspend_section (CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
- GtkWidget *vbox;
- GtkWidget *widget, *box, *label;
- GtkWidget *sw;
- gchar *s;
- gint value;
- GtkTreeModel *model;
- GtkWidget *dialog;
- GtkWidget *combo;
-
- vbox = WID (priv->builder, "vbox_power");
-
- s = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Off"));
- widget = gtk_label_new (s);
- g_free (s);
- gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
- gtk_misc_set_alignment (GTK_MISC (widget), 0, 0.5);
- gtk_widget_set_margin_left (widget, 56);
- gtk_widget_set_margin_right (widget, 50);
- gtk_widget_set_margin_bottom (widget, 6);
- gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
- gtk_widget_show (widget);
-
- widget = GTK_WIDGET (egg_list_box_new ());
- egg_list_box_set_selection_mode (EGG_LIST_BOX (widget), GTK_SELECTION_NONE);
- egg_list_box_set_separator_funcs (EGG_LIST_BOX (widget),
- update_separator_func,
- NULL, NULL);
- g_signal_connect_swapped (widget, "child-activated",
- G_CALLBACK (activate_child), self);
-
- box = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
- gtk_widget_set_margin_left (box, 50);
- gtk_widget_set_margin_right (box, 50);
- gtk_widget_set_margin_bottom (box, 24);
- gtk_widget_show (box);
- gtk_container_add (GTK_CONTAINER (box), widget);
- gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
-
- self->priv->automatic_suspend_row = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 50);
- label = gtk_label_new (_("_Automatic Suspend"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- priv->automatic_suspend_label = sw = gtk_label_new ("");
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), sw);
- gtk_misc_set_alignment (GTK_MISC (sw), 1, 0.5);
- gtk_widget_set_margin_left (sw, 24);
- gtk_widget_set_margin_right (sw, 24);
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
- update_automatic_suspend_label (self);
-
- priv->critical_battery_row = box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
- label = gtk_label_new (_("When Battery Power is _Critical"));
- gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5);
- gtk_label_set_use_underline (GTK_LABEL (label), TRUE);
- gtk_widget_set_margin_left (label, 20);
- gtk_widget_set_margin_right (label, 20);
- gtk_widget_set_margin_top (label, 6);
- gtk_widget_set_margin_bottom (label, 6);
- gtk_box_pack_start (GTK_BOX (box), label, TRUE, TRUE, 0);
-
- model = (GtkTreeModel*)gtk_builder_get_object (priv->builder, "liststore_critical");
- priv->critical_battery_combo = sw = gtk_combo_box_new_with_model (model);
- gtk_widget_set_margin_left (sw, 20);
- gtk_widget_set_margin_right (sw, 20);
- gtk_widget_set_valign (sw, GTK_ALIGN_CENTER);
-
- g_object_set_data (G_OBJECT (sw), "_gsettings_key", "critical-battery-action");
- disable_unavailable_combo_items (self, GTK_COMBO_BOX (sw));
- value = g_settings_get_enum (priv->gsd_settings, "critical-battery-action");
- set_value_for_combo (GTK_COMBO_BOX (sw), value);
- g_signal_connect (sw, "changed",
- G_CALLBACK (combo_enum_changed_cb), self);
-
- gtk_box_pack_start (GTK_BOX (box), sw, FALSE, TRUE, 0);
-
- g_signal_connect (priv->gsd_settings, "changed",
- G_CALLBACK (on_suspend_settings_changed), self);
-
- gtk_container_add (GTK_CONTAINER (widget), box);
- gtk_size_group_add_widget (priv->row_sizegroup, box);
- gtk_widget_show_all (widget);
-
- dialog = GTK_WIDGET (gtk_builder_get_object (priv->builder, "automatic_suspend_dialog"));
- sw = GTK_WIDGET (gtk_builder_get_object (priv->builder, "automatic_suspend_close"));
- g_signal_connect_swapped (sw, "clicked", G_CALLBACK (gtk_widget_hide), dialog);
- g_signal_connect (dialog, "delete-event", G_CALLBACK (gtk_widget_hide_on_delete), NULL);
-
- sw = GTK_WIDGET (gtk_builder_get_object (priv->builder, "suspend_on_battery_switch"));
- g_settings_bind_with_mapping (priv->gsd_settings, "sleep-inactive-battery-type",
- sw, "active",
- G_SETTINGS_BIND_DEFAULT,
- get_sleep_type, set_sleep_type, NULL, NULL);
-
- combo = GTK_WIDGET (gtk_builder_get_object (priv->builder, "suspend_on_battery_delay_combo"));
- g_object_set_data (G_OBJECT (combo), "_gsettings_key", "sleep-inactive-battery-timeout");
- value = g_settings_get_int (priv->gsd_settings, "sleep-inactive-battery-timeout");
- set_value_for_combo (GTK_COMBO_BOX (combo), value);
- g_signal_connect (combo, "changed",
- G_CALLBACK (combo_time_changed_cb), self);
- g_object_bind_property (sw, "active", combo, "sensitive",
- G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
-
- sw = GTK_WIDGET (gtk_builder_get_object (priv->builder, "suspend_on_ac_switch"));
- g_settings_bind_with_mapping (priv->gsd_settings, "sleep-inactive-ac-type",
- sw, "active",
- G_SETTINGS_BIND_DEFAULT,
- get_sleep_type, set_sleep_type, NULL, NULL);
-
- combo = GTK_WIDGET (gtk_builder_get_object (priv->builder, "suspend_on_ac_delay_combo"));
- g_object_set_data (G_OBJECT (combo), "_gsettings_key", "sleep-inactive-ac-timeout");
- value = g_settings_get_int (priv->gsd_settings, "sleep-inactive-ac-timeout");
- set_value_for_combo (GTK_COMBO_BOX (combo), value);
- g_signal_connect (combo, "changed",
- G_CALLBACK (combo_time_changed_cb), self);
- g_object_bind_property (sw, "active", combo, "sensitive",
- G_BINDING_DEFAULT | G_BINDING_SYNC_CREATE);
-}
-
-static gint
-device_sort_func (gconstpointer a, gconstpointer b, gpointer data)
-{
- GObject *row_a = (GObject*)a;
- GObject *row_b = (GObject*)b;
- gboolean a_primary;
- gboolean b_primary;
- gint a_kind;
- gint b_kind;
-
- a_primary = GPOINTER_TO_INT (g_object_get_data (row_a, "primary"));
- b_primary = GPOINTER_TO_INT (g_object_get_data (row_b, "primary"));
-
- if (a_primary)
- return -1;
- else if (b_primary)
- return 1;
-
- a_kind = GPOINTER_TO_INT (g_object_get_data (row_a, "kind"));
- b_kind = GPOINTER_TO_INT (g_object_get_data (row_b, "kind"));
-
- return a_kind - b_kind;
-}
-
-static void
-add_battery_section (CcPowerPanel *self)
-{
- CcPowerPanelPrivate *priv = self->priv;
- GtkWidget *vbox;
- GtkWidget *widget, *box;
-
- vbox = WID (priv->builder, "vbox_power");
-
- priv->battery_list = widget = GTK_WIDGET (egg_list_box_new ());
- egg_list_box_set_selection_mode (EGG_LIST_BOX (widget), GTK_SELECTION_NONE);
- egg_list_box_set_separator_funcs (EGG_LIST_BOX (widget),
- update_separator_func,
- NULL, NULL);
- egg_list_box_set_sort_func (EGG_LIST_BOX (widget),
- device_sort_func, NULL, NULL);
- gtk_widget_show (widget);
-
- priv->battery_section = box = gtk_frame_new (NULL);
- gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
- gtk_widget_set_margin_left (box, 50);
- gtk_widget_set_margin_right (box, 50);
- gtk_widget_set_margin_top (box, 24);
- gtk_widget_set_margin_bottom (box, 24);
- gtk_container_add (GTK_CONTAINER (box), widget);
- gtk_box_pack_start (GTK_BOX (vbox), box, FALSE, TRUE, 0);
- gtk_widget_show (box);
-}
-
-static gboolean
-grr (gpointer data)
-{
- CcPowerPanel *self = data;
-
- gtk_widget_queue_resize (GTK_WIDGET (self));
-
- return G_SOURCE_REMOVE;
-}
-
static void
cc_power_panel_init (CcPowerPanel *self)
{
- CcPowerPanelPrivate *priv;
GError *error;
GtkWidget *widget;
- GtkWidget *box;
+ gint value;
+ char *text;
- priv = self->priv = POWER_PANEL_PRIVATE (self);
+ self->priv = POWER_PANEL_PRIVATE (self);
- priv->builder = gtk_builder_new ();
+ self->priv->builder = gtk_builder_new ();
error = NULL;
- gtk_builder_add_from_file (priv->builder,
+ gtk_builder_add_from_file (self->priv->builder,
GNOMECC_UI_DIR "/power.ui",
&error);
@@ -1719,7 +1011,10 @@ cc_power_panel_init (CcPowerPanel *self)
return;
}
- priv->cancellable = g_cancellable_new ();
+ /* add levelbar */
+ self->priv->levelbar_primary = GTK_WIDGET
+ (gtk_builder_get_object (self->priv->builder, "levelbar_primary"));
+ self->priv->cancellable = g_cancellable_new ();
/* get initial icon state */
g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
@@ -1728,49 +1023,63 @@ cc_power_panel_init (CcPowerPanel *self)
"org.gnome.SettingsDaemon",
"/org/gnome/SettingsDaemon/Power",
"org.gnome.SettingsDaemon.Power",
- priv->cancellable,
+ self->priv->cancellable,
got_power_proxy_cb,
self);
- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION,
- G_DBUS_PROXY_FLAGS_NONE,
- NULL,
- "org.gnome.SettingsDaemon",
- "/org/gnome/SettingsDaemon/Power",
- "org.gnome.SettingsDaemon.Power.Screen",
- priv->cancellable,
- got_screen_proxy_cb,
- self);
-
- priv->up_client = up_client_new ();
-
- priv->gsd_settings = g_settings_new ("org.gnome.settings-daemon.plugins.power");
-
- priv->row_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_VERTICAL);
- priv->battery_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- priv->charge_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
- priv->level_sizegroup = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
-
- add_battery_section (self);
- add_power_saving_section (self);
- add_automatic_suspend_section (self);
-
+ /* find out if there are any battery or UPS devices attached
+ * and setup UI accordingly */
+ self->priv->up_client = up_client_new ();
set_ac_battery_ui_mode (self);
- update_automatic_suspend_label (self);
-
- widget = WID (priv->builder, "vbox_power");
- box = gtk_scrolled_window_new (NULL, NULL);
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (box),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (box), 490);
- gtk_widget_show (box);
- gtk_container_add (GTK_CONTAINER (self), box);
- g_object_ref (widget);
- gtk_widget_unparent (widget);
- gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (box), widget);
- gtk_style_context_add_class (gtk_widget_get_style_context (gtk_widget_get_parent (widget)), "view");
- gtk_style_context_add_class (gtk_widget_get_style_context (gtk_widget_get_parent (widget)), "content-view");
- g_object_unref (widget);
-
- g_idle_add (grr, self);
+
+ self->priv->gsd_settings = g_settings_new ("org.gnome.settings-daemon.plugins.power");
+ g_signal_connect (self->priv->gsd_settings,
+ "changed",
+ G_CALLBACK (on_lock_settings_changed),
+ self);
+
+ /* auto-sleep time */
+ value = g_settings_get_int (self->priv->gsd_settings, "sleep-inactive-ac-timeout");
+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+ "combobox_sleep_ac"));
+ set_value_for_combo (GTK_COMBO_BOX (widget), value);
+ g_object_set_data (G_OBJECT(widget), "_gsettings_key", "sleep-inactive-ac-timeout");
+ g_signal_connect (widget, "changed",
+ G_CALLBACK (combo_time_changed_cb),
+ self);
+ value = g_settings_get_int (self->priv->gsd_settings, "sleep-inactive-battery-timeout");
+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+ "combobox_sleep_battery"));
+ set_value_for_combo (GTK_COMBO_BOX (widget), value);
+ g_object_set_data (G_OBJECT(widget), "_gsettings_key", "sleep-inactive-battery-timeout");
+ g_signal_connect (widget, "changed",
+ G_CALLBACK (combo_time_changed_cb),
+ self);
+
+ /* actions */
+ 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",
+ G_CALLBACK (combo_enum_changed_cb),
+ self);
+
+ /* set screen link */
+ widget = GTK_WIDGET (gtk_builder_get_object (self->priv->builder,
+ "label_screen_settings"));
+ /* TRANSLATORS: this is a link to the "Brightness and Lock" control center panel */
+ text = g_strdup_printf ("<span size=\"small\">%s</span>",
+ _("Tip: <a href=\"screen\">screen brightness</a> affects how much power is used"));
+ gtk_label_set_markup (GTK_LABEL (widget), text);
+ g_free (text);
+
+ g_signal_connect (widget, "activate-link",
+ G_CALLBACK (activate_link_cb),
+ self);
+
+ widget = WID (self->priv->builder, "vbox_power");
+ gtk_widget_reparent (widget, (GtkWidget *) self);
}
diff --git a/panels/power/power.ui b/panels/power/power.ui
index 51c088c..3e7b269 100644
--- a/panels/power/power.ui
+++ b/panels/power/power.ui
@@ -47,6 +47,10 @@
<col id="0" translatable="yes">1 hour</col>
<col id="1">3600</col>
</row>
+ <row>
+ <col id="0" translatable="yes">Don't suspend</col>
+ <col id="1">0</col>
+ </row>
</data>
</object>
<object class="GtkWindow" id="window_power">
@@ -58,194 +62,299 @@
<property name="can_focus">False</property>
<property name="border_width">12</property>
<property name="spacing">3</property>
- </object>
- </child>
- </object>
-
- <object class="GtkDialog" id="automatic_suspend_dialog">
- <property name="can_focus">False</property>
- <property name="border_width">5</property>
- <property name="title" translatable="yes">Automatic Suspend</property>
- <property name="type_hint">dialog</property>
- <property name="resizable">False</property>
- <child internal-child="vbox">
- <object class="GtkBox" id="asdf">
- <property name="can_focus">False</property>
- <property name="resize_mode">immediate</property>
- <property name="orientation">vertical</property>
- <property name="spacing">2</property>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="dialog-action_area1">
+ <child>
+ <object class="GtkGrid" id="grid_combos">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="layout_style">end</property>
+ <property name="margin_left">53</property>
+ <property name="margin_right">60</property>
+ <property name="margin_bottom">24</property>
+ <property name="orientation">vertical</property>
+ <property name="row_spacing">6</property>
+ <property name="column_spacing">12</property>
<child>
- <object class="GtkButton" id="automatic_suspend_close">
- <property name="label" translatable="yes">_Close</property>
+ <object class="GtkLabel" id="label_header_battery">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="has_default">True</property>
- <property name="receives_default">True</property>
- <property name="use_underline">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">On battery power</property>
+ <property name="halign">center</property>
+ <attributes>
+ <attribute name="scale" value="0.82999999999999996"/>
+ </attributes>
</object>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
</packing>
</child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkGrid" id="grid1">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="margin_left">12</property>
- <property name="margin_right">6</property>
- <property name="margin_top">12</property>
- <property name="margin_bottom">12</property>
- <property name="row_spacing">12</property>
- <property name="column_spacing">6</property>
<child>
- <object class="GtkSwitch" id="suspend_on_battery_switch">
+ <object class="GtkLabel" id="label_header_ac">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">When plugged in</property>
+ <property name="halign">center</property>
+ <attributes>
+ <attribute name="scale" value="0.82999999999999996"/>
+ </attributes>
</object>
<packing>
- <property name="left_attach">0</property>
+ <property name="left_attach">2</property>
<property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkSwitch" id="suspend_on_ac_switch">
+ <object class="GtkLabel" id="label7">
<property name="visible">True</property>
- <property name="can_focus">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">Suspend when inactive for</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="suspend_on_battery_label">
+ <object class="GtkComboBoxText" id="combobox_sleep_battery">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">When on _Battery Power</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">suspend_on_battery_switch</property>
+ <property name="model">liststore_time</property>
+ <property name="hexpand">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label_header_battery"/>
+ <relation type="labelled-by" target="label7"/>
+ </accessibility>
</object>
<packing>
<property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ <property name="top_attach">1</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="suspend_on_ac_label">
+ <object class="GtkComboBoxText" id="combobox_sleep_ac">
+ <property name="width_request">150</property>
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label" translatable="yes">When _Plugged In</property>
- <property name="use_underline">True</property>
- <property name="mnemonic_widget">suspend_on_ac_switch</property>
+ <property name="model">liststore_time</property>
+ <property name="hexpand">True</property>
+ <accessibility>
+ <relation type="labelled-by" target="label_header_ac"/>
+ <relation type="labelled-by" target="label7"/>
+ </accessibility>
</object>
<packing>
- <property name="left_attach">1</property>
+ <property name="left_attach">2</property>
<property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="suspend_on_battery_delay_label">
+ <object class="GtkLabel" id="label_critical">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Delay</property>
- <property name="margin-left">20</property>
- <style>
- <class name="dim-label"/>
- </style>
+ <property name="halign">end</property>
+ <property name="label" translatable="yes">When power is _critically low</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">combobox_critical</property>
</object>
<packing>
- <property name="left_attach">2</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ <property name="left_attach">0</property>
+ <property name="top_attach">2</property>
</packing>
</child>
<child>
- <object class="GtkLabel" id="suspend_on_ac_delay_label">
+ <object class="GtkComboBox" id="combobox_critical">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label" translatable="yes">Delay</property>
- <property name="margin-left">20</property>
- <style>
- <class name="dim-label"/>
- </style>
+ <property name="model">liststore_critical</property>
</object>
<packing>
- <property name="left_attach">2</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
</packing>
</child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box_primary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">53</property>
+ <property name="margin_right">60</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
<child>
- <object class="GtkComboBoxText" id="suspend_on_battery_delay_combo">
+ <object class="GtkBox" id="box_primary_header">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="entry_text_column">0</property>
- <property name="model">liststore_time</property>
- <property name="margin_left">4</property>
- <property name="margin_right">4</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkImage" id="image_primary_warning">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">dialog-warning-symbolic</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_battery_primary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label">55 minutes until fully charged</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box_battery_addon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkImage" id="image_battery_addon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="stock">gtk-info</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="label_battery_addon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label">Your secondary battery is empty</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
<packing>
- <property name="left_attach">3</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <object class="GtkComboBoxText" id="suspend_on_ac_delay_combo">
- <property name="visible">True</property>
+ <object class="GtkLevelBar" id="levelbar_primary">
<property name="can_focus">False</property>
- <property name="entry_text_column">0</property>
- <property name="model">liststore_time</property>
- <property name="margin_left">4</property>
- <property name="margin_right">4</property>
+ <property name="visible">True</property>
</object>
<packing>
- <property name="left_attach">3</property>
- <property name="top_attach">1</property>
- <property name="width">1</property>
- <property name="height">1</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
- <property name="fill">True</property>
+ <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="label_screen_settings">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">53</property>
+ <property name="margin_right">40</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.49000000953674316</property>
+ <property name="ypad">4</property>
+ <property name="label">Tip: <a href="moo">Screen Settings</a> affect how much power is used</property>
+ <property name="use_markup">True</property>
+ <property name="track_visited_links">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="box_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_top">15</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">24</property>
+ <child>
+ <object class="GtkSeparator" id="separator_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkGrid" id="grid_secondary">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">9</property>
+ <property name="margin_right">28</property>
+ <property name="margin_bottom">15</property>
+ <property name="row_spacing">18</property>
+ <property name="column_spacing">6</property>
+ <property name="column_homogeneous">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
</child>
- <action-widgets>
- <action-widget response="0">automatic_suspend_close</action-widget>
- </action-widgets>
+ </object>
+ <object class="GtkSizeGroup" id="sizegroup_combos">
+ <widgets>
+ <widget name="combobox_critical"/>
+ <widget name="combobox_sleep_battery"/>
+ <widget name="combobox_sleep_ac"/>
+ </widgets>
</object>
</interface>
-
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]