diff options
Diffstat (limited to 'main/src/ui/conversation_selector')
-rw-r--r-- | main/src/ui/conversation_selector/groupchat_row.vala | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/main/src/ui/conversation_selector/groupchat_row.vala b/main/src/ui/conversation_selector/groupchat_row.vala index 598902cc..07dabf06 100644 --- a/main/src/ui/conversation_selector/groupchat_row.vala +++ b/main/src/ui/conversation_selector/groupchat_row.vala @@ -8,10 +8,15 @@ public class GroupchatRow : ConversationRow { base(stream_interactor, conversation); has_tooltip = true; set_tooltip_text(conversation.counterpart.bare_jid.to_string()); - set_avatar((new AvatarGenerator(AVATAR_SIZE, AVATAR_SIZE, image.scale_factor)) - .set_greyscale(true) - .draw_conversation(stream_interactor, conversation), image.scale_factor); + update_avatar(); + x_button.clicked.connect(on_x_button_clicked); + stream_interactor.get_module(MucManager.IDENTITY).left.connect(() => { + Idle.add(() => { + update_avatar(); + return false; + }); + }); } @@ -21,15 +26,21 @@ public class GroupchatRow : ConversationRow { } public override void network_connection(bool connected) { - set_avatar((new AvatarGenerator(AVATAR_SIZE, AVATAR_SIZE, image.scale_factor)) - .set_greyscale(!connected || - stream_interactor.get_module(MucManager.IDENTITY).get_nick(conversation.counterpart, conversation.account) == null) // TODO better currently joined - .draw_conversation(stream_interactor, conversation), image.scale_factor); + update_avatar(); } private void on_x_button_clicked() { stream_interactor.get_module(MucManager.IDENTITY).part(conversation.account, conversation.counterpart); } + + private void update_avatar() { + ConnectionManager.ConnectionState connection_state = stream_interactor.connection_manager.get_state(conversation.account); + bool is_joined = stream_interactor.get_module(MucManager.IDENTITY).is_joined(conversation.counterpart, conversation.account); + + set_avatar((new AvatarGenerator(AVATAR_SIZE, AVATAR_SIZE, image.scale_factor)) + .set_greyscale(connection_state != ConnectionManager.ConnectionState.CONNECTED || !is_joined) + .draw_conversation(stream_interactor, conversation), image.scale_factor); + } } }
\ No newline at end of file |