Daniel Brötzmann pushed to branch master at gajim / gajim
Commits:
0f5af752 by wurstsalat at 2023-06-08T20:34:00+02:00
fix: CreateGroupchatWindow: Improve handling of MUC service availability
Fixes #11557
- - - - -
3 changed files:
- gajim/data/gui/groupchat_creation.ui
- gajim/gtk/builder.pyi
- gajim/gtk/groupchat_creation.py
Changes:
=====================================
gajim/data/gui/groupchat_creation.ui
=====================================
@@ -341,6 +341,23 @@
<property name="position">2</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="error_label">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="wrap">True</property>
+ <property name="max-width-chars">38</property>
+ <style>
+ <class name="warning-color"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="left-attach">0</property>
=====================================
gajim/gtk/builder.pyi
=====================================
@@ -406,6 +406,7 @@ class GroupchatCreationBuilder(Builder):
private_radio: Gtk.RadioButton
public_radio: Gtk.RadioButton
address_entry: Gtk.Entry
+ error_label: Gtk.Label
spinner: Gtk.Spinner
create_button: Gtk.Button
=====================================
gajim/gtk/groupchat_creation.py
=====================================
@@ -137,7 +137,10 @@ def _fill_placeholders(self) -> None:
def _get_muc_service_jid(self) -> str:
assert self._account is not None
client = app.get_client(self._account)
- return str(client.get_module('MUC').service_jid or 'muc.example.com')
+ service_jid = client.get_module('MUC').service_jid
+ if service_jid is None:
+ return ''
+ return str(service_jid)
def _on_key_press(self, _widget: Gtk.Widget, event: Gdk.EventKey) -> None:
if event.keyval == Gdk.KEY_Escape:
@@ -153,9 +156,19 @@ def _on_account_combo_changed(self, combo: Gtk.ComboBox)
-> None:
self._account = model[iter_][0]
self._fill_placeholders()
+ self._validate_jid(self._ui.address_entry.get_text())
+
+ if not self._get_muc_service_jid():
+ self._set_warning(
+ _('Your server does not provide a group chat service. '
+ 'Please try with a different server.'))
+ self._ui.advanced_switch.set_active(True)
+ else:
+ self._ui.error_label.hide()
+
def _validate_jid(self, text: str) -> None:
if not text:
- self._set_warning_icon(False)
+ self._ui.error_label.hide()
self._ui.create_button.set_sensitive(False)
return
@@ -167,7 +180,7 @@ def _validate_jid(self, text: str) -> None:
except ValueError:
self._set_warning(_('Invalid Address'))
else:
- self._set_warning_icon(False)
+ self._ui.error_label.hide()
self._ui.create_button.set_sensitive(True)
def _set_processing_state(self, enabled: bool) -> None:
@@ -178,18 +191,10 @@ def _set_processing_state(self, enabled: bool) -> None:
self._ui.spinner.stop()
self._ui.grid.set_sensitive(not enabled)
- def _set_warning_icon(self, enabled: bool) -> None:
- icon = 'dialog-warning-symbolic' if enabled else None
- self._ui.address_entry.set_icon_from_icon_name(
- Gtk.EntryIconPosition.SECONDARY, icon)
-
- def _set_warning_tooltip(self, text: str) -> None:
- self._ui.address_entry.set_icon_tooltip_text(
- Gtk.EntryIconPosition.SECONDARY, text)
-
def _set_warning(self, text: str) -> None:
- self._set_warning_icon(True)
- self._set_warning_tooltip(text)
+ self._ui.error_label.set_text(text)
+ self._ui.error_label.show()
+ self._ui.advanced_switch.set_active(True)
self._ui.create_button.set_sensitive(False)
def _set_warning_from_error(self, error: StanzaError) -> None:
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/0f5af752c7eeb5ab47566f651586aef2d00103e4
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/0f5af752c7eeb5ab47566f651586aef2d00103e4
You're receiving this email because of your account on dev.gajim.org.
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits