diff options
author | Ian Douglas Scott <idscott@system76.com> | 2020-10-12 10:44:31 -0700 |
---|---|---|
committer | Robert Ancell <robert.ancell@gmail.com> | 2020-10-14 22:56:16 +0000 |
commit | f40d4865faaaccf9dec6a493ba4c4d05059d62f5 (patch) | |
tree | f71cccfb0dbf71990ddad360141162380edcf648 | |
parent | dc9a3c993a8bdf3148dd872bb61f219553d7432c (diff) | |
download | gnome-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.c | 91 | ||||
-rw-r--r-- | panels/power/cc-battery-row.h | 3 | ||||
-rw-r--r-- | panels/power/cc-power-panel.c | 142 |
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; } |