This commit is contained in:
parent
206f5b16a5
commit
f662e57c8f
2 changed files with 65 additions and 20 deletions
54
src/main.rs
54
src/main.rs
|
@ -570,45 +570,71 @@ impl cosmic::Application for App {
|
||||||
}
|
}
|
||||||
match self.presenter.update(message) {
|
match self.presenter.update(message) {
|
||||||
presenter::Action::Task(task) => task.map(|m| {
|
presenter::Action::Task(task) => task.map(|m| {
|
||||||
debug!("Should run future");
|
// debug!("Should run future");
|
||||||
cosmic::Action::App(Message::Present(m))
|
cosmic::Action::App(Message::Present(m))
|
||||||
}),
|
}),
|
||||||
presenter::Action::None => Task::none(),
|
presenter::Action::None => Task::none(),
|
||||||
presenter::Action::NextSlide => {
|
presenter::Action::NextSlide => {
|
||||||
let slide_index = self.current_item.1;
|
let slide_index = self.current_item.1;
|
||||||
let item_index = self.current_item.0;
|
let item_index = self.current_item.0;
|
||||||
|
let mut tasks = vec![];
|
||||||
if let Some(item) =
|
if let Some(item) =
|
||||||
self.service.get(item_index)
|
self.service.get(item_index)
|
||||||
{
|
{
|
||||||
if item.slides.len() > slide_index + 1 {
|
if item.slides.len() > slide_index + 1 {
|
||||||
let slide_length = item.slides.len();
|
// let slide_length = item.slides.len();
|
||||||
debug!(
|
// debug!(
|
||||||
slide_index,
|
// slide_index,
|
||||||
slide_length,
|
// slide_length,
|
||||||
?item,
|
// ?item,
|
||||||
"Slides are longer"
|
// "Slides are longer"
|
||||||
);
|
// );
|
||||||
let slide = item.slides
|
let slide = item.slides
|
||||||
[slide_index + 1]
|
[slide_index + 1]
|
||||||
.clone();
|
.clone();
|
||||||
self.presenter.update(
|
let action = self.presenter.update(
|
||||||
presenter::Message::SlideChange(
|
presenter::Message::SlideChange(
|
||||||
slide,
|
slide,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
match action {
|
||||||
|
presenter::Action::Task(task) => {
|
||||||
|
tasks.push(task.map(|m| {
|
||||||
|
cosmic::Action::App(
|
||||||
|
Message::Present(m),
|
||||||
|
)
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
_ => todo!(),
|
||||||
|
}
|
||||||
self.current_item =
|
self.current_item =
|
||||||
(item_index, slide_index + 1);
|
(item_index, slide_index + 1);
|
||||||
Task::none()
|
Task::batch(tasks)
|
||||||
} else {
|
} else {
|
||||||
debug!("Slides are not longer");
|
// debug!("Slides are not longer");
|
||||||
self.current_item =
|
self.current_item =
|
||||||
(item_index + 1, 0);
|
(item_index + 1, 0);
|
||||||
if let Some(item) =
|
if let Some(item) =
|
||||||
self.service.get(item_index + 1)
|
self.service.get(item_index + 1)
|
||||||
{
|
{
|
||||||
self.presenter.update(presenter::Message::SlideChange(item.slides[0].clone()));
|
let action = self.presenter.update(presenter::Message::SlideChange(item.slides[0].clone()));
|
||||||
|
match action {
|
||||||
|
presenter::Action::Task(
|
||||||
|
task,
|
||||||
|
) => {
|
||||||
|
tasks
|
||||||
|
.push(task.map(|m| {
|
||||||
|
cosmic::Action::App(
|
||||||
|
Message::Present(
|
||||||
|
m,
|
||||||
|
),
|
||||||
|
)
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
Task::none()
|
_ => todo!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Task::batch(tasks)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Task::none()
|
Task::none()
|
||||||
|
@ -648,7 +674,7 @@ impl cosmic::Application for App {
|
||||||
{
|
{
|
||||||
Task::none()
|
Task::none()
|
||||||
} else {
|
} else {
|
||||||
debug!("Change slide to previous items slides");
|
// debug!("Change slide to previous items slides");
|
||||||
let previous_item_slides_length =
|
let previous_item_slides_length =
|
||||||
if let Some(item) = self
|
if let Some(item) = self
|
||||||
.service
|
.service
|
||||||
|
|
|
@ -20,8 +20,8 @@ use cosmic::{
|
||||||
},
|
},
|
||||||
prelude::*,
|
prelude::*,
|
||||||
widget::{
|
widget::{
|
||||||
container, image, mouse_area, responsive, scrollable, Column,
|
container, horizontal_space, image, mouse_area, responsive,
|
||||||
Container, Id, Row, Space,
|
scrollable, text, Column, Container, Id, Row, Space,
|
||||||
},
|
},
|
||||||
Task,
|
Task,
|
||||||
};
|
};
|
||||||
|
@ -416,6 +416,28 @@ impl Presenter {
|
||||||
|
|
||||||
pub fn preview_bar(&self) -> Element<Message> {
|
pub fn preview_bar(&self) -> Element<Message> {
|
||||||
let mut items = vec![];
|
let mut items = vec![];
|
||||||
|
// for item in &self.service {
|
||||||
|
// let mut slides = vec![];
|
||||||
|
// for slide in item.slides.iter() {
|
||||||
|
// slides.push(self.slide_delegate(slide));
|
||||||
|
// }
|
||||||
|
|
||||||
|
// let row = scrollable(
|
||||||
|
// Row::from_vec(slides).spacing(10).padding(15),
|
||||||
|
// )
|
||||||
|
// .direction(Direction::Horizontal(Scrollbar::new()))
|
||||||
|
// .height(Length::Fill)
|
||||||
|
// .width(Length::Fill)
|
||||||
|
// .id(self.scroll_id.clone());
|
||||||
|
// let label =
|
||||||
|
// text::body(item.title.clone()).line_height(5.0);
|
||||||
|
// let label_container =
|
||||||
|
// container(horizontal_space().width(Length::Shrink))
|
||||||
|
// .align_left(Length::Fill)
|
||||||
|
// .align_top(Length::Fill)
|
||||||
|
// .padding([3, 0, 0, 10]);
|
||||||
|
// items.push(stack!(row, label_container).into());
|
||||||
|
// }
|
||||||
for slide in self.slides.iter() {
|
for slide in self.slides.iter() {
|
||||||
items.push(self.slide_delegate(slide));
|
items.push(self.slide_delegate(slide));
|
||||||
}
|
}
|
||||||
|
@ -428,10 +450,7 @@ impl Presenter {
|
||||||
row.into()
|
row.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn slide_delegate<'a>(
|
fn slide_delegate(&self, slide: &Slide) -> Element<'_, Message> {
|
||||||
&'a self,
|
|
||||||
slide: &'a Slide,
|
|
||||||
) -> Element<'a, Message> {
|
|
||||||
let font_name = slide.font().into_boxed_str();
|
let font_name = slide.font().into_boxed_str();
|
||||||
let family = Family::Name(Box::leak(font_name));
|
let family = Family::Name(Box::leak(font_name));
|
||||||
let weight = Weight::Normal;
|
let weight = Weight::Normal;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue