aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/device.c80
-rw-r--r--src/device.h6
-rw-r--r--src/notifier.c2
-rw-r--r--src/service.c6
4 files changed, 76 insertions, 18 deletions
diff --git a/src/device.c b/src/device.c
index 753a7b0..bfa31ea 100644
--- a/src/device.c
+++ b/src/device.c
@@ -3,7 +3,7 @@
A simple Device structure used internally by indicator-power
Copyright 2012 Canonical Ltd.
-Copyright 2021 Robert Tari
+Copyright 2021-2022 Robert Tari
Authors:
Charles Kerr <charles.kerr@canonical.com>
@@ -395,6 +395,7 @@ device_kind_to_string (UpDeviceKind kind)
/**
indicator_power_device_get_icon_names:
@device: #IndicatorPowerDevice from which to generate the icon names
+ @panel: Whether to prefer panel icons
See also indicator_power_device_get_gicon().
@@ -403,7 +404,7 @@ device_kind_to_string (UpDeviceKind kind)
Free with g_strfreev() when done.
*/
GStrv
-indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
+indicator_power_device_get_icon_names (const IndicatorPowerDevice * device, gboolean panel)
{
const gchar *suffix_str;
const gchar *index_str;
@@ -422,26 +423,43 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
if (kind == UP_DEVICE_KIND_LINE_POWER)
{
- g_ptr_array_add (names, g_strdup("ac-adapter-symbolic"));
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup("ac-adapter-panel"));
+ }
+
g_ptr_array_add (names, g_strdup("ac-adapter"));
}
else if (kind == UP_DEVICE_KIND_MONITOR)
{
- g_ptr_array_add (names, g_strdup("gpm-monitor-symbolic"));
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup("gpm-monitor-panel"));
+ }
+
g_ptr_array_add (names, g_strdup("gpm-monitor"));
}
else switch (state)
{
case UP_DEVICE_STATE_EMPTY:
- g_ptr_array_add (names, g_strdup_printf("%s-empty-symbolic", kind_str));
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf("%s-empty-panel", kind_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf("gpm-%s-empty", kind_str));
g_ptr_array_add (names, g_strdup_printf("gpm-%s-000", kind_str));
g_ptr_array_add (names, g_strdup_printf("%s-empty", kind_str));
break;
case UP_DEVICE_STATE_FULLY_CHARGED:
- g_ptr_array_add (names, g_strdup_printf("%s-full-charged-symbolic", kind_str));
- g_ptr_array_add (names, g_strdup_printf("%s-full-charging-symbolic", kind_str));
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf("%s-full-charged-panel", kind_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf("gpm-%s-full", kind_str));
g_ptr_array_add (names, g_strdup_printf("gpm-%s-100", kind_str));
g_ptr_array_add (names, g_strdup_printf("%s-full-charged", kind_str));
@@ -452,15 +470,31 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
suffix_str = get_device_icon_suffix (percentage);
index_str = get_closest_10_percent_percentage (percentage);
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-panel", kind_str, index_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, index_str));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s-charging", kind_str, index_str));
index_str_2 = get_fallback_device_icon_index (percentage);
if (g_strcmp0 (index_str, index_str_2))
{
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-panel", kind_str, index_str_2));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, index_str_2));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s-charging", kind_str, index_str_2));
}
- g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-symbolic", kind_str, suffix_str));
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging-panel", kind_str, suffix_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s-charging", kind_str, suffix_str));
// NB: fallthrough to use foo-bar as a fallback for foo-bar-charging
@@ -470,20 +504,41 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
case UP_DEVICE_STATE_UNKNOWN: /* http://pad.lv/1470080 */
suffix_str = get_device_icon_suffix (percentage);
index_str = get_closest_10_percent_percentage (percentage);
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-panel", kind_str, index_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, index_str));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s", kind_str, index_str));
index_str_2 = get_fallback_device_icon_index (percentage);
if (g_strcmp0 (index_str, index_str_2))
{
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-panel", kind_str, index_str_2));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, index_str_2));
g_ptr_array_add (names, g_strdup_printf ("gpm-%s-%s", kind_str, index_str_2));
}
- g_ptr_array_add (names, g_strdup_printf ("%s-%s-symbolic", kind_str, suffix_str));
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf ("%s-%s-panel", kind_str, suffix_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf ("%s-%s", kind_str, suffix_str));
break;
default:
- g_ptr_array_add (names, g_strdup_printf("%s-missing-symbolic", kind_str));
+
+ if (panel)
+ {
+ g_ptr_array_add (names, g_strdup_printf("%s-missing-panel", kind_str));
+ }
+
g_ptr_array_add (names, g_strdup_printf("gpm-%s-missing", kind_str));
g_ptr_array_add (names, g_strdup_printf("%s-missing", kind_str));
}
@@ -495,6 +550,7 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
/**
indicator_power_device_get_gicon:
@device: #IndicatorPowerDevice to generate the icon names from
+ @panel: Whether to prefer panel icons
A convenience function to call g_themed_icon_new_from_names()
with the names returned by indicator_power_device_get_icon_names()
@@ -502,9 +558,9 @@ indicator_power_device_get_icon_names (const IndicatorPowerDevice * device)
Return value: (transfer full): A themed GIcon
*/
GIcon *
-indicator_power_device_get_gicon (const IndicatorPowerDevice * device)
+indicator_power_device_get_gicon (const IndicatorPowerDevice * device, gboolean panel)
{
- GStrv names = indicator_power_device_get_icon_names (device);
+ GStrv names = indicator_power_device_get_icon_names (device, panel);
GIcon * icon = g_themed_icon_new_from_names (names, -1);
g_strfreev (names);
return icon;
diff --git a/src/device.h b/src/device.h
index 1186cee..15c64f3 100644
--- a/src/device.h
+++ b/src/device.h
@@ -3,9 +3,11 @@
A simple Device structure used internally by indicator-power
Copyright 2012 Canonical Ltd.
+Copyright 2022 Robert Tari
Authors:
Charles Kerr <charles.kerr@canonical.com>
+ Robert Tari <robert@tari.in>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
@@ -126,8 +128,8 @@ gdouble indicator_power_device_get_percentage (const IndicatorPower
time_t indicator_power_device_get_time (const IndicatorPowerDevice * device);
gboolean indicator_power_device_get_power_supply (const IndicatorPowerDevice * device);
-GStrv indicator_power_device_get_icon_names (const IndicatorPowerDevice * device);
-GIcon * indicator_power_device_get_gicon (const IndicatorPowerDevice * device);
+GStrv indicator_power_device_get_icon_names (const IndicatorPowerDevice * device, gboolean panel);
+GIcon * indicator_power_device_get_gicon (const IndicatorPowerDevice * device, gboolean panel);
char * indicator_power_device_get_readable_text (const IndicatorPowerDevice * device);
diff --git a/src/notifier.c b/src/notifier.c
index e833e72..c513656 100644
--- a/src/notifier.c
+++ b/src/notifier.c
@@ -302,7 +302,7 @@ notification_show(IndicatorPowerNotifier * self)
: _("Battery Critical");
pct = indicator_power_device_get_percentage(p->battery);
body = g_strdup_printf(_("%.0f%% charge remaining"), pct);
- icon_names = indicator_power_device_get_icon_names(p->battery);
+ icon_names = indicator_power_device_get_icon_names(p->battery, FALSE);
if (icon_names && *icon_names)
icon_name = icon_names[0];
else
diff --git a/src/service.c b/src/service.c
index 2520286..3aec746 100644
--- a/src/service.c
+++ b/src/service.c
@@ -1,6 +1,6 @@
/*
* Copyright 2013-2016 Canonical Ltd.
- * Copyright 2021 Robert Tari
+ * Copyright 2021-2022 Robert Tari
*
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 3, as published
@@ -489,7 +489,7 @@ create_header_state (IndicatorPowerService * self)
g_free (title);
}
- if ((icon = indicator_power_device_get_gicon (p->primary_device)))
+ if ((icon = indicator_power_device_get_gicon (p->primary_device, TRUE)))
{
GVariant * serialized_icon = g_icon_serialize (icon);
@@ -530,7 +530,7 @@ append_device_to_menu (GMenu * menu, const IndicatorPowerDevice * device, int pr
g_menu_item_set_attribute (item, "x-ayatana-type", "s", "org.ayatana.indicator.basic");
- if ((icon = indicator_power_device_get_gicon (device)))
+ if ((icon = indicator_power_device_get_gicon (device, FALSE)))
{
GVariant * serialized_icon = g_icon_serialize (icon);