Skip to content
Snippets Groups Projects
Commit eac99852 authored by Emmanuel Milou's avatar Emmanuel Milou
Browse files

Desktop notifications for accounts registration problems

parent 320ba789
No related branches found
No related tags found
No related merge requests found
......@@ -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");
}
}
......@@ -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
......@@ -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)
......
......@@ -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."));
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment