diff options
Diffstat (limited to 'gajim/gtk/util.py')
-rw-r--r-- | gajim/gtk/util.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gajim/gtk/util.py b/gajim/gtk/util.py index 90bdd53a6..5ce5c1d2f 100644 --- a/gajim/gtk/util.py +++ b/gajim/gtk/util.py @@ -23,6 +23,7 @@ import logging import math import sys import textwrap +from datetime import datetime from functools import lru_cache from functools import wraps from importlib import import_module @@ -52,6 +53,7 @@ from gajim.common.const import Display from gajim.common.const import LOCATION_DATA from gajim.common.const import StyleAttr from gajim.common.ged import EventHelper as CommonEventHelper +from gajim.common.helpers import format_idle_time from gajim.common.helpers import URL_REGEX from gajim.common.i18n import _ from gajim.common.modules.contacts import GroupchatParticipant @@ -794,6 +796,29 @@ def wrap_with_event_box(klass: Any) -> Any: return klass_wrapper +class IdleBadge(Gtk.Label): + def __init__(self, idle: datetime | None = None) -> None: + Gtk.Label.__init__( + self, + valign=Gtk.Align.START, + halign=Gtk.Align.END, + hexpand=True, + ellipsize=Pango.EllipsizeMode.NONE, + no_show_all=True, + ) + self.set_size_request(50, -1) + self.get_style_context().add_class('idle-time') + if idle is not None: + self.set_idle(idle) + + self.show() + + def set_idle(self, idle: datetime) -> None: + self.set_text(_('Last seen %s') % format_idle_time(idle)) + format_string = app.settings.get('date_time_format') + self.set_tooltip_text(idle.strftime(format_string)) + + class AccountBadge(Gtk.Label): def __init__(self, account: str | None = None) -> None: Gtk.Label.__init__(self) |