]> sjero.net Git - linphone/commitdiff
Async call to xmlrpc service
authorSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Mon, 19 Dec 2011 10:04:44 +0000 (11:04 +0100)
committerSylvain Berfini <Sylvain.Berfini@Belledonne-Communications.com>
Mon, 19 Dec 2011 10:04:44 +0000 (11:04 +0100)
gtk/setupwizard.c

index b34be8aef3a31a0b1e6018118e825b0608165bd9..25cc78ffcd7b5eb34244ab039de302cb992f7d3c 100644 (file)
@@ -20,6 +20,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 #include "linphone.h"
 #include <glib.h>
 #include <glib/gprintf.h>
+#include <pthread.h>
 static LinphoneAccountCreator *linphone_gtk_assistant_get_creator(GtkWidget*w);
 
 static const int PASSWORD_MIN_SIZE = 6;
@@ -61,7 +62,7 @@ static int all_account_information_entered(GtkWidget *w) {
 
        if (gtk_entry_get_text_length(username) > 0 &&
        gtk_entry_get_text_length(domain) > 0 &&
-       g_regex_match_simple("^(sip:)?[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$", gtk_entry_get_text(username), 0, 0) &&
+       g_regex_match_simple("^[a-zA-Z]+[a-zA-Z0-9.\\-_]{2,}$", gtk_entry_get_text(username), 0, 0) &&
        g_regex_match_simple("^(sip:)?([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$", gtk_entry_get_text(domain), 0, 0)) {
                return 1;
        }
@@ -70,14 +71,6 @@ static int all_account_information_entered(GtkWidget *w) {
 
 static void account_informations_changed(GtkEntry *entry, GtkWidget *w) {
        GtkWidget *assistant=gtk_widget_get_toplevel(w);
-       GtkEntry* username = GTK_ENTRY(g_object_get_data(G_OBJECT(w),"username"));
-       GtkEntry* domain = GTK_ENTRY(g_object_get_data(G_OBJECT(w),"domain"));
-
-       const gchar *needle = "@";
-       if (entry == username && g_strrstr(gtk_entry_get_text(username), needle) != NULL) {
-               gtk_entry_set_text(domain, g_strrstr(gtk_entry_get_text(username), needle)+1);
-       }
-
        gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant),w,
                all_account_information_entered(w)>0);
 }
@@ -128,35 +121,24 @@ static GtkWidget *create_account_informations_page() {
        GtkWidget *labelEmpty=gtk_label_new(NULL);
        gtk_widget_modify_fg(labelEmpty, GTK_STATE_NORMAL, &color);
 
-       GtkWidget *labelUsername=gtk_label_new(_("Identity:"));
-       GtkWidget *labelUsernameExemple=gtk_label_new(_("example: user@sip.linphone.org"));
-       GtkWidget *labelPassword=gtk_label_new(_("Password:"));
+       GtkWidget *labelUsername=gtk_label_new(_("Username*"));
+       GtkWidget *labelPassword=gtk_label_new(_("Password*"));
        GtkWidget *entryPassword=gtk_entry_new();
        gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE);
-       GtkWidget *labelDomain=gtk_label_new(_("Proxy:"));
-       GtkWidget *labelDomainExemple=gtk_label_new(_("example: sip.linphone.org"));
-       GtkWidget *labelRoute=gtk_label_new(_("Route (optional):"));
+       GtkWidget *labelDomain=gtk_label_new(_("Domain*"));
+       GtkWidget *labelProxy=gtk_label_new(_("Proxy"));
        GtkWidget *entryUsername=gtk_entry_new();
        GtkWidget *entryDomain=gtk_entry_new();
        GtkWidget *entryRoute=gtk_entry_new();
 
-       GtkWidget *vbox1=gtk_vbox_new(FALSE, 1);
-       gtk_box_pack_start (GTK_BOX (vbox1), entryUsername, TRUE, TRUE, 1);
-       gtk_box_pack_start (GTK_BOX (vbox1), labelUsernameExemple, TRUE, TRUE, 1);
-       GtkWidget *vbox2=gtk_vbox_new(FALSE, 1);
-       gtk_box_pack_start (GTK_BOX (vbox2), entryDomain, TRUE, TRUE, 1);
-       gtk_box_pack_start (GTK_BOX (vbox2), labelDomainExemple, TRUE, TRUE, 1);
-       gtk_table_set_row_spacing(GTK_TABLE(vbox), 1, 10);
-       gtk_table_set_row_spacing(GTK_TABLE(vbox), 3, 5);
-
        gtk_table_attach_defaults(GTK_TABLE(vbox), label, 0, 2, 0, 1);
        gtk_table_attach_defaults(GTK_TABLE(vbox), labelUsername, 0, 1, 1, 2);
-       gtk_table_attach_defaults(GTK_TABLE(vbox), vbox1, 1, 2, 1, 2);
+       gtk_table_attach_defaults(GTK_TABLE(vbox), entryUsername, 1, 2, 1, 2);
        gtk_table_attach_defaults(GTK_TABLE(vbox), labelPassword, 0, 1, 2, 3);
        gtk_table_attach_defaults(GTK_TABLE(vbox), entryPassword, 1, 2, 2, 3);
        gtk_table_attach_defaults(GTK_TABLE(vbox), labelDomain, 0, 1, 3, 4);
