ekiga r6478 - in trunk: . src/endpoints src/gui



Author: dsandras
Date: Mon Jul 21 20:16:28 2008
New Revision: 6478
URL: http://svn.gnome.org/viewvc/ekiga?rev=6478&view=rev

Log:
Reimplemented account creation and modification for the ekiga.net
account in the assistant. Started working on the diamondcard stuff.


Modified:
   trunk/ChangeLog
   trunk/src/endpoints/ekiga.cpp
   trunk/src/endpoints/opal-account.cpp
   trunk/src/endpoints/opal-account.h
   trunk/src/endpoints/opal-bank.cpp
   trunk/src/endpoints/opal-bank.h
   trunk/src/endpoints/opal-main.cpp
   trunk/src/gui/assistant.cpp
   trunk/src/gui/assistant.h

Modified: trunk/src/endpoints/ekiga.cpp
==============================================================================
--- trunk/src/endpoints/ekiga.cpp	(original)
+++ trunk/src/endpoints/ekiga.cpp	Mon Jul 21 20:16:28 2008
@@ -239,6 +239,7 @@
 {
   if (!assistant_window && create)
     assistant_window = ekiga_assistant_new (service_core);
+
   return assistant_window;
 }
 

Modified: trunk/src/endpoints/opal-account.cpp
==============================================================================
--- trunk/src/endpoints/opal-account.cpp	(original)
+++ trunk/src/endpoints/opal-account.cpp	Mon Jul 21 20:16:28 2008
@@ -213,6 +213,17 @@
 }
 
 
+void Opal::Account::set_authentication_settings (const std::string & _username,
+                                                 const std::string & _password)
+{
+  username = _username;
+  auth_username = _username;
+  password = _password;
+
+  enable ();
+}
+
+
 void Opal::Account::enable ()
 {
   enabled = true;

Modified: trunk/src/endpoints/opal-account.h
==============================================================================
--- trunk/src/endpoints/opal-account.h	(original)
+++ trunk/src/endpoints/opal-account.h	Mon Jul 21 20:16:28 2008
@@ -83,6 +83,9 @@
 
     const std::string get_password () const;
 
+    void set_authentication_settings (const std::string & username,
+                                      const std::string & password);
+
     unsigned get_timeout () const;
 
     void enable ();

Modified: trunk/src/endpoints/opal-bank.cpp
==============================================================================
--- trunk/src/endpoints/opal-bank.cpp	(original)
+++ trunk/src/endpoints/opal-bank.cpp	Mon Jul 21 20:16:28 2008
@@ -53,17 +53,19 @@
 bool Opal::Bank::populate_menu (Ekiga::MenuBuilder & builder)
 {
   builder.add_action ("new", _("_New Ekiga.net Account"),
-		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), Ekiga));
+		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), Ekiga, "", ""));
   builder.add_action ("new", _("_New Ekiga Call Out Account"),
-		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), DiamondCard));
+		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), DiamondCard, "", ""));
   builder.add_action ("new", _("_New SIP Account"),
-		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), SIP));
+		      sigc::bind (sigc::mem_fun (this, &Opal::Bank::new_account), SIP, "", ""));
 
   return true;
 }
 
 
