Mercurial > audlegacy-plugins
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 |