summaryrefslogtreecommitdiffstats
path: root/meta/recipes-connectivity/connman/connman-gnome/3g.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-connectivity/connman/connman-gnome/3g.patch')
-rw-r--r--meta/recipes-connectivity/connman/connman-gnome/3g.patch507
1 files changed, 0 insertions, 507 deletions
diff --git a/meta/recipes-connectivity/connman/connman-gnome/3g.patch b/meta/recipes-connectivity/connman/connman-gnome/3g.patch
deleted file mode 100644
index 58fa5e6783..0000000000
--- a/meta/recipes-connectivity/connman/connman-gnome/3g.patch
+++ /dev/null
@@ -1,507 +0,0 @@
1Upstream-Status: Pending
2
3commit 15852e826b0b47f577718ada4b68b63515387f4d
4Author: dongxiao <dongxiao@dongxiao-osel.(none)>
5Date: Wed Jun 1 14:56:16 2011 +0800
6
7 connman-gnome: Add cellular network config option.
8
9 Add cellular network config option in connman-gnome.
10
11 Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com>
12
13diff --git a/common/connman-client.c b/common/connman-client.c
14index e907cc2..d6be363 100644
15--- a/common/connman-client.c
16+++ b/common/connman-client.c
17@@ -112,9 +112,10 @@ static void connman_client_init(ConnmanClient *client)
18 G_TYPE_STRING, /* address */
19 G_TYPE_STRING, /* netmask */
20 G_TYPE_STRING, /* gateway */
21- G_TYPE_BOOLEAN, /* gateway */
22- G_TYPE_BOOLEAN, /* gateway */
23- G_TYPE_BOOLEAN);/* gateway */
24+ G_TYPE_BOOLEAN, /* ethernet enabled */
25+ G_TYPE_BOOLEAN, /* wifi enabled */
26+ G_TYPE_BOOLEAN, /* cellular enabled */
27+ G_TYPE_BOOLEAN);/* offline */
28
29 g_object_set_data(G_OBJECT(priv->store),
30 "State", g_strdup("unavailable"));
31@@ -218,6 +219,7 @@ static gboolean device_filter(GtkTreeModel *model,
32 switch (type) {
33 case CONNMAN_TYPE_LABEL_ETHERNET:
34 case CONNMAN_TYPE_LABEL_WIFI:
35+ case CONNMAN_TYPE_LABEL_CELLULAR:
36 case CONNMAN_TYPE_SYSCONFIG:
37 return TRUE;
38 }
39diff --git a/common/connman-client.h b/common/connman-client.h
40index 37e86d0..15fa098 100644
41--- a/common/connman-client.h
42+++ b/common/connman-client.h
43@@ -117,6 +117,7 @@ enum {
44
45 CONNMAN_COLUMN_ETHERNET_ENABLED,/* G_TYPE_STRING */
46 CONNMAN_COLUMN_WIFI_ENABLED, /* G_TYPE_STRING */
47+ CONNMAN_COLUMN_CELLULAR_ENABLED,/* G_TYPE_STRING */
48 CONNMAN_COLUMN_OFFLINEMODE, /* G_TYPE_STRING */
49
50 _CONNMAN_NUM_COLUMNS
51@@ -132,6 +133,7 @@ enum {
52
53 CONNMAN_TYPE_LABEL_ETHERNET,
54 CONNMAN_TYPE_LABEL_WIFI,
55+ CONNMAN_TYPE_LABEL_CELLULAR,
56 CONNMAN_TYPE_SYSCONFIG,
57
58 _CONNMAN_NUM_TYPE,
59diff --git a/common/connman-dbus.c b/common/connman-dbus.c
60index b5a635c..0f4e1db 100644
61--- a/common/connman-dbus.c
62+++ b/common/connman-dbus.c
63@@ -208,6 +208,8 @@ static const gchar *type2icon(guint type)
64 case CONNMAN_TYPE_WIFI:
65 case CONNMAN_TYPE_WIMAX:
66 return "network-wireless";
67+ case CONNMAN_TYPE_CELLULAR:
68+ return "network-cellular";
69 case CONNMAN_TYPE_BLUETOOTH:
70 return "bluetooth";
71 }
72@@ -220,6 +222,7 @@ static void enabled_technologies_changed(GtkTreeStore *store, GValue *value)
73 GtkTreeIter iter;
74 gboolean ethernet_enabled_prev, ethernet_enabled = FALSE;
75 gboolean wifi_enabled_prev, wifi_enabled = FALSE;
76+ gboolean cellular_enabled_prev, cellular_enabled = FALSE;
77 gchar **tech = g_value_get_boxed (value);
78 guint i;
79
80@@ -227,10 +230,13 @@ static void enabled_technologies_changed(GtkTreeStore *store, GValue *value)
81 return;
82
83 for (i = 0; i < g_strv_length(tech); i++) {
84+ DBG("technology: %s", *(tech+i));
85 if (g_str_equal("ethernet", *(tech + i)))
86 ethernet_enabled = TRUE;
87 else if (g_str_equal ("wifi", *(tech + i)))
88 wifi_enabled = TRUE;
89+ else if (g_str_equal ("cellular", *(tech + i)))
90+ cellular_enabled = TRUE;
91 }
92
93 get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET);
94@@ -246,6 +252,13 @@ static void enabled_technologies_changed(GtkTreeStore *store, GValue *value)
95 if (wifi_enabled_prev != wifi_enabled)
96 gtk_tree_store_set(store, &iter,
97 CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled, -1);
98+
99+ get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_CELLULAR);
100+ gtk_tree_model_get(GTK_TREE_MODEL(store), &iter,
101+ CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled_prev, -1);
102+ if (cellular_enabled_prev != cellular_enabled)
103+ gtk_tree_store_set(store, &iter,
104+ CONNMAN_COLUMN_CELLULAR_ENABLED, cellular_enabled, -1);
105 }
106
107 static void enabled_technologies_properties(GtkTreeStore *store, DBusGProxy *proxy, GValue *value)
108@@ -253,14 +266,18 @@ static void enabled_technologies_properties(GtkTreeStore *store, DBusGProxy *pro
109 GtkTreeIter iter;
110 gboolean ethernet_enabled = FALSE;
111 gboolean wifi_enabled = FALSE;
112+ gboolean cellular_enabled = FALSE;
113 gchar **tech = g_value_get_boxed (value);
114 guint i;
115
116 for (i = 0; i < g_strv_length (tech); i++) {
117+ DBG("technology: %s", *(tech+i));
118 if (g_str_equal("ethernet", *(tech + i)))
119 ethernet_enabled = TRUE;
120 else if (g_str_equal ("wifi", *(tech + i)))
121 wifi_enabled = TRUE;
122+ else if (g_str_equal ("cellular", *(tech + i)))
123+ cellular_enabled = TRUE;
124 }
125
126 if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_ETHERNET) == FALSE)
127@@ -280,6 +297,15 @@ static void enabled_technologies_properties(GtkTreeStore *store, DBusGProxy *pro
128 CONNMAN_COLUMN_WIFI_ENABLED, wifi_enabled,
129 CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_WIFI,
130 -1);
131+
132+ if (get_iter_from_type(store, &iter, CONNMAN_TYPE_LABEL_CELLULAR) == FALSE)
133+ gtk_tree_store_append(store, &iter, NULL);
134+
135+ gtk_tree_store_set(store, &iter,
136+ CONNMAN_COLUMN_PROXY, proxy,
137+ CONNMAN_COLUMN_CELLULAR_ENABLED, cellular_enabled,
138+ CONNMAN_COLUMN_TYPE, CONNMAN_TYPE_LABEL_CELLULAR,
139+ -1);
140 }
141
142 static void offline_mode_changed(GtkTreeStore *store, GValue *value)
143@@ -497,6 +523,9 @@ static void service_properties(DBusGProxy *proxy, GHashTable *hash,
144 case CONNMAN_TYPE_WIFI:
145 label_type = CONNMAN_TYPE_LABEL_WIFI;
146 break;
147+ case CONNMAN_TYPE_CELLULAR:
148+ label_type = CONNMAN_TYPE_LABEL_CELLULAR;
149+ break;
150 default:
151 label_type = CONNMAN_TYPE_UNKNOWN;
152 break;
153diff --git a/icons/connman-type-cellular.png b/icons/connman-type-cellular.png
154new file mode 100644
155index 0000000..386abd5
156Binary files /dev/null and b/icons/connman-type-cellular.png differ
157diff --git a/properties/Makefile.am b/properties/Makefile.am
158index fc1b8c6..30ae442 100644
159--- a/properties/Makefile.am
160+++ b/properties/Makefile.am
161@@ -1,7 +1,7 @@
162
163 bin_PROGRAMS = connman-properties
164
165-connman_properties_SOURCES = main.c advanced.h ethernet.c wifi.c
166+connman_properties_SOURCES = main.c advanced.h ethernet.c wifi.c cellular.c
167
168 connman_properties_LDADD = $(top_builddir)/common/libcommon.a \
169 @GTK_LIBS@ @DBUS_LIBS@
170diff --git a/properties/advanced.h b/properties/advanced.h
171index 79a1c3c..d8f4117 100644
172--- a/properties/advanced.h
173+++ b/properties/advanced.h
174@@ -59,10 +59,18 @@ struct config_data {
175 GtkWidget *disconnect;
176 } wifi;
177
178+ struct {
179+ GtkWidget *name;
180+ GtkWidget *strength;
181+ GtkWidget *connect_info;
182+ GtkWidget *connect;
183+ GtkWidget *disconnect;
184+ } cellular;
185+
186 GtkWidget *ethernet_button;
187 GtkWidget *wifi_button;
188-
189 GtkWidget *scan_button;
190+ GtkWidget *cellular_button;
191 GtkWidget *offline_button;
192 };
193
194@@ -88,8 +96,11 @@ void update_ethernet_ipv4(struct config_data *data, guint policy);
195 void add_wifi_service(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data);
196 void update_wifi_policy(struct config_data *data, guint policy);
197
198+void add_cellular_service(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data);
199 void add_ethernet_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
200 struct config_data *data);
201
202 void add_wifi_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
203 struct config_data *data);
204+void add_cellular_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
205+ struct config_data *data);
206diff --git a/properties/cellular.c b/properties/cellular.c
207new file mode 100644
208index 0000000..7bbfb89
209--- /dev/null
210+++ b/properties/cellular.c
211@@ -0,0 +1,175 @@
212+/*
213+ *
214+ * Connection Manager
215+ *
216+ * Copyright (C) 2011 Intel Corporation. All rights reserved.
217+ *
218+ * This program is free software; you can redistribute it and/or modify
219+ * it under the terms of the GNU General Public License version 2 as
220+ * published by the Free Software Foundation.
221+ *
222+ * This program is distributed in the hope that it will be useful,
223+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
224+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
225+ * GNU General Public License for more details.
226+ *
227+ * You should have received a copy of the GNU General Public License
228+ * along with this program; if not, write to the Free Software
229+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
230+ *
231+ */
232+
233+#ifdef HAVE_CONFIG_H
234+#include <config.h>
235+#endif
236+
237+#include <dbus/dbus-glib.h>
238+#include <glib/gi18n.h>
239+#include <gtk/gtk.h>
240+
241+#include "connman-client.h"
242+
243+#include "advanced.h"
244+
245+static void connect_reply_cb(DBusGProxy *proxy, GError *error,
246+ gpointer user_data)
247+{
248+ if (error)
249+ g_error_free(error);
250+}
251+
252+static void connect_callback(GtkWidget *editable, gpointer user_data)
253+{
254+ struct config_data *data = user_data;
255+
256+ connman_client_connect_async(data->client, data->device, connect_reply_cb, data);
257+}
258+
259+
260+static void disconnect_callback(GtkWidget *editable, gpointer user_data)
261+{
262+ struct config_data *data = user_data;
263+
264+ connman_client_disconnect(data->client, data->device);
265+}
266+
267+static void switch_callback(GtkWidget *editable, gpointer user_data)
268+{
269+ struct config_data *data = user_data;
270+ const gchar *label = gtk_button_get_label(GTK_BUTTON(data->cellular_button));
271+
272+ if (g_str_equal(label, "Disable"))
273+ connman_client_disable_technology(data->client, data->device, "cellular");
274+ else
275+ connman_client_enable_technology(data->client, data->device, "cellular");
276+}
277+
278+void add_cellular_switch_button(GtkWidget *mainbox, GtkTreeIter *iter,
279+ struct config_data *data)
280+{
281+ GtkWidget *vbox;
282+ GtkWidget *table;
283+ GtkWidget *label;
284+ GtkWidget *buttonbox;
285+ GtkWidget *button;
286+ gboolean cellular_enabled;
287+
288+ gtk_tree_model_get(data->model, iter,
289+ CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled,
290+ -1);
291+
292+ vbox = gtk_vbox_new(TRUE, 0);
293+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 24);
294+ gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
295+
296+ table = gtk_table_new(1, 1, TRUE);
297+ gtk_table_set_row_spacings(GTK_TABLE(table), 10);
298+ gtk_table_set_col_spacings(GTK_TABLE(table), 10);
299+ gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
300+
301+ label = gtk_label_new(_("Configure Cellular Networks."));
302+ gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);
303+
304+ buttonbox = gtk_hbutton_box_new();
305+ gtk_button_box_set_layout(GTK_BUTTON_BOX(buttonbox), GTK_BUTTONBOX_CENTER);
306+ gtk_box_pack_start(GTK_BOX(mainbox), buttonbox, FALSE, FALSE, 0);
307+
308+ button = gtk_button_new();
309+ data->cellular_button = button;
310+
311+ if (cellular_enabled)
312+ gtk_button_set_label(GTK_BUTTON(button), _("Disable"));
313+ else
314+ gtk_button_set_label(GTK_BUTTON(button), _("Enable"));
315+
316+ gtk_container_add(GTK_CONTAINER(buttonbox), button);
317+ g_signal_connect(G_OBJECT(button), "clicked",
318+ G_CALLBACK(switch_callback), data);
319+}
320+
321+void add_cellular_service(GtkWidget *mainbox, GtkTreeIter *iter, struct config_data *data)
322+{
323+ GtkWidget *vbox;
324+ GtkWidget *table;
325+ GtkWidget *label;
326+ GtkWidget *button;
327+
328+ const char *name, *icon, *state;
329+ guint strength;
330+
331+ gtk_tree_model_get(data->model, iter,
332+ CONNMAN_COLUMN_NAME, &name,
333+ CONNMAN_COLUMN_ICON, &icon,
334+ CONNMAN_COLUMN_STATE, &state,
335+ CONNMAN_COLUMN_STRENGTH, &strength,
336+ -1);
337+
338+ if (g_str_equal(state, "failure") == TRUE)
339+ connman_client_remove(data->client, data->device);
340+
341+ vbox = gtk_vbox_new(TRUE, 0);
342+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 24);
343+ gtk_box_pack_start(GTK_BOX(mainbox), vbox, FALSE, FALSE, 0);
344+
345+ table = gtk_table_new(4, 8, TRUE);
346+ gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0);
347+ data->table = table;
348+
349+ label = gtk_label_new(_("Access Point:"));
350+ gtk_table_attach_defaults(GTK_TABLE(table), label, 3, 4, 0, 1);
351+
352+ label = gtk_label_new(_(name));
353+ gtk_table_attach_defaults(GTK_TABLE(table), label, 4, 5, 0, 1);
354+ gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
355+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
356+ data->cellular.name = label;
357+
358+ label = gtk_label_new(_(""));
359+ gtk_table_attach_defaults(GTK_TABLE(table), label, 3, 5, 2, 3);
360+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.0);
361+ gtk_widget_hide(label);
362+ data->cellular.connect_info = label;
363+
364+ button = gtk_button_new_with_label(_("Connect"));
365+ gtk_table_attach_defaults(GTK_TABLE(table), button, 3, 5, 3, 4);
366+ g_signal_connect(G_OBJECT(button), "clicked",
367+ G_CALLBACK(connect_callback), data);
368+ gtk_widget_set_no_show_all(button, TRUE);
369+ data->cellular.connect = button;
370+
371+ button = gtk_button_new_with_label(_("Disconnect"));
372+ gtk_table_attach_defaults(GTK_TABLE(table), button, 3, 5, 3, 4);
373+ g_signal_connect(G_OBJECT(button), "clicked",
374+ G_CALLBACK(disconnect_callback), data);
375+ data->cellular.disconnect = button;
376+ gtk_widget_set_no_show_all(button, TRUE);
377+
378+ if (g_str_equal(state, "failure") == TRUE
379+ || g_str_equal(state, "idle") == TRUE) {
380+ gtk_widget_show(data->cellular.connect);
381+ gtk_widget_hide(data->cellular.disconnect);
382+ } else {
383+ gtk_widget_hide(data->cellular.connect);
384+ gtk_widget_show(data->cellular.disconnect);
385+ }
386+}
387diff --git a/properties/main.c b/properties/main.c
388index a09c721..ec36aef 100644
389--- a/properties/main.c
390+++ b/properties/main.c
391@@ -42,6 +42,7 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path,
392 const char *name = NULL, *_name = NULL, *state = NULL;
393 gboolean ethernet_enabled;
394 gboolean wifi_enabled;
395+ gboolean cellular_enabled;
396 gboolean offline_mode;
397
398 gtk_tree_model_get(model, iter,
399@@ -50,6 +51,7 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path,
400 CONNMAN_COLUMN_TYPE, &type,
401 CONNMAN_COLUMN_ETHERNET_ENABLED, &ethernet_enabled,
402 CONNMAN_COLUMN_WIFI_ENABLED, &wifi_enabled,
403+ CONNMAN_COLUMN_CELLULAR_ENABLED, &cellular_enabled,
404 CONNMAN_COLUMN_OFFLINEMODE, &offline_mode,
405 -1);
406
407@@ -75,6 +77,29 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path,
408 gtk_widget_hide(data->wifi.connect);
409 gtk_widget_show(data->wifi.disconnect);
410 }
411+ } else if (type == CONNMAN_TYPE_CELLULAR) {
412+ if (data->cellular.name)
413+ _name = gtk_label_get_text(GTK_LABEL(data->cellular.name));
414+
415+ if (!(name && _name && g_str_equal(name, _name)))
416+ return;
417+
418+ if (g_str_equal(state, "failure") == TRUE) {
419+ gtk_label_set_text(GTK_LABEL(data->cellular.connect_info),
420+ _("connection failed"));
421+ gtk_widget_show(data->cellular.connect_info);
422+ gtk_widget_show(data->cellular.connect);
423+ gtk_widget_hide(data->cellular.disconnect);
424+ } else if (g_str_equal(state, "idle") == TRUE) {
425+ gtk_widget_hide(data->cellular.connect_info);
426+ gtk_widget_show(data->cellular.connect);
427+ gtk_widget_hide(data->cellular.disconnect);
428+ } else {
429+ gtk_widget_hide(data->cellular.connect_info);
430+ gtk_widget_hide(data->cellular.connect);
431+ gtk_widget_show(data->cellular.disconnect);
432+ }
433+
434 } else if (type == CONNMAN_TYPE_LABEL_ETHERNET) {
435 if (!data->ethernet_button)
436 return;
437@@ -92,6 +117,13 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path,
438 gtk_button_set_label(GTK_BUTTON(data->wifi_button), _("Enable"));
439 gtk_widget_set_sensitive(data->scan_button, 0);
440 }
441+ } else if (type == CONNMAN_TYPE_LABEL_CELLULAR) {
442+ if (!data->cellular_button)
443+ return;
444+ if (cellular_enabled)
445+ gtk_button_set_label(GTK_BUTTON(data->cellular_button), _("Disable"));
446+ else
447+ gtk_button_set_label(GTK_BUTTON(data->cellular_button), _("Enable"));
448 } else if (type == CONNMAN_TYPE_SYSCONFIG) {
449 if (!data->offline_button)
450 return;
451@@ -100,7 +132,6 @@ static void status_update(GtkTreeModel *model, GtkTreePath *path,
452 else
453 gtk_button_set_label(GTK_BUTTON(data->offline_button), _("OfflineMode"));
454 }
455-
456 }
457
458 static void set_offline_callback(GtkWidget *button, gpointer user_data)
459@@ -207,12 +238,18 @@ static struct config_data *create_config(GtkTreeModel *model,
460 case CONNMAN_TYPE_WIFI:
461 add_wifi_service(mainbox, iter, data);
462 break;
463+ case CONNMAN_TYPE_CELLULAR:
464+ add_cellular_service(mainbox, iter, data);
465+ break;
466 case CONNMAN_TYPE_LABEL_ETHERNET:
467 add_ethernet_switch_button(mainbox, iter, data);
468 break;
469 case CONNMAN_TYPE_LABEL_WIFI:
470 add_wifi_switch_button(mainbox, iter, data);
471 break;
472+ case CONNMAN_TYPE_LABEL_CELLULAR:
473+ add_cellular_switch_button(mainbox, iter, data);
474+ break;
475 case CONNMAN_TYPE_SYSCONFIG:
476 add_system_config(mainbox, iter, data);
477 break;
478@@ -295,6 +332,7 @@ static void device_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell,
479 markup = g_strdup_printf(" %s\n", title);
480 break;
481 case CONNMAN_TYPE_WIFI:
482+ case CONNMAN_TYPE_CELLULAR:
483 /* Show the AP name */
484 title = N_(name);
485 if (g_str_equal(state, "association") == TRUE)
486@@ -324,6 +362,10 @@ static void device_to_text(GtkTreeViewColumn *column, GtkCellRenderer *cell,
487 title = N_("Wireless Networks");
488 markup = g_strdup_printf("<b>\n%s\n</b>", title);
489 break;
490+ case CONNMAN_TYPE_LABEL_CELLULAR:
491+ title = N_("Cellular Networks");
492+ markup = g_strdup_printf("<b>\n%s\n</b>", title);
493+ break;
494 case CONNMAN_TYPE_SYSCONFIG:
495 title = N_("System Configuration");
496 markup = g_strdup_printf("<b>\n%s\n</b>", title);
497@@ -362,6 +404,10 @@ static void type_to_icon(GtkTreeViewColumn *column, GtkCellRenderer *cell,
498 g_object_set(cell, "icon-name", "network-wireless",
499 "stock-size", 4, NULL);
500 break;
501+ case CONNMAN_TYPE_LABEL_CELLULAR:
502+ g_object_set(cell, "icon-name", "network-cellular",
503+ "stock-size", 4, NULL);
504+ break;
505 default:
506 g_object_set(cell, "icon-name", NULL, NULL);
507 break;