Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: 8aa872b9 by wurstsalat at 2023-05-06T12:17:51+02:00 imprv: ChatList: Show indicator when joining group chat
- - - - -
4 changed files:
- gajim/data/gui/chat_list_row.ui - gajim/data/style/gajim.css - gajim/gtk/builder.pyi - gajim/gtk/chat_list_row.py
Changes:
===================================== gajim/data/gui/chat_list_row.ui ===================================== @@ -87,9 +87,24 @@ <packing> <property name="expand">False</property> <property name="fill">True</property> + <property name="pack-type">end</property> <property name="position">1</property> </packing> </child> + <child> + <object class="GtkSpinner" id="spinner"> + <property name="can-focus">False</property> + <property name="no-show-all">True</property> + <property name="tooltip-text" translatable="yes">Joining Group Chat…</property> + <property name="opacity">0.60</property> + <property name="active">True</property> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="position">2</property> + </packing> + </child> </object> <packing> <property name="expand">False</property>
===================================== gajim/data/style/gajim.css ===================================== @@ -433,6 +433,9 @@ .chatlist-row:selected button { .chatlist-row:selected image { color: @theme_fg_color; } +.chatlist-row:selected spinner { + color: @theme_fg_color; +} .dnd-target-chatlist { animation-name: pulse-opacity; animation-duration: 2.0s;
===================================== gajim/gtk/builder.pyi ===================================== @@ -218,6 +218,7 @@ class ChatListRowBuilder(Builder): avatar_image: Gtk.Image group_chat_indicator: Gtk.Image name_label: Gtk.Label + spinner: Gtk.Spinner chatstate_image: Gtk.Image mute_image: Gtk.Image timestamp_label: Gtk.Label
===================================== gajim/gtk/chat_list_row.py ===================================== @@ -507,6 +507,10 @@ def _connect_contact_signals(self) -> None:
elif isinstance(self.contact, GroupchatContact): self.contact.connect('avatar-update', self._on_avatar_update) + self.contact.connect('state-changed', self._on_muc_state_changed) + + self._client.connect_signal('state-changed', + self._on_client_state_changed)
elif isinstance(self.contact, GroupchatParticipant): self.contact.connect('chatstate-update', self._on_chatstate_update) @@ -535,6 +539,16 @@ def _on_avatar_update(self, ) -> None: self.update_avatar()
+ def _on_client_state_changed(self, *args: Any) -> None: + self._update_joined_state() + + def _on_muc_state_changed(self, *args: Any) -> None: + self._update_joined_state() + + def _update_joined_state(self) -> None: + self._ui.spinner.set_visible( + self.contact.is_joining and self._client.state.is_available) + def _on_muc_user_update(self, _contact: GroupchatParticipant, _signal_name: str,
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/8aa872b9632aeea75866ecad4d0364301...