From 7be279c299582cfa15fc3b55434a47acebef9412 Mon Sep 17 00:00:00 2001 From: Chris Cochrun Date: Thu, 31 Oct 2024 12:01:16 -0500 Subject: [PATCH] adding presenter ui --- src/ui/mod.rs | 1 + src/ui/presenter.rs | 60 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 src/ui/mod.rs create mode 100644 src/ui/presenter.rs diff --git a/src/ui/mod.rs b/src/ui/mod.rs new file mode 100644 index 0000000..642e8f7 --- /dev/null +++ b/src/ui/mod.rs @@ -0,0 +1 @@ +pub mod presenter; diff --git a/src/ui/presenter.rs b/src/ui/presenter.rs new file mode 100644 index 0000000..b8925fc --- /dev/null +++ b/src/ui/presenter.rs @@ -0,0 +1,60 @@ +use cosmic::{ + iced::{widget::text, ContentFit, Length}, + iced_widget::stack, + prelude::*, + widget::{image, Container}, + Task, +}; +use tracing::debug; + +use crate::Slide; + +#[derive(Default, Clone, Debug)] +pub(crate) struct Presenter { + slides: Vec, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub(crate) enum Message { + NextSlide, + PrevSlide, + SlideChange(u8), +} + +impl Presenter { + pub fn update(&mut self, message: Message) -> Task> { + match message { + Message::NextSlide => { + debug!("next slide"); + Task::none() + } + Message::PrevSlide => { + debug!("prev slide"); + Task::none() + } + Message::SlideChange(id) => { + debug!(id, "slide changed"); + Task::none() + } + } + } + + pub fn view(&self) -> Element { + // let window = self.windows.iter().position(|w| *w == id).unwrap(); + // if let Some(_window) = self.windows.get(window) {} + // let video = Video::new(&Url::parse("/home/chris/vids/test/camprules2024.mp4").unwrap()) + let text = text!("This is frodo").size(50); + let text = Container::new(text).center(Length::Fill); + let image = Container::new( + image("/home/chris/pics/frodo.jpg") + .content_fit(ContentFit::Cover) + .width(Length::Fill) + .height(Length::Fill), + ); + // let video = Container::new(VideoPlayer::new(&video)) + // .width(Length::Fill) + // .height(Length::Fill); + let stack = stack!(image, text).width(Length::Fill).height(Length::Fill); + stack.into() + } +}