working preview bar of all slides
This commit is contained in:
parent
f1c80215ae
commit
6ec2e1b97b
|
@ -550,6 +550,7 @@ impl cosmic::Application for App {
|
||||||
.slide_preview()
|
.slide_preview()
|
||||||
.map(|m| Message::Present(m))
|
.map(|m| Message::Present(m))
|
||||||
)
|
)
|
||||||
|
.clip(true)
|
||||||
.width(Length::Fill)
|
.width(Length::Fill)
|
||||||
.center_y(100)
|
.center_y(100)
|
||||||
];
|
];
|
||||||
|
|
|
@ -7,11 +7,15 @@ use cosmic::{
|
||||||
widget::text,
|
widget::text,
|
||||||
Background, Color, ContentFit, Font, Length,
|
Background, Color, ContentFit, Font, Length,
|
||||||
},
|
},
|
||||||
iced_widget::stack,
|
iced_widget::{
|
||||||
|
scrollable::{Direction, Scrollbar},
|
||||||
|
stack,
|
||||||
|
},
|
||||||
prelude::*,
|
prelude::*,
|
||||||
widget::{
|
widget::{
|
||||||
canvas::path::lyon_path::geom::euclid::num::Floor, container,
|
canvas::path::lyon_path::geom::euclid::num::Floor, container,
|
||||||
image, Container, Responsive, Row, Space,
|
image, mouse_area, scrollable, Container, Responsive, Row,
|
||||||
|
Space,
|
||||||
},
|
},
|
||||||
Task,
|
Task,
|
||||||
};
|
};
|
||||||
|
@ -92,9 +96,8 @@ impl Presenter {
|
||||||
debug!("no more slides");
|
debug!("no more slides");
|
||||||
return Task::none();
|
return Task::none();
|
||||||
}
|
}
|
||||||
self.current_slide_index += 1;
|
|
||||||
self.update(Message::SlideChange(
|
self.update(Message::SlideChange(
|
||||||
self.current_slide_index,
|
self.current_slide_index + 1,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
Message::PrevSlide => {
|
Message::PrevSlide => {
|
||||||
|
@ -103,13 +106,13 @@ impl Presenter {
|
||||||
debug!("beginning slides");
|
debug!("beginning slides");
|
||||||
return Task::none();
|
return Task::none();
|
||||||
}
|
}
|
||||||
self.current_slide_index -= 1;
|
|
||||||
self.update(Message::SlideChange(
|
self.update(Message::SlideChange(
|
||||||
self.current_slide_index,
|
self.current_slide_index - 1,
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
Message::SlideChange(id) => {
|
Message::SlideChange(id) => {
|
||||||
debug!(id, "slide changed");
|
debug!(id, "slide changed");
|
||||||
|
self.current_slide_index = id;
|
||||||
if let Some(slide) = self.slides.get(id as usize) {
|
if let Some(slide) = self.slides.get(id as usize) {
|
||||||
self.current_slide = slide.clone();
|
self.current_slide = slide.clone();
|
||||||
}
|
}
|
||||||
|
@ -185,8 +188,6 @@ impl Presenter {
|
||||||
} else {
|
} else {
|
||||||
50.0
|
50.0
|
||||||
};
|
};
|
||||||
debug!(size.width);
|
|
||||||
debug!(font_size);
|
|
||||||
let text = text(self.current_slide.text())
|
let text = text(self.current_slide.text())
|
||||||
.size(font_size)
|
.size(font_size)
|
||||||
.font(font);
|
.font(font);
|
||||||
|
@ -234,12 +235,17 @@ impl Presenter {
|
||||||
pub fn slide_preview(&self) -> Element<Message> {
|
pub fn slide_preview(&self) -> Element<Message> {
|
||||||
let mut items = vec![];
|
let mut items = vec![];
|
||||||
for slide in self.slides.iter() {
|
for slide in self.slides.iter() {
|
||||||
items.push(Self::slide_delegate(slide));
|
items.push(self.slide_delegate(slide));
|
||||||
}
|
}
|
||||||
Row::from_vec(items).spacing(10).padding(10).into()
|
let row =
|
||||||
|
scrollable(Row::from_vec(items).spacing(10).padding(10))
|
||||||
|
.direction(Direction::Horizontal(Scrollbar::new()))
|
||||||
|
.height(Length::Fill)
|
||||||
|
.width(Length::Fill);
|
||||||
|
row.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn slide_delegate(slide: &Slide) -> Element<Message> {
|
fn slide_delegate(&self, slide: &Slide) -> Element<Message> {
|
||||||
let font_size = if slide.font_size() > 0 {
|
let font_size = if slide.font_size() > 0 {
|
||||||
slide.font_size() as u16
|
slide.font_size() as u16
|
||||||
} else {
|
} else {
|
||||||
|
@ -262,13 +268,23 @@ impl Presenter {
|
||||||
Container::new(Space::new(Length::Fill, Length::Fill))
|
Container::new(Space::new(Length::Fill, Length::Fill))
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Container::new(
|
let delegate = mouse_area(
|
||||||
stack!(container.center(Length::Fill), text)
|
Container::new(
|
||||||
.width(Length::Fill)
|
stack!(container.center(Length::Fill), text)
|
||||||
.height(Length::Fill),
|
.width(Length::Fill)
|
||||||
|
.height(Length::Fill),
|
||||||
|
)
|
||||||
|
.center(Length::Fill)
|
||||||
|
.height(100)
|
||||||
|
.width(100)
|
||||||
|
.padding(10),
|
||||||
)
|
)
|
||||||
.padding(10)
|
.on_press({
|
||||||
.into()
|
let id =
|
||||||
|
self.slides.iter().position(|s| s == slide).unwrap();
|
||||||
|
Message::SlideChange(id as u16)
|
||||||
|
});
|
||||||
|
delegate.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn reset_video(&mut self) {
|
fn reset_video(&mut self) {
|
||||||
|
|
Loading…
Reference in a new issue