diff --git a/sflphone-gtk/src/SFLnotify.c b/sflphone-gtk/src/SFLnotify.c index d7f493887390e63afd64aa1e4851b3075b641a3d..58a1a77f680f093ff8000fcf2c8e711afa3e4759 100644 --- a/sflphone-gtk/src/SFLnotify.c +++ b/sflphone-gtk/src/SFLnotify.c @@ -42,7 +42,7 @@ notify_incoming_call( call_t* c ) callerid, NULL, NULL); - notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL ); + notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL ); notify_notification_set_icon_from_pixbuf (notification, pixbuf); notify_notification_attach_to_status_icon( notification , get_status_icon() ); notify_notification_set_timeout( notification , (( g_strcasecmp(__TIMEOUT_MODE, "default") == 0 )? __TIMEOUT_TIME : NOTIFY_EXPIRES_NEVER )); @@ -100,7 +100,7 @@ notify_voice_mails( guint count , account_t* acc ) body, NULL, NULL); - notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL ); + notify_notification_set_urgency( notification , NOTIFY_URGENCY_LOW ); notify_notification_set_icon_from_pixbuf (notification, pixbuf); notify_notification_attach_to_status_icon( notification , get_status_icon() ); notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT ); @@ -112,7 +112,7 @@ notify_voice_mails( guint count , account_t* acc ) } void -notify_registered_accounts( void ) +notify_switch_account( account_t* acc ) { // the account is different from NULL GdkPixbuf *pixbuf; @@ -120,35 +120,90 @@ notify_registered_accounts( void ) gchar* body=""; notify_init("sflphone"); - guint size = account_list_get_size(); - int i; + body = g_markup_printf_escaped(_("Calling with %s account <i>%s</i>") , + g_hash_table_lookup( acc->properties , ACCOUNT_TYPE) , + g_hash_table_lookup( acc->properties , ACCOUNT_ALIAS)); + + title = g_markup_printf_escaped(_("Switching account")); + + pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); + + notification = notify_notification_new( title, + body, + NULL, + NULL); + notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL ); + notify_notification_set_icon_from_pixbuf (notification, pixbuf); + notify_notification_attach_to_status_icon( notification , get_status_icon() ); + notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT ); + notify_notification_add_action( notification , "ignore" , _("Ignore") , (NotifyActionCallback) ignore_call_cb , NULL , NULL ); + + if (!notify_notification_show (notification, NULL)) { + g_print("notify(), failed to send notification\n"); + } +} + + void +notify_no_accounts( ) +{ + GdkPixbuf *pixbuf; + gchar* title; + gchar* body=""; + notify_init("sflphone"); + + body = g_markup_printf_escaped(_("You haven't setup any accounts")); + + title = g_markup_printf_escaped(_("Error")); + + pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); + + notification = notify_notification_new( title, + body, + NULL, + NULL); + notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL ); + notify_notification_set_icon_from_pixbuf (notification, pixbuf); + notify_notification_attach_to_status_icon( notification , get_status_icon() ); + notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT ); + notify_notification_add_action( notification , "setup" , _("Setup Accounts") , (NotifyActionCallback) setup_accounts_cb , NULL , NULL ); + + if (!notify_notification_show (notification, NULL)) { + g_print("notify(), failed to send notification\n"); + } +} + + void +setup_accounts_cb( NotifyNotification *notification, gchar *action, gpointer data ) +{ + show_accounts_window(0); + g_object_unref( notification ); +} - if( size > 0 ){ - for( i = 0 ; i < size ; i++ ){ + void +notify_no_registered_accounts( ) +{ + GdkPixbuf *pixbuf; + gchar* title; + gchar* body=""; + notify_init("sflphone"); - body = g_markup_printf_escaped(_("%s%s (%s) - State:<i>%s</i>") , - body, - g_hash_table_lookup( account_list_get_nth(i)->properties , ACCOUNT_ALIAS), - g_hash_table_lookup( account_list_get_nth(i)->properties , ACCOUNT_TYPE) , - account_state_name( account_list_get_nth(i)->state)) ; - } + body = g_markup_printf_escaped(_("You have no registered accounts")); - title = g_markup_printf_escaped(_("Accounts")); + title = g_markup_printf_escaped(_("Error")); - pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); + pixbuf = gdk_pixbuf_new_from_file(ICON_DIR "/sflphone.png", NULL); - notification = notify_notification_new( title, - body, - NULL, - NULL); - notify_notification_set_urgency( notification , NOTIFY_URGENCY_NORMAL ); - notify_notification_set_icon_from_pixbuf (notification, pixbuf); - notify_notification_attach_to_status_icon( notification , get_status_icon() ); - notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT ); - notify_notification_add_action( notification , "ignore" , _("Ignore") , (NotifyActionCallback) ignore_call_cb , NULL , NULL ); + notification = notify_notification_new( title, + body, + NULL, + NULL); + notify_notification_set_urgency( notification , NOTIFY_URGENCY_CRITICAL ); + notify_notification_set_icon_from_pixbuf (notification, pixbuf); + notify_notification_attach_to_status_icon( notification , get_status_icon() ); + notify_notification_set_timeout( notification , NOTIFY_EXPIRES_DEFAULT ); + notify_notification_add_action( notification , "setup" , _("Setup Accounts") , (NotifyActionCallback) setup_accounts_cb , NULL , NULL ); - if (!notify_notification_show (notification, NULL)) { - g_print("notify(), failed to send notification\n"); - } + if (!notify_notification_show (notification, NULL)) { + g_print("notify(), failed to send notification\n"); } } diff --git a/sflphone-gtk/src/SFLnotify.h b/sflphone-gtk/src/SFLnotify.h index 7dfed316a6d4682345f7eb790f8b0225d065220a..1f80d3207d34f9f90a3e82579f204e07d72dcf27 100644 --- a/sflphone-gtk/src/SFLnotify.h +++ b/sflphone-gtk/src/SFLnotify.h @@ -42,7 +42,9 @@ void notify_incoming_call( call_t* c); void notify_voice_mails( guint count , account_t* acc ); -void notify_registered_accounts(); +void notify_switch_account( account_t* acc ); +void notify_no_accounts( ); +void notify_no_registered_accounts( ); /* * Callback when answer button is pressed. * Action: Pick up the incoming call @@ -67,4 +69,5 @@ void refuse_call_cb( NotifyNotification *notification, gchar *action, gpointer d */ void ignore_call_cb( NotifyNotification *notification, gchar *action, gpointer data ); +void setup_accounts_cb(NotifyNotification *notification, gchar *action, gpointer data); #endif diff --git a/sflphone-gtk/src/accountlist.c b/sflphone-gtk/src/accountlist.c index 3000dd43379661664b19cdf611c9489bc56530fa..2e3197b163cfb602d71daf9bd2e43e58647655e8 100644 --- a/sflphone-gtk/src/accountlist.c +++ b/sflphone-gtk/src/accountlist.c @@ -23,7 +23,7 @@ #include <string.h> GQueue * accountQueue; -account_t * __CURRENT_ACCOUNT=NULL; +gchar* __CURRENT_ACCOUNT_ID = NULL; /* GCompareFunc to compare a accountID (gchar* and a account_t) */ gint @@ -129,19 +129,19 @@ account_list_get_nth ( guint n ) account_t* account_list_get_current( ) { - return __CURRENT_ACCOUNT; + return account_list_get_by_id( __CURRENT_ACCOUNT_ID ); } void account_list_set_current_id(const gchar * accountID) { - __CURRENT_ACCOUNT = account_list_get_by_id(g_strdup(accountID)); + __CURRENT_ACCOUNT_ID = g_strdup(accountID); } void account_list_set_current_pos( guint n) { - __CURRENT_ACCOUNT = account_list_get_nth(n); + __CURRENT_ACCOUNT_ID = account_list_get_nth(n)->accountID; } const gchar * account_state_name(account_state_t s) diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c index 526d0103aa418d29b18f918567e3a2133d7c8465..2de7fe6775d665e6b283a37c6b1c030c947febe8 100644 --- a/sflphone-gtk/src/actions.c +++ b/sflphone-gtk/src/actions.c @@ -194,8 +194,8 @@ sflphone_init() { dbus_register(getpid(), "Gtk+ Client"); sflphone_fill_account_list(); - sflphone_set_current_account(); sflphone_fill_codec_list(); + sflphone_set_current_account(); return TRUE; } } @@ -568,16 +568,16 @@ sflphone_keypad( guint keyval, gchar * key) void sflphone_place_call ( call_t * c ) { - //status_bar_display_account(c); if(c->state == CALL_STATE_DIALING) { account_t * current = account_list_get_current(); if( current ) { - if(strcmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0) + if(g_strcasecmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0) { // OK, everything alright - the call is made with the current account c -> accountID = current -> accountID; + status_bar_display_account(c); dbus_place_call(c); } else @@ -588,19 +588,21 @@ sflphone_place_call ( call_t * c ) for( pos = 1 ; pos < account_list_get_size() ; pos++ ){ current = account_list_get_nth(pos); if( current ){ - if( strcmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0 ){ - // notify_switch_account(); + if( g_strcasecmp(g_hash_table_lookup( current->properties, "Status"),"REGISTERED")==0 ){ + notify_switch_account( current ); //main_warning_error_message(_("Switch account.")); c -> accountID = current -> accountID; + status_bar_display_account(c); dbus_place_call(c); break; } } } + notify_no_registered_accounts(); } } else{ - // notify_no_accounts(); + notify_no_accounts(); main_window_error_message(_("There is no accounts to make this call with.")); } }