diff options
author | wurstsalat <mailtrash@posteo.de> | 2023-10-29 14:02:48 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2023-10-29 14:03:12 +0300 |
commit | 797494a2fabb7a51c8ac5557e3255fa15d07cf65 (patch) | |
tree | 08d28088b4921c1a332cb1231a831953cd0b9731 | |
parent | 9ba49134bea777f1de403cc886320e4c442236fd (diff) |
imprv: Allow GroupChatInfoScrolled to be set with minimal information
Fixes #11662
-rw-r--r-- | gajim/data/gui/groupchat_info_scrolled.ui | 9 | ||||
-rw-r--r-- | gajim/gtk/builder.pyi | 1 | ||||
-rw-r--r-- | gajim/gtk/groupchat_details.py | 8 | ||||
-rw-r--r-- | gajim/gtk/groupchat_info.py | 22 |
4 files changed, 28 insertions, 12 deletions
diff --git a/gajim/data/gui/groupchat_info_scrolled.ui b/gajim/data/gui/groupchat_info_scrolled.ui index 48a7131dc..e82f99e97 100644 --- a/gajim/data/gui/groupchat_info_scrolled.ui +++ b/gajim/data/gui/groupchat_info_scrolled.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- Generated with glade 3.40.0 --> <interface> - <requires lib="gtk+" version="3.20"/> + <requires lib="gtk+" version="3.24"/> <!-- n-columns=2 n-rows=10 --> <object class="GtkGrid" id="info_grid"> <property name="visible">True</property> @@ -240,12 +240,12 @@ <property name="can-focus">False</property> <property name="no-show-all">True</property> <property name="halign">start</property> - <property name="max-width-chars">40</property> <property name="valign">start</property> <property name="use-markup">True</property> <property name="wrap">True</property> <property name="wrap-mode">word-char</property> <property name="selectable">True</property> + <property name="max-width-chars">40</property> <property name="xalign">0</property> <signal name="activate-link" handler="_on_activate_subject_link" swapped="no"/> </object> @@ -311,10 +311,11 @@ </packing> </child> <child> - <object class="GtkButton"> + <object class="GtkButton" id="address_copy_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="receives-default">False</property> <property name="tooltip-text" translatable="yes">Copy Address</property> <property name="halign">start</property> <property name="valign">start</property> diff --git a/gajim/gtk/builder.pyi b/gajim/gtk/builder.pyi index f11125ffe..cd4e07c5b 100644 --- a/gajim/gtk/builder.pyi +++ b/gajim/gtk/builder.pyi @@ -466,6 +466,7 @@ class GroupchatInfoScrolledBuilder(Builder): name: Gtk.Label avatar_image: Gtk.Image address: Gtk.Label + address_copy_button: Gtk.Button class GroupchatInviterBuilder(Builder): diff --git a/gajim/gtk/groupchat_details.py b/gajim/gtk/groupchat_details.py index 436e6d83e..a51e91223 100644 --- a/gajim/gtk/groupchat_details.py +++ b/gajim/gtk/groupchat_details.py @@ -111,9 +111,7 @@ class GroupchatDetails(Gtk.ApplicationWindow): ) -> None: self._ui.name_entry.set_text(self._contact.name) - disco_info = self._contact.get_disco() - assert disco_info is not None - self._groupchat_info.set_from_disco_info(disco_info) + self._groupchat_info.set_info_from_contact(self._contact) def _on_stack_child_changed(self, _widget: Gtk.Stack, @@ -159,9 +157,7 @@ class GroupchatDetails(Gtk.ApplicationWindow): self._groupchat_info = GroupChatInfoScrolled( self._contact.account, width=600) self._groupchat_info.set_halign(Gtk.Align.FILL) - disco_info = self._contact.get_disco() - assert disco_info is not None - self._groupchat_info.set_from_disco_info(disco_info) + self._groupchat_info.set_info_from_contact(self._contact) self._groupchat_info.set_subject(self._contact.subject) self._ui.info_box.add(self._groupchat_info) self._switcher.set_row_visible('information', True) diff --git a/gajim/gtk/groupchat_info.py b/gajim/gtk/groupchat_info.py index 48db2e5ab..c72e9dcc4 100644 --- a/gajim/gtk/groupchat_info.py +++ b/gajim/gtk/groupchat_info.py @@ -12,6 +12,7 @@ # You should have received a copy of the GNU General Public License # along with Gajim. If not, see <http://www.gnu.org/licenses/>. +from __future__ import annotations import logging import time @@ -32,6 +33,7 @@ from gajim.common.helpers import get_groupchat_name from gajim.common.helpers import open_uri from gajim.common.i18n import _ from gajim.common.i18n import p_ +from gajim.common.modules.contacts import GroupchatContact from gajim.gtk.builder import get_builder from gajim.gtk.util import make_href_markup @@ -139,7 +141,11 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow): self._account = account def get_jid(self) -> JID | None: - return self._info.jid + jid = self._ui.address_label.get_text() + if not jid: + return None + + return JID.from_string(self._ui.address_label.get_text()) def set_subject(self, muc_subject: MucSubject | None) -> None: if muc_subject is None: @@ -161,6 +167,16 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow): self._ui.subject.set_visible(has_subject) self._ui.subject_label.set_visible(has_subject) + def set_info_from_contact(self, contact: GroupchatContact) -> None: + disco_info = contact.get_disco() + if disco_info is not None: + self.set_from_disco_info(disco_info) + return + + self._ui.address.set_text(str(contact.jid)) + self._ui.address.set_tooltip_text(str(contact.jid)) + self._ui.address_copy_button.set_sensitive(True) + def set_from_disco_info(self, info: DiscoInfo) -> None: self._info = info # Set name @@ -188,6 +204,7 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow): # Set address self._ui.address.set_text(str(info.jid)) self._ui.address.set_tooltip_text(str(info.jid)) + self._ui.address_copy_button.set_sensitive(True) if self._minimal: return @@ -257,8 +274,9 @@ class GroupChatInfoScrolled(Gtk.ScrolledWindow): grid.show_all() def _on_copy_address(self, _button: Gtk.Button) -> None: + jid = JID.from_string(self._ui.address_label.get_text()) clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD) - clipboard.set_text(self._info.jid.to_iri(XmppUriQuery.JOIN.value), -1) + clipboard.set_text(jid.to_iri(XmppUriQuery.JOIN.value), -1) @staticmethod def _on_activate_log_link(button: Gtk.LinkButton) -> int: |