-void Opal::Bank::new_account (Type t)
+void Opal::Bank::new_account (Type t,
+                              std::string username,
+                              std::string password)
 {
   Ekiga::FormRequestSimple request;
 
@@ -75,18 +77,18 @@
   case Ekiga:
     request.hidden ("name", "Ekiga.net");
     request.hidden ("host", "ekiga.net");
-    request.text ("user", _("User:"), std::string ());
-    request.hidden ("authentication_user", std::string ());
-    request.private_text ("password", _("Password:"), std::string ());
+    request.text ("user", _("User:"), username);
+    request.hidden ("authentication_user", username);
+    request.private_text ("password", _("Password:"), password);
     request.hidden ("timeout", "3600");
     break;
 
   case DiamondCard:
     request.hidden ("name", "Ekiga Call Out");
     request.hidden ("host", "sip.diamondcard.us");
-    request.text ("user", _("User:"), std::string ());
-    request.hidden ("authentication_user", std::string ());
-    request.private_text ("password", _("Password:"), std::string ());
+    request.text ("user", _("User:"), username);
+    request.hidden ("authentication_user", username);
+    request.private_text ("password", _("Password:"), password);
     request.hidden ("timeout", "3600");
     break;
 
@@ -94,9 +96,9 @@
   default:
     request.text ("name", _("Name:"), std::string ());
     request.text ("host", _("Host"), std::string ());
-    request.text ("user", _("User:"), std::string ());
+    request.text ("user", _("User:"), username);
     request.text ("authentication_user", _("Authentication User:"), std::string ());
-    request.private_text ("password", _("Password:"), std::string ());
+    request.private_text ("password", _("Password:"), password);
     request.text ("timeout", _("Timeout:"), "3600");
     break;
   }
@@ -104,12 +106,15 @@
 
   request.submitted.connect (sigc::bind (sigc::mem_fun (this, &Opal::Bank::on_new_account_form_submitted), t));
 
-  if (!questions.handle_request (&request)) {
+  if (!username.empty () && !password.empty ())
+    request.submitted.emit (request);
+  else
+    if (!questions.handle_request (&request)) {
 #ifdef __GNUC__
-    std::cout << "Unhandled form request in "
-	      << __PRETTY_FUNCTION__ << std::endl;
+      std::cout << "Unhandled form request in "
+        << __PRETTY_FUNCTION__ << std::endl;
 #endif
-  }
+    }
 }
 
 

Modified: trunk/src/endpoints/opal-bank.h
==============================================================================
--- trunk/src/endpoints/opal-bank.h	(original)
+++ trunk/src/endpoints/opal-bank.h	Mon Jul 21 20:16:28 2008
@@ -40,6 +40,7 @@
 
 #include "bank-impl.h"
 #include "opal-account.h"
