Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: 63eb1041 by wurstsalat at 2023-05-13T22:33:58+02:00 imprv: Make contact details/settings available when offline
- - - - -
4 changed files:
- gajim/data/gui/groupchat_details.ui - gajim/gtk/chat_stack.py - gajim/gtk/const.py - gajim/gtk/groupchat_details.py
Changes:
===================================== gajim/data/gui/groupchat_details.ui ===================================== @@ -55,9 +55,10 @@ <child> <object class="GtkToggleButton" id="edit_name_button"> <property name="visible">True</property> + <property name="sensitive">False</property> <property name="can-focus">True</property> <property name="receives-default">True</property> - <property name="tooltip-text" translatable="yes">Edit Name…</property> + <property name="tooltip-text" translatable="yes">Not connected</property> <property name="valign">center</property> <signal name="toggled" handler="_on_edit_name_toggled" swapped="no"/> <child>
===================================== gajim/gtk/chat_stack.py ===================================== @@ -507,7 +507,6 @@ def _update_base_actions(self, contact: ChatContactT) -> None: jingle.get_enabled() or httpupload.get_enabled())
- app.window.get_action('show-contact-info').set_enabled(online) app.window.get_action('correct-message').set_enabled(online)
def _update_chat_actions(self, contact: BareContact) -> None:
===================================== gajim/gtk/const.py ===================================== @@ -232,7 +232,7 @@ def __str__(self): ('add-to-roster', None, True), ('start-voice-call', None, False), ('start-video-call', None, False), - ('show-contact-info', None, False), + ('show-contact-info', None, True), ('send-message', None, False), ('muc-change-nickname', None, False), ('muc-invite', None, False),
===================================== gajim/gtk/groupchat_details.py ===================================== @@ -22,7 +22,9 @@
from gajim.common import app from gajim.common import ged +from gajim.common import types from gajim.common.const import AvatarSize +from gajim.common.const import SimpleClientState from gajim.common.events import MucDiscoUpdate from gajim.common.i18n import _ from gajim.common.modules.contacts import GroupchatContact @@ -55,6 +57,9 @@ def __init__(self,
self.account = contact.account self._client = app.get_client(contact.account) + self._client.connect_signal( + 'state-changed', self._on_client_state_changed) + self._contact = contact self._contact.connect('avatar-update', self._on_avatar_update)
@@ -62,7 +67,7 @@ def __init__(self, self._ui.connect_signals(self)
self._switcher = SideBarSwitcher(width=250) - self._switcher.set_stack(self._ui.main_stack) + self._switcher.set_stack(self._ui.main_stack, rows_visible=False) self._ui.main_grid.attach(self._switcher, 0, 0, 1, 1) self._ui.main_stack.connect('notify::visible-child-name', self._on_stack_child_changed) @@ -73,10 +78,14 @@ def __init__(self, self._add_groupchat_info() self._add_groupchat_settings() self._add_groupchat_encryption() - self._add_groupchat_manage() - self._add_affiliations() - self._add_outcasts() - self._add_configuration() + + if self._client.state.is_available: + self._ui.edit_name_button.set_sensitive(True) + self._ui.edit_name_button.set_tooltip_text(_('Edit Name…')) + self._add_groupchat_manage() + self._add_affiliations() + self._add_outcasts() + self._add_configuration()
self._load_avatar() self._ui.name_entry.set_text(contact.name) @@ -92,6 +101,16 @@ def __init__(self,
self.show_all()
+ def _on_client_state_changed(self, + _client: types.Client, + _signal_name: str, + state: SimpleClientState + ) -> None: + + self._ui.edit_name_button.set_sensitive(state.is_connected) + self._ui.edit_name_button.set_tooltip_text( + _('Not connected') if not state.is_connected else _('Edit Name…')) + def _on_muc_disco_update(self, event: MucDiscoUpdate) -> None: if event.jid != self._contact.jid: return @@ -138,6 +157,7 @@ def _add_groupchat_manage(self) -> None: self._groupchat_manage = GroupchatManage(self.account, self._contact) self._ui.manage_box.add(self._groupchat_manage) + self._switcher.set_row_visible('manage', True)
def _add_groupchat_info(self) -> None: self._groupchat_info = GroupChatInfoScrolled( @@ -148,6 +168,7 @@ def _add_groupchat_info(self) -> None: self._groupchat_info.set_from_disco_info(disco_info) self._groupchat_info.set_subject(self._contact.subject) self._ui.info_box.add(self._groupchat_info) + self._switcher.set_row_visible('information', True)
def _add_groupchat_settings(self) -> None: main_box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=24) @@ -174,6 +195,7 @@ def _add_groupchat_settings(self) -> None: scrolled_window.add(main_box)
self._ui.settings_box.add(scrolled_window) + self._switcher.set_row_visible('settings', True)
def _add_groupchat_encryption(self) -> None: if (self._contact.is_groupchat and @@ -184,18 +206,22 @@ def _add_groupchat_encryption(self) -> None:
self._ui.encryption_box.add( OMEMOTrustManager(self._contact.account, self._contact)) + self._switcher.set_row_visible('encryption-omemo', True)
def _add_affiliations(self) -> None: affiliations = GroupchatAffiliation(self._client, self._contact) self._ui.affiliation_box.add(affiliations) + self._switcher.set_row_visible('affiliations', True)
def _add_outcasts(self) -> None: affiliations = GroupchatOutcasts(self._client, self._contact) self._ui.outcasts_box.add(affiliations) + self._switcher.set_row_visible('outcasts', True)
def _add_configuration(self) -> None: config = GroupchatConfig(self._client, self._contact) self._ui.configuration_box.add(config) + self._switcher.set_row_visible('config', True)
def _on_key_press(self, _widget: GroupchatDetails,
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/commit/63eb1041e1ff65fd3b7fa69ab95f1bb71...