diff options
author | wurstsalat <mailtrash@posteo.de> | 2023-04-16 16:09:18 +0300 |
---|---|---|
committer | wurstsalat <mailtrash@posteo.de> | 2023-04-16 16:10:03 +0300 |
commit | 45219590f87036001bbc591a80ce8818fd0014d0 (patch) | |
tree | 78e96fb6424a5d6a2eaf1315908c60c3492d3c06 | |
parent | 047f5138361780a086511315305fa4c4b3e97c36 (diff) |
imprv: ChatBanner: Add QR code for sharing JIDs
Fixes #11429
-rw-r--r-- | gajim/data/gui/chat_banner.ui | 20 | ||||
-rw-r--r-- | gajim/gtk/builder.pyi | 1 | ||||
-rw-r--r-- | gajim/gtk/chat_banner.py | 9 |
3 files changed, 29 insertions, 1 deletions
diff --git a/gajim/data/gui/chat_banner.ui b/gajim/data/gui/chat_banner.ui index 653875be7..b92657b54 100644 --- a/gajim/data/gui/chat_banner.ui +++ b/gajim/data/gui/chat_banner.ui @@ -9,7 +9,24 @@ <property name="visible">True</property> <property name="can-focus">False</property> <property name="orientation">vertical</property> - <property name="spacing">6</property> + <property name="spacing">12</property> + <child> + <object class="GtkImage" id="qr_code_image"> + <property name="visible">True</property> + <property name="can-focus">False</property> + <property name="halign">center</property> + <property name="icon_size">6</property> + <style> + <class name="border"/> + </style> + </object> + <packing> + <property name="expand">False</property> + <property name="fill">True</property> + <property name="pack-type">end</property> + <property name="position">0</property> + </packing> + </child> <child> <object class="GtkBox"> <property name="visible">True</property> @@ -226,6 +243,7 @@ <property name="tooltip-text" translatable="yes">Share Contact…</property> <property name="valign">center</property> <property name="popover">share_popover</property> + <signal name="clicked" handler="_on_share_clicked" swapped="no"/> <child> <object class="GtkImage"> <property name="visible">True</property> diff --git a/gajim/gtk/builder.pyi b/gajim/gtk/builder.pyi index f0d2fbabf..224ad1d46 100644 --- a/gajim/gtk/builder.pyi +++ b/gajim/gtk/builder.pyi @@ -187,6 +187,7 @@ class CertificateBuilder(Builder): class ChatBannerBuilder(Builder): share_popover: Gtk.Popover + qr_code_image: Gtk.Image jid_label: Gtk.Label banner_box: Gtk.Box avatar_image: Gtk.Image diff --git a/gajim/gtk/chat_banner.py b/gajim/gtk/chat_banner.py index 249e5823a..a70f7283c 100644 --- a/gajim/gtk/chat_banner.py +++ b/gajim/gtk/chat_banner.py @@ -32,6 +32,7 @@ from gajim.common.events import BookmarksReceived from gajim.common.events import MessageReceived from gajim.common.events import MucDiscoUpdate from gajim.common.ged import EventHelper +from gajim.common.helpers import generate_qr_code from gajim.common.i18n import _ from gajim.common.modules.contacts import BareContact from gajim.common.modules.contacts import GroupchatContact @@ -330,6 +331,14 @@ class ChatBanner(Gtk.Box, EventHelper): self._ui.share_menu_button.set_sensitive(True) self._ui.jid_label.set_text(str(self._contact.jid)) + def _on_share_clicked(self, _button: Gtk.Button) -> None: + # Generate QR code on demand (i.e. not when switching chats) + assert self._contact is not None + text = f'xmpp:{self._contact.jid}' + if self._contact.is_groupchat: + text = f'{text}?join' + self._ui.qr_code_image.set_from_pixbuf(generate_qr_code(text)) + def _on_copy_jid_clicked(self, _button: Gtk.Button) -> None: assert self._contact is not None text = f'xmpp:{self._contact.jid}' |