+#include "services.h"
 
 namespace Opal
 {
@@ -48,18 +49,28 @@
    * @internal
    * @{
    */
-  class Bank: public Ekiga::BankImpl<Account> 
+  class Bank: 
+      public Ekiga::BankImpl<Account>,
+      public Ekiga::Service
   {
 public:
     Bank (Ekiga::ServiceCore &_core) : Ekiga::BankImpl<Opal::Account> (_core) {}
 
     bool populate_menu (Ekiga::MenuBuilder & builder);
 
-private:
+    const std::string get_name () const
+    { return "opal-account-store"; }
+
+    const std::string get_description () const
+    { return "\tStores the call history"; }
+
     typedef enum { SIP, Ekiga, DiamondCard } Type;
 
-    void new_account (Type t);
+    void new_account (Type t,
+                      std::string username = "",
+                      std::string password = "");
 
+private:
     void on_new_account_form_submitted (Ekiga::Form & form, Type t);
 
     void add (std::string name, 

Modified: trunk/src/endpoints/opal-main.cpp
==============================================================================
--- trunk/src/endpoints/opal-main.cpp	(original)
+++ trunk/src/endpoints/opal-main.cpp	Mon Jul 21 20:16:28 2008
@@ -67,7 +67,7 @@
 
   Opal::Bank *bank = new Bank (*core);
   account_core->add_bank (*bank);
-  // FIXME Service ?
+  core->add (*bank);
 }
 
 bool

Modified: trunk/src/gui/assistant.cpp
==============================================================================
--- trunk/src/gui/assistant.cpp	(original)
+++ trunk/src/gui/assistant.cpp	Mon Jul 21 20:16:28 2008
@@ -27,10 +27,10 @@
 
 
 /*
- *                         druid.cpp  -  description
- *                         --------------------------
+ *                          assistant.cpp  -  description
+ *                          -----------------------------
  *   begin                : Mon May 1 2002
- *   copyright            : (C) 2000-2006 by Damien Sandras
+ *   copyright            : (C) 2000-2008 by Damien Sandras
  *                          (C) 2008 by Steve FrÃcinaux
  *   description          : This file contains all the functions needed to
  *                          build the druid.
@@ -48,12 +48,13 @@
 #include "toolbox/toolbox.h"
 #include "assistant.h"
 
+#include "opal-bank.h"
 #include "videoinput-core.h"
 #include "audioinput-core.h"
 #include "audiooutput-core.h"
 #include <gdk/gdkkeysyms.h>
 
-G_DEFINE_TYPE(EkigaAssistant, ekiga_assistant, GTK_TYPE_ASSISTANT);
+G_DEFINE_TYPE (EkigaAssistant, ekiga_assistant, GTK_TYPE_ASSISTANT);
 
 struct _EkigaAssistantPrivate
 {
@@ -63,6 +64,7 @@
   GtkWidget *welcome_page;
   GtkWidget *personal_data_page;
   GtkWidget *ekiga_net_page;
+  GtkWidget *ekiga_out_page;
   GtkWidget *connection_type_page;
   GtkWidget *audio_devices_page;
   GtkWidget *video_devices_page;
@@ -74,6 +76,10 @@
   GtkWidget *password;
   GtkWidget *skip_ekiga_net;
 
+  GtkWidget *dusername;
+  GtkWidget *dpassword;
+  GtkWidget *skip_ekiga_out;
+
   GtkWidget *connection_type;
 
   GtkWidget *audio_ringer;
@@ -86,17 +92,20 @@
   std::vector<sigc::connection> connections;
 };
 
+
 /* presenting the network connectoin type to the user */
 enum {
   CNX_LABEL_COLUMN,
   CNX_CODE_COLUMN
 };
 
+
 enum {
   SUMMARY_KEY_COLUMN,
   SUMMARY_VALUE_COLUMN
 };
 
+
 static GtkWidget *
 create_page (EkigaAssistant       *assistant,
              const gchar          *title,
@@ -242,10 +251,6 @@
 }
 
 
-/****************
- * Welcome page *
- ****************/
-
 static void
 create_welcome_page (EkigaAssistant *assistant)
 {
@@ -267,9 +272,6 @@
   assistant->priv->welcome_page = label;
 }
 
-/**********************
- * Personal data page *
- **********************/
 
 static void
 name_changed_cb (GtkEntry     *entry,
@@ -324,6 +326,7 @@
   gtk_widget_show_all (vbox);
 }
 
+
 static void
 prepare_personal_data_page (EkigaAssistant *assistant)
 {
@@ -337,6 +340,7 @@
   g_free (full_name);
 }
 
+
 static void
 apply_personal_data_page (EkigaAssistant *assistant)
 {
@@ -347,9 +351,6 @@
     gm_conf_set_string (PERSONAL_DATA_KEY "full_name", full_name);
 }
 
-/******************
- * Ekiga.net page *
- ******************/
 
 static void
 ekiga_net_button_clicked_cb (G_GNUC_UNUSED GtkWidget *button,
@@ -358,6 +359,7 @@
   gm_open_uri ("http://www.ekiga.net";);
 }
 
+
 static void
 ekiga_net_info_changed_cb (G_GNUC_UNUSED GtkWidget *w,
                            EkigaAssistant *assistant)
@@ -375,6 +377,25 @@
   set_current_page_complete (GTK_ASSISTANT (assistant), complete);
 }
 
+
+static void
+ekiga_out_info_changed_cb (G_GNUC_UNUSED GtkWidget *w,
+                           EkigaAssistant *assistant)
+{
+  gboolean complete;
+
+  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_out)))
+    complete = TRUE;
+  else {
+    const char *username = gtk_entry_get_text (GTK_ENTRY (assistant->priv->dusername));
+    const char *password = gtk_entry_get_text (GTK_ENTRY (assistant->priv->dpassword));
+    complete = strcmp(username, "") != 0 && strcmp(password, "") != 0;
+  }
+
+  set_current_page_complete (GTK_ASSISTANT (assistant), complete);
+}
+
+
 static void
 create_ekiga_net_page (EkigaAssistant *assistant)
 {
@@ -384,7 +405,7 @@
   GtkWidget *button;
   GtkWidget *align;
 
-  vbox = create_page (assistant, _("ekiga.net Account"), GTK_ASSISTANT_PAGE_CONTENT);
+  vbox = create_page (assistant, _("Ekiga.net Account"), GTK_ASSISTANT_PAGE_CONTENT);
 
   label = gtk_label_new (_("Please enter your username:"));
   gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
@@ -448,6 +469,7 @@
   gtk_widget_show_all (vbox);
 }
 
