comparison src/bluetooth/gui.c @ 2644:6fd8ca4b7b17

add bluetooth plugin
author Paula Stanciu <paula.stanciu@gmail.com>
date Sat, 17 May 2008 21:22:49 +0300
parents
children 7fbff3287a56
comparison
equal deleted inserted replaced
2566:12aa69e560b2 2644:6fd8ca4b7b17
1 #include "gui.h"
2 #include "bluetooth.h"
3 #include <gtk/gtk.h>
4 #include <glib.h>
5
6 static GtkWidget *window = NULL;
7 static GtkTreeModel *model;
8 GtkWidget *mainbox;
9 GtkWidget *hbox_top;
10 GtkWidget *hbox_bottom;
11 GtkWidget *box_about;
12 GtkWidget *box_about_left;
13 GtkWidget *box_about_right;
14 GtkWidget *headset_frame;
15 GtkWidget *about_frame;
16 GtkWidget *refresh;
17 GtkWidget *connect_button;
18 GtkWidget *close_button;
19 GtkWidget *treeview;
20 GtkWidget *label_p;
21 GtkWidget *label_m;
22 GtkWidget *label_a;
23 GtkWidget *label_prod;
24 GtkWidget *label_model;
25 GtkWidget *label_address;
26
27
28 typedef struct
29 {
30 gchar *producer;
31 gchar *model;
32 }Headset;
33
34 enum{
35 COLUMN_PRODUCER,
36 COLUMN_MODEL,
37 NUM_COLUMNS
38 };
39
40 static Headset test_data[]=
41 {
42 {"Motorola", "S9"},
43 {"Nokia", "BH-503"},
44 {"Blueant","Stereo X5"}
45 };
46
47 static GtkTreeModel * create_model(void)
48 {
49 gint i = 0;
50 GtkListStore *store;
51 GtkTreeIter iter;
52 /* create list store */
53 store = gtk_list_store_new(NUM_COLUMNS,
54 G_TYPE_STRING,
55 G_TYPE_STRING);
56 /* add data to the list store */
57 for(i = 0;i<G_N_ELEMENTS(test_data);i++)
58 {
59 gtk_list_store_append(store,&iter);
60 gtk_list_store_set(store,&iter,
61 COLUMN_PRODUCER, test_data[i].producer,
62 COLUMN_MODEL, test_data[i].model,
63 -1);
64 }
65 return GTK_TREE_MODEL(store);
66 }
67
68 static void add_columns(GtkTreeView *treeview)
69 {
70 GtkCellRenderer *renderer;
71 GtkTreeViewColumn *column;
72 // GtkTreeModel *model = gtk_tree_view_get_model (treeview);
73
74 /* column for producer */
75 renderer = gtk_cell_renderer_text_new ();
76 column = gtk_tree_view_column_new_with_attributes ("Producer",
77 renderer,
78 "text",
79 COLUMN_PRODUCER,
80 NULL);
81 gtk_tree_view_column_set_sort_column_id (column,COLUMN_PRODUCER);
82 gtk_tree_view_append_column (treeview, column);
83
84 /* column for model */
85 renderer = gtk_cell_renderer_text_new ();
86 column = gtk_tree_view_column_new_with_attributes ("Model",
87 renderer,
88 "text",
89 COLUMN_MODEL,
90 NULL);
91 gtk_tree_view_column_set_sort_column_id (column,COLUMN_MODEL);
92 gtk_tree_view_append_column (treeview, column);
93
94 }
95
96 void close_call(void){
97 printf("close callback \n");
98 gtk_widget_destroy (window);
99 window = NULL;
100 }
101 void select_row(GtkWidget *treeview){
102
103 GtkTreeIter iter;
104 gint sel;
105 printf("select\n");
106 GtkTreeSelection *selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(treeview));
107 if(gtk_tree_selection_get_selected (selection, NULL,&iter)){
108 GtkTreePath *path;
109 path = gtk_tree_model_get_path (model, &iter);
110 sel = gtk_tree_path_get_indices (path)[0];
111 printf("i=%d\n",sel);
112 gtk_label_set_text(GTK_LABEL(label_prod),test_data[sel].producer);
113 gtk_label_set_text(GTK_LABEL(label_model),test_data[sel].model);
114 gtk_label_set_text(GTK_LABEL(label_address),"00:01:02:03:04:05");
115
116 gtk_tree_path_free (path);
117
118 }
119
120
121
122 }
123 void bt_cfg()
124 {
125
126 if (!window)
127 {
128 window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
129 g_signal_connect (window, "destroy",G_CALLBACK (gtk_widget_destroyed), &window);
130
131 mainbox = gtk_vbox_new(FALSE,4);
132 gtk_container_set_border_width (GTK_CONTAINER (mainbox), 4);
133 gtk_container_add (GTK_CONTAINER (window), mainbox);
134
135 hbox_top = gtk_hbox_new(FALSE,4);
136 gtk_container_set_border_width (GTK_CONTAINER(hbox_top), 4);
137 gtk_container_add (GTK_CONTAINER (mainbox), hbox_top);
138
139 hbox_bottom = gtk_hbox_new(FALSE,4);
140 gtk_container_set_border_width (GTK_CONTAINER (hbox_bottom), 4);
141 gtk_container_add (GTK_CONTAINER (mainbox), hbox_bottom);
142
143 headset_frame = gtk_frame_new("Available Headsets");
144 gtk_container_add (GTK_CONTAINER (hbox_top), headset_frame);
145
146 about_frame = gtk_frame_new("Current Headset");
147 gtk_container_add(GTK_CONTAINER(hbox_top),about_frame);
148
149 refresh = gtk_button_new_with_mnemonic ("_Refresh");
150 g_signal_connect (refresh, "clicked",G_CALLBACK (refresh_call), NULL);
151 gtk_container_add(GTK_CONTAINER(hbox_bottom),refresh);
152
153 connect_button = gtk_button_new_with_mnemonic("_Connect");
154 g_signal_connect(connect_button,"clicked",G_CALLBACK (connect_call), NULL);
155 gtk_container_add(GTK_CONTAINER(hbox_bottom),connect_button);
156
157 close_button = gtk_button_new_with_mnemonic("_Close");
158 g_signal_connect(close_button,"clicked",G_CALLBACK (close_call),NULL);
159 gtk_container_add(GTK_CONTAINER(hbox_bottom),close_button);
160 /* create tree model */
161 model = create_model ();
162
163 /* create tree view */
164 treeview = gtk_tree_view_new_with_model (model);
165 gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
166 gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview)),GTK_SELECTION_SINGLE);
167 g_object_unref (model);
168 gtk_container_add (GTK_CONTAINER (headset_frame), treeview);
169 /* add columns to the tree view */
170 add_columns (GTK_TREE_VIEW (treeview));
171 g_signal_connect(treeview,"cursor-changed",G_CALLBACK(select_row),treeview);
172
173
174 box_about = gtk_hbox_new(FALSE,4);
175 gtk_container_set_border_width (GTK_CONTAINER (box_about), 4);
176 gtk_container_add (GTK_CONTAINER (about_frame), box_about);
177
178 /*about box left - vbox */
179
180 box_about_left = gtk_vbox_new(FALSE,4);
181 gtk_container_set_border_width (GTK_CONTAINER (box_about_left), 4);
182 gtk_container_add (GTK_CONTAINER (box_about), box_about_left);
183
184 /*about box right - vbox */
185 box_about_right = gtk_vbox_new(TRUE,4);
186 gtk_container_set_border_width (GTK_CONTAINER (box_about_right), 4);
187 gtk_container_add (GTK_CONTAINER (box_about), box_about_right);
188
189 /* Left labels */
190 label_p = gtk_label_new("Producer:");
191 gtk_container_add(GTK_CONTAINER(box_about_left),label_p);
192
193 label_m = gtk_label_new("Model:");
194 gtk_container_add(GTK_CONTAINER(box_about_left),label_m);
195
196
197 label_a = gtk_label_new("Address:");
198 gtk_container_add(GTK_CONTAINER(box_about_left),label_a);
199
200
201 /*right labels */
202 label_prod = gtk_label_new("Producer:");
203 gtk_container_add(GTK_CONTAINER(box_about_right),label_prod);
204
205 label_model = gtk_label_new("Model:");
206 gtk_container_add(GTK_CONTAINER(box_about_right),label_model);
207
208
209 label_address = gtk_label_new("Address:");
210 gtk_container_add(GTK_CONTAINER(box_about_right),label_address);
211
212 gtk_window_set_default_size (GTK_WINDOW (window), 480, 180);
213 if (!GTK_WIDGET_VISIBLE (window))
214 gtk_widget_show_all (window);
215 else
216 {
217 gtk_widget_destroy (window);
218 window = NULL;
219 }
220 // return window;
221 }
222 // return window;
223 }
224