Implemented a global data counter
This commit is contained in:
parent
33e6307ed7
commit
377f95b930
@ -33,6 +33,10 @@ typedef struct _PhonePlugin
|
||||
guint source;
|
||||
gboolean roaming;
|
||||
gboolean connected;
|
||||
size_t in;
|
||||
size_t out;
|
||||
size_t glin;
|
||||
size_t glout;
|
||||
|
||||
gboolean active;
|
||||
GtkWidget * window;
|
||||
@ -46,6 +50,8 @@ typedef struct _PhonePlugin
|
||||
GtkWidget * st_label;
|
||||
GtkWidget * st_in;
|
||||
GtkWidget * st_out;
|
||||
GtkWidget * st_glin;
|
||||
GtkWidget * st_glout;
|
||||
#if GTK_CHECK_VERSION(2, 10, 0)
|
||||
GtkWidget * systray;
|
||||
GtkStatusIcon * icon;
|
||||
@ -105,6 +111,14 @@ static GPRS * _gprs_init(PhonePluginHelper * helper)
|
||||
gprs->source = 0;
|
||||
gprs->roaming = FALSE;
|
||||
gprs->connected = FALSE;
|
||||
gprs->in = 0;
|
||||
gprs->out = 0;
|
||||
gprs->glin = 0;
|
||||
if((p = helper->config_get(helper->phone, "gprs", "in")) != NULL)
|
||||
gprs->glin = strtol(p, NULL, 10);
|
||||
gprs->glout = 0;
|
||||
if((p = helper->config_get(helper->phone, "gprs", "out")) != NULL)
|
||||
gprs->glout = strtol(p, NULL, 10);
|
||||
gprs->active = FALSE;
|
||||
gprs->window = NULL;
|
||||
#if GTK_CHECK_VERSION(2, 10, 0)
|
||||
@ -171,8 +185,7 @@ static int _gprs_event_modem(GPRS * gprs, ModemEvent * event)
|
||||
{
|
||||
case MODEM_EVENT_TYPE_CONNECTION:
|
||||
connected = event->connection.connected;
|
||||
_gprs_set_connected(gprs, connected, connected
|
||||
? "Connected" : "Not connected",
|
||||
_gprs_set_connected(gprs, connected, NULL,
|
||||
event->connection.in,
|
||||
event->connection.out);
|
||||
break;
|
||||
@ -202,6 +215,7 @@ static void _settings_on_cancel(gpointer data);
|
||||
static gboolean _settings_on_closex(gpointer data);
|
||||
static void _settings_on_connect(gpointer data);
|
||||
static void _settings_on_ok(gpointer data);
|
||||
static void _settings_on_reset(gpointer data);
|
||||
|
||||
static void _gprs_settings(GPRS * gprs)
|
||||
{
|
||||
@ -336,6 +350,22 @@ static GtkWidget * _settings_status(GPRS * gprs)
|
||||
g_signal_connect_swapped(gprs->connect, "clicked", G_CALLBACK(
|
||||
_settings_on_connect), gprs);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), gprs->connect, FALSE, TRUE, 0);
|
||||
/* counters */
|
||||
widget = gtk_frame_new("Counters");
|
||||
hbox = gtk_vbox_new(FALSE, 4);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(hbox), 4);
|
||||
gprs->st_glin = gtk_label_new(NULL);
|
||||
gtk_misc_set_alignment(GTK_MISC(gprs->st_glin), 0.0, 0.5);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), gprs->st_glin, FALSE, TRUE, 0);
|
||||
gprs->st_glout = gtk_label_new(NULL);
|
||||
gtk_misc_set_alignment(GTK_MISC(gprs->st_glout), 0.0, 0.5);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), gprs->st_glout, FALSE, TRUE, 0);
|
||||
bbox = gtk_button_new_from_stock(GTK_STOCK_CLEAR);
|
||||
g_signal_connect_swapped(bbox, "clicked", G_CALLBACK(
|
||||
_settings_on_reset), gprs);
|
||||
gtk_box_pack_start(GTK_BOX(hbox), bbox, FALSE, TRUE, 0);
|
||||
gtk_container_add(GTK_CONTAINER(widget), hbox);
|
||||
gtk_box_pack_start(GTK_BOX(vbox), widget, FALSE, TRUE, 0);
|
||||
return vbox;
|
||||
}
|
||||
|
||||
@ -418,6 +448,20 @@ static void _settings_on_ok(gpointer data)
|
||||
_settings_on_apply(gprs);
|
||||
}
|
||||
|
||||
static void _settings_on_reset(gpointer data)
|
||||
{
|
||||
GPRS * gprs = data;
|
||||
PhonePluginHelper * helper = gprs->helper;
|
||||
|
||||
gprs->glin = 0;
|
||||
gprs->glout = 0;
|
||||
/* refresh the dialog box */
|
||||
_gprs_set_connected(gprs, NULL, gprs->in, gprs->out);
|
||||
/* save in the configuration */
|
||||
helper->config_set(helper->phone, "gprs", "in", "0");
|
||||
helper->config_set(helper->phone, "gprs", "out", "0");
|
||||
}
|
||||
|
||||
|
||||
/* accessors */
|
||||
/* gprs_set_connected */
|
||||
@ -427,6 +471,8 @@ static void _gprs_set_connected(GPRS * gprs, gboolean connected,
|
||||
char buf[64];
|
||||
|
||||
gprs->connected = connected;
|
||||
if(message == NULL)
|
||||
message = (connected != NULL) ? "Connected" : "Not connected";
|
||||
if(gprs->window == NULL)
|
||||
return;
|
||||
gtk_image_set_from_icon_name(GTK_IMAGE(gprs->st_image), connected
|
||||
@ -437,6 +483,8 @@ static void _gprs_set_connected(GPRS * gprs, gboolean connected,
|
||||
? GTK_STOCK_DISCONNECT : GTK_STOCK_CONNECT);
|
||||
if(connected)
|
||||
{
|
||||
gprs->in = in;
|
||||
gprs->out = out;
|
||||
snprintf(buf, sizeof(buf), "Received: %lu kB",
|
||||
(unsigned long)in / 1024);
|
||||
gtk_label_set_text(GTK_LABEL(gprs->st_in), buf);
|
||||
@ -465,7 +513,24 @@ static void _gprs_set_connected(GPRS * gprs, gboolean connected,
|
||||
#if GTK_CHECK_VERSION(2, 16, 0)
|
||||
gtk_status_icon_set_tooltip_text(gprs->icon, message);
|
||||
#endif
|
||||
/* add the last known data to the global counters */
|
||||
gprs->glin += gprs->in;
|
||||
gprs->glout += gprs->out;
|
||||
/* save in the configuration */
|
||||
snprintf(buf, sizeof(buf), "%lu", gprs->glin);
|
||||
helper->config_set(helper->phone, "gprs", "in", buf);
|
||||
snprintf(buf, sizeof(buf), "%lu", gprs->glout);
|
||||
helper->config_set(helper->phone, "gprs", "out", buf);
|
||||
/* reset the known data */
|
||||
gprs->in = 0;
|
||||
gprs->out = 0;
|
||||
}
|
||||
/* counters */
|
||||
snprintf(buf, sizeof(buf), "Received: %lu kB", (gprs->glin + in)
|
||||
/ 1024);
|
||||
gtk_label_set_text(GTK_LABEL(gprs->st_glin), buf);
|
||||
snprintf(buf, sizeof(buf), "Sent: %lu kB", (gprs->glout + out) / 1024);
|
||||
gtk_label_set_text(GTK_LABEL(gprs->st_glout), buf);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user