+
 static void
 prepare_ekiga_net_page (EkigaAssistant *assistant)
 {
@@ -466,65 +488,137 @@
                              account && !account->get_username ().empty () && !account->get_password ().empty ());
 }
 
+
 static void
 apply_ekiga_net_page (EkigaAssistant *assistant)
 {
   Ekiga::AccountCore *account_core = dynamic_cast<Ekiga::AccountCore *> (assistant->priv->core->get ("account-core"));
-  Ekiga::Account *account = account_core->find_account ("ekiga.net");
+
+  /* Some specific Opal stuff for the Ekiga.net account */
+  Opal::Bank *opal_bank = dynamic_cast<Opal::Bank *> (assistant->priv->core->get ("opal-account-store"));
+  Opal::Account *account = dynamic_cast<Opal::Account *> (account_core->find_account ("ekiga.net"));
 
   bool new_account = (account == NULL);
 
-  /*
-  if (new_account) {
+  if (new_account)
+    opal_bank->new_account (Opal::Bank::Ekiga, 
+                            gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)),
+                            gtk_entry_get_text (GTK_ENTRY (assistant->priv->password)));
+  else
+    account->set_authentication_settings (gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)),
+                                          gtk_entry_get_text (GTK_ENTRY (assistant->priv->password)));
+}
 
-    account = gm_account_new ();
-    account->default_account = TRUE;
-    account->account_name = g_strdup ("ekiga.net SIP Service");
-    account->host = g_strdup ("ekiga.net");
-    account->domain = g_strdup ("ekiga.net");
-    account->protocol_name = g_strdup ("SIP");
-
-    new_account = TRUE;
-  }
-
-  if (account->auth_username)
-    g_free (account->auth_username);
-  if (account->username)
-    g_free (account->username);
-  if (account->password)
-    g_free (account->password);
-
-  account->username =
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
-  account->auth_username =
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
-  account->password =
-    g_strdup (gtk_entry_get_text (GTK_ENTRY (assistant->priv->password)));
-  account->enabled =
-    !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net));
-
-  if (new_account) {
-    if (account->enabled)
-      gnomemeeting_account_add (account);
-  }
-  else {
-    gnomemeeting_account_modify (account);
-  }
 
-  //gdk_threads_leave ();
-  if (account->enabled) {
-    manager = dynamic_cast<Opal::CallManager *> (assistant->priv->core->get ("opal-component"));
-    manager->Register (account);
-  }
-  //gdk_threads_enter ();
+static void
+create_ekiga_out_page (EkigaAssistant *assistant)
+{
+  GtkWidget *vbox;
+  GtkWidget *label;
+  gchar *text;
+  GtkWidget *button;
+  GtkWidget *align;
+
+  vbox = create_page (assistant, _("Ekiga Call Out Account"), GTK_ASSISTANT_PAGE_CONTENT);
 
-  gm_account_delete (account);
-  */
+  label = gtk_label_new (_("Please enter your username:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->dusername = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (assistant->priv->dusername), TRUE);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->dusername, FALSE, FALSE, 0);
+
+  label = gtk_label_new (_("Please enter your password:"));
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
+
+  assistant->priv->dpassword = gtk_entry_new ();
+  gtk_entry_set_activates_default (GTK_ENTRY (assistant->priv->dpassword), TRUE);
+  gtk_entry_set_visibility (GTK_ENTRY (assistant->priv->dpassword), FALSE);
+  gtk_box_pack_start (GTK_BOX (vbox), assistant->priv->dpassword, FALSE, FALSE, 0);
+
+  label = gtk_label_new (NULL);
+  text = g_strdup (_("You can make calls to regular phones and cell numbers worldwide using Ekiga. "
+                     "To enable this, you need to do three things. First create an account at the URL below. "
+                     "Then enter your account ID and PIN code. Finally, activate the registration below.\n\n"
+                     "The service will work only if your account is created using the URL in this dialog."));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
+  gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+
+  button = gtk_button_new ();
+  label = gtk_label_new (NULL);
+  text = g_strdup_printf ("<span foreground=\"blue\"><u>%s</u></span>",
+                          _("Get an Ekiga Call Out account //FIXME"));
+  gtk_label_set_markup (GTK_LABEL (label), text);
+  g_free (text);
+  gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+  gtk_container_add (GTK_CONTAINER (button), label);
+  gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (button), FALSE, FALSE, 10);
+  g_signal_connect (button, "clicked",
+                    G_CALLBACK (ekiga_net_button_clicked_cb), NULL);
+
+  assistant->priv->skip_ekiga_out = gtk_check_button_new ();
+  label = gtk_label_new (_("I do not want to sign up for the Ekiga Call Out service"));
+  gtk_container_add (GTK_CONTAINER (assistant->priv->skip_ekiga_out), label);
+  align = gtk_alignment_new (0, 1.0, 0, 0);
+  gtk_container_add (GTK_CONTAINER (align), assistant->priv->skip_ekiga_out);
+  gtk_box_pack_start (GTK_BOX (vbox), align, TRUE, TRUE, 0);
+
+  g_signal_connect (assistant->priv->username, "changed",
+                    G_CALLBACK (ekiga_out_info_changed_cb), assistant);
+  g_signal_connect (assistant->priv->password, "changed",
+                    G_CALLBACK (ekiga_out_info_changed_cb), assistant);
+  g_signal_connect (assistant->priv->skip_ekiga_out, "toggled",
+                    G_CALLBACK (ekiga_out_info_changed_cb), assistant);
+
+  assistant->priv->ekiga_out_page = vbox;
+  gtk_widget_show_all (vbox);
+}
+
+
+static void
+prepare_ekiga_out_page (EkigaAssistant *assistant)
+{
+  Ekiga::AccountCore *account_core = dynamic_cast<Ekiga::AccountCore *> (assistant->priv->core->get ("account-core"));
+  Ekiga::Account *account = account_core->find_account ("sip.diamondcard.us");
+
+  if (account && !account->get_username ().empty ())
+    gtk_entry_set_text (GTK_ENTRY (assistant->priv->dusername), account->get_username ().c_str ());
+  if (account && !account->get_password ().empty ())
+    gtk_entry_set_text (GTK_ENTRY (assistant->priv->dpassword), account->get_password ().c_str ());
+
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_out),
+                                FALSE);
+
+  set_current_page_complete (GTK_ASSISTANT (assistant),
+                             account && !account->get_username ().empty () && !account->get_password ().empty ());
+}
+
+
+static void
+apply_ekiga_out_page (EkigaAssistant *assistant)
+{
+  Ekiga::AccountCore *account_core = dynamic_cast<Ekiga::AccountCore *> (assistant->priv->core->get ("account-core"));
+
+  /* Some specific Opal stuff for the Ekiga.net account */
+  Opal::Bank *opal_bank = dynamic_cast<Opal::Bank *> (assistant->priv->core->get ("opal-account-store"));
+  Opal::Account *account = dynamic_cast<Opal::Account *> (account_core->find_account ("sip.diamondcard.us"));
+
+  bool new_account = (account == NULL);
+
+  if (new_account)
+    opal_bank->new_account (Opal::Bank::DiamondCard, 
+                            gtk_entry_get_text (GTK_ENTRY (assistant->priv->dusername)),
+                            gtk_entry_get_text (GTK_ENTRY (assistant->priv->dpassword)));
+  else
+    account->set_authentication_settings (gtk_entry_get_text (GTK_ENTRY (assistant->priv->dusername)),
+                                          gtk_entry_get_text (GTK_ENTRY (assistant->priv->dpassword)));
 }
 
