Display when the battery is charging

This commit is contained in:
Pierre Pronchery 2011-08-23 23:20:36 +00:00
parent 1425058415
commit 95bd1f18a2

View File

@ -85,7 +85,8 @@ static int _panel_destroy(PhonePlugin * plugin);
static int _panel_event(PhonePlugin * plugin, PhoneEvent * event); static int _panel_event(PhonePlugin * plugin, PhoneEvent * event);
static void _panel_settings(PhonePlugin * plugin); static void _panel_settings(PhonePlugin * plugin);
static void _panel_set_battery_level(Panel * panel, gdouble level); static void _panel_set_battery_level(Panel * panel, gdouble level,
gboolean charging);
static void _panel_set_operator(Panel * panel, ModemRegistrationStatus status, static void _panel_set_operator(Panel * panel, ModemRegistrationStatus status,
char const * _operator); char const * _operator);
static void _panel_set_signal_level(Panel * panel, gdouble level); static void _panel_set_signal_level(Panel * panel, gdouble level);
@ -279,7 +280,8 @@ static int _event_modem_event(PhonePlugin * plugin, ModemEvent * event)
{ {
case MODEM_EVENT_TYPE_BATTERY_LEVEL: case MODEM_EVENT_TYPE_BATTERY_LEVEL:
_panel_set_battery_level(panel, _panel_set_battery_level(panel,
event->battery_level.level); event->battery_level.level,
event->battery_level.charging);
break; break;
case MODEM_EVENT_TYPE_REGISTRATION: case MODEM_EVENT_TYPE_REGISTRATION:
media = event->registration.media; media = event->registration.media;
@ -300,48 +302,56 @@ static int _event_modem_event(PhonePlugin * plugin, ModemEvent * event)
/* panel_set_battery_level */ /* panel_set_battery_level */
static void _set_battery_image(Panel * panel, PanelBattery battery); static void _set_battery_image(Panel * panel, PanelBattery battery,
gboolean charging);
static void _panel_set_battery_level(Panel * panel, gdouble level) static void _panel_set_battery_level(Panel * panel, gdouble level,
gboolean charging)
{ {
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s(plugin, %lf)\n", __func__, level); fprintf(stderr, "DEBUG: %s(plugin, %lf)\n", __func__, level);
#endif #endif
if(level < 0.0) if(level < 0.0)
_set_battery_image(panel, PANEL_BATTERY_UNKNOWN); _set_battery_image(panel, PANEL_BATTERY_UNKNOWN, charging);
else if(level <= 0.01) else if(level <= 0.01)
_set_battery_image(panel, PANEL_BATTERY_EMPTY); _set_battery_image(panel, PANEL_BATTERY_EMPTY, charging);
else if(level <= 0.1) else if(level <= 0.1)
_set_battery_image(panel, PANEL_BATTERY_CAUTION); _set_battery_image(panel, PANEL_BATTERY_CAUTION, charging);
else if(level <= 0.2) else if(level <= 0.2)
_set_battery_image(panel, PANEL_BATTERY_LOW); _set_battery_image(panel, PANEL_BATTERY_LOW, charging);
else if(level <= 0.75) else if(level <= 0.75)
_set_battery_image(panel, PANEL_BATTERY_GOOD); _set_battery_image(panel, PANEL_BATTERY_GOOD, charging);
else if(level <= 1.0) else if(level <= 1.0)
_set_battery_image(panel, PANEL_BATTERY_FULL); _set_battery_image(panel, PANEL_BATTERY_FULL, charging);
else else
_set_battery_image(panel, PANEL_BATTERY_ERROR); _set_battery_image(panel, PANEL_BATTERY_ERROR, FALSE);
} }
static void _set_battery_image(Panel * panel, PanelBattery battery) static void _set_battery_image(Panel * panel, PanelBattery battery,
gboolean charging)
{ {
char const * icons[PANEL_BATTERY_COUNT] = struct
{ {
"stock_dialog-question", char const * icon;
"battery-missing", char const * charging;
"battery-empty", } icons[PANEL_BATTERY_COUNT] =
"battery-caution", {
"battery-low", { "stock_dialog-question", "stock_dialog-question" },
"battery-good", { "battery-missing", "battery-missing" },
"battery-full" { "battery-empty", "battery-caution-charging" },
{ "battery-caution", "battery-caution-charging" },
{ "battery-low", "battery-low-charging" },
{ "battery-good", "battery-good-charging" },
{ "battery-full", "battery-full-charging" }
}; };
if(panel->battery_level == battery) if(panel->battery_level == battery)
return; return;
panel->battery_level = battery; panel->battery_level = battery;
/* XXX may not be the correct size */ /* XXX may not be the correct size */
gtk_image_set_from_icon_name(GTK_IMAGE(panel->battery_image), gtk_image_set_from_icon_name(GTK_IMAGE(panel->battery_image), charging
icons[battery], GTK_ICON_SIZE_SMALL_TOOLBAR); ? icons[battery].charging : icons[battery].icon,
GTK_ICON_SIZE_SMALL_TOOLBAR);
} }