diff --git a/sflphone-client-gnome/src/accountlist.c b/sflphone-client-gnome/src/accountlist.c index 3a0959c810e496c3ff9a199d67ee60a0e386322d..24d0da3a28b81b66c7c9dce8be6511411f96463a 100644 --- a/sflphone-client-gnome/src/accountlist.c +++ b/sflphone-client-gnome/src/accountlist.c @@ -23,7 +23,6 @@ #include <string.h> GQueue * accountQueue; -gchar* __CURRENT_ACCOUNT_ID = NULL; /* GCompareFunc to compare a accountID (gchar* and a account_t) */ gint @@ -129,23 +128,35 @@ account_list_get_nth ( guint n ) account_t* account_list_get_current( ) { - if( __CURRENT_ACCOUNT_ID != NULL ) - return account_list_get_by_id( __CURRENT_ACCOUNT_ID ); - else - return NULL; -} - -void -account_list_set_current_id(const gchar * accountID) -{ - DEBUG("set current id = %s", accountID); - __CURRENT_ACCOUNT_ID = g_strdup(accountID); + account_t *current; + + // No account registered + if (account_list_get_registered_accounts () == 0) + return NULL; + + // if we are here, it means that we have at least one registered account in the list + // So we get the first one + current = account_list_get_by_state (ACCOUNT_STATE_REGISTERED); + if (!current) + return NULL; + + return current; } -void -account_list_set_current_pos( guint n) +void account_list_set_current (account_t *current) { - __CURRENT_ACCOUNT_ID = account_list_get_nth(n)->accountID; + gpointer acc; + guint pos; + + // 2 steps: + // 1 - retrieve the index of the current account in the Queue + // 2 - then set it as first + pos = account_list_get_position (current); + if (pos > 0) + { + acc = g_queue_pop_nth(accountQueue, pos); + g_queue_push_nth(accountQueue, acc, 0); + } } @@ -198,12 +209,13 @@ account_list_clear ( ) void account_list_move_up(guint index) { + DEBUG ("index = %i\n", index); + if(index != 0) { gpointer acc = g_queue_pop_nth(accountQueue, index); g_queue_push_nth(accountQueue, acc, index-1); } - account_list_set_current_pos( 0 ); } void @@ -214,7 +226,6 @@ account_list_move_down(guint index) gpointer acc = g_queue_pop_nth(accountQueue, index); g_queue_push_nth(accountQueue, acc, index+1); } - account_list_set_current_pos( 0 ); } guint @@ -232,10 +243,14 @@ account_list_get_registered_accounts( void ) } gchar* account_list_get_current_id( void ){ - if( __CURRENT_ACCOUNT_ID == NULL ) - return ""; - else - return __CURRENT_ACCOUNT_ID; + + account_t *current; + + current = account_list_get_current (); + if (current) + return current->accountID; + else + return ""; } int account_list_get_sip_account_number( void ){ @@ -283,3 +298,22 @@ gchar * account_list_get_ordered_list (void) { } return order; } + + +guint account_list_get_position (account_t *account) +{ + guint size, i; + account_t *tmp; + + size = account_list_get_size (); + for (i=0; i<size; i++) + { + tmp = account_list_get_nth (i); + if (g_strcasecmp (tmp->accountID, account->accountID) == 0) + { + return i; + } + } + // Not found + return -1; +} diff --git a/sflphone-client-gnome/src/accountlist.h b/sflphone-client-gnome/src/accountlist.h index 6456e521d09fa99859a57fcd8e29cf7ba0eeecfb..7e78a316a280892ae301ede51342245031978049 100644 --- a/sflphone-client-gnome/src/accountlist.h +++ b/sflphone-client-gnome/src/accountlist.h @@ -125,15 +125,9 @@ account_t * account_list_get_current( ); /** * This function sets an account as the current one - * @param accountID The ID of the current account + * @param current the account you want to set as current */ -void account_list_set_current_id(const gchar * accountID); - -/** - * This function sets an account as the current one - * @param n the position of the account you want to use - */ -void account_list_set_current_pos( guint n ); +void account_list_set_current (account_t *current); /** * This function maps account_state_t enums to a description. @@ -184,5 +178,6 @@ int account_list_get_iax_account_number( void ); gchar * account_list_get_ordered_list (void); +guint account_list_get_position (account_t *account); #endif diff --git a/sflphone-client-gnome/src/actions.c b/sflphone-client-gnome/src/actions.c index 6468a998599ed7e06187e180d07d826b8501f22a..dc7ee8cd45d5eeaa757abaef96f15cb9379aaef5 100644 --- a/sflphone-client-gnome/src/actions.c +++ b/sflphone-client-gnome/src/actions.c @@ -81,9 +81,13 @@ status_bar_display_account () msg = g_markup_printf_escaped(_("Registered to %s (%s)") , (gchar*)g_hash_table_lookup( acc->properties , ACCOUNT_ALIAS), (gchar*)g_hash_table_lookup( acc->properties , ACCOUNT_TYPE)); - statusbar_push_message( msg , __MSG_ACCOUNT_DEFAULT); - g_free(msg); } + else + { + msg = g_markup_printf_escaped(_("No registered account")); + } + statusbar_push_message( msg , __MSG_ACCOUNT_DEFAULT); + g_free(msg); } @@ -235,7 +239,6 @@ gboolean sflphone_init() codec_list_init(); sflphone_fill_account_list(FALSE); sflphone_fill_codec_list(); - sflphone_set_current_account(); return TRUE; } } @@ -680,7 +683,6 @@ sflphone_keypad( guint keyval, gchar * key) sflphone_place_call ( call_t * c ) { - if (c->state == CALL_STATE_DIALING && g_str_has_prefix (c->to, "ip:")) { dbus_place_call (c); @@ -736,7 +738,6 @@ sflphone_place_call ( call_t * c ) c -> accountID = current -> accountID; dbus_place_call(c); notify_current_account( current ); - account_list_set_current_id( c-> accountID ); } } else @@ -749,7 +750,6 @@ sflphone_place_call ( call_t * c ) c -> accountID = current -> accountID; dbus_place_call(c); notify_current_account( current ); - account_list_set_current_id( c-> accountID ); } } // Update history @@ -819,15 +819,6 @@ sflphone_rec_call() // DEBUG("sflphone_get_current_codec_name: %s",codname); } -/* Internal to action - set the __CURRENT_ACCOUNT variable */ - void -sflphone_set_current_account() -{ - if( account_list_get_size() > 0 ) - account_list_set_current_pos( 0 ); -} - - /* Internal to action - get the codec list */ void sflphone_fill_codec_list() diff --git a/sflphone-client-gnome/src/assistant.c b/sflphone-client-gnome/src/assistant.c index 463ef4f441d14212bf247fa803ef7538d566ebae..2815d0b57c844b529754422e4dbea867a1788bb0 100644 --- a/sflphone-client-gnome/src/assistant.c +++ b/sflphone-client-gnome/src/assistant.c @@ -104,7 +104,6 @@ static void sip_apply_callback( void ) { g_hash_table_insert(current->properties, g_strdup(ACCOUNT_SIP_STUN_SERVER), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->addr)))); dbus_add_account( current ); - account_list_set_current_id( current->accountID ); sprintf(message, MESSAGE_SUMMARY, gtk_entry_get_text (GTK_ENTRY(wiz->sip_alias)), gtk_entry_get_text (GTK_ENTRY(wiz->sip_server)), @@ -129,7 +128,6 @@ static void iax_apply_callback( void ) { g_hash_table_insert(current->properties, g_strdup(ACCOUNT_HOSTNAME), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_server)))); g_hash_table_insert(current->properties, g_strdup(ACCOUNT_PASSWORD), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(wiz->iax_password)))); dbus_add_account( current ); - account_list_set_current_id( current->accountID ); sprintf(message, MESSAGE_SUMMARY, gtk_entry_get_text (GTK_ENTRY(wiz->iax_alias)), gtk_entry_get_text (GTK_ENTRY(wiz->iax_server)), diff --git a/sflphone-client-gnome/src/config/accountwindow.c b/sflphone-client-gnome/src/config/accountwindow.c index 9b807cad064a36effa709baa658b3f9b3c2daf17..32106a9c7169fbea50220ca626f83b97e3ffb4a7 100644 --- a/sflphone-client-gnome/src/config/accountwindow.c +++ b/sflphone-client-gnome/src/config/accountwindow.c @@ -309,11 +309,9 @@ show_account_window (account_t * a) /** @todo Verify if it's the best condition to check */ if (currentAccount->accountID == NULL) { dbus_add_account(currentAccount); - account_list_set_current_id( currentAccount->accountID ); } else { dbus_set_account_details(currentAccount); - account_list_set_current_id( currentAccount->accountID); } } gtk_widget_destroy (GTK_WIDGET(dialog)); diff --git a/sflphone-client-gnome/src/config/configwindow.c b/sflphone-client-gnome/src/config/configwindow.c index f88888205e79fb550549b365f1b4c56fbfe7f789..2d7ec36e97b259e6733b7820e15095aec3c0346f 100644 --- a/sflphone-client-gnome/src/config/configwindow.c +++ b/sflphone-client-gnome/src/config/configwindow.c @@ -858,8 +858,6 @@ show_accounts_window( void ) accDialogOpen=FALSE; gtk_widget_destroy(GTK_WIDGET(dialog)); - if( account_list_get_size() >0 && account_list_get_current()==NULL ) - account_list_set_current_pos(0); toolbar_update_buttons(); } diff --git a/sflphone-client-gnome/src/contacts/addressbook.h b/sflphone-client-gnome/src/contacts/addressbook.h index 9426d1d7accd54fd912b6247bf7bd3e7ea97bb08..08b79188d04c7836161d7557114b26a50d598638 100644 --- a/sflphone-client-gnome/src/contacts/addressbook.h +++ b/sflphone-client-gnome/src/contacts/addressbook.h @@ -41,6 +41,13 @@ addressbook_is_ready(); gboolean addressbook_is_enabled(); +/** + * Return if at least one addressbook is active + */ +gboolean +addressbook_is_active(); + + /** * Perform a search in addressbook */ diff --git a/sflphone-client-gnome/src/menus.c b/sflphone-client-gnome/src/menus.c index 03e97945dd8627869d5453581745a668e7495997..73f57c52a3d161ecd251e838c742432619f901a7 100644 --- a/sflphone-client-gnome/src/menus.c +++ b/sflphone-client-gnome/src/menus.c @@ -48,222 +48,222 @@ GtkWidget * searchbarMenu; void update_menus() { - //Block signals for holdMenu - gtk_signal_handler_block(GTK_OBJECT(holdMenu), holdConnId); - - gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), FALSE); - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), FALSE); - gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),FALSE); - gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), FALSE); - gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), FALSE); - gtk_widget_set_sensitive( GTK_WIDGET(copyMenu), FALSE); - - call_t * selectedCall = calltab_get_selected_call(active_calltree); - if (selectedCall) - { - gtk_widget_set_sensitive( GTK_WIDGET(copyMenu), TRUE); - switch(selectedCall->state) + //Block signals for holdMenu + gtk_signal_handler_block(GTK_OBJECT(holdMenu), holdConnId); + + gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), FALSE); + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), FALSE); + gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),FALSE); + gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), FALSE); + gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), FALSE); + gtk_widget_set_sensitive( GTK_WIDGET(copyMenu), FALSE); + + call_t * selectedCall = calltab_get_selected_call(active_calltree); + if (selectedCall) { - case CALL_STATE_INCOMING: - gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - break; - case CALL_STATE_HOLD: - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_unhold.svg")); - break; - case CALL_STATE_RINGING: - gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - break; - case CALL_STATE_DIALING: - gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); - break; - case CALL_STATE_CURRENT: - case CALL_STATE_RECORD: - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); - gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), TRUE); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg")); - break; - case CALL_STATE_BUSY: - case CALL_STATE_FAILURE: - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); - break; - default: - WARN("Should not happen in update_menus()!"); - break; + gtk_widget_set_sensitive( GTK_WIDGET(copyMenu), TRUE); + switch(selectedCall->state) + { + case CALL_STATE_INCOMING: + gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + break; + case CALL_STATE_HOLD: + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_unhold.svg")); + break; + case CALL_STATE_RINGING: + gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + break; + case CALL_STATE_DIALING: + gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); + break; + case CALL_STATE_CURRENT: + case CALL_STATE_RECORD: + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu),TRUE); + gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), TRUE); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg")); + break; + case CALL_STATE_BUSY: + case CALL_STATE_FAILURE: + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), TRUE); + break; + default: + WARN("Should not happen in update_menus()!"); + break; + } } - } - else - { - gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu), TRUE); - } - gtk_signal_handler_unblock(holdMenu, holdConnId); + else + { + gtk_widget_set_sensitive( GTK_WIDGET(newCallMenu), TRUE); + } + gtk_signal_handler_unblock(holdMenu, holdConnId); } /* ----------------------------------------------------------------- */ - static void + static void help_about ( void * foo UNUSED) { - gchar *authors[] = { - "Yan Morin <yan.morin@savoirfairelinux.com>", - "Jérôme Oufella <jerome.oufella@savoirfairelinux.com>", - "Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>", - "Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>", - "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>", - "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", - "Yun Liu <yun.liu@savoirfairelinux.com>" - "Alexandre Savard <alexandre.savard@savoirfairelinux.com>", - "Jean-Philippe Barrette-LaPierre", - "Laurielle Lea", - NULL}; - gchar *artists[] = { - "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>", - "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", - NULL}; - - gtk_show_about_dialog( GTK_WINDOW(get_main_window()), - "artists", artists, - "authors", authors, - "comments", _("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."), - "copyright", "Copyright © 2004-2009 Savoir-faire Linux Inc.", - "name", PACKAGE, - "title", _("About SFLphone"), - "version", VERSION, - "website", "http://www.sflphone.org", - NULL); + gchar *authors[] = { + "Yan Morin <yan.morin@savoirfairelinux.com>", + "Jérôme Oufella <jerome.oufella@savoirfairelinux.com>", + "Julien Plissonneau Duquene <julien.plissonneau.duquene@savoirfairelinux.com>", + "Alexandre Bourget <alexandre.bourget@savoirfairelinux.com>", + "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>", + "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", + "Yun Liu <yun.liu@savoirfairelinux.com>" + "Alexandre Savard <alexandre.savard@savoirfairelinux.com>", + "Jean-Philippe Barrette-LaPierre", + "Laurielle Lea", + NULL}; + gchar *artists[] = { + "Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>", + "Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>", + NULL}; + + gtk_show_about_dialog( GTK_WINDOW(get_main_window()), + "artists", artists, + "authors", authors, + "comments", _("SFLphone is a VoIP client compatible with SIP and IAX2 protocols."), + "copyright", "Copyright © 2004-2009 Savoir-faire Linux Inc.", + "name", PACKAGE, + "title", _("About SFLphone"), + "version", VERSION, + "website", "http://www.sflphone.org", + NULL); } - GtkWidget * + GtkWidget * create_help_menu() { - GtkWidget * menu; - GtkWidget * root_menu; - GtkWidget * menu_items; + GtkWidget * menu; + GtkWidget * root_menu; + GtkWidget * menu_items; - menu = gtk_menu_new (); + menu = gtk_menu_new (); - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_ABOUT, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (help_about), - NULL); - gtk_widget_show (menu_items); + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_ABOUT, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (help_about), + NULL); + gtk_widget_show (menu_items); - root_menu = gtk_menu_item_new_with_mnemonic (_("_Help")); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); + root_menu = gtk_menu_item_new_with_mnemonic (_("_Help")); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); - return root_menu; + return root_menu; } /* ----------------------------------------------------------------- */ - GtkWidget * + GtkWidget * create_waiting_icon() { - GtkWidget * waiting_icon; - waiting_icon = gtk_image_menu_item_new_with_label(""); - gtk_image_menu_item_set_image ( - GTK_IMAGE_MENU_ITEM(waiting_icon), - gtk_image_new_from_animation( - gdk_pixbuf_animation_new_from_file(ICONS_DIR "/wait-on.gif", NULL))); - gtk_menu_item_set_right_justified(GTK_MENU_ITEM(waiting_icon),TRUE); - - return waiting_icon; + GtkWidget * waiting_icon; + waiting_icon = gtk_image_menu_item_new_with_label(""); + gtk_image_menu_item_set_image ( + GTK_IMAGE_MENU_ITEM(waiting_icon), + gtk_image_new_from_animation( + gdk_pixbuf_animation_new_from_file(ICONS_DIR "/wait-on.gif", NULL))); + gtk_menu_item_set_right_justified(GTK_MENU_ITEM(waiting_icon),TRUE); + + return waiting_icon; } /* ----------------------------------------------------------------- */ - static void + static void call_new_call ( void * foo UNUSED) { - sflphone_new_call(); + sflphone_new_call(); } - static void + static void call_quit ( void * foo UNUSED) { - sflphone_quit(); + sflphone_quit(); } - static void + static void call_minimize ( void * foo UNUSED) { #if GTK_CHECK_VERSION(2,10,0) - gtk_widget_hide(GTK_WIDGET( get_main_window() )); - set_minimized( TRUE ); + gtk_widget_hide(GTK_WIDGET( get_main_window() )); + set_minimized( TRUE ); #endif } - static void + static void switch_account( GtkWidget* item , gpointer data UNUSED) { - account_t* acc = g_object_get_data( G_OBJECT(item) , "account" ); - DEBUG("%s" , acc->accountID); - account_list_set_current_id( acc->accountID ); - status_bar_display_account (); + account_t* acc = g_object_get_data( G_OBJECT(item) , "account" ); + DEBUG("%s" , acc->accountID); + account_list_set_current (acc); + status_bar_display_account (); } - static void + static void call_hold (void* foo UNUSED) { - call_t * selectedCall = calltab_get_selected_call(current_calls); + call_t * selectedCall = calltab_get_selected_call(current_calls); - if(selectedCall) - { - if(selectedCall->state == CALL_STATE_HOLD) + if(selectedCall) { - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_unhold.svg")); - sflphone_off_hold(); + if(selectedCall->state == CALL_STATE_HOLD) + { + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_unhold.svg")); + sflphone_off_hold(); + } + else + { + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg")); + sflphone_on_hold(); + } } - else - { - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg")); - sflphone_on_hold(); - } - } } - static void + static void call_pick_up ( void * foo UNUSED) { - sflphone_pick_up(); + sflphone_pick_up(); } - static void + static void call_hang_up ( void * foo UNUSED) { - sflphone_hang_up(); + sflphone_hang_up(); } -static void + static void call_record ( void * foo UNUSED) { - sflphone_rec_call(); + sflphone_rec_call(); } - static void + static void call_wizard ( void * foo UNUSED) { #if GTK_CHECK_VERSION(2,10,0) - build_wizard(); + build_wizard(); #endif } -static void + static void remove_from_history( void * foo UNUSED) { - call_t* c = calltab_get_selected_call( history ); - if(c){ - DEBUG("Remove the call from the history"); - calllist_remove_from_history( c ); - } + call_t* c = calltab_get_selected_call( history ); + if(c){ + DEBUG("Remove the call from the history"); + calllist_remove_from_history( c ); + } } -static void + static void call_back( void * foo UNUSED) { call_t *selected_call, *new_call; @@ -285,428 +285,428 @@ call_back( void * foo UNUSED) } } - GtkWidget * + GtkWidget * create_call_menu() { - GtkWidget * menu; - GtkWidget * root_menu; - GtkWidget * menu_items; - GtkWidget * image; - - menu = gtk_menu_new (); - - image = gtk_image_new_from_file( ICONS_DIR "/icon_call.svg"); - newCallMenu = gtk_image_menu_item_new_with_mnemonic(_("_New call")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( newCallMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), newCallMenu); - g_signal_connect_swapped (G_OBJECT (newCallMenu), "activate", - G_CALLBACK (call_new_call), - NULL); - gtk_widget_show (newCallMenu); - - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - - image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); - pickUpMenu = gtk_image_menu_item_new_with_mnemonic(_("_Pick up")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( pickUpMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), pickUpMenu); - gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), FALSE); - g_signal_connect_swapped (G_OBJECT (pickUpMenu), "activate", - G_CALLBACK (call_pick_up), - NULL); - gtk_widget_show (pickUpMenu); - - image = gtk_image_new_from_file( ICONS_DIR "/icon_hangup.svg"); - hangUpMenu = gtk_image_menu_item_new_with_mnemonic(_("_Hang up")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( hangUpMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), hangUpMenu); - gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), FALSE); - g_signal_connect_swapped (G_OBJECT (hangUpMenu), "activate", - G_CALLBACK (call_hang_up), - NULL); - gtk_widget_show (hangUpMenu); - - image = gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg"); - holdMenu = gtk_image_menu_item_new_with_mnemonic (_("On _Hold")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), holdMenu); - gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), FALSE); - //Here we connect only to activate - //The toggled state is managed from update_menus() - holdConnId = g_signal_connect(G_OBJECT (holdMenu), "activate", - G_CALLBACK (call_hold), - NULL); - gtk_widget_show (menu_items); - - image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_MENU); - recordMenu = gtk_image_menu_item_new_with_mnemonic(_("_Record")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( recordMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), recordMenu); - gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), FALSE); - g_signal_connect_swapped (G_OBJECT (recordMenu), "activate", - G_CALLBACK (call_record), - NULL); - gtk_widget_show (recordMenu); + GtkWidget * menu; + GtkWidget * root_menu; + GtkWidget * menu_items; + GtkWidget * image; + + menu = gtk_menu_new (); + + image = gtk_image_new_from_file( ICONS_DIR "/icon_call.svg"); + newCallMenu = gtk_image_menu_item_new_with_mnemonic(_("_New call")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( newCallMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), newCallMenu); + g_signal_connect_swapped (G_OBJECT (newCallMenu), "activate", + G_CALLBACK (call_new_call), + NULL); + gtk_widget_show (newCallMenu); + + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + + image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); + pickUpMenu = gtk_image_menu_item_new_with_mnemonic(_("_Pick up")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( pickUpMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), pickUpMenu); + gtk_widget_set_sensitive( GTK_WIDGET(pickUpMenu), FALSE); + g_signal_connect_swapped (G_OBJECT (pickUpMenu), "activate", + G_CALLBACK (call_pick_up), + NULL); + gtk_widget_show (pickUpMenu); - // Separator - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + image = gtk_image_new_from_file( ICONS_DIR "/icon_hangup.svg"); + hangUpMenu = gtk_image_menu_item_new_with_mnemonic(_("_Hang up")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( hangUpMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), hangUpMenu); + gtk_widget_set_sensitive( GTK_WIDGET(hangUpMenu), FALSE); + g_signal_connect_swapped (G_OBJECT (hangUpMenu), "activate", + G_CALLBACK (call_hang_up), + NULL); + gtk_widget_show (hangUpMenu); + + image = gtk_image_new_from_file( ICONS_DIR "/icon_hold.svg"); + holdMenu = gtk_image_menu_item_new_with_mnemonic (_("On _Hold")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( holdMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), holdMenu); + gtk_widget_set_sensitive( GTK_WIDGET(holdMenu), FALSE); + //Here we connect only to activate + //The toggled state is managed from update_menus() + holdConnId = g_signal_connect(G_OBJECT (holdMenu), "activate", + G_CALLBACK (call_hold), + NULL); + gtk_widget_show (menu_items); + + image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_MENU); + recordMenu = gtk_image_menu_item_new_with_mnemonic(_("_Record")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( recordMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), recordMenu); + gtk_widget_set_sensitive( GTK_WIDGET(recordMenu), FALSE); + g_signal_connect_swapped (G_OBJECT (recordMenu), "activate", + G_CALLBACK (call_record), + NULL); + gtk_widget_show (recordMenu); + + // Separator + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); #if GTK_CHECK_VERSION(2,10,0) - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Account creation wizard")); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped( G_OBJECT( menu_items ) , "activate" , G_CALLBACK( call_wizard ) , NULL ); - gtk_widget_show (menu_items); - // Separator - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Account creation wizard")); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped( G_OBJECT( menu_items ) , "activate" , G_CALLBACK( call_wizard ) , NULL ); + gtk_widget_show (menu_items); + // Separator + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); #endif - // Close menu to minimize the main window to the system tray - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_CLOSE, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (call_minimize), - NULL); - gtk_widget_show (menu_items); + // Close menu to minimize the main window to the system tray + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_CLOSE, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (call_minimize), + NULL); + gtk_widget_show (menu_items); - // Separator - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + // Separator + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - // Quit Menu - quit SFLphone - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_QUIT, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (call_quit), - NULL); - gtk_widget_show (menu_items); + // Quit Menu - quit SFLphone + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_QUIT, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (call_quit), + NULL); + gtk_widget_show (menu_items); - root_menu = gtk_menu_item_new_with_mnemonic (_("_Call")); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); + root_menu = gtk_menu_item_new_with_mnemonic (_("_Call")); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); - return root_menu; + return root_menu; } /* ----------------------------------------------------------------- */ - static void + static void edit_preferences ( void * foo UNUSED) { - show_config_window(); + show_config_window(); } - static void + static void edit_accounts ( void * foo UNUSED) { - show_accounts_window(); + show_accounts_window(); } // The menu Edit/Copy should copy the current selected call's number - static void + static void edit_copy ( void * foo UNUSED) { - GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - call_t * selectedCall = calltab_get_selected_call(current_calls); - gchar * no = NULL; + GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + call_t * selectedCall = calltab_get_selected_call(current_calls); + gchar * no = NULL; - if(selectedCall) - { - switch(selectedCall->state) + if(selectedCall) { - case CALL_STATE_TRANSFERT: - case CALL_STATE_DIALING: - case CALL_STATE_RINGING: - no = selectedCall->to; - break; - case CALL_STATE_CURRENT: - case CALL_STATE_HOLD: - case CALL_STATE_BUSY: - case CALL_STATE_FAILURE: - case CALL_STATE_INCOMING: - default: - no = call_get_number(selectedCall); - break; + switch(selectedCall->state) + { + case CALL_STATE_TRANSFERT: + case CALL_STATE_DIALING: + case CALL_STATE_RINGING: + no = selectedCall->to; + break; + case CALL_STATE_CURRENT: + case CALL_STATE_HOLD: + case CALL_STATE_BUSY: + case CALL_STATE_FAILURE: + case CALL_STATE_INCOMING: + default: + no = call_get_number(selectedCall); + break; + } + + gtk_clipboard_set_text (clip, no, strlen(no) ); } - gtk_clipboard_set_text (clip, no, strlen(no) ); - } - } // The menu Edit/Paste should paste the clipboard into the current selected call - static void + static void edit_paste ( void * foo UNUSED) { - GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); - call_t * selectedCall = calltab_get_selected_call(current_calls); - gchar * no = gtk_clipboard_wait_for_text (clip); + GtkClipboard* clip = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); + call_t * selectedCall = calltab_get_selected_call(current_calls); + gchar * no = gtk_clipboard_wait_for_text (clip); - if(no && selectedCall) - { - switch(selectedCall->state) + if(no && selectedCall) { - case CALL_STATE_TRANSFERT: - case CALL_STATE_DIALING: - // Add the text to the number - { - gchar * before = selectedCall->to; - selectedCall->to = g_strconcat(selectedCall->to, no, NULL); - g_free(before); - DEBUG("TO: %s", selectedCall->to); - - if(selectedCall->state == CALL_STATE_DIALING) - { - g_free(selectedCall->from); - selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); - } - calltree_update_call(current_calls, selectedCall); - } - break; - case CALL_STATE_RINGING: - case CALL_STATE_INCOMING: - case CALL_STATE_BUSY: - case CALL_STATE_FAILURE: - case CALL_STATE_HOLD: - { // Create a new call to hold the new text - selectedCall = sflphone_new_call(); - - gchar * before = selectedCall->to; - selectedCall->to = g_strconcat(selectedCall->to, no, NULL); - g_free(before); - DEBUG("TO: %s", selectedCall->to); - - g_free(selectedCall->from); - selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); - - calltree_update_call(current_calls, selectedCall); - } - break; - case CALL_STATE_CURRENT: - default: - { - unsigned int i; - for(i = 0; i < strlen(no); i++) - { - gchar * oneNo = g_strndup(&no[i], 1); - DEBUG("<%s>", oneNo); - dbus_play_dtmf(oneNo); - - gchar * temp = g_strconcat(call_get_number(selectedCall), oneNo, NULL); - gchar * before = selectedCall->from; - selectedCall->from = g_strconcat("\"",call_get_name(selectedCall) ,"\" <", temp, ">", NULL); - g_free(before); - g_free(temp); - calltree_update_call(current_calls, selectedCall); - - } - } - break; - } + switch(selectedCall->state) + { + case CALL_STATE_TRANSFERT: + case CALL_STATE_DIALING: + // Add the text to the number + { + gchar * before = selectedCall->to; + selectedCall->to = g_strconcat(selectedCall->to, no, NULL); + g_free(before); + DEBUG("TO: %s", selectedCall->to); + + if(selectedCall->state == CALL_STATE_DIALING) + { + g_free(selectedCall->from); + selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); + } + calltree_update_call(current_calls, selectedCall); + } + break; + case CALL_STATE_RINGING: + case CALL_STATE_INCOMING: + case CALL_STATE_BUSY: + case CALL_STATE_FAILURE: + case CALL_STATE_HOLD: + { // Create a new call to hold the new text + selectedCall = sflphone_new_call(); + + gchar * before = selectedCall->to; + selectedCall->to = g_strconcat(selectedCall->to, no, NULL); + g_free(before); + DEBUG("TO: %s", selectedCall->to); + + g_free(selectedCall->from); + selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); + + calltree_update_call(current_calls, selectedCall); + } + break; + case CALL_STATE_CURRENT: + default: + { + unsigned int i; + for(i = 0; i < strlen(no); i++) + { + gchar * oneNo = g_strndup(&no[i], 1); + DEBUG("<%s>", oneNo); + dbus_play_dtmf(oneNo); + + gchar * temp = g_strconcat(call_get_number(selectedCall), oneNo, NULL); + gchar * before = selectedCall->from; + selectedCall->from = g_strconcat("\"",call_get_name(selectedCall) ,"\" <", temp, ">", NULL); + g_free(before); + g_free(temp); + calltree_update_call(current_calls, selectedCall); + + } + } + break; + } - } - else // There is no current call, create one - { - selectedCall = sflphone_new_call(); + } + else // There is no current call, create one + { + selectedCall = sflphone_new_call(); - gchar * before = selectedCall->to; - selectedCall->to = g_strconcat(selectedCall->to, no, NULL); - g_free(before); - DEBUG("TO: %s", selectedCall->to); + gchar * before = selectedCall->to; + selectedCall->to = g_strconcat(selectedCall->to, no, NULL); + g_free(before); + DEBUG("TO: %s", selectedCall->to); - g_free(selectedCall->from); - selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); - calltree_update_call(current_calls,selectedCall); - } + g_free(selectedCall->from); + selectedCall->from = g_strconcat("\"\" <", selectedCall->to, ">", NULL); + calltree_update_call(current_calls,selectedCall); + } } - static void + static void clear_history (void) { - if( calllist_get_size( history ) != 0 ){ - calllist_clean_history(); + if( calllist_get_size( history ) != 0 ){ + calllist_clean_history(); } } - GtkWidget * + GtkWidget * create_edit_menu() { - GtkWidget * menu; - GtkWidget * image; - GtkWidget * root_menu; - GtkWidget * menu_items; - - menu = gtk_menu_new (); + GtkWidget * menu; + GtkWidget * image; + GtkWidget * root_menu; + GtkWidget * menu_items; + + menu = gtk_menu_new (); + + copyMenu = gtk_image_menu_item_new_from_stock( GTK_STOCK_COPY, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), copyMenu); + g_signal_connect_swapped (G_OBJECT (copyMenu), "activate", + G_CALLBACK (edit_copy), + NULL); + gtk_widget_show (copyMenu); + + pasteMenu = gtk_image_menu_item_new_from_stock( GTK_STOCK_PASTE, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), pasteMenu); + g_signal_connect_swapped (G_OBJECT (pasteMenu), "activate", + G_CALLBACK (edit_paste), + NULL); + gtk_widget_show (pasteMenu); - copyMenu = gtk_image_menu_item_new_from_stock( GTK_STOCK_COPY, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), copyMenu); - g_signal_connect_swapped (G_OBJECT (copyMenu), "activate", - G_CALLBACK (edit_copy), - NULL); - gtk_widget_show (copyMenu); - - pasteMenu = gtk_image_menu_item_new_from_stock( GTK_STOCK_PASTE, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), pasteMenu); - g_signal_connect_swapped (G_OBJECT (pasteMenu), "activate", - G_CALLBACK (edit_paste), - NULL); - gtk_widget_show (pasteMenu); - - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Clear history")); - image = gtk_image_new_from_stock( GTK_STOCK_CLEAR , GTK_ICON_SIZE_MENU ); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (clear_history), - NULL); - gtk_widget_show (menu_items); + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Clear history")); + image = gtk_image_new_from_stock( GTK_STOCK_CLEAR , GTK_ICON_SIZE_MENU ); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (clear_history), + NULL); + gtk_widget_show (menu_items); - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - menu_items = gtk_menu_item_new_with_mnemonic( _("_Accounts") ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (edit_accounts), - NULL); - gtk_widget_show (menu_items); + menu_items = gtk_menu_item_new_with_mnemonic( _("_Accounts") ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (edit_accounts), + NULL); + gtk_widget_show (menu_items); - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_PREFERENCES, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect_swapped (G_OBJECT (menu_items), "activate", - G_CALLBACK (edit_preferences), - NULL); - gtk_widget_show (menu_items); + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_PREFERENCES, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect_swapped (G_OBJECT (menu_items), "activate", + G_CALLBACK (edit_preferences), + NULL); + gtk_widget_show (menu_items); - root_menu = gtk_menu_item_new_with_mnemonic (_("_Edit")); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); + root_menu = gtk_menu_item_new_with_mnemonic (_("_Edit")); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); - return root_menu; + return root_menu; } /* ----------------------------------------------------------------- */ - static void + static void view_dialpad (GtkImageMenuItem *imagemenuitem UNUSED, - void* foo UNUSED) + void* foo UNUSED) { - gboolean state; - main_window_dialpad( &state ); - if( state ) - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), - gtk_image_new_from_file( ICONS_DIR "/icon_dialpad_off.svg")); - else - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), - gtk_image_new_from_file( ICONS_DIR "/icon_dialpad.svg")); - dbus_set_dialpad( state ); + gboolean state; + main_window_dialpad( &state ); + if( state ) + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), + gtk_image_new_from_file( ICONS_DIR "/icon_dialpad_off.svg")); + else + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), + gtk_image_new_from_file( ICONS_DIR "/icon_dialpad.svg")); + dbus_set_dialpad( state ); } - static void + static void view_volume_controls (GtkImageMenuItem *imagemenuitem UNUSED, - void* foo UNUSED) + void* foo UNUSED) { - gboolean state; - main_window_volume_controls( &state ); - if( state ) - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), - gtk_image_new_from_file( ICONS_DIR "/icon_volume_off.svg")); - else - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), - gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg")); - dbus_set_volume_controls( state ); + gboolean state; + main_window_volume_controls( &state ); + if( state ) + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), + gtk_image_new_from_file( ICONS_DIR "/icon_volume_off.svg")); + else + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), + gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg")); + dbus_set_volume_controls( state ); } /* - static void -view_searchbar (GtkImageMenuItem *imagemenuitem UNUSED, - void* foo UNUSED) -{ - gboolean state; - main_window_searchbar( &state ); - dbus_set_searchbar( state ); -} -*/ - GtkWidget * + static void + view_searchbar (GtkImageMenuItem *imagemenuitem UNUSED, + void* foo UNUSED) + { + gboolean state; + main_window_searchbar( &state ); + dbus_set_searchbar( state ); + } + */ + GtkWidget * create_view_menu() { - GtkWidget * menu; - GtkWidget * root_menu; - GtkWidget * image; - - menu = gtk_menu_new (); - - if( SHOW_DIALPAD ) - image = gtk_image_new_from_file( ICONS_DIR "/icon_dialpad_off.svg"); - else - image = gtk_image_new_from_file( ICONS_DIR "/icon_dialpad.svg"); - dialpadMenu = gtk_image_menu_item_new_with_mnemonic (_("_Dialpad")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), dialpadMenu); - g_signal_connect(G_OBJECT ( dialpadMenu ), "activate", - G_CALLBACK (view_dialpad), - NULL); - gtk_widget_show (dialpadMenu); - - if( SHOW_VOLUME ) - image = gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg"); - else - image = gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg"); - volumeMenu = gtk_image_menu_item_new_with_mnemonic (_("_Volume controls")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), volumeMenu); - g_signal_connect(G_OBJECT (volumeMenu), "activate", - G_CALLBACK (view_volume_controls), - NULL); - gtk_widget_show (volumeMenu); + GtkWidget * menu; + GtkWidget * root_menu; + GtkWidget * image; - /*image = gtk_image_new_from_stock( GTK_STOCK_FIND , GTK_ICON_SIZE_MENU ); - searchbarMenu = gtk_image_menu_item_new_with_mnemonic (_("_Search bar")); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( searchbarMenu ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), searchbarMenu); - g_signal_connect(G_OBJECT (searchbarMenu), "activate", + menu = gtk_menu_new (); + + if( SHOW_DIALPAD ) + image = gtk_image_new_from_file( ICONS_DIR "/icon_dialpad_off.svg"); + else + image = gtk_image_new_from_file( ICONS_DIR "/icon_dialpad.svg"); + dialpadMenu = gtk_image_menu_item_new_with_mnemonic (_("_Dialpad")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( dialpadMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), dialpadMenu); + g_signal_connect(G_OBJECT ( dialpadMenu ), "activate", + G_CALLBACK (view_dialpad), + NULL); + gtk_widget_show (dialpadMenu); + + if( SHOW_VOLUME ) + image = gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg"); + else + image = gtk_image_new_from_file( ICONS_DIR "/icon_volume.svg"); + volumeMenu = gtk_image_menu_item_new_with_mnemonic (_("_Volume controls")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( volumeMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), volumeMenu); + g_signal_connect(G_OBJECT (volumeMenu), "activate", + G_CALLBACK (view_volume_controls), + NULL); + gtk_widget_show (volumeMenu); + + /*image = gtk_image_new_from_stock( GTK_STOCK_FIND , GTK_ICON_SIZE_MENU ); + searchbarMenu = gtk_image_menu_item_new_with_mnemonic (_("_Search bar")); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( searchbarMenu ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), searchbarMenu); + g_signal_connect(G_OBJECT (searchbarMenu), "activate", G_CALLBACK (view_searchbar), NULL); - gtk_widget_show (searchbarMenu); - */ + gtk_widget_show (searchbarMenu); + */ - root_menu = gtk_menu_item_new_with_mnemonic (_("_View")); - gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); + root_menu = gtk_menu_item_new_with_mnemonic (_("_View")); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (root_menu), menu); - return root_menu; + return root_menu; } /* ----------------------------------------------------------------- */ - GtkWidget * + GtkWidget * create_menus ( ) { - GtkWidget * menu_bar; - GtkWidget * root_menu; + GtkWidget * menu_bar; + GtkWidget * root_menu; - menu_bar = gtk_menu_bar_new (); + menu_bar = gtk_menu_bar_new (); - root_menu = create_call_menu(); - gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); + root_menu = create_call_menu(); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); - root_menu = create_edit_menu(); - gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); + root_menu = create_edit_menu(); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); - root_menu = create_view_menu(); - gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); + root_menu = create_view_menu(); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); - root_menu = create_help_menu(); - gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); + root_menu = create_help_menu(); + gtk_menu_shell_append (GTK_MENU_SHELL (menu_bar), root_menu); - // Create waiting icon - waitingLayer = create_waiting_icon(); - gtk_menu_shell_append(GTK_MENU_SHELL (menu_bar),waitingLayer); + // Create waiting icon + waitingLayer = create_waiting_icon(); + gtk_menu_shell_append(GTK_MENU_SHELL (menu_bar),waitingLayer); - return menu_bar; + return menu_bar; } /* ----------------------------------------------------------------- */ @@ -717,197 +717,197 @@ static void edit_number_cb (GtkWidget *widget UNUSED, gpointer user_data) { } - void + void show_popup_menu (GtkWidget *my_widget, GdkEventButton *event) { - // TODO update the selection to make sure the call under the mouse is the call selected + // TODO update the selection to make sure the call under the mouse is the call selected - gboolean pickup = FALSE, hangup = FALSE, hold = FALSE, copy = FALSE, record = FALSE; - gboolean accounts = FALSE; + gboolean pickup = FALSE, hangup = FALSE, hold = FALSE, copy = FALSE, record = FALSE; + gboolean accounts = FALSE; - call_t * selectedCall = calltab_get_selected_call(current_calls); - if (selectedCall) - { - copy = TRUE; - switch(selectedCall->state) + call_t * selectedCall = calltab_get_selected_call(current_calls); + if (selectedCall) { - case CALL_STATE_INCOMING: - pickup = TRUE; - hangup = TRUE; - break; - case CALL_STATE_HOLD: - hangup = TRUE; - hold = TRUE; - break; - case CALL_STATE_RINGING: - hangup = TRUE; - break; - case CALL_STATE_DIALING: - pickup = TRUE; - hangup = TRUE; - accounts = TRUE; - break; - case CALL_STATE_RECORD: - case CALL_STATE_CURRENT: - hangup = TRUE; - hold = TRUE; - record = TRUE; - break; - case CALL_STATE_BUSY: - case CALL_STATE_FAILURE: - hangup = TRUE; - break; - default: - WARN("Should not happen in show_popup_menu!"); - break; + copy = TRUE; + switch(selectedCall->state) + { + case CALL_STATE_INCOMING: + pickup = TRUE; + hangup = TRUE; + break; + case CALL_STATE_HOLD: + hangup = TRUE; + hold = TRUE; + break; + case CALL_STATE_RINGING: + hangup = TRUE; + break; + case CALL_STATE_DIALING: + pickup = TRUE; + hangup = TRUE; + accounts = TRUE; + break; + case CALL_STATE_RECORD: + case CALL_STATE_CURRENT: + hangup = TRUE; + hold = TRUE; + record = TRUE; + break; + case CALL_STATE_BUSY: + case CALL_STATE_FAILURE: + hangup = TRUE; + break; + default: + WARN("Should not happen in show_popup_menu!"); + break; + } } - } - GtkWidget *menu; - GtkWidget *image; - int button, event_time; - GtkWidget * menu_items; + GtkWidget *menu; + GtkWidget *image; + int button, event_time; + GtkWidget * menu_items; - menu = gtk_menu_new (); - //g_signal_connect (menu, "deactivate", - // G_CALLBACK (gtk_widget_destroy), NULL); + menu = gtk_menu_new (); + //g_signal_connect (menu, "deactivate", + // G_CALLBACK (gtk_widget_destroy), NULL); - if(copy) - { - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_COPY, get_accel_group()); + if(copy) + { + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_COPY, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate", + G_CALLBACK (edit_copy), + NULL); + gtk_widget_show (menu_items); + } + + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_PASTE, get_accel_group()); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (edit_copy), - NULL); + G_CALLBACK (edit_paste), + NULL); gtk_widget_show (menu_items); - } - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_PASTE, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (edit_paste), - NULL); - gtk_widget_show (menu_items); + if(pickup || hangup || hold) + { + menu_items = gtk_separator_menu_item_new (); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + gtk_widget_show (menu_items); + } - if(pickup || hangup || hold) - { - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - gtk_widget_show (menu_items); - } + if(pickup) + { - if(pickup) - { + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Pick up")); + image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate", + G_CALLBACK (call_pick_up), + NULL); + gtk_widget_show (menu_items); + } - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Pick up")); - image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (call_pick_up), - NULL); - gtk_widget_show (menu_items); - } + if(hangup) + { + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Hang up")); + image = gtk_image_new_from_file( ICONS_DIR "/icon_hangup.svg"); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate", + G_CALLBACK (call_hang_up), + NULL); + gtk_widget_show (menu_items); + } - if(hangup) - { - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Hang up")); - image = gtk_image_new_from_file( ICONS_DIR "/icon_hangup.svg"); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (call_hang_up), - NULL); - gtk_widget_show (menu_items); - } + if(hold) + { + menu_items = gtk_check_menu_item_new_with_mnemonic (_("On _Hold")); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items), + (selectedCall->state == CALL_STATE_HOLD ? TRUE : FALSE)); + g_signal_connect(G_OBJECT (menu_items), "activate", + G_CALLBACK (call_hold), + NULL); + gtk_widget_show (menu_items); + } - if(hold) - { - menu_items = gtk_check_menu_item_new_with_mnemonic (_("On _Hold")); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items), - (selectedCall->state == CALL_STATE_HOLD ? TRUE : FALSE)); - g_signal_connect(G_OBJECT (menu_items), "activate", - G_CALLBACK (call_hold), - NULL); - gtk_widget_show (menu_items); - } + if(record) + { + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Record")); + image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_MENU); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate", + G_CALLBACK (call_record), + NULL); + gtk_widget_show (menu_items); + } - if(record) - { - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Record")); - image = gtk_image_new_from_stock (GTK_STOCK_MEDIA_RECORD, GTK_ICON_SIZE_MENU); - gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menu_items), image); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (call_record), - NULL); - gtk_widget_show (menu_items); - } - - if(accounts) - { - add_registered_accounts_to_menu (menu); - } - - if (event) - { - button = event->button; - event_time = event->time; - } - else - { - button = 0; - event_time = gtk_get_current_event_time (); - } - - gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - button, event_time); + if(accounts) + { + add_registered_accounts_to_menu (menu); + } + + if (event) + { + button = event->button; + event_time = event->time; + } + else + { + button = 0; + event_time = gtk_get_current_event_time (); + } + + gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + button, event_time); } -void + void show_popup_menu_history(GtkWidget *my_widget, GdkEventButton *event) { - gboolean pickup = FALSE; - gboolean remove = FALSE; - gboolean edit = FALSE; + gboolean pickup = FALSE; + gboolean remove = FALSE; + gboolean edit = FALSE; - call_t * selectedCall = calltab_get_selected_call( history ); - if (selectedCall) - { - remove = TRUE; - pickup = TRUE; - edit = TRUE; - } + call_t * selectedCall = calltab_get_selected_call( history ); + if (selectedCall) + { + remove = TRUE; + pickup = TRUE; + edit = TRUE; + } - GtkWidget *menu; - GtkWidget *image; - int button, event_time; - GtkWidget * menu_items; + GtkWidget *menu; + GtkWidget *image; + int button, event_time; + GtkWidget * menu_items; - menu = gtk_menu_new (); - //g_signal_connect (menu, "deactivate", - // G_CALLBACK (gtk_widget_destroy), NULL); + menu = gtk_menu_new (); + //g_signal_connect (menu, "deactivate", + // G_CALLBACK (gtk_widget_destroy), NULL); - if(pickup) - { + if(pickup) + { - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Call back")); - image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_Call back")); + image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL); + gtk_widget_show (menu_items); + } + + menu_items = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL); gtk_widget_show (menu_items); - } - - menu_items = gtk_separator_menu_item_new (); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - gtk_widget_show (menu_items); - if (edit) + if (edit) { menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_EDIT, get_accel_group()); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); @@ -916,64 +916,64 @@ show_popup_menu_history(GtkWidget *my_widget, GdkEventButton *event) } - if(remove) - { - menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_DELETE, get_accel_group()); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL); - gtk_widget_show (menu_items); - } - - if (event) - { - button = event->button; - event_time = event->time; - } - else - { - button = 0; - event_time = gtk_get_current_event_time (); - } - - gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - button, event_time); + if(remove) + { + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_DELETE, get_accel_group()); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate", G_CALLBACK (remove_from_history), NULL); + gtk_widget_show (menu_items); + } + + if (event) + { + button = event->button; + event_time = event->time; + } + else + { + button = 0; + event_time = gtk_get_current_event_time (); + } + + gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + button, event_time); } void show_popup_menu_contacts(GtkWidget *my_widget, GdkEventButton *event) { - gboolean pickup = FALSE; - gboolean accounts = FALSE; - gboolean edit = FALSE; + gboolean pickup = FALSE; + gboolean accounts = FALSE; + gboolean edit = FALSE; - call_t * selectedCall = calltab_get_selected_call( contacts ); - if (selectedCall) - { - pickup = TRUE; - accounts = TRUE; - edit = TRUE; - } + call_t * selectedCall = calltab_get_selected_call( contacts ); + if (selectedCall) + { + pickup = TRUE; + accounts = TRUE; + edit = TRUE; + } - GtkWidget *menu; - GtkWidget *image; - int button, event_time; - GtkWidget * menu_items; + GtkWidget *menu; + GtkWidget *image; + int button, event_time; + GtkWidget * menu_items; - menu = gtk_menu_new (); - //g_signal_connect (menu, "deactivate", - // G_CALLBACK (gtk_widget_destroy), NULL); + menu = gtk_menu_new (); + //g_signal_connect (menu, "deactivate", + // G_CALLBACK (gtk_widget_destroy), NULL); - if(pickup) - { + if(pickup) + { - menu_items = gtk_image_menu_item_new_with_mnemonic(_("_New call")); - image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); - gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL); - gtk_widget_show (menu_items); - } + menu_items = gtk_image_menu_item_new_with_mnemonic(_("_New call")); + image = gtk_image_new_from_file( ICONS_DIR "/icon_accept.svg"); + gtk_image_menu_item_set_image( GTK_IMAGE_MENU_ITEM ( menu_items ), image ); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_signal_connect (G_OBJECT (menu_items), "activate",G_CALLBACK (call_back), NULL); + gtk_widget_show (menu_items); + } if (edit) { @@ -983,25 +983,25 @@ show_popup_menu_contacts(GtkWidget *my_widget, GdkEventButton *event) gtk_widget_show (menu_items); } - if(accounts) - { - add_registered_accounts_to_menu (menu); + if(accounts) + { + add_registered_accounts_to_menu (menu); + } + + if (event) + { + button = event->button; + event_time = event->time; + } + else + { + button = 0; + event_time = gtk_get_current_event_time (); } - if (event) - { - button = event->button; - event_time = event->time; - } - else - { - button = 0; - event_time = gtk_get_current_event_time (); - } - - gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); - gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, - button, event_time); + gtk_menu_attach_to_widget (GTK_MENU (menu), my_widget, NULL); + gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, + button, event_time); } @@ -1009,7 +1009,7 @@ void add_registered_accounts_to_menu (GtkWidget *menu) { GtkWidget *menu_items; unsigned int i; - account_t* acc; + account_t* acc, *current; gchar* alias; menu_items = gtk_separator_menu_item_new (); @@ -1017,23 +1017,24 @@ void add_registered_accounts_to_menu (GtkWidget *menu) { gtk_widget_show (menu_items); for( i = 0 ; i < account_list_get_size() ; i++ ){ - acc = account_list_get_nth(i); - // Display only the registered accounts - if( g_strcasecmp( account_state_name(acc -> state) , account_state_name(ACCOUNT_STATE_REGISTERED) ) == 0 ){ - alias = g_strconcat( g_hash_table_lookup(acc->properties , ACCOUNT_ALIAS) , " - ",g_hash_table_lookup(acc->properties , ACCOUNT_TYPE), NULL); - menu_items = gtk_check_menu_item_new_with_mnemonic(alias); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - g_object_set_data( G_OBJECT( menu_items ) , "account" , acc ); - g_free( alias ); - if( account_list_get_current() != NULL ){ - gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items), - (g_strcasecmp( acc->accountID , account_list_get_current()->accountID) == 0)? TRUE : FALSE); - } - g_signal_connect (G_OBJECT (menu_items), "activate", - G_CALLBACK (switch_account), - NULL); - gtk_widget_show (menu_items); - } // fi + acc = account_list_get_nth(i); + // Display only the registered accounts + if( g_strcasecmp( account_state_name(acc -> state) , account_state_name(ACCOUNT_STATE_REGISTERED) ) == 0 ){ + alias = g_strconcat( g_hash_table_lookup(acc->properties , ACCOUNT_ALIAS) , " - ",g_hash_table_lookup(acc->properties , ACCOUNT_TYPE), NULL); + menu_items = gtk_check_menu_item_new_with_mnemonic(alias); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); + g_object_set_data( G_OBJECT( menu_items ) , "account" , acc ); + g_free( alias ); + current = account_list_get_current(); + if(current){ + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_items), + (g_strcasecmp( acc->accountID , current->accountID) == 0)? TRUE : FALSE); + } + g_signal_connect (G_OBJECT (menu_items), "activate", + G_CALLBACK (switch_account), + NULL); + gtk_widget_show (menu_items); + } // fi } } @@ -1088,7 +1089,7 @@ void show_edit_number (call_t *call) { // Set the number to be edited editable_num = gtk_entry_new (); #if GTK_CHECK_VERSION(2,12,0) - gtk_widget_set_tooltip_text(GTK_WIDGET(editable_num), _("Edit the phone number before making a call")); + gtk_widget_set_tooltip_text(GTK_WIDGET(editable_num), _("Edit the phone number before making a call")); #endif if (call) gtk_entry_set_text(GTK_ENTRY(editable_num), g_strdup (call_get_number (call))); diff --git a/sflphone-client-gnome/tests/check_global.c b/sflphone-client-gnome/tests/check_global.c index f464eefb27e8d859f7ddc430e0bde03ff34f420b..b1e0c10990615ff7ffe7a7472d1933febb20a77b 100644 --- a/sflphone-client-gnome/tests/check_global.c +++ b/sflphone-client-gnome/tests/check_global.c @@ -24,22 +24,27 @@ #include "../src/accountlist.h" #include "../src/sflphone_const.h" -account_t* create_test_account () +account_t* create_test_account (gchar *alias) { account_t *test; + gchar *id; + + srand(time(NULL)); test = g_new0 (account_t, 1); - test->accountID = "test"; + id = g_new0(gchar, 30); + g_sprintf(id, "%s-%d", alias, rand()); + test->accountID = g_strdup (id); test->state = ACCOUNT_STATE_REGISTERED; test->properties = g_hash_table_new(NULL, g_str_equal); // Populate the properties g_hash_table_replace (test->properties, ACCOUNT_ENABLED, "1"); - g_hash_table_replace (test->properties, ACCOUNT_ALIAS, "test account"); + g_hash_table_replace (test->properties, ACCOUNT_ALIAS, alias); g_hash_table_replace (test->properties, ACCOUNT_TYPE, "SIP"); - g_hash_table_replace (test->properties, ACCOUNT_HOSTNAME, "192.168.1.1"); - g_hash_table_replace (test->properties, ACCOUNT_USERNAME, "test"); - g_hash_table_replace (test->properties, ACCOUNT_PASSWORD, "my-password"); + g_hash_table_replace (test->properties, ACCOUNT_HOSTNAME, "sflphone.org"); + g_hash_table_replace (test->properties, ACCOUNT_USERNAME, "1260"); + g_hash_table_replace (test->properties, ACCOUNT_PASSWORD, "NIPAgmLo"); g_hash_table_replace (test->properties, ACCOUNT_MAILBOX, "888"); g_hash_table_replace (test->properties, ACCOUNT_SIP_STUN_SERVER, ""); g_hash_table_replace (test->properties, ACCOUNT_SIP_STUN_ENABLED, "0"); @@ -50,7 +55,7 @@ account_t* create_test_account () START_TEST (test_add_account) { - account_t *test = create_test_account (); + account_t *test = create_test_account ("test"); account_list_init (); account_list_add (test); @@ -62,18 +67,21 @@ END_TEST START_TEST (test_ordered_list) { - account_t *test = create_test_account (); + gchar *list; + account_t *test = create_test_account ("test"); + list = g_new0(gchar, 30); + g_sprintf(list, "%s/%s/", test->accountID, test->accountID); account_list_init (); account_list_add (test); account_list_add (test); - fail_unless (g_strcasecmp (account_list_get_ordered_list (), "test/test/") == 0, "ERROR - BAD ACCOUNT LIST SERIALIZING"); + fail_unless (g_strcasecmp (account_list_get_ordered_list (), list) == 0, "ERROR - BAD ACCOUNT LIST SERIALIZING"); } END_TEST START_TEST (test_get_by_id) { - account_t *test = create_test_account (); + account_t *test = create_test_account ("test"); account_t *tmp; account_list_init (); @@ -85,7 +93,7 @@ END_TEST START_TEST (test_sip_account) { - account_t *test = create_test_account (); + account_t *test = create_test_account ("test"); account_list_init (); account_list_add (test); @@ -93,14 +101,63 @@ START_TEST (test_sip_account) } END_TEST -START_TEST (test_set_current_account) +START_TEST (test_get_account_position) +{ + guint pos, pos1; + account_t *test = create_test_account ("test"); + account_t *test2 = create_test_account ("test2"); + + account_list_init (); + account_list_add (test); + account_list_add (test2); + + pos = account_list_get_position (test); + pos1 = account_list_get_position (test2); + fail_if (pos == -1, "ERROR - bad account position"); + fail_unless (pos == 0, "ERROR - bad account position"); + + fail_if (pos1 == -1, "ERROR - bad account position"); + fail_unless (pos1 == 1, "ERROR - bad account position"); + + account_list_set_current (test); + pos = account_list_get_position (test); + pos1 = account_list_get_position (test2); + fail_if (pos == -1, "ERROR - bad account position"); + fail_unless (pos == 0, "ERROR - bad account position"); + fail_unless (pos1 == 1, "ERROR - bad account position"); +} +END_TEST + +START_TEST (test_get_current_account) { - account_t *test = create_test_account (); + account_t *test = create_test_account ("test"); + account_t *test2 = create_test_account ("test2"); + account_t *current; account_list_init (); account_list_add (test); - account_list_set_current_id (test->accountID); - fail_unless (account_list_get_sip_account_number () == 1, "ERROR - BAD CURRENT ACCOUNT"); + account_list_add (test2); + current = account_list_get_current (); + fail_unless (current != NULL, "ERROR - current account NULL"); + // The current account must be the first we add + if (current) + { + fail_unless (g_strcasecmp (g_hash_table_lookup(current->properties, ACCOUNT_ALIAS) , + g_hash_table_lookup(test->properties, ACCOUNT_ALIAS)) == 0, + "ERROR - BAD CURRENT ACCOUNT"); + } + + // Then we try to change the current account + account_list_set_current (test2); + current = account_list_get_current (); + fail_unless (current != NULL, "ERROR - current account NULL"); + // The current account must be the first we add + if (current) + { + fail_unless (g_strcasecmp (g_hash_table_lookup(current->properties, ACCOUNT_ALIAS) , + g_hash_table_lookup(test2->properties, ACCOUNT_ALIAS)) == 0, + "ERROR - BAD CURRENT ACCOUNT"); + } } END_TEST @@ -115,6 +172,8 @@ global_suite (void) tcase_add_test (tc_cases, test_ordered_list); tcase_add_test (tc_cases, test_sip_account); tcase_add_test (tc_cases, test_get_by_id); + tcase_add_test (tc_cases, test_get_account_position); + tcase_add_test (tc_cases, test_get_current_account); suite_add_tcase (s, tc_cases); return s;