Mercurial > audlegacy-plugins
diff src/bluetooth/gui.c @ 2646:7fbff3287a56
added device discovery in the plugin's prefs window
| author | Paula Stanciu <paula.stanciu@gmail.com> |
|---|---|
| date | Sun, 25 May 2008 21:29:07 +0300 |
| parents | 6fd8ca4b7b17 |
| children | d891ba4be5a5 |
line wrap: on
line diff
--- a/src/bluetooth/gui.c Wed May 21 16:04:24 2008 +0300 +++ b/src/bluetooth/gui.c Sun May 25 21:29:07 2008 +0300 @@ -1,7 +1,5 @@ #include "gui.h" #include "bluetooth.h" -#include <gtk/gtk.h> -#include <glib.h> static GtkWidget *window = NULL; static GtkTreeModel *model; @@ -18,53 +16,97 @@ GtkWidget *close_button; GtkWidget *treeview; GtkWidget *label_p; -GtkWidget *label_m; +GtkWidget *label_c; GtkWidget *label_a; GtkWidget *label_prod; -GtkWidget *label_model; +GtkWidget *label_class; GtkWidget *label_address; - - -typedef struct -{ - gchar *producer; - gchar *model; -}Headset; - +GList * dev = NULL; enum{ COLUMN_PRODUCER, - COLUMN_MODEL, NUM_COLUMNS }; +static DeviceData test_data[]= +{ + {0,"00:00:00:00:00","Scanning"} +}; -static Headset test_data[]= -{ - {"Motorola", "S9"}, - {"Nokia", "BH-503"}, - {"Blueant","Stereo X5"} -}; static GtkTreeModel * create_model(void) { - gint i = 0; GtkListStore *store; GtkTreeIter iter; - /* create list store */ + gint i=0; + /* create list store */ store = gtk_list_store_new(NUM_COLUMNS, - G_TYPE_STRING, G_TYPE_STRING); + /* add data to the list store */ for(i = 0;i<G_N_ELEMENTS(test_data);i++) { gtk_list_store_append(store,&iter); gtk_list_store_set(store,&iter, - COLUMN_PRODUCER, test_data[i].producer, - COLUMN_MODEL, test_data[i].model, - -1); + COLUMN_PRODUCER, test_data[i].name,-1); + } + + return GTK_TREE_MODEL(store); +} +static GtkTreeModel * rebuild_model(void) +{ + + GtkListStore *store; + GtkTreeIter iter; + gint i=0; + gint dev_no=0; + GList *dev; + gchar *temp; + /* create list store */ + store = gtk_list_store_new(NUM_COLUMNS, + G_TYPE_STRING); + + /*add inf to test_data from audio_devices */ + dev_no = g_list_length(audio_devices); + dev = audio_devices; + while(dev != NULL) + { + test_data[i].name = ((DeviceData*)(dev->data))-> name; + test_data[i].class = ((DeviceData*)(dev->data))-> class; + test_data[i].address = ((DeviceData*)(dev->data))-> address; + i++; + dev=g_list_next(dev); } - return GTK_TREE_MODEL(store); + if (dev_no == 0) + { + test_data[0].name = "No devices found!"; + test_data[0].class = 0; + test_data[0].address = "00:00:00:00:00"; + } + + /* add data to the list store */ + for(i = 0;i<G_N_ELEMENTS(test_data);i++) + { + gtk_list_store_append(store,&iter); + gtk_list_store_set(store,&iter, + COLUMN_PRODUCER, test_data[i].name,-1); + } + //set the labels + temp = g_strdup_printf("0x%x",test_data[0].class); + gtk_label_set_text(GTK_LABEL(label_prod),test_data[0].name); + gtk_label_set_text(GTK_LABEL(label_class),temp); + gtk_label_set_text(GTK_LABEL(label_address),test_data[0].address); + + return GTK_TREE_MODEL(store); + } + +void refresh_tree() +{ + model = rebuild_model(); + gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),GTK_TREE_MODEL(model)); +} + + static void add_columns(GtkTreeView *treeview) { GtkCellRenderer *renderer; @@ -81,16 +123,6 @@ gtk_tree_view_column_set_sort_column_id (column,COLUMN_PRODUCER); gtk_tree_view_append_column (treeview, column); - /* column for model */ - renderer = gtk_cell_renderer_text_new (); - column = gtk_tree_view_column_new_with_attributes ("Model", - renderer, - "text", - COLUMN_MODEL, - NULL); - gtk_tree_view_column_set_sort_column_id (column,COLUMN_MODEL); - gtk_tree_view_append_column (treeview, column); - } void close_call(void){ @@ -102,18 +134,20 @@ GtkTreeIter iter; gint sel; + gchar *temp; printf("select\n"); GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview)); if(gtk_tree_selection_get_selected (selection, NULL,&iter)){ - GtkTreePath *path; - path = gtk_tree_model_get_path (model, &iter); - sel = gtk_tree_path_get_indices (path)[0]; - printf("i=%d\n",sel); - gtk_label_set_text(GTK_LABEL(label_prod),test_data[sel].producer); - gtk_label_set_text(GTK_LABEL(label_model),test_data[sel].model); - gtk_label_set_text(GTK_LABEL(label_address),"00:01:02:03:04:05"); - - gtk_tree_path_free (path); + GtkTreePath *path; + path = gtk_tree_model_get_path (model, &iter); + sel = gtk_tree_path_get_indices (path)[0]; + printf("i=%d\n",sel); + temp = g_strdup_printf("0x%x",test_data[sel].class); + gtk_label_set_text(GTK_LABEL(label_prod),test_data[sel].name); + gtk_label_set_text(GTK_LABEL(label_class),temp); + gtk_label_set_text(GTK_LABEL(label_address),test_data[sel].address); + gtk_tree_path_free (path); + g_free(temp); } @@ -122,7 +156,7 @@ } void bt_cfg() { - + if (!window) { window = gtk_window_new (GTK_WINDOW_TOPLEVEL); @@ -168,30 +202,31 @@ gtk_container_add (GTK_CONTAINER (headset_frame), treeview); /* add columns to the tree view */ add_columns (GTK_TREE_VIEW (treeview)); + g_signal_connect(treeview,"cursor-changed",G_CALLBACK(select_row),treeview); box_about = gtk_hbox_new(FALSE,4); gtk_container_set_border_width (GTK_CONTAINER (box_about), 4); gtk_container_add (GTK_CONTAINER (about_frame), box_about); - + /*about box left - vbox */ box_about_left = gtk_vbox_new(FALSE,4); gtk_container_set_border_width (GTK_CONTAINER (box_about_left), 4); gtk_container_add (GTK_CONTAINER (box_about), box_about_left); - + /*about box right - vbox */ box_about_right = gtk_vbox_new(TRUE,4); gtk_container_set_border_width (GTK_CONTAINER (box_about_right), 4); gtk_container_add (GTK_CONTAINER (box_about), box_about_right); /* Left labels */ - label_p = gtk_label_new("Producer:"); + label_p = gtk_label_new("Name:"); gtk_container_add(GTK_CONTAINER(box_about_left),label_p); - label_m = gtk_label_new("Model:"); - gtk_container_add(GTK_CONTAINER(box_about_left),label_m); + label_c = gtk_label_new("Class"); + gtk_container_add(GTK_CONTAINER(box_about_left),label_c); label_a = gtk_label_new("Address:"); @@ -199,16 +234,16 @@ /*right labels */ - label_prod = gtk_label_new("Producer:"); + label_prod = gtk_label_new("Scanning"); gtk_container_add(GTK_CONTAINER(box_about_right),label_prod); - label_model = gtk_label_new("Model:"); - gtk_container_add(GTK_CONTAINER(box_about_right),label_model); + label_class = gtk_label_new(" "); + gtk_container_add(GTK_CONTAINER(box_about_right),label_class); - label_address = gtk_label_new("Address:"); + label_address = gtk_label_new(" "); gtk_container_add(GTK_CONTAINER(box_about_right),label_address); - + gtk_window_set_default_size (GTK_WINDOW (window), 480, 180); if (!GTK_WIDGET_VISIBLE (window)) gtk_widget_show_all (window);
