This email list is read-only. Emails sent to this list will be discarded ---------------------------------- .gitignore | 5 +- ChangeLog | 2 + applet/main.c | 208 +++++++---- common/Makefile.am | 20 +- common/client.c | 971 ----------------------------------------------- common/client.h | 92 ----- common/client.xml | 21 - common/common.h | 25 -- common/connman-client.c | 470 +++++++++++++++++++++++ common/connman-client.h | 107 ++++++ common/connman-dbus.c | 577 ++++++++++++++++++++++++++++ common/connman-dbus.h | 42 ++ common/connman-dbus.xml | 19 + common/demo.c | 465 +++++++++++++++++++++++ common/instance.c | 4 +- common/test-client.c | 517 +++---------------------- configure.ac | 4 +- po/POTFILES.in | 4 +- properties/80203.c | 130 ------- properties/80211.c | 116 ------ properties/Makefile.am | 3 +- properties/advanced.c | 62 +--- properties/advanced.h | 8 +- properties/ethernet.c | 100 +++++ properties/main.c | 246 ++++--------- properties/wifi.c | 99 +++++ 26 files changed, 2173 insertions(+), 2144 deletions(-)
New commits: commit 1139c84bfdd7aec6e16c4b2a41df7215c62d3ba1 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 18:04:09 2008 +0100 Release 0.1 commit 5c5b409ba0a0e188d85bfa52d8add60fad1dabbb Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 18:02:22 2008 +0100 Update the properties dialog from latest API changes commit 13168bb5189e4b6c1184010245aeb5bdbdc88636 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 18:02:04 2008 +0100 Remove an unused variable commit c71e1db7cf752ecfef7e46dc2662693cc7cb5cf5 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 18:01:43 2008 +0100 Add correct introspection to the distribution commit efa0a81c58b9719c0f4681779b254ab0621f0087 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 10:56:02 2008 +0100 Show icon for networks with security enabled commit 82a8317e0b6e5f5f284452d764fffac61a80f53f Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 10:51:29 2008 +0100 Fix creation of network model commit 7b6a7b2db31da044ae9200a31d7252c1aca5d3f1 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 10:37:49 2008 +0100 Update applet for latest API changes commit c6fa8a50b6eafe8c06ff8e2541094219c3447be7 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 10:37:10 2008 +0100 If specified propose a scan for all devices commit 332bca5effa43ddcf1bc9458e9eaa5903b48ba2f Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 10:30:14 2008 +0100 Disable current network before connecting to new one commit f545b6f84f7800b0619fbae6311d10f51be84d9c Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 09:35:05 2008 +0100 Track signal strength of connections commit bf26162084c361fa5716c92505365855bcc4dafe Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 09:05:49 2008 +0100 Add more parameter validation commit 5f1201eda1949b348620b7b637679045442fbc02 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 08:27:45 2008 +0100 Add function to get connection model commit b0d5b0a8d4a54271aaa97cb6945f61b2c0987624 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 08:21:40 2008 +0100 Add function to get a combined device and network model commit 9989dcb60922cadd575f9341063ce39545678f71 Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 05:50:01 2008 +0100 Remove useless casting commit 2757666cd4b5b92e60f6b5a59ef0baa1b915773a Author: Marcel Holtmann <[email protected]> Date: Thu Dec 18 05:17:11 2008 +0100 Update common D-Bus tracking and example code Diff in this email is a maximum of 400 lines. diff --git a/.gitignore b/.gitignore index 5aabe29..ca71aed 100644 --- a/.gitignore +++ b/.gitignore @@ -27,8 +27,11 @@ po/POTFILES po/stamp-it po/.intltool-merge-cache -common/instance-glue.h common/test-client +common/connman-demo applet/connman-applet properties/connman-properties +marshal.h +marshal.c +*-glue.h *.desktop diff --git a/ChangeLog b/ChangeLog index e69de29..ba27052 100644 --- a/ChangeLog +++ b/ChangeLog @@ -0,0 +1,2 @@ +ver 0.1: + Initial public release. diff --git a/applet/main.c b/applet/main.c index 12dc304..75ba582 100644 --- a/applet/main.c +++ b/applet/main.c @@ -23,31 +23,53 @@ #include <config.h> #endif -#include <stdlib.h> -#include <string.h> -#include <signal.h> - #include <dbus/dbus-glib.h> - #include <glib/gi18n.h> -#include <gtk/gtk.h> -#include "client.h" +#include "connman-client.h" + #include "status.h" -static void close_callback(GtkWidget *dialog, gpointer user_data) +static ConnmanClient *client; + +static void open_uri(GtkWindow *parent, const char *uri) { - gtk_widget_destroy(dialog); + GtkWidget *dialog; + GdkScreen *screen; + GError *error = NULL; + gchar *cmdline; + + screen = gtk_window_get_screen(parent); + + cmdline = g_strconcat("xdg-open ", uri, NULL); + + if (gdk_spawn_command_line_on_screen(screen, + cmdline, &error) == FALSE) { + dialog = gtk_message_dialog_new(parent, + GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, "%s", error->message); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + g_error_free(error); + } + + g_free(cmdline); } static void about_url_hook(GtkAboutDialog *dialog, const gchar *url, gpointer data) { + open_uri(GTK_WINDOW(dialog), url); } static void about_email_hook(GtkAboutDialog *dialog, const gchar *email, gpointer data) { + gchar *uri; + + uri = g_strconcat("mailto:", email, NULL); + open_uri(GTK_WINDOW(dialog), uri); + g_free(uri); } static void about_callback(GtkWidget *item, gpointer user_data) @@ -56,34 +78,19 @@ static void about_callback(GtkWidget *item, gpointer user_data) "Marcel Holtmann <[email protected]>", NULL }; - GtkWidget *dialog; - - dialog = gtk_about_dialog_new(); - - gtk_about_dialog_set_name(GTK_ABOUT_DIALOG(dialog), - _("Connection Manager")); - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(dialog), VERSION); - gtk_about_dialog_set_copyright(GTK_ABOUT_DIALOG(dialog), - "Copyright \xc2\xa9 2008 Intel Corporation"); - gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(dialog), - _("A connection manager for the GNOME desktop")); - gtk_about_dialog_set_logo_icon_name(GTK_ABOUT_DIALOG(dialog), - "stock_internet"); gtk_about_dialog_set_url_hook(about_url_hook, NULL, NULL); gtk_about_dialog_set_email_hook(about_email_hook, NULL, NULL); - gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG(dialog), authors); - gtk_about_dialog_set_translator_credits(GTK_ABOUT_DIALOG(dialog), - _("translator-credits")); - - g_signal_connect(dialog, "close", G_CALLBACK(close_callback), NULL); - g_signal_connect(dialog, "response", G_CALLBACK(close_callback), NULL); - - gtk_widget_show_all(dialog); + gtk_show_about_dialog(NULL, "version", VERSION, + "copyright", "Copyright \xc2\xa9 2008 Intel Corporation", + "comments", _("A connection manager for the GNOME desktop"), + "authors", authors, + "translator-credits", _("translator-credits"), + "logo-icon-name", "network-wireless", NULL); } -static void settings_callback(GObject *widget, gpointer user_data) +static void settings_callback(GtkWidget *item, gpointer user_data) { const char *command = "connman-properties"; @@ -91,6 +98,13 @@ static void settings_callback(GObject *widget, gpointer user_data) g_printerr("Couldn't execute command: %s\n", command); } +static void activate_callback(GtkWidget *item, gpointer user_data) +{ + const gchar *path = user_data; + + connman_client_connect(client, path); +} + static GtkWidget *create_popupmenu(void) { GtkWidget *menu; @@ -112,7 +126,7 @@ static GtkWidget *create_popupmenu(void) } static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, - gboolean security, double strength) + guint security, guint strength) { GtkWidget *item; GtkWidget *hbox; @@ -136,14 +150,15 @@ static GtkWidget *append_menuitem(GtkMenu *menu, const char *ssid, image = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION, GTK_ICON_SIZE_MENU); gtk_misc_set_alignment(GTK_MISC(image), 1.0, 0.5); - if (security == TRUE) { + if (security != CONNMAN_SECURITY_NONE) { gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0); gtk_widget_show(image); } progress = gtk_progress_bar_new(); gtk_widget_set_size_request(progress, 100, -1); - gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), strength); + gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), + (double) strength / 100); gtk_box_pack_end(GTK_BOX(hbox), progress, FALSE, TRUE, 0); gtk_widget_show(progress); @@ -163,19 +178,27 @@ static void enumerate_networks(GtkMenu *menu, while (cont == TRUE) { GtkWidget *item; - gboolean security; - guint signal; - gchar *str; + DBusGProxy *proxy; + guint strength, security; + gchar *name, *path; + gboolean connected; gtk_tree_model_get(model, &iter, - CLIENT_COLUMN_SIGNAL, &signal, - CLIENT_COLUMN_NETWORK_ESSID, &str, - CLIENT_COLUMN_NETWORK_SECURITY, &security, -1); + CONNMAN_COLUMN_PROXY, &proxy, + CONNMAN_COLUMN_NAME, &name, + CONNMAN_COLUMN_ENABLED, &connected, + CONNMAN_COLUMN_STRENGTH, &strength, + CONNMAN_COLUMN_SECURITY, &security, -1); + + item = append_menuitem(menu, name, security, strength); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), + connected); - item = append_menuitem(menu, str, security, - (double) signal / 100); + path = g_strdup(dbus_g_proxy_get_path(proxy)); + g_signal_connect(item, "activate", + G_CALLBACK(activate_callback), path); - g_free(str); + g_free(name); cont = gtk_tree_model_iter_next(model, &iter); } @@ -188,29 +211,29 @@ static gboolean menu_callback(GtkMenu *menu) GtkWidget *item; gboolean cont; - client_propose_scanning(); + connman_client_propose_scan(client, NULL); - model = client_get_active_model(); + model = connman_client_get_device_network_model(client); cont = gtk_tree_model_get_iter_first(model, &parent); while (cont == TRUE) { guint type; - gchar *str; + gchar *name; gtk_tree_model_get(model, &parent, - CLIENT_COLUMN_TYPE, &type, - CLIENT_COLUMN_PRODUCT, &str, -1); + CONNMAN_COLUMN_TYPE, &type, + CONNMAN_COLUMN_NAME, &name, -1); switch (type) { - case CLIENT_TYPE_80211: + case CONNMAN_TYPE_WIFI: enumerate_networks(menu, model, &parent); break; default: break; } - g_free(str); + g_free(name); cont = gtk_tree_model_iter_next(model, &parent); } @@ -231,63 +254,90 @@ static gboolean menu_callback(GtkMenu *menu) return TRUE; } -static void state_callback(guint state, gint signal) +static void update_status(GtkTreeModel *model) { - switch (state) { - case CLIENT_STATE_OFF: - case CLIENT_STATE_ENABLED: - case CLIENT_STATE_SHUTDOWN: + GtkTreeIter iter; + gboolean cont; + gboolean online = FALSE; + guint strength, type; + + cont = gtk_tree_model_get_iter_first(model, &iter); + + while (cont == TRUE) { + gboolean enabled; + + gtk_tree_model_get(model, &iter, + CONNMAN_COLUMN_TYPE, &type, + CONNMAN_COLUMN_STRENGTH, &strength, + CONNMAN_COLUMN_ENABLED, &enabled, -1); + + online = TRUE; + + if (enabled == TRUE) + break; + + cont = gtk_tree_model_iter_next(model, &iter); + } + + if (online == FALSE) { status_offline(); - break; - case CLIENT_STATE_SCANNING: - case CLIENT_STATE_CONNECT: - status_prepare(); - break; - case CLIENT_STATE_CONNECTED: - case CLIENT_STATE_CARRIER: - case CLIENT_STATE_CONFIGURE: - status_config(); - break; - case CLIENT_STATE_READY: - status_ready(signal); + return; + } + + switch (type) { + case CONNMAN_TYPE_WIFI: + case CONNMAN_TYPE_WIMAX: + status_ready(strength / 25); break; default: - status_hide(); + status_ready(-1); break; } } -static void sig_term(int sig) +static void connection_added(GtkTreeModel *model, GtkTreePath *path, + GtkTreeIter *iter, gpointer user_data) { - gtk_main_quit(); + update_status(model); +} + +static void connection_removed(GtkTreeModel *model, GtkTreePath *path, + gpointer user_data) +{ + update_status(model); } int main(int argc, char *argv[]) { - struct sigaction sa; + GtkTreeModel *model; bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); gtk_init(&argc, &argv); + gtk_window_set_default_icon_name("network-wireless"); - gtk_window_set_default_icon_name("stock_internet"); + g_set_application_name(_("Connection Manager")); status_init(menu_callback, create_popupmenu()); - client_init(NULL); + client = connman_client_new(); + model = connman_client_get_connection_model(client); - client_set_state_callback(state_callback); + g_signal_connect(G_OBJECT(model), "row-inserted", + G_CALLBACK(connection_added), NULL); + g_signal_connect(G_OBJECT(model), "row-changed", + G_CALLBACK(connection_added), NULL); + g_signal_connect(G_OBJECT(model), "row-deleted", + G_CALLBACK(connection_removed), NULL); - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = sig_term; - sigaction(SIGINT, &sa, NULL); - sigaction(SIGTERM, &sa, NULL); + update_status(model); gtk_main(); - client_cleanup(); + g_object_unref(model); + g_object_unref(client); status_cleanup(); diff --git a/common/Makefile.am b/common/Makefile.am index 015ca0c..139897e 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -1,14 +1,20 @@ noinst_LIBRARIES = libcommon.a -libcommon_a_SOURCES = common.h client.h client.c \ - instance.h instance.c +libcommon_a_SOURCES = connman-dbus.c connman-dbus.h \ + connman-client.h connman-client.c \ + instance.h instance.c -noinst_PROGRAMS = test-client +noinst_PROGRAMS = connman-demo test-client + +connman_demo_SOURCES = demo.c +connman_demo_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@ test_client_LDADD = libcommon.a @GTK_LIBS@ @DBUS_LIBS@ -BUILT_SOURCES = marshal.h marshal.c instance-glue.h client-glue.h +BUILT_SOURCES = marshal.h marshal.c \ + connman-dbus-glue.h \ + instance-glue.h nodist_libcommon_a_SOURCES = $(BUILT_SOURCES) @@ -16,7 +22,7 @@ CLEANFILES = $(BUILT_SOURCES) AM_CFLAGS = @DBUS_CFLAGS@ @GTK_CFLAGS@ _______________________________________________ Commits mailing list [email protected] https://lists.moblin.org/mailman/listinfo/commits
