diff --git a/sflphone-client-gnome/pixmaps/Makefile.am b/sflphone-client-gnome/pixmaps/Makefile.am index 33dc526e3ffdce17f9f6263f09eabb4079192978..56a6e20755c43cd3f4e87ef2bcf6872627f228ec 100644 --- a/sflphone-client-gnome/pixmaps/Makefile.am +++ b/sflphone-client-gnome/pixmaps/Makefile.am @@ -25,6 +25,7 @@ buttons_DATA = current.svg \ busy.svg \ sflphone.svg \ sflphone_small.svg \ + sflphone_notif.svg \ stock_person.svg \ icon_rec.svg \ rec_call.svg \ diff --git a/sflphone-client-gnome/src/config/preferencesdialog.c b/sflphone-client-gnome/src/config/preferencesdialog.c index b472887b6d4c4859341d5a7a7a168d4072afc605..d804865fa4dba066698196f1538f8ac3c4d28458 100644 --- a/sflphone-client-gnome/src/config/preferencesdialog.c +++ b/sflphone-client-gnome/src/config/preferencesdialog.c @@ -87,10 +87,10 @@ start_hidden( void ) dbus_start_hidden(); } -static void -set_popup_mode( void ) +static void set_popup_mode (GtkWidget *widget, gpointer *userdata) { - dbus_switch_popup_mode(); + if (dbus_popup_mode () || gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) + dbus_switch_popup_mode (); } @@ -452,14 +452,15 @@ create_general_settings () gtk_box_pack_start(GTK_BOX(ret), frame, FALSE, FALSE, 0); GtkWidget* trayItem1 = gtk_radio_button_new_with_mnemonic(NULL, _("_Popup main window on incoming call")); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem1), dbus_popup_mode() ); - g_signal_connect(G_OBJECT( trayItem1 ), "clicked", G_CALLBACK( set_popup_mode ) , NULL); + g_signal_connect(G_OBJECT (trayItem1), "toggled", G_CALLBACK (set_popup_mode), NULL); gtk_table_attach( GTK_TABLE(table), trayItem1, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5); - trayItem = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window")); - gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), !dbus_popup_mode() ); + trayItem = gtk_radio_button_new_with_mnemonic_from_widget (GTK_RADIO_BUTTON(trayItem1), _("Ne_ver popup main window")); gtk_table_attach( GTK_TABLE(table), trayItem, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 5); + // Toggle according to the user configuration + dbus_popup_mode () ? gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem1), TRUE) : gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (trayItem), TRUE); + trayItem = gtk_check_button_new_with_mnemonic(_("Hide SFLphone window on _startup")); gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON(trayItem), dbus_is_start_hidden() ); g_signal_connect(G_OBJECT( trayItem ) , "clicked" , G_CALLBACK( start_hidden ) , NULL); diff --git a/sflphone-client-gnome/src/dbus/dbus.c b/sflphone-client-gnome/src/dbus/dbus.c index 557351e80794d179f8ddeeb6f05233b112b46a6a..7f9f0f732999dc7e1533ca02d14e18ded5b4dd9e 100644 --- a/sflphone-client-gnome/src/dbus/dbus.c +++ b/sflphone-client-gnome/src/dbus/dbus.c @@ -64,7 +64,8 @@ incoming_call_cb (DBusGProxy *proxy UNUSED, create_new_call (CALL, CALL_STATE_INCOMING, g_strdup(callID), g_strdup(accountID), peer_name, peer_number, &c); #if GTK_CHECK_VERSION(2,10,0) - status_tray_icon_blink( TRUE ); + status_tray_icon_blink (TRUE); + popup_main_window (); #endif set_timestamp (&c->_time_start); diff --git a/sflphone-client-gnome/src/sflphone_const.h b/sflphone-client-gnome/src/sflphone_const.h index 89fa9d3b2ace59d28379987dbc058746cff08e51..d76373fd71bba4c63cd2d8b69fbcbe3d8df2e9b7 100644 --- a/sflphone-client-gnome/src/sflphone_const.h +++ b/sflphone-client-gnome/src/sflphone_const.h @@ -29,6 +29,7 @@ */ #define LOGO ICONS_DIR "/sflphone.svg" +#define LOGO_NOTIF ICONS_DIR "/sflphone_notif.svg" #define LOGO_SMALL ICONS_DIR "/sflphone_small.svg" #define CURRENT_CALLS "current_calls" diff --git a/sflphone-client-gnome/src/statusicon.c b/sflphone-client-gnome/src/statusicon.c index 9757996a6aedd89beec22c308f112e6cd20a73ed..99b8dcc2c6ccec24d66d924fe44b11a4cea5adcd 100644 --- a/sflphone-client-gnome/src/statusicon.c +++ b/sflphone-client-gnome/src/statusicon.c @@ -29,6 +29,16 @@ GtkStatusIcon* status; GtkWidget * show_menu_item; gboolean __minimized = MINIMIZED; + +void popup_main_window (void) +{ + if (__POPUP_WINDOW) + { + gtk_widget_show (get_main_window ()); + set_minimized (FALSE); + } +} + void status_quit ( void * foo UNUSED) { @@ -41,31 +51,27 @@ status_icon_unminimize() gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), TRUE); } -gboolean -main_widget_minimized() +gboolean main_widget_minimized() { return __minimized; } -void -show_hide (void) +void show_hide (void) { - if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))) - { - gtk_widget_show(GTK_WIDGET(get_main_window())); - set_minimized( !MINIMIZED ); - } - else - { - gtk_widget_hide(GTK_WIDGET(get_main_window())); - set_minimized( MINIMIZED ); - } - + if(gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))) + { + gtk_widget_show(GTK_WIDGET(get_main_window())); + set_minimized( !MINIMIZED ); + } + else + { + gtk_widget_hide(GTK_WIDGET(get_main_window())); + set_minimized( MINIMIZED ); + } } -void -status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED) +void status_click (GtkStatusIcon *status_icon UNUSED, void * foo UNUSED) { gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_menu_item), !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(show_menu_item))); @@ -80,8 +86,7 @@ void menu (GtkStatusIcon *status_icon, status_icon, button, activate_time); } -GtkWidget * -create_menu() +GtkWidget* create_menu() { GtkWidget * menu; GtkWidget * menu_items; @@ -129,10 +134,13 @@ show_status_icon() g_free(tip); } -void -status_tray_icon_blink( gboolean active ) +void status_tray_icon_blink (gboolean active) { - gtk_status_icon_set_blinking( status , active ); + // Set a different icon to notify of an event + active ? gtk_status_icon_set_from_file (status, LOGO_NOTIF) : gtk_status_icon_set_from_file (status, LOGO); + // Do not blink anymore ... + // gtk_status_icon_set_blinking (status, active); + } GtkStatusIcon* diff --git a/sflphone-client-gnome/src/statusicon.h b/sflphone-client-gnome/src/statusicon.h index a269bde64d9d7da179dc8528a053364229593fdf..4a841c4ea0ae2c81a9dfcaf74b32320bd4e7f51b 100644 --- a/sflphone-client-gnome/src/statusicon.h +++ b/sflphone-client-gnome/src/statusicon.h @@ -30,6 +30,11 @@ * @brief The status icon in the system tray. */ +/** + * Popup the main window. Used on incoming calls + */ +void popup_main_window (void); + /** * Create the status icon */