[empathy: 3/16] Remove balance from menu when account is disconnected
- From: Danielle Madeley <daniellem src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [empathy: 3/16] Remove balance from menu when account is disconnected
- Date: Thu, 5 May 2011 08:30:59 +0000 (UTC)
commit 0892b114ee4fd20559fb0c613c7c145c8bedbc9d
Author: Danielle Madeley <danielle madeley collabora co uk>
Date: Fri Apr 15 14:33:20 2011 +1000
Remove balance from menu when account is disconnected
src/empathy-main-window.c | 36 ++++++++++++++++++++++++++++++++----
1 files changed, 32 insertions(+), 4 deletions(-)
---
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index 8d03138..03386a0 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -880,6 +880,7 @@ main_window_setup_balance_conn_ready (GObject *conn,
TpAccount *account = g_object_get_data (conn, "account");
GtkAction *action;
char *name, *ui;
+ guint merge_id;
GError *error = NULL;
if (!tp_proxy_prepare_finish (conn, result, &error)) {
@@ -932,9 +933,10 @@ main_window_setup_balance_conn_ready (GObject *conn,
"</ui>",
name);
- /* FIXME: do we want the merge id, can use it to unmerge the UI */
- gtk_ui_manager_add_ui_from_string (priv->ui_manager, ui, -1,
- &error);
+ merge_id = gtk_ui_manager_add_ui_from_string (priv->ui_manager,
+ ui, -1, &error);
+ g_object_set_data (G_OBJECT (action),
+ "merge-id", GUINT_TO_POINTER (merge_id));
g_free (name);
g_free (ui);
@@ -997,7 +999,33 @@ main_window_connection_changed_cb (TpAccount *account,
empathy_sound_manager_play (priv->sound_mgr, GTK_WIDGET (window),
EMPATHY_SOUND_ACCOUNT_DISCONNECTED);
- /* FIXME: remove balance */
+ /* remove balance action if required */
+ if (priv->balance_action_group != NULL) {
+ GtkAction *action;
+ char *name;
+
+ name = main_window_account_to_action_name (account);
+
+ action = gtk_action_group_get_action (
+ priv->balance_action_group, name);
+
+ if (action != NULL) {
+ guint merge_id;
+
+ DEBUG ("Removing action");
+
+ merge_id = GPOINTER_TO_UINT (g_object_get_data (
+ G_OBJECT (action),
+ "merge-id"));
+
+ gtk_ui_manager_remove_ui (priv->ui_manager,
+ merge_id);
+ gtk_action_group_remove_action (
+ priv->balance_action_group, action);
+ }
+
+ g_free (name);
+ }
}
if (current == TP_CONNECTION_STATUS_CONNECTED) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]