diff --git a/sflphone-client-gnome/src/statusicon.c b/sflphone-client-gnome/src/statusicon.c index 47e9d4a855517764dc2380834bc76d20ff3f1489..f017891e3e368bf105a79535713f10bc86e66905 100644 --- a/sflphone-client-gnome/src/statusicon.c +++ b/sflphone-client-gnome/src/statusicon.c @@ -25,11 +25,10 @@ #include <statusicon.h> #if GTK_CHECK_VERSION(2,10,0) -GtkStatusIcon* status; -GtkWidget * show_menu_item; +GtkStatusIcon *status; +GtkWidget *show_menu_item, *hangup_menu_item; gboolean __minimized = MINIMIZED; - void popup_main_window (void) { if (__POPUP_WINDOW) @@ -39,18 +38,39 @@ void popup_main_window (void) } } +void show_status_hangup_icon() { + + DEBUG("Show Hangup in Systray"); + gtk_widget_show(GTK_WIDGET(hangup_menu_item)); + +} + +void hide_status_hangup_icon() { + + DEBUG("Hide Hangup in Systray"); + gtk_widget_hide(GTK_WIDGET(hangup_menu_item)); +} + + void status_quit ( void * foo UNUSED) { sflphone_quit(); } +void +status_hangup () +{ + sflphone_hang_up(); +} + void status_icon_unminimize() { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), TRUE); } + gboolean main_widget_minimized() { return __minimized; @@ -90,6 +110,7 @@ GtkWidget* create_menu() { GtkWidget * menu; GtkWidget * menu_items; + GtkWidget * image; menu = gtk_menu_new (); @@ -99,10 +120,18 @@ GtkWidget* create_menu() g_signal_connect(G_OBJECT (show_menu_item), "toggled", G_CALLBACK (show_hide), NULL); - + + hangup_menu_item = gtk_image_menu_item_new_with_mnemonic(_("_Hang up")); + image = gtk_image_new_from_file( ICONS_DIR "/hang_up.svg"); + gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(hangup_menu_item), image); + gtk_menu_shell_append(GTK_MENU_SHELL(menu), hangup_menu_item); + g_signal_connect(G_OBJECT (hangup_menu_item), "activate", + G_CALLBACK (status_hangup), + NULL); + menu_items = gtk_separator_menu_item_new (); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_items); - + menu_items = gtk_image_menu_item_new_from_stock( GTK_STOCK_QUIT, get_accel_group()); g_signal_connect_swapped (G_OBJECT (menu_items), "activate", G_CALLBACK (status_quit), diff --git a/sflphone-client-gnome/src/statusicon.h b/sflphone-client-gnome/src/statusicon.h index 4a841c4ea0ae2c81a9dfcaf74b32320bd4e7f51b..f976c9ad17e6a70ff689d3172bed05f5d271b71e 100644 --- a/sflphone-client-gnome/src/statusicon.h +++ b/sflphone-client-gnome/src/statusicon.h @@ -45,6 +45,19 @@ void show_status_icon(); */ void status_icon_unminimize(); +/** + * Show hangup icon + */ +void show_status_hangup_icon(); + + +/** + * Show hangup icon + */ +void hide_status_hangup_icon(); + + + /** * Tells if the main window if minimized or not * @return gboolean TRUE if the main window is minimized diff --git a/sflphone-client-gnome/src/uimanager.c b/sflphone-client-gnome/src/uimanager.c index 1a4632c5898cb0c75e8c07bf5ce968830eeda8a6..966b6311b4d2664268802933a6f52b9d83fce360 100644 --- a/sflphone-client-gnome/src/uimanager.c +++ b/sflphone-client-gnome/src/uimanager.c @@ -27,6 +27,7 @@ #include <glib/gprintf.h> #include <libgnome/gnome-help.h> #include <uimanager.h> +#include <statusicon.h> static GtkWidget *toolbar; static GtkWidget *toolbarWindows; @@ -147,7 +148,9 @@ void update_actions() if (selectedCall) { - // DEBUG("------------------------- selected call ---------------------------\n"); + // update icon in systray + show_status_hangup_icon(); + gtk_action_set_sensitive (GTK_ACTION (copyAction), TRUE); switch(selectedCall->_state) @@ -225,7 +228,8 @@ void update_actions() } else if (selectedConf){ - // DEBUG("------------------------- selected conf ---------------------------\n"); + // update icon in systray + show_status_hangup_icon(); switch(selectedConf->_state) { @@ -265,6 +269,10 @@ void update_actions() } else { + + // update icon in systray + hide_status_hangup_icon(); + if( account_list_get_size() > 0 && current_account_has_mailbox ()) { gtk_toolbar_insert (GTK_TOOLBAR (toolbar), GTK_TOOL_ITEM (voicemailToolbar), -2); diff --git a/sflphone-common/src/dbus/callmanager.cpp b/sflphone-common/src/dbus/callmanager.cpp index 34689444975c56e64060e7348ab22d80d3e744f8..1c30ef975528dab36b6ed6840dd2bbac18cd7af5 100644 --- a/sflphone-common/src/dbus/callmanager.cpp +++ b/sflphone-common/src/dbus/callmanager.cpp @@ -40,8 +40,7 @@ void CallManager::placeCall (const std::string& accountID, const std::string& callID, const std::string& to) -{ - // Check if a destination number is available +{ // Check if a destination number is available if (to == "") _debug ("No number entered - Call stopped"); else Manager::instance().outgoingCall (accountID, callID, to);