Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
575e7b91 by wurstsalat at 2025-04-27T17:43:19+02:00
imprv: Account sidebar: Indicate connectivity issues

Fixes #12262

- - - - -


3 changed files:

- gajim/common/const.py
- gajim/data/style/gajim.css
- gajim/gtk/account_side_bar.py


Changes:

=====================================
gajim/common/const.py
=====================================
@@ -60,6 +60,7 @@ class AvatarSize(IntEnum):
     START_CHAT = 32
     VCARD_HEADER = 40
     ACCOUNT_SIDE_BAR = 40
+    ACCOUNT_SIDE_BAR_WARNING = 20
     WORKSPACE = 40
     WORKSPACE_EDIT = 100
     CHAT = 48


=====================================
gajim/data/style/gajim.css
=====================================
@@ -454,7 +454,7 @@ .account-sidebar .selection-bar {
     margin-top: 6px;
     margin-bottom: 12px;
 }
-.account-sidebar > box > image {
+.account-sidebar .account-sidebar-image {
     padding: 6px 6px 12px 6px;
 }
 


=====================================
gajim/gtk/account_side_bar.py
=====================================
@@ -224,10 +224,24 @@ def _on_change_status(
         app.app.change_status(status=new_status, account=account)
 
 
-class AccountAvatar(Gtk.Image, EventHelper):
+class AccountAvatar(Gtk.Widget, EventHelper):
     def __init__(self) -> None:
-        Gtk.Image.__init__(self, pixel_size=AvatarSize.ACCOUNT_SIDE_BAR)
+        Gtk.Widget.__init__(self, layout_manager=Gtk.BinLayout())
         EventHelper.__init__(self)
+        self.add_css_class("account-sidebar-image")
+
+        self._avatar_image = Gtk.Image(pixel_size=AvatarSize.ACCOUNT_SIDE_BAR)
+        self._avatar_image.set_parent(self)
+
+        self._connectivity_image = Gtk.Image(
+            icon_name="dialog-warning-symbolic",
+            pixel_size=AvatarSize.ACCOUNT_SIDE_BAR_WARNING,
+            halign=Gtk.Align.END,
+            valign=Gtk.Align.END,
+            visible=False,
+        )
+        self._connectivity_image.set_parent(self)
+        self._connectivity_image.add_css_class("warning-color")
 
         self.register_event("account-enabled", ged.GUI1, 
self._on_account_state)
         self.register_event("account-disabled", ged.GUI1, 
self._on_account_state)
@@ -270,21 +284,36 @@ def _on_our_show(self, _event: ShowChanged) -> None:
 
     def _on_client_state_changed(self, *args: Any) -> None:
         self._update_image()
+        self._update_tooltip()
 
     def _update_tooltip(self) -> None:
         accounts = app.settings.get_active_accounts()
         if len(accounts) == 1:
             account = accounts[0]
             account_label = app.settings.get_account_setting(account, 
"account_label")
-            self.set_tooltip_text(_("Account: %s") % account_label)
+            tooltip_text = _("Account: %s") % account_label
         else:
-            self.set_tooltip_text(_("Accounts"))
+            tooltip_text = _("Accounts")
+
+        if self._has_connectivity_issues():
+            tooltip_text += "\n" + _("There are connectivity issues")
+
+        self.set_tooltip_text(tooltip_text)
 
     def _update_image(self) -> None:
         accounts = app.settings.get_active_accounts()
-        account = accounts[0] if len(accounts) == 1 else None
 
+        self._connectivity_image.set_visible(self._has_connectivity_issues())
+
+        account = accounts[0] if len(accounts) == 1 else None
         texture = app.app.avatar_storage.get_account_button_texture(
             account, AvatarSize.ACCOUNT_SIDE_BAR, self.get_scale_factor()
         )
-        self.set_from_paintable(texture)
+        self._avatar_image.set_from_paintable(texture)
+
+    def _has_connectivity_issues(self) -> bool:
+        for account in app.settings.get_active_accounts():
+            client = app.get_client(account)
+            if client.state.is_disconnected or 
client.state.is_reconnect_scheduled:
+                return True
+        return False



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/575e7b91073fc1d7aa89ac41bdf5664ea2f6a079

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/575e7b91073fc1d7aa89ac41bdf5664ea2f6a079
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to