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-04-16 16:09:18 +0300
committerwurstsalat <mailtrash@posteo.de>2023-04-16 16:10:03 +0300
commit45219590f87036001bbc591a80ce8818fd0014d0 (patch)
tree78e96fb6424a5d6a2eaf1315908c60c3492d3c06
parent047f5138361780a086511315305fa4c4b3e97c36 (diff)
imprv: ChatBanner: Add QR code for sharing JIDs
Fixes #11429
-rw-r--r--gajim/data/gui/chat_banner.ui20
-rw-r--r--gajim/gtk/builder.pyi1
-rw-r--r--gajim/gtk/chat_banner.py9
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}'