diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-04-28 13:28:35 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-04-28 13:28:35 +0800 |
commit | e4774cbebf457ab832efc4aadc4d0f9d2d230762 (patch) | |
tree | 5ebbd787c5dda1be3b5fbda251c1a711c196c55d | |
parent | 3edbc7d2e100549f51905a7479184c211b16662b (diff) | |
download | gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar.gz gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar.bz2 gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar.lz gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar.xz gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.tar.zst gsoc2013-empathy-e4774cbebf457ab832efc4aadc4d0f9d2d230762.zip |
[chat-window] add a spinner to the window tab for when messages are being sent
-rw-r--r-- | src/empathy-chat-window.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c index aa7a1a152..4bbf1a789 100644 --- a/src/empathy-chat-window.c +++ b/src/empathy-chat-window.c @@ -294,6 +294,16 @@ chat_window_create_label (EmpathyChatWindow *window, gtk_box_pack_start (GTK_BOX (hbox), event_box, TRUE, TRUE, 0); if (is_tab_label) { + GtkWidget *sending_spinner; + + sending_spinner = gtk_spinner_new (); + + gtk_box_pack_start (GTK_BOX (hbox), sending_spinner, + FALSE, FALSE, 0); + g_object_set_data (G_OBJECT (chat), + "chat-window-tab-sending-spinner", + sending_spinner); + close_button = gtk_button_new (); gtk_button_set_relief (GTK_BUTTON (close_button), GTK_RELIEF_NONE); g_object_set_data (G_OBJECT (chat), "chat-window-tab-close-button", close_button); @@ -647,6 +657,8 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, const gchar *icon_name; GtkWidget *tab_image; GtkWidget *menu_image; + GtkWidget *sending_spinner; + guint nb_sending; window = chat_window_find_chat (chat); if (!window) { @@ -695,6 +707,16 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, gtk_widget_hide (menu_image); } + /* Update the sending spinner */ + nb_sending = empathy_chat_get_n_messages_sending (chat); + sending_spinner = g_object_get_data (G_OBJECT (chat), + "chat-window-tab-sending-spinner"); + + g_object_set (sending_spinner, + "active", nb_sending > 0, + "visible", nb_sending > 0, + NULL); + /* Update tab tooltip */ tooltip = g_string_new (NULL); @@ -714,6 +736,15 @@ chat_window_update_chat_tab_full (EmpathyChat *chat, id, tp_account_get_display_name (account)); + if (nb_sending > 0) { + append_markup_printf (tooltip, "\n"); + append_markup_printf (tooltip, + ngettext ("Sending %d message", + "Sending %d messages", + nb_sending), + nb_sending); + } + if (!EMP_STR_EMPTY (status)) { append_markup_printf (tooltip, "\n<i>%s</i>", status); } @@ -2239,6 +2270,9 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window, g_signal_connect (chat, "notify::sms-channel", G_CALLBACK (chat_window_chat_notify_cb), NULL); + g_signal_connect (chat, "notify::n-messages-sending", + G_CALLBACK (chat_window_chat_notify_cb), + NULL); chat_window_chat_notify_cb (chat); gtk_notebook_append_page_menu (GTK_NOTEBOOK (priv->notebook), child, label, popup_label); |