Philipp Hörist pushed to branch master at gajim / gajim
Commits:
59e6de35 by Philipp Hörist at 2022-10-10T22:01:37+02:00
imprv: Avatar: Follow modernxmpps suggestions for color generation
Single Chat: Bare JID
Private Group Chat: Bare JID
Public Group Chat: Resource
- - - - -
2 changed files:
- gajim/gtk/avatar.py
- gajim/gtk/util.py
Changes:
=====================================
gajim/gtk/avatar.py
=====================================
@@ -41,9 +41,9 @@
from .const import DEFAULT_WORKSPACE_COLOR
from .emoji_data_gtk import get_emoji_data
+from .util import get_contact_color
from .util import load_icon_surface
from .util import load_pixbuf
-from .util import text_to_color
from .util import scale_with_ratio
from .util import get_css_show_class
from .util import convert_rgb_string_to_float
@@ -124,12 +124,11 @@ def generate_avatar(letters: str,
@lru_cache(maxsize=None)
def generate_default_avatar(letter: str,
- color_string: str,
+ color: tuple[float, float, float],
size: int,
scale: int,
style: str = 'circle') -> cairo.ImageSurface:
- color = text_to_color(color_string)
surface = generate_avatar(letter, color, size, scale)
surface = clip(surface, style)
surface.set_device_scale(scale, scale)
@@ -414,11 +413,10 @@ def get_surface(self,
return surface
name = contact.name
- color_string = str(contact.jid)
-
+ color = get_contact_color(contact)
letter = generate_avatar_letter(name)
surface = generate_default_avatar(
- letter, color_string, size, scale, style=style)
+ letter, color, size, scale, style=style)
if show is not None:
surface = add_status_to_avatar(surface, show)
self._cache[jid][(size, scale, show)] = surface
@@ -457,9 +455,12 @@ def get_muc_surface(self,
app.storage.cache.set_muc(jid, 'avatar', None)
client = app.get_client(account)
+ contact = client.get_module('Contacts').get_bare_contact(jid)
+
name = get_groupchat_name(client, jid)
+ color = get_contact_color(contact)
letter = generate_avatar_letter(name)
- surface = generate_default_avatar(letter, str(jid), size, scale, style)
+ surface = generate_default_avatar(letter, color, size, scale, style)
self._cache[jid][(size, scale, None)] = surface
return surface
=====================================
gajim/gtk/util.py
=====================================
@@ -48,12 +48,14 @@
from gajim.common import app
from gajim.common import configpaths
+from gajim.common import types
from gajim.common.i18n import _
from gajim.common.helpers import URL_REGEX
from gajim.common.const import LOCATION_DATA
from gajim.common.const import Display
from gajim.common.const import StyleAttr
from gajim.common.ged import EventHelper as CommonEventHelper
+from gajim.common.modules.contacts import GroupchatParticipant
from gajim.common.styling import PlainBlock
from gajim.common.structs import VariantMixin
@@ -507,6 +509,19 @@ def text_to_color(text: str) -> tuple[float, float, float]:
return nbxmpp.util.text_to_color(text, background) # type: ignore
+def get_contact_color(contact: types.ChatContactT
+ ) -> tuple[float, float, float]:
+
+ if isinstance(contact, GroupchatParticipant):
+ if contact.room.muc_context in (None, 'public'):
+ return text_to_color(contact.name)
+
+ if contact.real_jid is not None:
+ return text_to_color(str(contact.real_jid))
+
+ return text_to_color(str(contact.jid))
+
+
def get_color_for_account(account: str) -> str:
col_r, col_g, col_b = text_to_color(account)
rgba = Gdk.RGBA(red=col_r, green=col_g, blue=col_b)
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/59e6de350b04cf07516483dcaba76e6cc9d72005
--
View it on GitLab:
https://dev.gajim.org/gajim/gajim/-/commit/59e6de350b04cf07516483dcaba76e6cc9d72005
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