Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/gajim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwurstsalat <mailtrash@posteo.de>2023-10-29 14:02:48 +0300
committerwurstsalat <mailtrash@posteo.de>2023-10-29 14:03:12 +0300
commit797494a2fabb7a51c8ac5557e3255fa15d07cf65 (patch)
tree08d28088b4921c1a332cb1231a831953cd0b9731
parent9ba49134bea777f1de403cc886320e4c442236fd (diff)
imprv: Allow GroupChatInfoScrolled to be set with minimal information
Fixes #11662
-rw-r--r--gajim/data/gui/groupchat_info_scrolled.ui9
-rw-r--r--gajim/gtk/builder.pyi1
-rw-r--r--gajim/gtk/groupchat_details.py8
-rw-r--r--gajim/gtk/groupchat_info.py22
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: