From b9a9dda2335717c3902cab4bab61c0df9b57866e Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Wed, 17 Sep 2025 06:04:28 -0500 Subject: [PATCH 1/2] back to song_editor looking right --- src/ui/library.rs | 23 ++++++++++- src/ui/presenter.rs | 12 ++---- src/ui/song_editor.rs | 92 +++++++++++++++++++++---------------------- 3 files changed, 72 insertions(+), 55 deletions(-) diff --git a/src/ui/library.rs b/src/ui/library.rs index 7d0e4c5..3e14fef 100644 --- a/src/ui/library.rs +++ b/src/ui/library.rs @@ -129,7 +129,6 @@ impl<'a> Library { pub fn update(&'a mut self, message: Message) -> Action { match message { - Message::AddItem => (), Message::None => (), Message::DeleteItem((kind, index)) => { match kind { @@ -164,6 +163,27 @@ impl<'a> Library { } }; } + Message::AddItem => { + let kind = + self.library_open.unwrap_or(LibraryKind::Song); + let item = match kind { + LibraryKind::Song => { + let song = Song::default(); + self.song_library + .add_item(song) + .map(|_| { + let index = + self.song_library.items.len(); + (LibraryKind::Song, index as i32) + }) + .ok() + } + LibraryKind::Video => todo!(), + LibraryKind::Image => todo!(), + LibraryKind::Presentation => todo!(), + }; + return self.update(Message::OpenItem(item)); + } Message::OpenItem(item) => { debug!(?item); self.editing_item = item; @@ -516,6 +536,7 @@ impl<'a> Library { let library_toolbar = rowm!( text_input("Search...", ""), button::icon(icon::from_name("add")) + .on_press(Message::AddItem) ); let library_column = column![library_toolbar, items].spacing(3); diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs index 194b203..baed433 100644 --- a/src/ui/presenter.rs +++ b/src/ui/presenter.rs @@ -397,9 +397,8 @@ impl Presenter { pub fn view(&self) -> Element { slide_view( - &self.current_slide, + self.current_slide.clone(), &self.video, - self.current_font, false, true, ) @@ -407,9 +406,8 @@ impl Presenter { pub fn view_preview(&self) -> Element { slide_view( - &self.current_slide, + self.current_slide.clone(), &self.video, - self.current_font, false, false, ) @@ -443,9 +441,8 @@ impl Presenter { ); let container = slide_view( - slide, + slide.clone(), &self.video, - font, true, false, ); @@ -705,9 +702,8 @@ fn scale_font(font_size: f32, width: f32) -> f32 { } pub(crate) fn slide_view<'a>( - slide: &'a Slide, + slide: Slide, video: &'a Option