ekiga r6486 - in trunk: . lib/engine/protocol/skel src/gui



Author: dsandras
Date: Wed Jul 23 19:50:34 2008
New Revision: 6486
URL: http://svn.gnome.org/viewvc/ekiga?rev=6486&view=rev

Log:
Added ready signal to the CallCore emitted when all CallManager are
ready. Disable critical elements of the GUI until we are ready.


Modified:
   trunk/ChangeLog
   trunk/lib/engine/protocol/skel/call-core.cpp
   trunk/lib/engine/protocol/skel/call-core.h
   trunk/src/gui/main.cpp

Modified: trunk/lib/engine/protocol/skel/call-core.cpp
==============================================================================
--- trunk/lib/engine/protocol/skel/call-core.cpp	(original)
+++ trunk/lib/engine/protocol/skel/call-core.cpp	Wed Jul 23 19:50:34 2008
@@ -52,6 +52,7 @@
   manager_added.emit (manager);
 
   manager.mwi_event.connect (sigc::bind (sigc::mem_fun (this, &CallCore::on_mwi_event), &manager));
+  manager.ready.connect (sigc::bind (sigc::mem_fun (this, &CallCore::on_manager_ready), &manager));
 }
 
 
@@ -180,7 +181,11 @@
 }
 
 
-void CallCore::on_manager_ready (std::string info, CallManager *manager)
+void CallCore::on_manager_ready (CallManager *manager)
 {
-  manager_ready.emit (*manager, info);
+  manager_ready.emit (*manager);
+  nr_ready++;
+
+  if (nr_ready >= managers.size ())
+    ready.emit ();
 }

Modified: trunk/lib/engine/protocol/skel/call-core.h
==============================================================================
--- trunk/lib/engine/protocol/skel/call-core.h	(original)
+++ trunk/lib/engine/protocol/skel/call-core.h	Wed Jul 23 19:50:34 2008
@@ -66,7 +66,7 @@
 
       /** The constructor
        */
-      CallCore () { }
+      CallCore () { nr_ready = 0; }
 
       /** The destructor
        */
@@ -148,7 +148,8 @@
       sigc::signal<void, CallManager &, std::string, std::string> mwi_event;
 
       /*** Misc ***/
-      sigc::signal<void, CallManager &, std::string> manager_ready;
+      sigc::signal<void, CallManager &> manager_ready;
+      sigc::signal<void> ready;
 
   private:
       void on_new_call (Call *call, CallManager *manager);
@@ -171,9 +172,10 @@
 
       void on_mwi_event (std::string, std::string, CallManager *manager);
 
-      void on_manager_ready (std::string, CallManager *manager);
+      void on_manager_ready (CallManager *manager);
       
       std::set<CallManager *> managers;
+      unsigned nr_ready;
     };
 
 /**

Modified: trunk/src/gui/main.cpp
==============================================================================
--- trunk/src/gui/main.cpp	(original)
+++ trunk/src/gui/main.cpp	Wed Jul 23 19:50:34 2008
@@ -127,6 +127,7 @@
   GtkAccelGroup *accel;
 
   GtkWidget *main_menu;
+  GtkWidget *main_toolbar;
 
   int x;
   int y;
@@ -576,6 +577,12 @@
 }
 
 
+static void on_ready_cb (gpointer self)
+{
+  gm_main_window_set_busy (GTK_WIDGET (self), false);
+}
+
+
 static void on_registration_event (const Ekiga::Account & account,
                                    Ekiga::AccountCore::RegistrationState state,
                                    std::string /*info*/,
@@ -3327,7 +3334,8 @@
 
   g_return_if_fail (mw != NULL);
 
-  gtk_menu_section_set_sensitive (mw->main_menu, "quit", !busy);
+  gtk_widget_set_sensitive (mw->main_toolbar, !busy);
+  gtk_widget_set_sensitive (mw->main_menu, !busy);
 
   if (busy) {
 
@@ -3669,7 +3677,6 @@
   GtkWidget *window = NULL;
   
   GtkWidget *status_toolbar = NULL;
-  GtkWidget *uri_toolbar = NULL;
 
   PanelSection section = DIALPAD;
 
@@ -3725,8 +3732,8 @@
                       FALSE, FALSE, 0);
 
   /* The toolbars */
-  uri_toolbar = gm_mw_init_uri_toolbar (window);
-  gtk_box_pack_start (GTK_BOX (mw->window_vbox), uri_toolbar, false, false, 0); 
+  mw->main_toolbar = gm_mw_init_uri_toolbar (window);
+  gtk_box_pack_start (GTK_BOX (mw->window_vbox), mw->main_toolbar, false, false, 0); 
 
   /* The Audio & Video Settings windows */
   mw->audio_settings_window = gm_mw_audio_settings_window_new (window);
@@ -3882,6 +3889,9 @@
   conn = call_core->mwi_event.connect (sigc::bind (sigc::ptr_fun (on_mwi_event_cb), (gpointer) window));
   mw->connections.push_back (conn);
 
+  conn = call_core->ready.connect (sigc::bind (sigc::ptr_fun (on_ready_cb), (gpointer) window));
+  mw->connections.push_back (conn);
+
   conn = call_core->setup_call.connect (sigc::bind (sigc::ptr_fun (on_setup_call_cb), (gpointer) window));
   mw->connections.push_back (conn);
 
@@ -3922,6 +3932,9 @@
   gm_conf_notifier_add (USER_INTERFACE_KEY "main_window/show_call_panel",
 			show_call_panel_changed_nt, window);
 
+  /* Until we are ready, nothing possible  */
+  gm_main_window_set_busy (window, true);
+
   return window;
 }
 



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