aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanielle Madeley <danielle.madeley@collabora.co.uk>2011-04-15 12:33:20 +0800
committerDanielle Madeley <danielle.madeley@collabora.co.uk>2011-04-15 12:33:20 +0800
commit6b3bef7072a3607312bac776cc61f71e2b1fc694 (patch)
tree08cab43255ae8d887b0146078704a3e7dfdd5148
parent93fda999384c99224aeefe138b1a1594fb980b78 (diff)
downloadgsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar.gz
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar.bz2
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar.lz
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar.xz
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.tar.zst
gsoc2013-empathy-6b3bef7072a3607312bac776cc61f71e2b1fc694.zip
Remove balance from menu when account is disconnected
-rw-r--r--src/empathy-main-window.c38
1 files changed, 34 insertions, 4 deletions
diff --git a/src/empathy-main-window.c b/src/empathy-main-window.c
index b01151c9d..a04a4fabb 100644
--- a/src/empathy-main-window.c
+++ b/src/empathy-main-window.c
@@ -1001,6 +1001,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)) {
@@ -1053,9 +1054,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);
@@ -1105,6 +1107,8 @@ main_window_connection_changed_cb (TpAccount *account,
GHashTable *details,
EmpathyMainWindow *window)
{
+ EmpathyMainWindowPriv *priv = GET_PRIV (window);
+
main_window_update_status (window);
if (current == TP_CONNECTION_STATUS_DISCONNECTED &&
@@ -1116,7 +1120,33 @@ main_window_connection_changed_cb (TpAccount *account,
empathy_sound_play (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) {