summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Douglas Scott <idscott@system76.com>2020-10-12 10:44:31 -0700
committerRobert Ancell <robert.ancell@gmail.com>2020-10-14 22:56:16 +0000
commitf40d4865faaaccf9dec6a493ba4c4d05059d62f5 (patch)
treef71cccfb0dbf71990ddad360141162380edcf648
parentdc9a3c993a8bdf3148dd872bb61f219553d7432c (diff)
downloadgnome-control-center-f40d4865faaaccf9dec6a493ba4c4d05059d62f5.tar.gz
power: Use CcBatteryRow for devices section as well
This had another slightly different version of the same code.
-rw-r--r--panels/power/cc-battery-row.c91
-rw-r--r--panels/power/cc-battery-row.h3
-rw-r--r--panels/power/cc-power-panel.c142
3 files changed, 99 insertions, 137 deletions
diff --git a/panels/power/cc-battery-row.c b/panels/power/cc-battery-row.c
index 1ecf61f62..55d7584d7 100644
--- a/panels/power/cc-battery-row.c
+++ b/panels/power/cc-battery-row.c
@@ -36,6 +36,9 @@ struct _CcBatteryRow {
GtkLabel *percentage_label;
GtkBox *primary_bottom_box;
GtkLabel *primary_percentage_label;
+
+ UpDeviceKind kind;
+ gboolean primary;
};
G_DEFINE_TYPE (CcBatteryRow, cc_battery_row, GTK_TYPE_LIST_BOX_ROW)
@@ -178,6 +181,46 @@ get_details_string (gdouble percentage, UpDeviceState state, guint64 time)
return g_steal_pointer (&details);
}
+static const char *
+kind_to_description (UpDeviceKind kind)
+{
+ switch (kind)
+ {
+ case UP_DEVICE_KIND_MOUSE:
+ /* TRANSLATORS: secondary battery */
+ return N_("Wireless mouse");
+ case UP_DEVICE_KIND_KEYBOARD:
+ /* TRANSLATORS: secondary battery */
+ return N_("Wireless keyboard");
+ case UP_DEVICE_KIND_UPS:
+ /* TRANSLATORS: secondary battery */
+ return N_("Uninterruptible power supply");
+ case UP_DEVICE_KIND_PDA:
+ /* TRANSLATORS: secondary battery */
+ return N_("Personal digital assistant");
+ case UP_DEVICE_KIND_PHONE:
+ /* TRANSLATORS: secondary battery */
+ return N_("Cellphone");
+ case UP_DEVICE_KIND_MEDIA_PLAYER:
+ /* TRANSLATORS: secondary battery */
+ return N_("Media player");
+ case UP_DEVICE_KIND_TABLET:
+ /* TRANSLATORS: secondary battery */
+ return N_("Tablet");
+ case UP_DEVICE_KIND_COMPUTER:
+ /* TRANSLATORS: secondary battery */
+ return N_("Computer");
+ case UP_DEVICE_KIND_GAMING_INPUT:
+ /* TRANSLATORS: secondary battery */
+ return N_("Gaming input device");
+ default:
+ /* TRANSLATORS: secondary battery, misc */
+ return N_("Battery");
+ }
+
+ g_assert_not_reached ();
+}
+
CcBatteryRow*
cc_battery_row_new (UpDevice *device,
gboolean primary)
@@ -192,39 +235,55 @@ cc_battery_row_new (UpDevice *device,
CcBatteryRow *self;
guint64 time_empty, time_full, time;
gdouble energy_full, energy_rate;
+ gboolean is_kind_battery;
+ UpDeviceLevel battery_level;
self = g_object_new (CC_TYPE_BATTERY_ROW, NULL);
g_object_get (device,
"kind", &kind,
"state", &state,
+ "model", &name,
"percentage", &percentage,
"icon-name", &icon_name,
"time-to-empty", &time_empty,
"time-to-full", &time_full,
"energy-full", &energy_full,
"energy-rate", &energy_rate,
+ "battery-level", &battery_level,
NULL);
if (state == UP_DEVICE_STATE_DISCHARGING)
time = time_empty;
else
time = time_full;
+ is_kind_battery = (kind == UP_DEVICE_KIND_BATTERY || kind == UP_DEVICE_KIND_UPS);
+
/* Name label */
- if (g_object_get_data (G_OBJECT (device), "is-main-battery") != NULL)
- name = C_("Battery name", "Main");
- else
- name = C_("Battery name", "Extra");
+ if (is_kind_battery)
+ {
+ if (g_object_get_data (G_OBJECT (device), "is-main-battery") != NULL)
+ name = C_("Battery name", "Main");
+ else
+ name = C_("Battery name", "Extra");
+ }
+ else if (name == NULL || name[0] == '\0')
+ {
+ name = _(kind_to_description (kind));
+ }
gtk_label_set_text (self->name_label, name);
/* Icon */
- if (icon_name != NULL && *icon_name != '\0')
+ if (is_kind_battery && icon_name != NULL && icon_name[0] != '\0')
gtk_image_set_from_icon_name (self->icon, icon_name, GTK_ICON_SIZE_BUTTON);
/* Percentage label */
- s = g_strdup_printf ("%d%%", (int)percentage);
- gtk_label_set_text (self->percentage_label, s);
- gtk_label_set_text (self->primary_percentage_label, s);
+ if (battery_level == UP_DEVICE_LEVEL_NONE)
+ {
+ s = g_strdup_printf ("%d%%", (int)percentage);
+ gtk_label_set_text (self->percentage_label, s);
+ gtk_label_set_text (self->primary_percentage_label, s);
+ }
/* Level bar */
gtk_level_bar_set_value (self->levelbar, percentage / 100.0);
@@ -241,9 +300,9 @@ cc_battery_row_new (UpDevice *device,
ATK_RELATION_LABELLED_BY,
gtk_widget_get_accessible (GTK_WIDGET (primary ? self->primary_percentage_label
: self->percentage_label)));
- g_object_set_data (G_OBJECT (self), "primary", GINT_TO_POINTER (primary));
- g_object_set_data (G_OBJECT (self), "kind", GINT_TO_POINTER (kind));
+ self->kind = kind;
+ self->primary = primary;
return self;
}
@@ -276,4 +335,16 @@ cc_battery_row_set_battery_sizegroup (CcBatteryRow *self,
GtkSizeGroup *sizegroup)
{
gtk_size_group_add_widget (sizegroup, GTK_WIDGET (self->battery_box));
+}
+
+gboolean
+cc_battery_row_get_primary (CcBatteryRow *self)
+{
+ return self->primary;
+}
+
+UpDeviceKind
+cc_battery_row_get_kind (CcBatteryRow *self)
+{
+ return self->kind;
} \ No newline at end of file
diff --git a/panels/power/cc-battery-row.h b/panels/power/cc-battery-row.h
index a4c27b629..e3b72feb2 100644
--- a/panels/power/cc-battery-row.h
+++ b/panels/power/cc-battery-row.h
@@ -43,4 +43,7 @@ void cc_battery_row_set_charge_sizegroup (CcBatteryRow *self,
void cc_battery_row_set_battery_sizegroup (CcBatteryRow *self,
GtkSizeGroup *sizegroup);
+gboolean cc_battery_row_get_primary (CcBatteryRow *self);
+UpDeviceKind cc_battery_row_get_kind (CcBatteryRow *self);
+
G_END_DECLS \ No newline at end of file
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index 079037cae..b9226f803 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -343,128 +343,16 @@ add_battery (CcPowerPanel *panel, UpDevice *device, gboolean primary)
gtk_widget_set_visible (panel->battery_section, TRUE);
}
-static const char *
-kind_to_description (UpDeviceKind kind)
-{
- switch (kind)
- {
- case UP_DEVICE_KIND_MOUSE:
- /* TRANSLATORS: secondary battery */
- return N_("Wireless mouse");
- case UP_DEVICE_KIND_KEYBOARD:
- /* TRANSLATORS: secondary battery */
- return N_("Wireless keyboard");
- case UP_DEVICE_KIND_UPS:
- /* TRANSLATORS: secondary battery */
- return N_("Uninterruptible power supply");
- case UP_DEVICE_KIND_PDA:
- /* TRANSLATORS: secondary battery */
- return N_("Personal digital assistant");
- case UP_DEVICE_KIND_PHONE:
- /* TRANSLATORS: secondary battery */
- return N_("Cellphone");
- case UP_DEVICE_KIND_MEDIA_PLAYER:
- /* TRANSLATORS: secondary battery */
- return N_("Media player");
- case UP_DEVICE_KIND_TABLET:
- /* TRANSLATORS: secondary battery */
- return N_("Tablet");
- case UP_DEVICE_KIND_COMPUTER:
- /* TRANSLATORS: secondary battery */
- return N_("Computer");
- case UP_DEVICE_KIND_GAMING_INPUT:
- /* TRANSLATORS: secondary battery */
- return N_("Gaming input device");
- default:
- /* TRANSLATORS: secondary battery, misc */
- return N_("Battery");
- }
-
- g_assert_not_reached ();
-}
-
static void
add_device (CcPowerPanel *panel, UpDevice *device)
{
- UpDeviceKind kind;
- UpDeviceState state;
- GtkWidget *row;
- GtkWidget *hbox;
- GtkWidget *box2;
- GtkWidget *widget;
- GtkWidget *title;
- g_autoptr(GString) description = NULL;
- gdouble percentage;
- g_autofree gchar *name = NULL;
- gboolean is_present;
- UpDeviceLevel battery_level;
-
- g_object_get (device,
- "kind", &kind,
- "percentage", &percentage,
- "state", &state,
- "model", &name,
- "is-present", &is_present,
- "battery-level", &battery_level,
- NULL);
-
- if (!is_present)
- return;
-
- if (name == NULL || *name == '\0')
- description = g_string_new (_(kind_to_description (kind)));
- else
- description = g_string_new (name);
-
- /* create the new widget */
- row = no_prelight_row_new ();
- gtk_widget_show (row);
- hbox = row_box_new ();
- gtk_container_add (GTK_CONTAINER (row), hbox);
- title = row_title_new (description->str, NULL, NULL);
- gtk_box_pack_start (GTK_BOX (hbox), title, FALSE, TRUE, 0);
- gtk_size_group_add_widget (panel->battery_sizegroup, title);
-
- box2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
- gtk_widget_show (box2);
-
- if (battery_level == UP_DEVICE_LEVEL_NONE)
- {
- g_autofree gchar *s = NULL;
-
- s = g_strdup_printf ("%d%%", (int)(percentage + 0.5));
- widget = gtk_label_new (s);
- }
- else
- {
- widget = gtk_label_new ("");
- }
-
- gtk_widget_show (widget);
- gtk_widget_set_halign (widget, GTK_ALIGN_END);
- gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
- gtk_label_set_xalign (GTK_LABEL (widget), 0.0);
- 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 (panel->charge_sizegroup, widget);
-
- widget = gtk_level_bar_new ();
- gtk_widget_show (widget);
- gtk_widget_set_halign (widget, TRUE);
- gtk_widget_set_halign (widget, GTK_ALIGN_FILL);
- gtk_widget_set_valign (widget, GTK_ALIGN_CENTER);
- gtk_level_bar_set_value (GTK_LEVEL_BAR (widget), percentage / 100.0f);
- gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (widget), "warning-battery-offset", 0.03);
- gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (widget), "low-battery-offset", 0.1);
- gtk_level_bar_add_offset_value (GTK_LEVEL_BAR (widget), "high-battery-offset", 1.0);
- gtk_box_pack_start (GTK_BOX (box2), widget, TRUE, TRUE, 0);
- gtk_size_group_add_widget (panel->level_sizegroup, widget);
- gtk_box_pack_start (GTK_BOX (hbox), box2, TRUE, TRUE, 0);
-
- gtk_container_add (GTK_CONTAINER (panel->device_list), row);
- gtk_size_group_add_widget (panel->row_sizegroup, row);
- g_object_set_data (G_OBJECT (row), "kind", GINT_TO_POINTER (kind));
+ CcBatteryRow *row = cc_battery_row_new (device, FALSE);
+ cc_battery_row_set_level_sizegroup (row, panel->level_sizegroup);
+ cc_battery_row_set_row_sizegroup (row, panel->row_sizegroup);
+ cc_battery_row_set_charge_sizegroup (row, panel->charge_sizegroup);
+ cc_battery_row_set_battery_sizegroup (row, panel->battery_sizegroup);
+ gtk_container_add (GTK_CONTAINER (panel->device_list), GTK_WIDGET (row));
gtk_widget_set_visible (panel->device_section, TRUE);
}
@@ -1887,25 +1775,25 @@ add_general_section (CcPowerPanel *self)
}
static gint
-battery_sort_func (gconstpointer a, gconstpointer b, gpointer data)
+battery_sort_func (GtkListBoxRow *a, GtkListBoxRow *b, gpointer data)
{
- GObject *row_a = (GObject*)a;
- GObject *row_b = (GObject*)b;
+ CcBatteryRow *row_a = CC_BATTERY_ROW (a);
+ CcBatteryRow *row_b = CC_BATTERY_ROW (b);
gboolean a_primary;
gboolean b_primary;
- gint a_kind;
- gint b_kind;
+ UpDeviceKind a_kind;
+ UpDeviceKind 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"));
+ a_primary = cc_battery_row_get_primary(row_a);
+ b_primary = cc_battery_row_get_primary(row_b);
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"));
+ a_kind = cc_battery_row_get_kind(row_a);
+ b_kind = cc_battery_row_get_kind(row_b);
return a_kind - b_kind;
}