diff --git a/sflphone-gtk/src/actions.c b/sflphone-gtk/src/actions.c index a684cd32316e4130cdd380ac6f2e26b76eb51f95..b69ae8ec522cd3ea8f2d2c5ee7e87c3a1fb970c0 100644 --- a/sflphone-gtk/src/actions.c +++ b/sflphone-gtk/src/actions.c @@ -227,14 +227,14 @@ sflphone_hang_up() case CALL_STATE_FAILURE: dbus_hang_up (selectedCall); selectedCall->state = CALL_STATE_DIALING; - call_list_add(history, selectedCall); - update_call_tree_add(history, selectedCall); + //call_list_add(history, selectedCall); + //update_call_tree_add(history, selectedCall); break; case CALL_STATE_INCOMING: dbus_refuse (selectedCall); selectedCall->state = CALL_STATE_DIALING; - call_list_add(history, selectedCall); - update_call_tree_add(history, selectedCall); + //call_list_add(history, selectedCall); + //update_call_tree_add(history, selectedCall); break; case CALL_STATE_TRANSFERT: dbus_hang_up (selectedCall); @@ -372,9 +372,11 @@ sflphone_unset_transfert() void sflphone_incoming_call (call_t * c) { - call_list_add ( current_calls,c ); - //status_icon_unminimize(); - update_call_tree_add(current_calls,c); + c->history_state = INCOMING; + call_list_add ( current_calls, c ); + call_list_add( history, c ); + update_call_tree_add( current_calls , c ); + update_call_tree_add( history , c ); update_menus(); } @@ -478,7 +480,6 @@ sflphone_keypad( guint keyval, gchar * key) call_t * c = call_get_selected(current_calls); if(c) { - switch(c->state) { case CALL_STATE_DIALING: // Currently dialing => edit number @@ -582,7 +583,7 @@ sflphone_keypad( guint keyval, gchar * key) } /* - * Place a call with the default account. + * Place a call with the current account. * If there is no default account selected, place a call with the first * registered account of the account list * Else, popup an error message @@ -618,9 +619,9 @@ sflphone_place_call ( call_t * c ) } else { - // No current accounts have been setup. + // Current account is not registered // So we place a call with the first registered account - // And we change the current account + // And we switch the current account current = account_list_get_by_state( ACCOUNT_STATE_REGISTERED ); c -> accountID = current -> accountID; dbus_place_call(c); @@ -642,6 +643,10 @@ sflphone_place_call ( call_t * c ) account_list_set_current_id( c-> accountID ); } } + // Update history + c->history_state = OUTGOING; + call_list_add(history, c); + update_call_tree_add(history, c); } } diff --git a/sflphone-gtk/src/calllist.h b/sflphone-gtk/src/calllist.h index 9465b9376837af87ce6c0c043b6f2abeedab92ed..a0381ca12b3f6904d8753ecd479329b5eb2b2463 100644 --- a/sflphone-gtk/src/calllist.h +++ b/sflphone-gtk/src/calllist.h @@ -49,6 +49,17 @@ typedef enum CALL_STATE_TRANSFERT } call_state_t; +/** + * @enum history_state + * This enum have all the state a call can take in the history + */ +typedef enum +{ + NONE, + INCOMING, + OUTGOING, + MISSED +} history_state_t; /** @struct call_t * @brief Call information. @@ -64,8 +75,10 @@ typedef struct { gchar * from; /** The number we are calling. Only used when dialing out */ gchar * to; - /* The current state of the call */ + /** The current state of the call */ call_state_t state; + /** The history state */ + history_state_t history_state; } call_t; typedef struct { diff --git a/sflphone-gtk/src/calltree.c b/sflphone-gtk/src/calltree.c index 1f3754097ac126488f0747627d9a521fa51aae9e..0f45d111e1b3f99a4d01c545156c2163bf003c8e 100644 --- a/sflphone-gtk/src/calltree.c +++ b/sflphone-gtk/src/calltree.c @@ -152,6 +152,7 @@ toggle_history(GtkToggleToolButton *toggle_tool_button, sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (active_calltree->view)); g_signal_emit_by_name(sel, "changed"); toolbar_update_buttons(); + } static void @@ -555,7 +556,14 @@ update_call_tree (calltab_t* tab, call_t * c) pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/current.svg", NULL); break; case CALL_STATE_DIALING: - pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/dial.svg", NULL); + if( c->history_state == INCOMING ) + pixbuf = gdk_pixbuf_new_from_file( ICONS_DIR "/incoming.svg", NULL); + else if( c->history_state == OUTGOING ) + pixbuf = gdk_pixbuf_new_from_file( ICONS_DIR "/outgoing.svg", NULL); + else if( c->history_state == MISSED ) + pixbuf = gdk_pixbuf_new_from_file( ICONS_DIR "/missed.svg", NULL); + else + pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/dial.svg", NULL); break; case CALL_STATE_FAILURE: pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/fail.svg", NULL); @@ -569,6 +577,21 @@ update_call_tree (calltab_t* tab, call_t * c) default: g_warning("Should not happen!"); } + + /*switch(c->history_state) + { + case OUTGOING: + g_print("Outgoing state\n"); + pixbuf = gdk_pixbuf_new_from_file( ICONS_DIR "/outgoing.svg", NULL); + break; + case INCOMING: + g_print("Incoming state\n"); + pixbuf = gdk_pixbuf_new_from_file( ICONS_DIR "/incoming.svg", NULL); + break; + default: + g_print("No history state\n"); + break; + }*/ //Resize it if(pixbuf) { @@ -610,6 +633,8 @@ update_call_tree_add (calltab_t* tab, call_t * c) gtk_list_store_prepend (tab->store, &iter); + if( tab == current_calls ) + { switch(c->state) { case CALL_STATE_INCOMING: @@ -624,7 +649,25 @@ update_call_tree_add (calltab_t* tab, call_t * c) default: g_warning("Should not happen!"); } - + } + else{ + //pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/incoming.svg", NULL); + switch(c->history_state) + { + case INCOMING: + pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/incoming.svg", NULL); + break; + case OUTGOING: + pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/outgoing.svg", NULL); + break; + case MISSED: + pixbuf = gdk_pixbuf_new_from_file(ICONS_DIR "/missed.svg", NULL); + break; + default: + g_warning("Should not happen!"); + } + } + //Resize it if(pixbuf) { diff --git a/sflphone-gtk/src/mainwindow.c b/sflphone-gtk/src/mainwindow.c index ad501f533aae68ffd946481dea33f9fe04d05712..872bb5f1cb6a6e9aba7f01ed7ae730cc7271daa8 100644 --- a/sflphone-gtk/src/mainwindow.c +++ b/sflphone-gtk/src/mainwindow.c @@ -153,11 +153,6 @@ create_main_window () gtk_box_pack_start (GTK_BOX (vbox), subvbox, FALSE /*expand*/, FALSE /*fill*/, 0 /*padding*/); - //widget = create_slider("speaker"); - //gtk_box_pack_start (GTK_BOX (subvbox), widget, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/); - //widget = create_slider("mic"); - //gtk_box_pack_start (GTK_BOX (subvbox), widget, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/); - /* Status bar */ statusBar = gtk_statusbar_new(); gtk_box_pack_start (GTK_BOX (vbox), statusBar, FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);