From 37ea65c6ee7cebe39816f83744fe8847d760f008 Mon Sep 17 00:00:00 2001
From: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
Date: Fri, 20 Feb 2009 17:19:12 -0500
Subject: [PATCH] =?UTF-8?q?Assistant=20modification=20-=20Cyrille=20B?=
 =?UTF-8?q?=C3=A9raud?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 sflphone-gtk/src/assistant.c | 121 ++++++++++++++++++++---------------
 1 file changed, 70 insertions(+), 51 deletions(-)

diff --git a/sflphone-gtk/src/assistant.c b/sflphone-gtk/src/assistant.c
index 69b995f9cd..4c8fbb1da7 100644
--- a/sflphone-gtk/src/assistant.c
+++ b/sflphone-gtk/src/assistant.c
@@ -29,6 +29,7 @@
 #define SFLPHONE_ORG_SERVER "sip.sflphone.org"
 #define SFLPHONE_ORG_ALIAS "sflphone.org"
 
+
 struct _wizard *wiz;
 static int account_type;
 static int use_sflphone_org = 1;
@@ -43,6 +44,7 @@ static gint forward_page_func( gint current_page , gpointer data );
  * Page template
  */
 static GtkWidget* create_vbox(GtkAssistantPageType type, const gchar *title, const gchar *section);
+void prefill_sip(void) ;
 
   void
 set_account_type( GtkWidget* widget , gpointer data UNUSED )
@@ -56,7 +58,9 @@ set_account_type( GtkWidget* widget , gpointer data UNUSED )
 }
 
 void set_sflphone_org( GtkWidget* widget , gpointer data UNUSED ) {
-  use_sflphone_org = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)) && 1;
+	
+  use_sflphone_org = (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))?1:0) ;
+  g_print("SET SFLPHONEORG : %d\n", use_sflphone_org);
 }
 
 
@@ -88,6 +92,10 @@ static void cancel_callback( void )
   static void
 sip_apply_callback( void )
 {
+    if(use_sflphone_org){
+      	prefill_sip();
+    	account_type = _SIP;
+    }
   if( account_type == _SIP )
   {
     g_print("SIP APPLY CALLBACK\n");
@@ -150,7 +158,6 @@ if(!wiz){
   gtk_window_set_title( GTK_WINDOW(wiz->assistant), _("SFLphone account configuration wizard") );
   gtk_window_set_position(GTK_WINDOW(wiz->assistant), GTK_WIN_POS_CENTER);
   gtk_window_set_default_size(GTK_WINDOW(wiz->assistant), 200 , 200);
-  gtk_assistant_set_forward_page_func( GTK_ASSISTANT( wiz->assistant ), (GtkAssistantPageFunc) forward_page_func , NULL , NULL );
 
   build_intro();
   build_sfl_or_account();
@@ -158,14 +165,15 @@ if(!wiz){
   build_sip_account_configuration();
   build_nat_settings();
   build_iax_account_configuration();
-  build_registration_error();
   build_summary();
+//  build_registration_error();
   
   g_signal_connect(G_OBJECT(wiz->assistant), "close" , G_CALLBACK(close_callback), NULL);
   g_signal_connect(G_OBJECT(wiz->assistant), "cancel" , G_CALLBACK(cancel_callback), NULL);
 
   gtk_widget_show_all(wiz->assistant);
 
+  gtk_assistant_set_forward_page_func( GTK_ASSISTANT( wiz->assistant ), (GtkAssistantPageFunc) forward_page_func , NULL , NULL );
   gtk_assistant_update_buttons_state(GTK_ASSISTANT(wiz->assistant));
  }
 }
@@ -175,14 +183,14 @@ build_intro()
 {
   GtkWidget *label;
 
-  wiz->intro = create_vbox( GTK_ASSISTANT_PAGE_INTRO  , _("SFLphone 0.9.2") , _("Welcome to SFLphone!"));
-
+  wiz->intro = create_vbox( GTK_ASSISTANT_PAGE_INTRO  , _("SFLphone 0.9.3") , _("Welcome to SFLphone!"));
   label = gtk_label_new(_("This installation wizard will help you configure an account.")) ;
   gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
   gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
   gtk_widget_set_size_request(GTK_WIDGET(label), 380, -1);
   gtk_box_pack_start(GTK_BOX(wiz->intro), label, FALSE, TRUE, 0);
 
+  gtk_assistant_set_page_complete(GTK_ASSISTANT(wiz->assistant),  wiz->intro, TRUE);
   return wiz->intro;
 }
 
@@ -201,6 +209,7 @@ build_select_account()
 
   g_signal_connect(G_OBJECT( sip ) , "clicked" , G_CALLBACK( set_account_type ) , NULL );
 
+  gtk_assistant_set_page_complete(GTK_ASSISTANT(wiz->assistant),  wiz->protocols, TRUE);
   return wiz->protocols;
 }
 
@@ -212,7 +221,7 @@ GtkWidget* build_sfl_or_account()
 
   wiz->sflphone_org = create_vbox( GTK_ASSISTANT_PAGE_CONTENT , _("Account") , _("Please select one of the following option:"));
 
-  sfl = gtk_radio_button_new_with_label(NULL, _("Create a free SIP/IAX2 account on sflphone.org"));
+  sfl = gtk_radio_button_new_with_label( NULL, _("Create a free SIP/IAX2 account on sflphone.org"));
   gtk_box_pack_start( GTK_BOX(wiz->sflphone_org) , sfl , TRUE, TRUE, 0);
   cus = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(sfl), _("Register an existing SIP or IAX2 account"));
   gtk_box_pack_start( GTK_BOX(wiz->sflphone_org) , cus , TRUE, TRUE, 0);
