ekiga r6486 - in trunk: . lib/engine/protocol/skel src/gui
- From: dsandras svn gnome org
- To: svn-commits-list gnome org
- Subject: ekiga r6486 - in trunk: . lib/engine/protocol/skel src/gui
- Date: Wed, 23 Jul 2008 19:50:34 +0000 (UTC)
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]