From 2ba1fe874070fc372c1a522c5c5b97173fbe1459 Mon Sep 17 00:00:00 2001 From: frosty Date: Wed, 26 Aug 2026 15:01:29 -0400 Subject: feat: add tweaks page to preferences, as well as an option for avatar roundness --- main/src/ui/widgets/avatar_picture.vala | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'main/src/ui/widgets/avatar_picture.vala') diff --git a/main/src/ui/widgets/avatar_picture.vala b/main/src/ui/widgets/avatar_picture.vala index 155c9440..18e4d02f 100644 --- a/main/src/ui/widgets/avatar_picture.vala +++ b/main/src/ui/widgets/avatar_picture.vala @@ -217,6 +217,13 @@ public class Dino.Ui.CompatAvatarDrawer { public int width_request { get; set; default = 35; } public string font_family { get; set; default = "Sans"; } + public CompatAvatarDrawer() { + Dino.Application? application = Dino.Application.get_default(); + if (application != null && application.settings != null) { + radius_percent = (float) application.settings.avatar_roundness / 100.0f; + } + } + public Cairo.ImageSurface draw_image_surface() { Cairo.ImageSurface surface = new Cairo.ImageSurface(Cairo.Format.ARGB32, width_request, height_request); draw_on_context(new Cairo.Context(surface)); @@ -337,12 +344,17 @@ public class Dino.Ui.AvatarPicture : Gtk.Widget { private ViewModel.AvatarPictureModel? old_model; private ulong model_tiles_items_changed_handler; + private Binding? avatar_roundness_binding; construct { height_request = 35; width_request = 35; set_css_name("picture"); add_css_class("avatar"); + Dino.Application? application = Dino.Application.get_default(); + if (application != null && application.settings != null) { + avatar_roundness_binding = application.settings.bind_property("avatar-roundness", this, "radius-percent", BindingFlags.SYNC_CREATE, avatar_roundness_to_radius_percent); + } notify["radius-percent"].connect(queue_draw); notify["model"].connect(on_model_changed); check_widget_leak(this); @@ -433,11 +445,20 @@ public class Dino.Ui.AvatarPicture : Gtk.Widget { } public override void dispose() { + if (avatar_roundness_binding != null) { + avatar_roundness_binding.unbind(); + avatar_roundness_binding = null; + } model = null; on_model_changed(); base.dispose(); } + private static bool avatar_roundness_to_radius_percent(Binding binding, Value from_value, ref Value to_value) { + to_value.set_float((float) from_value.get_int() / 100.0f); + return true; + } + private class Tile : Gtk.Widget { public ViewModel.AvatarPictureTileModel? model { get; set; } public Gdk.RGBA background_color { get; set; default = Gdk.RGBA(){ red = 1.0f, green = 1.0f, blue = 1.0f, alpha = 0.0f }; } -- cgit v1.3