aboutsummaryrefslogtreecommitdiff
path: root/main/src/ui/util
diff options
context:
space:
mode:
authorfiaxh <git@lightrise.org>2025-06-14 17:01:15 +0200
committerfiaxh <git@lightrise.org>2025-06-14 17:02:01 +0200
commit1254a753eb3c85f35e5bc322dbe4a3f177e79c88 (patch)
tree4d63fa7cf2cf89455aaa5ecd1ae891907121a5e8 /main/src/ui/util
parent5eabd7ac3805c6dde2ba2c810b73fca14d4fb130 (diff)
Support media elements in data forms
Diffstat (limited to 'main/src/ui/util')
-rw-r--r--main/src/ui/util/data_forms.vala6
-rw-r--r--main/src/ui/util/preference_group.vala6
2 files changed, 12 insertions, 0 deletions
diff --git a/main/src/ui/util/data_forms.vala b/main/src/ui/util/data_forms.vala
index 1b8d3271..dfdef15c 100644
--- a/main/src/ui/util/data_forms.vala
+++ b/main/src/ui/util/data_forms.vala
@@ -115,6 +115,12 @@ public static ViewModel.PreferencesRow.Any? get_data_form_field_view_model(DataF
return null;
}
+ var media_node = field.node.get_subnode("media", "urn:xmpp:media-element");
+ if (media_node != null) {
+ view_model.media_type = media_node.get_attribute("type", "urn:xmpp:media-element");
+ view_model.media_uri = media_node.get_deep_string_content("uri");
+ }
+
view_model.title = label;
return view_model;
}
diff --git a/main/src/ui/util/preference_group.vala b/main/src/ui/util/preference_group.vala
index fca3d677..0a8e37c7 100644
--- a/main/src/ui/util/preference_group.vala
+++ b/main/src/ui/util/preference_group.vala
@@ -1,4 +1,5 @@
using Gee;
+using Gdk;
using Gtk;
using Dino.Entities;
@@ -24,6 +25,11 @@ namespace Dino.Ui.Util {
var entry_view_model = preferences_row as ViewModel.PreferencesRow.Entry;
if (entry_view_model != null) {
Adw.EntryRow view = new Adw.EntryRow() { title = entry_view_model.title, show_apply_button=true };
+ if (preferences_row.media_uri != null) {
+ var bytes = BitsOfBinary.get_data_for_uri(preferences_row.media_uri);
+ Picture picture = new Picture.for_paintable(Texture.from_bytes(bytes));
+ view.add_suffix(picture);
+ }
entry_view_model.bind_property("text", view, "text", BindingFlags.SYNC_CREATE | BindingFlags.BIDIRECTIONAL, (_, from, ref to) => {
var str = (string) from;
to = str ?? "";