-       gtk_table_attach_defaults(GTK_TABLE(vbox), vbox2, 1, 2, 3, 4);
-       gtk_table_attach_defaults(GTK_TABLE(vbox), labelRoute, 0, 1, 4, 5);
+       gtk_table_attach_defaults(GTK_TABLE(vbox), entryDomain, 1, 2, 3, 4);
+       gtk_table_attach_defaults(GTK_TABLE(vbox), labelProxy, 0, 1, 4, 5);
        gtk_table_attach_defaults(GTK_TABLE(vbox), entryRoute, 1, 2, 4, 5);
        gtk_table_attach_defaults(GTK_TABLE(vbox), labelEmpty, 0, 2, 5, 6);
        gtk_widget_show_all(vbox);
@@ -164,7 +146,7 @@ static GtkWidget *create_account_informations_page() {
        g_object_set_data(G_OBJECT(vbox),"username",entryUsername);
        g_object_set_data(G_OBJECT(vbox),"password",entryPassword);
        g_object_set_data(G_OBJECT(vbox),"domain",entryDomain);
-       g_object_set_data(G_OBJECT(vbox),"route",entryRoute);
+       g_object_set_data(G_OBJECT(vbox),"proxy",entryRoute);
        g_object_set_data(G_OBJECT(vbox),"errorstring",labelEmpty);
        g_signal_connect(G_OBJECT(entryUsername),"changed",(GCallback)account_informations_changed,vbox);
        g_signal_connect(G_OBJECT(entryDomain),"changed",(GCallback)account_informations_changed,vbox);
@@ -243,10 +225,8 @@ static void account_password_changed(GtkEntry *entry, GtkWidget *w) {
                        is_account_information_correct(w)>0);
 }
 
-static void account_username_changed(GtkEntry *entry, GtkWidget *w) {
-       // Verifying if username choosed is available, and if form is correctly filled, let the user go next page
-
-       GtkWidget *assistant=gtk_widget_get_toplevel(w);
+void* check_username_availability(void* w) {
+       GtkWidget *assistant=gtk_widget_get_toplevel(GTK_WIDGET(w));
        GtkEntry* username = GTK_ENTRY(g_object_get_data(G_OBJECT(w),"username"));
        GtkImage* isUsernameOk = GTK_IMAGE(g_object_get_data(G_OBJECT(w),"usernameOk"));
        GtkLabel* usernameError = GTK_LABEL(g_object_get_data(G_OBJECT(w),"error"));
@@ -280,6 +260,14 @@ static void account_username_changed(GtkEntry *entry, GtkWidget *w) {
 
        gtk_assistant_set_page_complete(GTK_ASSISTANT(assistant),w,
                        is_account_information_correct(w)>0);
+
+       return NULL;
+}
+
+static void account_username_changed(GtkEntry *entry, GtkWidget *w) {
+       // Verifying if username choosed is available, and if form is correctly filled, let the user go next page
+       pthread_t thread;
+       pthread_create(&thread, NULL, check_username_availability, (void*)w);
 }
 
 static GtkWidget *create_account_information_page() {
@@ -323,7 +311,7 @@ static GtkWidget *create_account_information_page() {
        gtk_table_attach_defaults(GTK_TABLE(vbox), passwordVbox1, 0, 1, 3, 4);
        gtk_table_attach_defaults(GTK_TABLE(vbox), passwordVbox2, 1, 2, 3, 4);
        gtk_table_attach_defaults(GTK_TABLE(vbox), isPasswordOk, 2, 3, 3, 4);
-       gtk_table_attach_defaults(GTK_TABLE(vbox), labelError, 1, 2, 5, 6);
+       gtk_table_attach_defaults(GTK_TABLE(vbox), labelError, 1, 4, 5, 6);
        gtk_table_attach_defaults(GTK_TABLE(vbox), checkNewsletter, 0, 3, 6, 7);
 
        gtk_widget_show_all(vbox);
@@ -447,22 +435,15 @@ static int linphone_gtk_assistant_forward(int curpage, gpointer data){
        }
        else if (curpage == 2) { // Account's informations entered
                LinphoneAccountCreator *c=linphone_gtk_assistant_get_creator(w);
-               if (!g_regex_match_simple("^sip:[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username"))), 0, 0)) {
-                       gchar identity[128];
-                       g_snprintf(identity, sizeof(identity), "sip:%s", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username"))));
-                       linphone_account_creator_set_username(c, identity);
-               } else {
-                       linphone_account_creator_set_username(c, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username"))));
-               }
+               gchar identity[128];
+               g_snprintf(identity, sizeof(identity), "sip:%s@%s", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"username"))), gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain"))));
 
-               if (!g_regex_match_simple("^sip:([a-z0-9]+([\\.-][a-z0-9]+)*)+\\.[a-z]{2,}$", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain"))), 0, 0)) {
-                       gchar proxy[128];
-                       g_snprintf(proxy, sizeof(proxy), "sip:%s", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain"))));
-                       linphone_account_creator_set_domain(c, proxy);
-               } else {
-                       linphone_account_creator_set_domain(c, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain"))));
-               }
-               linphone_account_creator_set_route(c, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"route"))));
+               gchar proxy[128];
+               g_snprintf(proxy, sizeof(proxy), "sip:%s", gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"domain"))));
+
+               linphone_account_creator_set_username(c, identity);
+               linphone_account_creator_set_domain(c, proxy);
+               linphone_account_creator_set_route(c, gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"proxy"))));
                linphone_account_creator_set_password(c,gtk_entry_get_text(GTK_ENTRY(g_object_get_data(G_OBJECT(box),"password"))));
                curpage = gtk_assistant_get_n_pages(GTK_ASSISTANT(w)) - 1; // Going to the last page
        }