comparison src/bluetooth/gui.c @ 2736:4d9540bcd7e2

Automated merge with ssh://hg.atheme-project.org//hg//audacious-plugins
author Calin Crisan ccrisan@gmail.com
date Tue, 01 Jul 2008 02:06:01 +0300
parents 1a27c497e526
children d3d71539d675
comparison
equal deleted inserted replaced
2735:6d6a3eb67510 2736:4d9540bcd7e2
1 #include "gui.h" 1 #include "gui.h"
2 #include "bluetooth.h" 2 #include "bluetooth.h"
3 3
4 static GtkWidget *window = NULL; 4 static GtkWidget *window = NULL;
5 static GtkTreeModel *model; 5 static GtkTreeModel *model;
6 GtkWidget *mainbox; 6 static GtkWidget *mainbox;
7 GtkWidget *hbox_top; 7 static GtkWidget *hbox_top;
8 GtkWidget *hbox_bottom; 8 static GtkWidget *hbox_bottom;
9 GtkWidget *box_about; 9 static GtkWidget *box_about;
10 GtkWidget *box_about_left; 10 static GtkWidget *box_about_left;
11 GtkWidget *box_about_right; 11 static GtkWidget *box_about_right;
12 GtkWidget *headset_frame; 12 static GtkWidget *headset_frame;
13 GtkWidget *about_frame; 13 static GtkWidget *about_frame;
14 GtkWidget *refresh; 14 static GtkWidget *refresh;
15 GtkWidget *connect_button; 15 static GtkWidget *connect_button;
16 GtkWidget *close_button; 16 static GtkWidget *close_button;
17 GtkWidget *treeview; 17 static GtkWidget *treeview;
18 GtkWidget *label_p; 18 static GtkWidget *label_p;
19 GtkWidget *label_c; 19 static GtkWidget *label_c;
20 GtkWidget *label_a; 20 static GtkWidget *label_a;
21 GtkWidget *label_prod; 21 static GtkWidget *label_prod;
22 GtkWidget *label_class; 22 static GtkWidget *label_class;
23 GtkWidget *label_address; 23 static GtkWidget *label_address;
24 GList * dev = NULL; 24 static GList * dev = NULL;
25 gchar *status = NULL;
25 enum{ 26 enum{
26 COLUMN_PRODUCER, 27 COLUMN_PRODUCER,
27 NUM_COLUMNS 28 NUM_COLUMNS
28 }; 29 };
29 static DeviceData test_data[]=
30 {
31 {0,"00:00:00:00:00","Scanning"}
32 };
33
34 30
35 static GtkTreeModel * create_model(void) 31 static GtkTreeModel * create_model(void)
36 { 32 {
37 GtkListStore *store; 33 GtkListStore *store;
38 GtkTreeIter iter; 34 GtkTreeIter iter;
39 gint i=0; 35 /* create list store */
40 /* create list store */
41 store = gtk_list_store_new(NUM_COLUMNS, 36 store = gtk_list_store_new(NUM_COLUMNS,
42 G_TYPE_STRING); 37 G_TYPE_STRING);
43 38 dev = audio_devices;
44 /* add data to the list store */ 39 if(dev == NULL) {
45 for(i = 0;i<G_N_ELEMENTS(test_data);i++) 40 /*if we are scanning for devices now then print the Scanning message,
41 * else we print the "no devices found message */
42 if(discover_finish == 1)
43 /*we are scanning*/
44 status = g_strdup_printf("Scanning");
45 else
46 status = g_strdup_printf("No devices found!");
47 /* add the status to the list */
48 gtk_list_store_append(store,&iter);
49 gtk_list_store_set(store,&iter, COLUMN_PRODUCER,status,-1);
50 return GTK_TREE_MODEL(store);
51 }
52 while(dev != NULL)
46 { 53 {
47 gtk_list_store_append(store,&iter); 54 gtk_list_store_append(store,&iter);
48 gtk_list_store_set(store,&iter, 55 gtk_list_store_set(store,&iter, COLUMN_PRODUCER,
49 COLUMN_PRODUCER, test_data[i].name,-1); 56 ((DeviceData*)(dev->data))-> name,-1);
50 } 57 dev = g_list_next(dev);
51 58 }
52 return GTK_TREE_MODEL(store); 59
60 return GTK_TREE_MODEL(store);
53 } 61 }
54 static GtkTreeModel * rebuild_model(void) 62 static GtkTreeModel * rebuild_model(void)
55 { 63 {
56 64
57 GtkListStore *store; 65 GtkListStore *store;
58 GtkTreeIter iter; 66 GtkTreeIter iter;
59 gint i=0;
60 gint dev_no=0; 67 gint dev_no=0;
61 GList *dev; 68 GList *dev;
62 gchar *temp; 69 gchar *temp;
63 if(!window) 70 if(!window)
64 return NULL; 71 return NULL;
65 /* create list store */ 72 /* create list store */
66 store = gtk_list_store_new(NUM_COLUMNS, 73 store = gtk_list_store_new(NUM_COLUMNS,
67 G_TYPE_STRING); 74 G_TYPE_STRING);
68 75
69 /*add inf to test_data from audio_devices */ 76 /*add inf to test_data from audio_devices */
70 dev_no = g_list_length(audio_devices); 77 dev_no = g_list_length(audio_devices);
71 dev = audio_devices; 78 dev = audio_devices;
79 if(dev == NULL || discover_finish == 0) {
80 /*if we are scanning for devices now then print the Scanning message,
81 * else we print the "no devices found message */
82 printf("discover: %d\n",discover_finish);
83 if(discover_finish == 1) {
84 /*we are scanning*/
85 status = g_strdup_printf("Scanning");
86 } else
87 status = g_strdup_printf("No devices found!");
88 /* add the status to the list */
89 gtk_list_store_append(store,&iter);
90 gtk_list_store_set(store,&iter, COLUMN_PRODUCER,status,-1);
91 gtk_label_set_text(GTK_LABEL(label_prod),status);
92 return GTK_TREE_MODEL(store);
93 }
94
95 /* add data to the list store */
72 while(dev != NULL) 96 while(dev != NULL)
73 { 97 {
74 test_data[i].name = ((DeviceData*)(dev->data))-> name; 98 gtk_list_store_append(store,&iter);
75 test_data[i].class = ((DeviceData*)(dev->data))-> class; 99 gtk_list_store_set(store,&iter, COLUMN_PRODUCER,
76 test_data[i].address = ((DeviceData*)(dev->data))-> address; 100 ((DeviceData*)(dev->data))-> name,-1);
77 i++; 101 dev = g_list_next(dev);
78 dev=g_list_next(dev); 102 }
79 } 103 //set the labels
80 if (dev_no == 0) 104 // temp = g_strdup_printf("0x%x",((DeviceData*)(dev->data))->class);
81 { 105 gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(dev->data))->name);
82 test_data[0].name = "No devices found!"; 106 // gtk_label_set_text(GTK_LABEL(label_class),temp);
83 test_data[0].class = 0; 107 gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(dev->data))->address);
84 test_data[0].address = "00:00:00:00:00"; 108 g_free(temp);
85 } 109 return GTK_TREE_MODEL(store);
86
87 /* add data to the list store */
88 for(i = 0;i<G_N_ELEMENTS(test_data);i++)
89 {
90 gtk_list_store_append(store,&iter);
91 gtk_list_store_set(store,&iter,
92 COLUMN_PRODUCER, test_data[i].name,-1);
93 }
94 //set the labels
95 temp = g_strdup_printf("0x%x",test_data[0].class);
96 gtk_label_set_text(GTK_LABEL(label_prod),test_data[0].name);
97 gtk_label_set_text(GTK_LABEL(label_class),temp);
98 gtk_label_set_text(GTK_LABEL(label_address),test_data[0].address);
99
100 return GTK_TREE_MODEL(store);
101 110
102 } 111 }
103 112
104 113
105 void refresh_tree() 114 void refresh_tree()
106 { 115 {
107 if(!window) 116 if(!window)
108 return; 117 return;
109 model = rebuild_model(); 118 model = rebuild_model();
110 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),GTK_TREE_MODEL(model)); 119 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview),GTK_TREE_MODEL(model));
111 } 120 }
112 121
113 122
114 static void add_columns(GtkTreeView *treeview) 123 static void add_columns(GtkTreeView *treeview)
115 { 124 {
137 void select_row(GtkWidget *treeview){ 146 void select_row(GtkWidget *treeview){
138 147
139 GtkTreeIter iter; 148 GtkTreeIter iter;
140 gint sel; 149 gint sel;
141 gchar *temp; 150 gchar *temp;
151 gint i;
142 printf("select\n"); 152 printf("select\n");
143 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview)); 153 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview));
144 if(gtk_tree_selection_get_selected (selection, NULL,&iter)){ 154 if(gtk_tree_selection_get_selected (selection, NULL,&iter)){
145 GtkTreePath *path; 155 GtkTreePath *path;
146 path = gtk_tree_model_get_path (model, &iter); 156 path = gtk_tree_model_get_path (model, &iter);
147 sel = gtk_tree_path_get_indices (path)[0]; 157 sel = gtk_tree_path_get_indices (path)[0];
148 printf("i=%d\n",sel); 158 printf("i=%d\n",sel);
149 temp = g_strdup_printf("0x%x",test_data[sel].class); 159 dev = audio_devices;
150 gtk_label_set_text(GTK_LABEL(label_prod),test_data[sel].name); 160 for(i=0;i<sel;i++)
151 gtk_label_set_text(GTK_LABEL(label_class),temp); 161 dev = g_list_next(dev);
152 gtk_label_set_text(GTK_LABEL(label_address),test_data[sel].address); 162 if(dev != NULL) {
153 gtk_tree_path_free (path); 163 temp = g_strdup_printf("0x%x",((DeviceData*)(dev->data))->class);
154 g_free(temp); 164 gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(dev->data))->name);
155 165 gtk_label_set_text(GTK_LABEL(label_class),temp);
156 } 166 gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(dev->data))->address);
157 167 gtk_tree_path_free (path);
158 168 g_free(temp);
159 169 }else
160 } 170 gtk_label_set_text(GTK_LABEL(label_prod),status);
161 void bt_cfg() 171 g_free(status);
162 { 172
163 173 }
174 }
175
176 void results_ui()
177 {
178 gchar *temp;
164 if (!window) 179 if (!window)
165 { 180 {
166 window = gtk_window_new (GTK_WINDOW_TOPLEVEL); 181 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
167 g_signal_connect (window, "destroy",G_CALLBACK (gtk_widget_destroyed), &window); 182 g_signal_connect (window, "destroy",G_CALLBACK (gtk_widget_destroyed), &window);
168 183
204 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),GTK_SELECTION_SINGLE); 219 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),GTK_SELECTION_SINGLE);
205 g_object_unref (model); 220 g_object_unref (model);
206 gtk_container_add (GTK_CONTAINER (headset_frame), treeview); 221 gtk_container_add (GTK_CONTAINER (headset_frame), treeview);
207 /* add columns to the tree view */ 222 /* add columns to the tree view */
208 add_columns (GTK_TREE_VIEW (treeview)); 223 add_columns (GTK_TREE_VIEW (treeview));
209 224
210 g_signal_connect(treeview,"cursor-changed",G_CALLBACK(select_row),treeview); 225 g_signal_connect(treeview,"cursor-changed",G_CALLBACK(select_row),treeview);
211 226
212 227
213 box_about = gtk_hbox_new(FALSE,4); 228 box_about = gtk_hbox_new(FALSE,4);
214 gtk_container_set_border_width (GTK_CONTAINER (box_about), 4); 229 gtk_container_set_border_width (GTK_CONTAINER (box_about), 4);
236 label_a = gtk_label_new("Address:"); 251 label_a = gtk_label_new("Address:");
237 gtk_container_add(GTK_CONTAINER(box_about_left),label_a); 252 gtk_container_add(GTK_CONTAINER(box_about_left),label_a);
238 253
239 254
240 /*right labels */ 255 /*right labels */
241 label_prod = gtk_label_new("Scanning"); 256 label_prod = gtk_label_new(" ");
242 gtk_container_add(GTK_CONTAINER(box_about_right),label_prod); 257 gtk_container_add(GTK_CONTAINER(box_about_right),label_prod);
243 258
244 label_class = gtk_label_new(" "); 259 label_class = gtk_label_new(" ");
245 gtk_container_add(GTK_CONTAINER(box_about_right),label_class); 260 gtk_container_add(GTK_CONTAINER(box_about_right),label_class);
246 261
247 262
248 label_address = gtk_label_new(" "); 263 label_address = gtk_label_new(" ");
249 gtk_container_add(GTK_CONTAINER(box_about_right),label_address); 264 gtk_container_add(GTK_CONTAINER(box_about_right),label_address);
250 265
251 gtk_window_set_default_size (GTK_WINDOW (window), 480, 180); 266 dev = audio_devices;
267 if(dev != NULL) {
268 temp = g_strdup_printf("0x%x",((DeviceData*)(dev->data))->class);
269 gtk_label_set_text(GTK_LABEL(label_prod),((DeviceData*)(dev->data))->name);
270 gtk_label_set_text(GTK_LABEL(label_class),temp);
271 gtk_label_set_text(GTK_LABEL(label_address),((DeviceData*)(dev->data))->address);
272 g_free(temp);
273 }
274
275 gtk_window_set_default_size (GTK_WINDOW (window), 460, 150);
252 if (!GTK_WIDGET_VISIBLE (window)) 276 if (!GTK_WIDGET_VISIBLE (window))
253 gtk_widget_show_all (window); 277 gtk_widget_show_all (window);
254 else 278 else
255 { 279 {
256 gtk_widget_destroy (window); 280 gtk_widget_destroy (window);