diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-11 20:23:06 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-11 20:23:06 +0800 |
commit | a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59 (patch) | |
tree | cf84c6ef5b7997a17f44e681a5338900df18c7bc /libempathy-gtk/empathy-group-chat.c | |
parent | 862aee8f30817b0f56c59134cef0c7e51d7cc168 (diff) | |
download | gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar.gz gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar.bz2 gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar.lz gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar.xz gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.tar.zst gsoc2013-empathy-a69b6ced4cb82dc5e898e79dfb58f6e67b7beb59.zip |
Fix usage of property iface and make use of it to get chatroom topic.
svn path=/trunk/; revision=772
Diffstat (limited to 'libempathy-gtk/empathy-group-chat.c')
-rw-r--r-- | libempathy-gtk/empathy-group-chat.c | 103 |
1 files changed, 48 insertions, 55 deletions
diff --git a/libempathy-gtk/empathy-group-chat.c b/libempathy-gtk/empathy-group-chat.c index 008dee81b..a775d97d5 100644 --- a/libempathy-gtk/empathy-group-chat.c +++ b/libempathy-gtk/empathy-group-chat.c @@ -102,12 +102,6 @@ static GtkWidget * group_chat_get_widget (EmpathyChat *cha static gboolean group_chat_is_group_chat (EmpathyChat *chat); static void group_chat_set_tp_chat (EmpathyChat *chat, EmpathyTpChat *tp_chat); -static void group_chat_subject_notify_cb (EmpathyTpChat *tp_chat, - GParamSpec *param, - EmpathyGroupChat *chat); -static void group_chat_name_notify_cb (EmpathyTpChat *tp_chat, - GParamSpec *param, - EmpathyGroupChat *chat); static gboolean group_chat_key_press_event (EmpathyChat *chat, GdkEventKey *event); static gint group_chat_contacts_completion_func (const gchar *s1, @@ -486,6 +480,52 @@ group_chat_is_group_chat (EmpathyChat *chat) } static void +group_chat_property_changed_cb (EmpathyTpChat *tp_chat, + gchar *name, + GValue *value, + EmpathyGroupChat *chat) +{ + EmpathyGroupChatPriv *priv; + const gchar *str = NULL; + + priv = GET_PRIV (chat); + + /* FIXME: this is ugly, should use properties on EmpathyChat obj */ + + if (!tp_strdiff (name, "name")) { + str = g_value_get_string (value); + g_free (priv->name); + priv->name = g_strdup (str); + return; + } + + if (tp_strdiff (name, "subject")) { + return; + } + + str = g_value_get_string (value); + if (!tp_strdiff (priv->topic, str)) { + return; + } + + g_free (priv->topic); + priv->topic = g_strdup (str); + gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->topic); + + if (!EMPATHY_CHAT (chat)->block_events) { + gchar *string; + + if (!G_STR_EMPTY (priv->topic)) { + string = g_strdup_printf (_("Topic set to: %s"), priv->topic); + } else { + string = g_strdup (_("No topic defined")); + } + empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, string); + g_free (string); + } +} + +static void group_chat_set_tp_chat (EmpathyChat *chat, EmpathyTpChat *tp_chat) { @@ -546,56 +586,9 @@ group_chat_set_tp_chat (EmpathyChat *chat, g_signal_connect (priv->tp_chat, "members-changed", G_CALLBACK (group_chat_members_changed_cb), chat); - g_signal_connect (priv->tp_chat, "notify::subject", - G_CALLBACK (group_chat_subject_notify_cb), + g_signal_connect (priv->tp_chat, "property-changed", + G_CALLBACK (group_chat_property_changed_cb), chat); - g_signal_connect (priv->tp_chat, "notify::name", - G_CALLBACK (group_chat_name_notify_cb), - chat); -} - -static void -group_chat_subject_notify_cb (EmpathyTpChat *tp_chat, - GParamSpec *param, - EmpathyGroupChat *chat) -{ - EmpathyGroupChatPriv *priv; - gchar *str = NULL; - - priv = GET_PRIV (chat); - - g_object_get (priv->tp_chat, "subject", &str, NULL); - if (!tp_strdiff (priv->topic, str)) { - g_free (str); - return; - } - - g_free (priv->topic); - priv->topic = str; - gtk_label_set_text (GTK_LABEL (priv->label_topic), priv->topic); - - if (!EMPATHY_CHAT (chat)->block_events) { - if (!G_STR_EMPTY (priv->topic)) { - str = g_strdup_printf (_("Topic set to: %s"), priv->topic); - } else { - str = g_strdup (_("No topic defined")); - } - empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str); - g_free (str); - } -} - -static void -group_chat_name_notify_cb (EmpathyTpChat *tp_chat, - GParamSpec *param, - EmpathyGroupChat *chat) -{ - EmpathyGroupChatPriv *priv; - - priv = GET_PRIV (chat); - - g_free (priv->name); - g_object_get (priv->tp_chat, "name", &priv->name, NULL); } static gboolean |