Added a way to track the GPRS network attachment status

This commit is contained in:
Pierre Pronchery 2011-01-04 21:47:27 +00:00
parent 3511d5e805
commit 7dd0006ba2

View File

@ -63,6 +63,8 @@ typedef struct _Panel
PanelBattery battery_level;
GtkWidget * battery_image;
guint battery_timeout;
/* cell type */
GtkWidget * cell;
/* signal */
PanelSignal signal_level;
GtkWidget * signal_image;
@ -137,6 +139,11 @@ static int _panel_init(PhonePlugin * plugin)
"battery")) == NULL
|| strcmp(p, "1") != 0)
gtk_widget_set_no_show_all(panel->battery_image, TRUE);
/* cell type */
panel->cell = gtk_label_new("G");
gtk_widget_modify_font(panel->cell, bold);
gtk_widget_set_no_show_all(panel->cell, TRUE);
gtk_box_pack_start(GTK_BOX(panel->hbox), panel->cell, FALSE, TRUE, 0);
/* signal */
panel->signal_level = -1;
panel->signal_image = gtk_image_new();
@ -227,6 +234,7 @@ static int _panel_destroy(PhonePlugin * plugin)
/* panel_event */
static int _event_set_battery_level(Panel * panel, gdouble level);
static int _event_set_cell_type(Panel * panel, gboolean gprs);
static void _set_battery_image(Panel * panel, PanelBattery battery);
static int _panel_event(PhonePlugin * plugin, PhoneEvent event, ...)
@ -235,6 +243,7 @@ static int _panel_event(PhonePlugin * plugin, PhoneEvent event, ...)
va_list ap;
char const * operator;
gdouble level;
gboolean active;
#ifdef DEBUG
fprintf(stderr, "DEBUG: %s(plugin, %u, ...)\n", __func__, event);
@ -255,6 +264,10 @@ static int _panel_event(PhonePlugin * plugin, PhoneEvent event, ...)
_on_battery_timeout, plugin);
_on_battery_timeout(plugin);
break;
case PHONE_EVENT_GPRS_ATTACHMENT:
active = va_arg(ap, gboolean);
_event_set_cell_type(panel, active);
break;
case PHONE_EVENT_SET_OPERATOR:
operator = va_arg(ap, char const *);
_panel_set_operator(panel, operator);
@ -313,6 +326,15 @@ static void _set_battery_image(Panel * panel, PanelBattery battery)
icons[battery], GTK_ICON_SIZE_SMALL_TOOLBAR);
}
static int _event_set_cell_type(Panel * panel, gboolean gprs)
{
if(gprs)
gtk_widget_show(panel->cell);
else
gtk_widget_hide(panel->cell);
return 0;
}
/* panel_set_operator */
static void _panel_set_operator(Panel * panel, char const * operator)