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]