diff --git a/sflphone-gtk/src/accountlist.c b/sflphone-gtk/src/accountlist.c index 92280a3fba80ecd800f0a6c2994780bd8a71c658..893d057d24ed2776acbc99cc65c8e33617b0ed53 100644 --- a/sflphone-gtk/src/accountlist.c +++ b/sflphone-gtk/src/accountlist.c @@ -230,3 +230,37 @@ gchar* account_list_get_current_id( void ){ else return __CURRENT_ACCOUNT_ID; } + +int account_list_get_sip_account_number( void ){ + + int n; + guint size, i; + account_t *current; + + size = account_list_get_size(); + n = 0; + for( i=0; i<size ;i++ ){ + current = account_list_get_nth( i ); + if( strcmp(g_hash_table_lookup(current->properties, ACCOUNT_TYPE), "SIP" ) == 0 ) + n++; + } + + return n; +} + +int account_list_get_iax_account_number( void ){ + + int n; + guint size, i; + account_t *current; + + size = account_list_get_size(); + n = 0; + for( i=0; i<size ;i++ ){ + current = account_list_get_nth( i ); + if( strcmp(g_hash_table_lookup(current->properties, ACCOUNT_TYPE), "IAX" ) == 0 ) + n++; + } + + return n; +} diff --git a/sflphone-gtk/src/accountlist.h b/sflphone-gtk/src/accountlist.h index 72dde233b897dc6e0ea23514a74c94fd9f7514f1..18b5575d87504af68f280cdc15c35db0cbada95c 100644 --- a/sflphone-gtk/src/accountlist.h +++ b/sflphone-gtk/src/accountlist.h @@ -167,4 +167,16 @@ void account_list_move_down( guint index ); */ gchar* account_list_get_current_id( void ); +/** + * Returns the number of SIP accounts that have been configured + */ +int account_list_get_sip_account_number( void ); + +/** + * Returns the number of IAX accounts that have been configured + */ +int account_list_get_iax_account_number( void ); + + + #endif diff --git a/sflphone-gtk/src/configwindow.c b/sflphone-gtk/src/configwindow.c index 9081ef06e9a7434d5b4dfb899b5b8b80828aa89f..2c2c731bc37e8f1d3453b2cf7662b833e2cca495 100644 --- a/sflphone-gtk/src/configwindow.c +++ b/sflphone-gtk/src/configwindow.c @@ -314,7 +314,7 @@ set_pulse_app_volume_control( void ) dbus_set_pulse_app_volume_control(); } -static void update_port( GtkSpinButton *button, void *ptr ) +static void update_port( GtkSpinButton *button UNUSED, void *ptr ) { dbus_set_sip_port(gtk_spin_button_get_value_as_int((GtkSpinButton *)(ptr))); } @@ -439,6 +439,10 @@ create_accounts_tab() GtkWidget* create_general_settings () { + + int curPort; + int n; + GtkWidget *ret; GtkWidget *notifFrame; @@ -542,14 +546,18 @@ create_general_settings () gtk_box_pack_start( GTK_BOX(vbox) , widg , TRUE , TRUE , 1); g_signal_connect(G_OBJECT( widg ) , "clicked" , G_CALLBACK( set_pulse_app_volume_control ) , NULL); + n = account_list_get_sip_account_number(); + printf("sip account number = %i\n", n); + /** SIP port information */ - int curPort = dbus_get_sip_port(); + curPort = dbus_get_sip_port(); if(curPort <= 0 || curPort > 65535) curPort = 5060; - + frame = gtk_frame_new( _("SIP Port")); gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0); gtk_widget_show( frame ); + gtk_widget_set_sensitive( GTK_WIDGET(frame), (n==0)?FALSE:TRUE ); hbox = gtk_hbox_new(FALSE, 10); gtk_widget_show( hbox ); @@ -557,6 +565,7 @@ create_general_settings () GtkWidget *applyButton = gtk_button_new_with_label(_("Apply")); gtk_widget_set_size_request(applyButton, 60, 35); + //gtk_widget_set_sensitive( GTK_WIDGET(applyButton), (n==0)?FALSE:TRUE ); label = gtk_label_new(_("Port:")); diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index f82762b947481bb932d0abaa52f6532119558669..82f6bae0a4698d1db62a9488c7f8030bfbc7a7ac 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -2405,7 +2405,13 @@ UserAgent *ManagerImpl::getUserAgent() int ManagerImpl::getSipPort() { - return _userAgent->getSipPort(); + if( _userAgent ) + return _userAgent->getSipPort(); + else + { + // It means that no SIP accounts are configured, so return a default value + return 0; + } } void