-/************************
- * Connection type page *
- ************************/
 
 static void
 create_connection_type_page (EkigaAssistant *assistant)
@@ -663,10 +757,6 @@
 }
 
 
-/**********************
- * Audio devices page *
- **********************/
-
 static void
 create_audio_devices_page (EkigaAssistant *assistant)
 {
@@ -743,18 +833,16 @@
   gtk_assistant_set_page_complete (GTK_ASSISTANT (assistant), vbox, TRUE);
 }
 
+
 static void
 prepare_audio_devices_page (EkigaAssistant *assistant)
 {
-  Opal::CallManager *manager;
   gchar *ringer;
   gchar *player;
   gchar *recorder;
   PStringArray devices;
   char **array;
 
-  manager = dynamic_cast<Opal::CallManager *> (assistant->priv->core->get ("opal-component"));
-
   ringer = gm_conf_get_string (SOUND_EVENTS_KEY "output_device");
   player = gm_conf_get_string (AUDIO_DEVICES_KEY "output_device");
   recorder = gm_conf_get_string (AUDIO_DEVICES_KEY "input_device");
@@ -782,6 +870,7 @@
   g_free (recorder);
 }
 
+
 static void
 apply_audio_devices_page (EkigaAssistant *assistant)
 {
@@ -811,9 +900,6 @@
 
 }
 
