From 906c021e2ebd927b512c9d52c03c17e70c01f065 Mon Sep 17 00:00:00 2001 From: Robert Tari Date: Wed, 5 Apr 2023 13:25:10 +0200 Subject: Use the device model name in the menu --- src/device.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 52 insertions(+), 10 deletions(-) (limited to 'src/device.c') diff --git a/src/device.c b/src/device.c index a1c4d14..a373981 100644 --- a/src/device.c +++ b/src/device.c @@ -35,6 +35,7 @@ License along with this library. If not, see struct _IndicatorPowerDevicePrivate { UpDeviceKind kind; + gchar *model; UpDeviceState state; gchar * object_path; gdouble percentage; @@ -52,6 +53,7 @@ struct _IndicatorPowerDevicePrivate enum { PROP_0, PROP_KIND, + PROP_MODEL, PROP_STATE, PROP_OBJECT_PATH, PROP_PERCENTAGE, @@ -91,6 +93,12 @@ indicator_power_device_class_init (IndicatorPowerDeviceClass *klass) UP_DEVICE_KIND_UNKNOWN, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + properties[PROP_MODEL] = g_param_spec_string (INDICATOR_POWER_DEVICE_MODEL, + "model", + "The device's model", + NULL, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS); + properties[PROP_STATE] = g_param_spec_int (INDICATOR_POWER_DEVICE_STATE, "state", "The device's UpDeviceState", @@ -135,6 +143,7 @@ indicator_power_device_init (IndicatorPowerDevice *self) priv = indicator_power_device_get_instance_private(self); priv->kind = UP_DEVICE_KIND_UNKNOWN; + priv->model = NULL; priv->state = UP_DEVICE_STATE_UNKNOWN; priv->object_path = NULL; priv->percentage = 0.0; @@ -182,6 +191,10 @@ get_property (GObject * o, guint prop_id, GValue * value, GParamSpec * pspec) g_value_set_int (value, priv->kind); break; + case PROP_MODEL: + g_value_set_string (value, priv->model); + break; + case PROP_STATE: g_value_set_int (value, priv->state); break; @@ -220,6 +233,11 @@ set_property (GObject * o, guint prop_id, const GValue * value, GParamSpec * psp p->kind = (UpDeviceKind) g_value_get_int (value); break; + case PROP_MODEL: + g_free (p->model); + p->model = g_value_dup_string (value); + break; + case PROP_STATE: p->state = (UpDeviceState) g_value_get_int (value); break; @@ -280,6 +298,16 @@ indicator_power_device_get_kind (const IndicatorPowerDevice * device) return device->priv->kind; } +const gchar * +indicator_power_device_get_model (const IndicatorPowerDevice * device) +{ + /* LCOV_EXCL_START */ + g_return_val_if_fail (INDICATOR_IS_POWER_DEVICE(device), NULL); + /* LCOV_EXCL_STOP */ + + return device->priv->model; +} + UpDeviceState indicator_power_device_get_state (const IndicatorPowerDevice * device) { @@ -880,16 +908,25 @@ time_is_relevant (const IndicatorPowerDevice * device) */ static char * get_menuitem_text (const IndicatorPowerDevice * device, - gboolean accessible) + gboolean accessible, gboolean bModelName) { char * str = NULL; const IndicatorPowerDevicePrivate * p = device->priv; - const char * kind_str = device_kind_to_localised_string (p->kind); + const char * sLabel = NULL; + + if (bModelName) + { + sLabel = p->model; + } + else + { + sLabel = device_kind_to_localised_string (p->kind); + } if (p->state == UP_DEVICE_STATE_FULLY_CHARGED) { /* TRANSLATORS: example: "battery (charged)" */ - str = g_strdup_printf (_("%s (charged)"), kind_str); + str = g_strdup_printf (_("%s (charged)"), sLabel); } else { @@ -906,11 +943,11 @@ get_menuitem_text (const IndicatorPowerDevice * device, if (time_str && *time_str) { /* TRANSLATORS: example: "battery (time remaining)" */ - str = g_strdup_printf (_("%s (%s)"), kind_str, time_str); + str = g_strdup_printf (_("%s (%s)"), sLabel, time_str); } else { - str = g_strdup (kind_str); + str = g_strdup (sLabel); } g_free (time_str); @@ -920,11 +957,11 @@ get_menuitem_text (const IndicatorPowerDevice * device, } char * -indicator_power_device_get_readable_text (const IndicatorPowerDevice * device) +indicator_power_device_get_readable_text (const IndicatorPowerDevice * device, gboolean bModelName) { g_return_val_if_fail (INDICATOR_IS_POWER_DEVICE(device), NULL); - return get_menuitem_text (device, FALSE); + return get_menuitem_text (device, FALSE, bModelName); } char * @@ -932,7 +969,7 @@ indicator_power_device_get_accessible_text (const IndicatorPowerDevice * device) { g_return_val_if_fail (INDICATOR_IS_POWER_DEVICE(device), NULL); - return get_menuitem_text (device, TRUE); + return get_menuitem_text (device, TRUE, FALSE); } /** @@ -1020,6 +1057,7 @@ indicator_power_device_get_accessible_title (const IndicatorPowerDevice * device IndicatorPowerDevice * indicator_power_device_new (const gchar * object_path, UpDeviceKind kind, + const gchar * model, gdouble percentage, UpDeviceState state, time_t timestamp, @@ -1027,6 +1065,7 @@ indicator_power_device_new (const gchar * object_path, { GObject * o = g_object_new (INDICATOR_POWER_DEVICE_TYPE, INDICATOR_POWER_DEVICE_KIND, kind, + INDICATOR_POWER_DEVICE_MODEL, model, INDICATOR_POWER_DEVICE_STATE, state, INDICATOR_POWER_DEVICE_OBJECT_PATH, object_path, INDICATOR_POWER_DEVICE_PERCENTAGE, percentage, @@ -1039,9 +1078,10 @@ indicator_power_device_new (const gchar * object_path, IndicatorPowerDevice * indicator_power_device_new_from_variant (GVariant * v) { - g_return_val_if_fail (g_variant_is_of_type (v, G_VARIANT_TYPE("(susdutb)")), NULL); + g_return_val_if_fail (g_variant_is_of_type (v, G_VARIANT_TYPE("(sussdutb)")), NULL); UpDeviceKind kind = UP_DEVICE_KIND_UNKNOWN; + const gchar *model = NULL; UpDeviceState state = UP_DEVICE_STATE_UNKNOWN; const gchar * icon = NULL; const gchar * object_path = NULL; @@ -1049,9 +1089,10 @@ indicator_power_device_new_from_variant (GVariant * v) guint64 time = 0; gboolean power_supply = FALSE; - g_variant_get (v, "(&su&sdutb)", + g_variant_get (v, "(&sus&sdutb)", &object_path, &kind, + &model, &icon, &percentage, &state, @@ -1060,6 +1101,7 @@ indicator_power_device_new_from_variant (GVariant * v) return indicator_power_device_new (object_path, kind, + model, percentage, state, (time_t)time, -- cgit v1.2.3