758
758
EmpathyChatPriv *priv = GET_PRIV (chat);
759
EmpathyTpChatProperty *property;
760
GValue value = {0, };
762
property = empathy_tp_chat_get_property (priv->tp_chat, "subject");
763
if (property == NULL) {
760
if (!empathy_tp_chat_supports_subject (priv->tp_chat)) {
764
761
empathy_chat_view_append_event (chat->view,
765
762
_("Topic not supported on this conversation"));
769
if (!(property->flags & TP_PROPERTY_FLAG_WRITE)) {
766
if (!empathy_tp_chat_can_set_subject (priv->tp_chat)) {
770
767
empathy_chat_view_append_event (chat->view,
771
768
_("You are not allowed to change the topic"));
775
g_value_init (&value, G_TYPE_STRING);
776
g_value_set_string (&value, strv[1]);
777
empathy_tp_chat_set_property (priv->tp_chat, "subject", &value);
778
g_value_unset (&value);
772
empathy_tp_chat_set_subject (priv->tp_chat, strv[1]);
1531
chat_property_changed_cb (EmpathyTpChat *tp_chat,
1525
chat_subject_changed_cb (EmpathyChat *chat)
1536
1527
EmpathyChatPriv *priv = GET_PRIV (chat);
1538
if (!tp_strdiff (name, "subject")) {
1539
1529
g_free (priv->subject);
1540
priv->subject = g_value_dup_string (value);
1530
priv->subject = g_strdup (empathy_tp_chat_get_subject (priv->tp_chat));
1541
1531
g_object_notify (G_OBJECT (chat), "subject");
1543
1533
if (EMP_STR_EMPTY (priv->subject)) {
1567
1557
empathy_chat_view_append_event (EMPATHY_CHAT (chat)->view, str);
1571
else if (!tp_strdiff (name, "name")) {
1563
chat_title_changed_cb (EmpathyChat *chat)
1565
EmpathyChatPriv *priv = GET_PRIV (chat);
1572
1567
g_free (priv->name);
1573
priv->name = g_value_dup_string (value);
1568
priv->name = g_strdup (empathy_tp_chat_get_title (priv->tp_chat));
1574
1569
g_object_notify (G_OBJECT (chat), "name");
1578
1572
static gboolean
3086
3080
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3087
3081
chat_state_changed_cb, chat);
3088
3082
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3089
chat_property_changed_cb, chat);
3090
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3091
3083
chat_members_changed_cb, chat);
3092
3084
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3093
3085
chat_remote_contact_changed_cb, chat);
3086
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3087
chat_title_changed_cb, chat);
3088
g_signal_handlers_disconnect_by_func (priv->tp_chat,
3089
chat_subject_changed_cb, chat);
3094
3090
empathy_tp_chat_leave (priv->tp_chat, "");
3095
3091
g_object_unref (priv->tp_chat);
3801
3796
g_signal_connect (tp_chat, "chat-state-changed-empathy",
3802
3797
G_CALLBACK (chat_state_changed_cb),
3804
g_signal_connect (tp_chat, "property-changed",
3805
G_CALLBACK (chat_property_changed_cb),
3807
3799
g_signal_connect (tp_chat, "members-changed",
3808
3800
G_CALLBACK (chat_members_changed_cb),
3822
3814
g_signal_connect_swapped (tp_chat, "notify::n-messages-sending",
3823
3815
G_CALLBACK (chat_n_messages_sending_changed_cb),
3817
g_signal_connect_swapped (tp_chat, "notify::title",
3818
G_CALLBACK (chat_title_changed_cb),
3820
g_signal_connect_swapped (tp_chat, "notify::subject",
3821
G_CALLBACK (chat_subject_changed_cb),
3826
3824
/* Get initial value of properties */
3827
properties = empathy_tp_chat_get_properties (priv->tp_chat);
3828
if (properties != NULL) {
3831
for (i = 0; i < properties->len; i++) {
3832
EmpathyTpChatProperty *property;
3834
property = g_ptr_array_index (properties, i);
3835
if (property->value == NULL)
3838
chat_property_changed_cb (priv->tp_chat,
3845
3825
chat_sms_channel_changed_cb (chat);
3846
3826
chat_remote_contact_changed_cb (chat);
3827
chat_title_changed_cb (chat);
3828
chat_subject_changed_cb (chat);
3848
3830
if (chat->input_text_view) {
3849
3831
gtk_widget_set_sensitive (chat->input_text_view, TRUE);