-/**********************
- * Video manager page *
- **********************/
 
 static void
 create_video_devices_page (EkigaAssistant *assistant)
@@ -930,7 +1016,7 @@
                                         std::vector<std::string> & device_list)
 {
   Ekiga::VideoInputCore *videoinput_core = dynamic_cast<Ekiga::VideoInputCore *> (core->get ("videoinput-core"));
-  std::vector <Ekiga::VideoInputDevice> devices;
+  std::vector<Ekiga::VideoInputDevice> devices;
 
   device_list.clear();
   videoinput_core->get_devices(devices);
@@ -942,7 +1028,7 @@
     device_list.push_back(iter->GetString());
   }
 
-  if (device_list.size() == 0) {
+  if (device_list.size () == 0) {
     device_list.push_back(_("No device found"));
   }
 }
@@ -963,9 +1049,6 @@
   return array;
 }
 
-/****************
- * Summary page *
- ****************/
 
 static void
 create_summary_page (EkigaAssistant *assistant)
@@ -1021,7 +1104,9 @@
   gtk_widget_show_all (vbox);
 }
 
-static void prepare_summary_page (EkigaAssistant *assistant)
+
+static void 
+prepare_summary_page (EkigaAssistant *assistant)
 {
   GtkListStore *model = assistant->priv->summary_model;
   GtkTreeIter iter;
@@ -1033,17 +1118,10 @@
   /* The full name */
   gtk_list_store_append (model, &iter);
   gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Full name",
+                      SUMMARY_KEY_COLUMN, _("Full Name"),
                       SUMMARY_VALUE_COLUMN, gtk_entry_get_text (GTK_ENTRY (assistant->priv->name)),
                       -1);
 
