From 881596c4a5b3689b809cebfee65cd35b23735cd1 Mon Sep 17 00:00:00 2001 From: Evangelos Paterakis Date: Tue, 11 Apr 2023 00:52:07 +0300 Subject: [PATCH 1/3] feat(Widgets.Attachment.Box): make single attachment bigger --- src/Widgets/Attachment/Box.vala | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Widgets/Attachment/Box.vala b/src/Widgets/Attachment/Box.vala index 43ff99e41..783f9df2d 100644 --- a/src/Widgets/Attachment/Box.vala +++ b/src/Widgets/Attachment/Box.vala @@ -41,21 +41,29 @@ public class Tuba.Widgets.Attachment.Box : Adw.Bin { return; } + var single_attachment = list.size == 1; + list.@foreach (item => { try { - var widget = item.to_widget (); + var widget = (Widgets.Attachment.Image) item.to_widget (); box.insert (widget, -1); - attachement_widgets += ((Widgets.Attachment.Image) widget); + attachement_widgets += widget; - ((Widgets.Attachment.Image) widget).on_any_attachment_click.connect (() => open_all_attachments(item.url)); + if (single_attachment) widget.height_request = 256; + widget.on_any_attachment_click.connect (() => open_all_attachments(item.url)); } catch (Oopsie e) { warning(@"Error updating attachements: $(e.message)"); } return true; }); - box.max_children_per_line = 2; - box.min_children_per_line = 2; + if (single_attachment) { + box.max_children_per_line = 1; + box.min_children_per_line = 1; + } else { + box.max_children_per_line = 2; + box.min_children_per_line = 2; + } // if (list.size > 1) { // box.max_children_per_line = 2; // } From 01606bee93f184e47ed2a29fb308ea6a32615eb0 Mon Sep 17 00:00:00 2001 From: Evangelos Paterakis Date: Tue, 11 Apr 2023 02:01:46 +0300 Subject: [PATCH 2/3] feat(Widgets.Attachment.Box): 4:3 --- src/Widgets/Attachment/Box.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Attachment/Box.vala b/src/Widgets/Attachment/Box.vala index 783f9df2d..f8c5f9586 100644 --- a/src/Widgets/Attachment/Box.vala +++ b/src/Widgets/Attachment/Box.vala @@ -49,7 +49,7 @@ public class Tuba.Widgets.Attachment.Box : Adw.Bin { box.insert (widget, -1); attachement_widgets += widget; - if (single_attachment) widget.height_request = 256; + if (single_attachment) widget.height_request = 384; widget.on_any_attachment_click.connect (() => open_all_attachments(item.url)); } catch (Oopsie e) { warning(@"Error updating attachements: $(e.message)"); From 13645fe7edaf57fe4862c820d8d2faef5b96fc47 Mon Sep 17 00:00:00 2001 From: Evangelos Paterakis Date: Thu, 13 Apr 2023 00:07:22 +0300 Subject: [PATCH 3/3] wip: get media size from api --- src/API/Attachment.vala | 1 + src/API/Attachment/Meta.vala | 4 ++++ src/API/Attachment/Meta/Info.vala | 5 +++++ src/API/Attachment/Meta/meson.build | 3 +++ src/API/Attachment/meson.build | 5 +++++ src/API/meson.build | 1 + src/Widgets/Attachment/Box.vala | 9 ++++++++- 7 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/API/Attachment/Meta.vala create mode 100644 src/API/Attachment/Meta/Info.vala create mode 100644 src/API/Attachment/Meta/meson.build create mode 100644 src/API/Attachment/meson.build diff --git a/src/API/Attachment.vala b/src/API/Attachment.vala index 309a5443d..87210e12b 100644 --- a/src/API/Attachment.vala +++ b/src/API/Attachment.vala @@ -9,6 +9,7 @@ public class Tuba.API.Attachment : Entity, Widgetizable { set { this.t_preview_url = value; } get { return (this.t_preview_url == null || this.t_preview_url == "") ? url : t_preview_url; } } + public API.AttachmentMeta? meta { get; set; default=null; } public File? source_file { get; set; } diff --git a/src/API/Attachment/Meta.vala b/src/API/Attachment/Meta.vala new file mode 100644 index 000000000..96475d4d4 --- /dev/null +++ b/src/API/Attachment/Meta.vala @@ -0,0 +1,4 @@ +public class Tuba.API.AttachmentMeta : Entity { + public API.AttachmentMetaInfo? small { get; set; default=null; } + public API.AttachmentMetaInfo? original { get; set; default=null; } +} \ No newline at end of file diff --git a/src/API/Attachment/Meta/Info.vala b/src/API/Attachment/Meta/Info.vala new file mode 100644 index 000000000..11e430e57 --- /dev/null +++ b/src/API/Attachment/Meta/Info.vala @@ -0,0 +1,5 @@ +public class Tuba.API.AttachmentMetaInfo : Entity { + public int64 width { get; set; default=0; } + public int64 height { get; set; default=0; } + public float aspect { get; set; default=0.0f; } +} \ No newline at end of file diff --git a/src/API/Attachment/Meta/meson.build b/src/API/Attachment/Meta/meson.build new file mode 100644 index 000000000..b0691e09c --- /dev/null +++ b/src/API/Attachment/Meta/meson.build @@ -0,0 +1,3 @@ +sources += files( + 'Info.vala', +) diff --git a/src/API/Attachment/meson.build b/src/API/Attachment/meson.build new file mode 100644 index 000000000..20857408f --- /dev/null +++ b/src/API/Attachment/meson.build @@ -0,0 +1,5 @@ +sources += files( + 'Meta.vala', +) + +subdir('Meta') diff --git a/src/API/meson.build b/src/API/meson.build index 28a98625d..4f513c93a 100644 --- a/src/API/meson.build +++ b/src/API/meson.build @@ -21,3 +21,4 @@ sources += files( ) subdir('Instance') +subdir('Attachment') diff --git a/src/Widgets/Attachment/Box.vala b/src/Widgets/Attachment/Box.vala index f8c5f9586..b9c595dc0 100644 --- a/src/Widgets/Attachment/Box.vala +++ b/src/Widgets/Attachment/Box.vala @@ -49,7 +49,14 @@ public class Tuba.Widgets.Attachment.Box : Adw.Bin { box.insert (widget, -1); attachement_widgets += widget; - if (single_attachment) widget.height_request = 384; + if (single_attachment) { + if (item != null && item.meta != null && item.meta.small != null && item.meta.small.width != 0 && item.meta.small.height != 0 && item.meta.small.aspect != 0.0f) { + // var is_landscape = item.meta.small.width > item.meta.small.height; + // widget.height_request = + } else { + widget.height_request = 384; + } + } widget.on_any_attachment_click.connect (() => open_all_attachments(item.url)); } catch (Oopsie e) { warning(@"Error updating attachements: $(e.message)");