@@ -273,6 +282,7 @@ build_sip_account_configuration( void )
   gtk_entry_set_visibility(GTK_ENTRY(wiz->sip_password), FALSE);
   gtk_table_attach ( GTK_TABLE( table ), wiz->sip_password, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
 
+  //gtk_assistant_set_page_complete(GTK_ASSISTANT(wiz->assistant),  wiz->sip_account, TRUE);
   return wiz->sip_account;
 }
 
@@ -424,54 +434,63 @@ void prefill_sip(void) {
   }
 }
 
-
-#define PAGE_INTRO   0
-#define PAGE_SFL     1
-#define PAGE_TYPE    2
-#define PAGE_SIP     3
-#define PAGE_STUN    4
-#define PAGE_IAX     5
-#define PAGE_REG_ERR 6
-#define PAGE_SUMMARY 8
-
-static gint 
-forward_page_func( gint current_page , gpointer data  UNUSED) {
-  
-  switch( current_page ){
-  case PAGE_INTRO:
-    return PAGE_SFL;
-
-  case PAGE_SFL:
-    if (use_sflphone_org) {
-      prefill_sip();
-      account_type = _SIP;
-      return PAGE_SIP;
-    }
-    return PAGE_TYPE;
-
-  case PAGE_TYPE:
-    if( account_type == _SIP ) {
-      set_sip_infos_sentivite(TRUE);
-      return PAGE_SIP;
-    }
-    return PAGE_IAX;
-
-  case PAGE_SIP:  
-    return PAGE_STUN;
-
-  case PAGE_STUN:
-    return PAGE_SUMMARY;
-
-  case PAGE_IAX:
-    return PAGE_SUMMARY;
-
-  default:
-    return -1;
-  }
+typedef enum
+{
+  PAGE_INTRO,
+  PAGE_SFL,
+  PAGE_TYPE,
+  PAGE_SIP,
+  PAGE_STUN,
+  PAGE_IAX,
+  PAGE_SUMMARY
+} assistant_state;
+
+static gint forward_page_func( gint current_page , gpointer data) {
+ 	gint next_page = 0;
+  	g_print("CURRENT PAGE %d\n", current_page);  
+
+	switch( current_page ){
+  		case PAGE_INTRO:
+			next_page = PAGE_SFL;
+			break;
+  		case PAGE_SFL:
+    			if (use_sflphone_org) {
+				next_page = PAGE_STUN;
+    			} else
+				next_page = PAGE_TYPE;	
+			break;
+		case PAGE_TYPE:
+    			if( account_type == _SIP ) {
+      				set_sip_infos_sentivite(TRUE);
+				next_page = PAGE_SIP;	
+    			} else
+				next_page = PAGE_IAX;	
+			break;
+		case PAGE_SIP:  
+    			if (use_sflphone_org ) {
+			}
+
+			next_page = PAGE_STUN;	
+			break;
+		case PAGE_STUN:
+			next_page = PAGE_SUMMARY;	
+			break;
+  		case PAGE_IAX:
+			next_page = PAGE_SUMMARY;	
+			break;
+  		case PAGE_SUMMARY:
+                        g_print("XXXXXXXXXXXXXXXXXXXXXX\n");
+			next_page = PAGE_SUMMARY;	
+			break;
+		default:
+			next_page = -1;	
+	}
+	g_print("NEXT PAGE : %d\n",next_page);
+	return next_page;
 }
 
 
-  static GtkWidget*
+static GtkWidget*
 create_vbox(GtkAssistantPageType type, const gchar *title, const gchar *section)
 {
   GtkWidget *vbox;
-- 
GitLab