mirror of
https://github.com/damus-io/notecrumbs.git
synced 2024-09-29 18:10:43 +00:00
ui: consistent quote text positioning
This commit is contained in:
parent
6cc648652a
commit
3b566b23f0
114
src/render.rs
114
src/render.rs
@ -1,5 +1,8 @@
|
|||||||
use crate::{fonts, Error, Notecrumbs};
|
use crate::{fonts, Error, Notecrumbs};
|
||||||
use egui::{Color32, ColorImage, FontId, RichText, Visuals};
|
use egui::{
|
||||||
|
pos2, Color32, ColorImage, FontId, Label, Rect, RichText, Rounding, TextureHandle, Vec2,
|
||||||
|
Visuals,
|
||||||
|
};
|
||||||
use log::{debug, info, warn};
|
use log::{debug, info, warn};
|
||||||
use nostr_sdk::nips::nip19::Nip19;
|
use nostr_sdk::nips::nip19::Nip19;
|
||||||
use nostr_sdk::prelude::*;
|
use nostr_sdk::prelude::*;
|
||||||
@ -345,28 +348,64 @@ fn wrapped_body(ui: &mut egui::Ui, text: &str) {
|
|||||||
ui.label(job);
|
ui.label(job);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn centered_layout() -> egui::Layout {
|
fn right_aligned() -> egui::Layout {
|
||||||
|
use egui::{Align, Direction, Layout};
|
||||||
|
|
||||||
|
Layout {
|
||||||
|
main_dir: Direction::RightToLeft,
|
||||||
|
main_wrap: false,
|
||||||
|
main_align: Align::Center,
|
||||||
|
main_justify: false,
|
||||||
|
cross_align: Align::Center,
|
||||||
|
cross_justify: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn note_frame_align() -> egui::Layout {
|
||||||
use egui::{Align, Direction, Layout};
|
use egui::{Align, Direction, Layout};
|
||||||
|
|
||||||
Layout {
|
Layout {
|
||||||
main_dir: Direction::TopDown,
|
main_dir: Direction::TopDown,
|
||||||
main_wrap: true,
|
main_wrap: false,
|
||||||
main_align: Align::Center,
|
main_align: Align::Center,
|
||||||
main_justify: true,
|
main_justify: false,
|
||||||
cross_align: Align::Center,
|
cross_align: Align::Center,
|
||||||
cross_justify: true,
|
cross_justify: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn quoted_text_align() -> egui::Layout {
|
||||||
|
use egui::{Align, Direction, Layout};
|
||||||
|
|
||||||
|
Layout {
|
||||||
|
main_dir: Direction::TopDown,
|
||||||
|
main_wrap: false,
|
||||||
|
main_align: Align::Center,
|
||||||
|
main_justify: false,
|
||||||
|
cross_align: Align::Center,
|
||||||
|
cross_justify: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn note_ui(app: &Notecrumbs, ctx: &egui::Context, note: &NoteRenderData) {
|
fn note_ui(app: &Notecrumbs, ctx: &egui::Context, note: &NoteRenderData) {
|
||||||
use egui::{FontId, Label, RichText, Rounding};
|
|
||||||
|
|
||||||
let pfp = ctx.load_texture("pfp", note.profile.pfp.clone(), Default::default());
|
|
||||||
setup_visuals(&app.font_data, ctx);
|
setup_visuals(&app.font_data, ctx);
|
||||||
|
|
||||||
let outer_margin = 40.0;
|
let outer_margin = 40.0;
|
||||||
let inner_margin = 100.0;
|
let inner_margin = 60.0;
|
||||||
|
let canvas_width = 1200.0;
|
||||||
|
let canvas_height = 630.0;
|
||||||
|
let canvas_size = Vec2::new(canvas_width, canvas_height);
|
||||||
|
|
||||||
let total_margin = outer_margin + inner_margin;
|
let total_margin = outer_margin + inner_margin;
|
||||||
|
let pfp = ctx.load_texture("pfp", note.profile.pfp.clone(), Default::default());
|
||||||
|
|
||||||
|
/*
|
||||||
|
let desired_height = canvas_height - total_margin * 2.0;
|
||||||
|
let desired_width = canvas_width - total_margin * 2.0;
|
||||||
|
let desired_size = Vec2::new(desired_width, desired_height);
|
||||||
|
ui.set_min_size(desired_size);
|
||||||
|
ui.set_max_size(desired_size);
|
||||||
|
*/
|
||||||
|
|
||||||
egui::CentralPanel::default()
|
egui::CentralPanel::default()
|
||||||
.frame(egui::Frame::default().fill(Color32::from_rgb(0x43, 0x20, 0x62)))
|
.frame(egui::Frame::default().fill(Color32::from_rgb(0x43, 0x20, 0x62)))
|
||||||
@ -377,29 +416,52 @@ fn note_ui(app: &Notecrumbs, ctx: &egui::Context, note: &NoteRenderData) {
|
|||||||
.outer_margin(outer_margin)
|
.outer_margin(outer_margin)
|
||||||
.inner_margin(inner_margin)
|
.inner_margin(inner_margin)
|
||||||
.show(ui, |ui| {
|
.show(ui, |ui| {
|
||||||
let desired_height = 630.0 - total_margin * 2.0;
|
let desired_height = canvas_height - total_margin * 2.0;
|
||||||
let desired_width = 1200.0 - total_margin * 2.0;
|
let desired_width = canvas_width - total_margin * 2.0;
|
||||||
let desired_size = egui::vec2(desired_width, desired_height);
|
let desired_size = Vec2::new(desired_width, desired_height);
|
||||||
ui.set_min_height(desired_height); // Set minimum height for the container
|
ui.set_max_size(desired_size);
|
||||||
ui.set_min_width(desired_width); // Set minimum width for the container
|
|
||||||
//
|
|
||||||
ui.centered_and_justified(|ui| {
|
|
||||||
egui::ScrollArea::vertical().show(ui, |ui| {
|
|
||||||
//ui.spacing_mut().item_spacing = egui::vec2(0.0, 0.0);
|
|
||||||
|
|
||||||
//ui.vertical(|ui| {
|
ui.with_layout(note_frame_align(), |ui| {
|
||||||
wrapped_body(ui, ¬e.note.content);
|
//egui::ScrollArea::vertical().show(ui, |ui| {
|
||||||
ui.horizontal(|ui| {
|
ui.spacing_mut().item_spacing = Vec2::new(10.0, 50.0);
|
||||||
ui.image(&pfp);
|
|
||||||
render_username(app, ui, ¬e.profile);
|
ui.horizontal(|ui| {
|
||||||
|
ui.with_layout(right_aligned(), |ui| {
|
||||||
|
ui.label(RichText::new("damus.io").size(20.0));
|
||||||
});
|
});
|
||||||
//});
|
|
||||||
});
|
});
|
||||||
})
|
|
||||||
})
|
ui.vertical(|ui| {
|
||||||
|
ui.set_max_size(Vec2::new(desired_width, desired_height / 1.8));
|
||||||
|
ui.centered_and_justified(|ui| {
|
||||||
|
// only one widget is allowed in here
|
||||||
|
wrapped_body(ui, ¬e.note.content);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.horizontal(|ui| {
|
||||||
|
ui.image(&pfp);
|
||||||
|
render_username(app, ui, ¬e.profile);
|
||||||
|
ui.with_layout(right_aligned(), discuss_on_damus);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn discuss_on_damus(ui: &mut egui::Ui) {
|
||||||
|
let button = egui::Button::new(
|
||||||
|
RichText::new("Discuss on Damus ➡")
|
||||||
|
.size(20.0)
|
||||||
|
.color(Color32::BLACK),
|
||||||
|
)
|
||||||
|
.rounding(50.0)
|
||||||
|
.min_size(Vec2::new(305.0, 64.0))
|
||||||
|
.fill(Color32::WHITE);
|
||||||
|
|
||||||
|
ui.add(button);
|
||||||
|
}
|
||||||
|
|
||||||
fn profile_ui(app: &Notecrumbs, ctx: &egui::Context, profile: &ProfileRenderData) {
|
fn profile_ui(app: &Notecrumbs, ctx: &egui::Context, profile: &ProfileRenderData) {
|
||||||
use egui::{FontId, RichText};
|
use egui::{FontId, RichText};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user