-  /* The user name */
-  gtk_list_store_append (model, &iter);
-  gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Username",
-                      SUMMARY_VALUE_COLUMN, gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)),
-                      -1);
-
   /* The connection type */
   if (gtk_combo_box_get_active_iter (GTK_COMBO_BOX (assistant->priv->connection_type), &citer)) {
     GtkTreeModel *cmodel = gtk_combo_box_get_model (GTK_COMBO_BOX (assistant->priv->connection_type));
@@ -1051,7 +1129,7 @@
 
     gtk_list_store_append (model, &iter);
     gtk_list_store_set (model, &iter,
-                        SUMMARY_KEY_COLUMN, "Connection type",
+                        SUMMARY_KEY_COLUMN, _("Connection Type"),
                         SUMMARY_VALUE_COLUMN, value,
                         -1);
     g_free (value);
@@ -1061,7 +1139,7 @@
   gtk_list_store_append (model, &iter);
   value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_ringer));
   gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Audio ringing device",
+                      SUMMARY_KEY_COLUMN, _("Audio Ringing Device"),
                       SUMMARY_VALUE_COLUMN, value,
                       -1);
   g_free (value);
@@ -1070,7 +1148,7 @@
   gtk_list_store_append (model, &iter);
   value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_player));
   gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Audio output device",
+                      SUMMARY_KEY_COLUMN, _("Audio Output Device"),
                       SUMMARY_VALUE_COLUMN, value,
                       -1);
   g_free (value);
@@ -1079,7 +1157,7 @@
   gtk_list_store_append (model, &iter);
   value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->audio_recorder));
   gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Audio input device",
+                      SUMMARY_KEY_COLUMN, _("Audio Input Device"),
                       SUMMARY_VALUE_COLUMN, value,
                       -1);
   g_free (value);
@@ -1088,33 +1166,37 @@
   gtk_list_store_append (model, &iter);
   value = gtk_combo_box_get_active_text (GTK_COMBO_BOX (assistant->priv->video_device));
   gtk_list_store_set (model, &iter,
-                      SUMMARY_KEY_COLUMN, "Video input device",
+                      SUMMARY_KEY_COLUMN, _("Video Input Device"),
                       SUMMARY_VALUE_COLUMN, value,
                       -1);
   g_free (value);
 
-  /* The ekiga.org account */
+  /* The ekiga.net account */
   gtk_list_store_append (model, &iter);
-  if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net))) {
+  if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (assistant->priv->skip_ekiga_net))) {
     value = g_strdup_printf ("sip:%s ekiga net",
                              gtk_entry_get_text (GTK_ENTRY (assistant->priv->username)));
     gtk_list_store_set (model, &iter,
-                        SUMMARY_KEY_COLUMN, "SIP URI",
+                        SUMMARY_KEY_COLUMN, _("SIP URI"),
                         SUMMARY_VALUE_COLUMN, value,
                         -1);
     g_free (value);
   }
   else {
     gtk_list_store_set (model, &iter,
-                        SUMMARY_KEY_COLUMN, "SIP URI",
+                        SUMMARY_KEY_COLUMN, _("SIP URI"),
                         SUMMARY_VALUE_COLUMN, "None",
                         -1);
   }
+
+  /* Ekiga Call Out */
+  gtk_list_store_append (model, &iter);
+  gtk_list_store_set (model, &iter,
+                      SUMMARY_KEY_COLUMN, _("Ekiga Call Out"),
+                      SUMMARY_VALUE_COLUMN, gtk_entry_get_text (GTK_ENTRY (assistant->priv->dusername)),
+                      -1);
 }
 
-/****************
- * Window stuff *
- ****************/
 
 static void
 ekiga_assistant_init (EkigaAssistant *assistant)
@@ -1133,6 +1215,7 @@
   create_welcome_page (assistant);
   create_personal_data_page (assistant);
   create_ekiga_net_page (assistant);
+  create_ekiga_out_page (assistant);
   create_connection_type_page (assistant);
   create_audio_devices_page (assistant);
   create_video_devices_page (assistant);
@@ -1142,6 +1225,7 @@
   g_object_set_data (G_OBJECT (assistant), "window_name", (gpointer) "assistant");
 }
 
