From a618c5aa999d86bf0d240d38fdb6e6b32a7c4642 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Sat, 12 Jun 2010 09:43:40 +0000 Subject: [PATCH] Added a button to start and pause gathering informations --- src/plugins/engineering.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/plugins/engineering.c b/src/plugins/engineering.c index 1283939..b21d46a 100644 --- a/src/plugins/engineering.c +++ b/src/plugins/engineering.c @@ -57,6 +57,7 @@ typedef struct _Engineering /* widgets */ GtkWidget * window; + GtkToolItem * play; GtkListStore * store; GtkWidget * view; } Engineering; @@ -93,6 +94,7 @@ static int _engineering_destroy(PhonePlugin * plugin); /* callbacks */ static gboolean _on_engineering_closex(gpointer data); +static void _on_engineering_play_toggled(gpointer data); static gboolean _on_engineering_timeout(gpointer data); static int _on_engineering_trigger_em(PhonePlugin * plugin, char const * result); @@ -120,6 +122,7 @@ static int _engineering_init(PhonePlugin * plugin) { Engineering * engineering; GtkWidget * vbox; + GtkWidget * toolbar; GtkWidget * scrolled; size_t i; GtkCellRenderer * renderer; @@ -129,9 +132,7 @@ static int _engineering_init(PhonePlugin * plugin) return error_set_code(1, "%s", strerror(errno)); plugin->priv = engineering; engineering->helper = plugin->helper; - /* FIXME wait until some event? (eg PIN ready) */ - engineering->source = g_timeout_add(5000, _on_engineering_timeout, - engineering); + engineering->source = 0; engineering->enci = 0; engineering->enci_cnt = 0; /* widgets */ @@ -147,6 +148,14 @@ static int _engineering_init(PhonePlugin * plugin) g_signal_connect_swapped(G_OBJECT(engineering->window), "delete-event", G_CALLBACK(_on_engineering_closex), engineering); vbox = gtk_vbox_new(FALSE, 0); + /* toolbar */ + toolbar = gtk_toolbar_new(); + engineering->play = gtk_toggle_tool_button_new_from_stock( + GTK_STOCK_MEDIA_PLAY); + g_signal_connect_swapped(G_OBJECT(engineering->play), "toggled", + G_CALLBACK(_on_engineering_play_toggled), engineering); + gtk_toolbar_insert(GTK_TOOLBAR(toolbar), engineering->play, -1); + gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, TRUE, 0); /* store */ engineering->store = gtk_list_store_new(COL_COUNT, G_TYPE_STRING, /* COL_FREQUENCY */ @@ -182,9 +191,6 @@ static int _engineering_init(PhonePlugin * plugin) /* trigger */ plugin->helper->register_trigger(plugin->helper->phone, plugin, "%EM", _on_engineering_trigger_em); -#ifdef DEBUG - _on_engineering_timeout(engineering); -#endif return 0; } @@ -214,6 +220,22 @@ static gboolean _on_engineering_closex(gpointer data) } +/* on_engineering_play_toggled */ +static void _on_engineering_play_toggled(gpointer data) +{ + Engineering * engineering = data; + + if(gtk_toggle_tool_button_get_active(GTK_TOGGLE_TOOL_BUTTON( + engineering->play))) + engineering->source = _on_engineering_timeout(engineering); + else if(engineering->source != 0) + { + g_source_remove(engineering->source); + engineering->source = 0; + } +} + + /* on_engineering_timeout */ static gboolean _on_engineering_timeout(gpointer data) {