+
 static void
 ekiga_assistant_prepare (GtkAssistant *gtkassistant,
                          GtkWidget    *page)
@@ -1166,6 +1250,11 @@
     return;
   }
 
+  if (page == assistant->priv->ekiga_out_page) {
+    prepare_ekiga_out_page (assistant);
+    return;
+  }
+
   if (page == assistant->priv->connection_type_page) {
     prepare_connection_type_page (assistant);
     return;
@@ -1187,13 +1276,12 @@
   }
 }
 
+
 static void
 ekiga_assistant_apply (GtkAssistant *gtkassistant)
 {
   EkigaAssistant *assistant = EKIGA_ASSISTANT (gtkassistant);
 
-  Opal::CallManager *manager;
-
   GtkWidget *main_window;
 
   const int schema_version = MAJOR_VERSION * 1000
@@ -1202,11 +1290,11 @@
 
   apply_personal_data_page (assistant);
   apply_ekiga_net_page (assistant);
+  apply_ekiga_out_page (assistant);
   apply_connection_type_page (assistant);
   apply_audio_devices_page (assistant);
   apply_video_devices_page (assistant);
 
-  manager = dynamic_cast<Opal::CallManager *> (assistant->priv->core->get ("opal-component"));
   main_window = GnomeMeeting::Process ()->GetMainWindow ();
 
   /* Hide the druid and show the main Ekiga window */
@@ -1218,6 +1306,7 @@
   gm_conf_set_int (GENERAL_KEY "version", schema_version);
 }
 
+
 static void
 ekiga_assistant_cancel (GtkAssistant *gtkassistant)
 {
@@ -1230,6 +1319,7 @@
   gnomemeeting_window_show (main_window);
 }
 
+
 static void
 ekiga_assistant_finalize (GObject *object)
 {
@@ -1240,6 +1330,7 @@
   G_OBJECT_CLASS (ekiga_assistant_parent_class)->finalize (object);
 }
 
+
 static void
 ekiga_assistant_class_init (EkigaAssistantClass *klass)
 {
@@ -1255,6 +1346,7 @@
   g_type_class_add_private (klass, sizeof (EkigaAssistantPrivate));
 }
 
+
 static gboolean
 ekiga_assistant_key_press_cb (GtkWidget *widget,
 			      GdkEventKey *event,
@@ -1269,6 +1361,7 @@
   return FALSE; /* propagate what we don't treat */
 }
 
+
 GtkWidget *
 ekiga_assistant_new (Ekiga::ServiceCore *core)
 {
@@ -1305,5 +1398,3 @@
 
   return GTK_WIDGET (assistant);
 }
-
-/* ex:set ts=2 sw=2 et: */

Modified: trunk/src/gui/assistant.h
==============================================================================
--- trunk/src/gui/assistant.h	(original)
+++ trunk/src/gui/assistant.h	Mon Jul 21 20:16:28 2008
@@ -1,5 +1,6 @@
+
 /* Ekiga -- A VoIP and Video-Conferencing application
- * Copyright (C) 2000-2006 Damien Sandras
+ * Copyright (C) 2000-2008 Damien Sandras
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -26,10 +27,10 @@
 
 
 /*
- *                         druid.h  -  description
- *                         -----------------------
+ *                          assistant.h  -  description
+ *                          ---------------------------
  *   begin                : Mon May 1 2002
- *   copyright            : (C) 2000-2006 by Damien Sandras
+ *   copyright            : (C) 2000-2008 by Damien Sandras
  *                          (C) 2008 by Steve FrÃcinaux
  *   description          : This file contains all the functions needed to
  *                          build the assistant.
@@ -70,9 +71,6 @@
 GType        ekiga_assistant_get_type   ();
 GtkWidget   *ekiga_assistant_new        (Ekiga::ServiceCore *core);
 
-
 G_END_DECLS
 
 #endif /* __EKIGA_ASSISTANT_H__ */
-
-/* ex:set ts=2 sw=2 et: */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]