Selecting slide in preview keeps the internal state correct
Some checks failed
/ test (push) Has been cancelled
Some checks failed
/ test (push) Has been cancelled
This commit is contained in:
parent
1cd34f5019
commit
2b40a7abcc
2 changed files with 31 additions and 3 deletions
27
src/main.rs
27
src/main.rs
|
|
@ -951,6 +951,29 @@ impl cosmic::Application for App {
|
|||
cosmic::Action::App(Message::Present(m))
|
||||
}),
|
||||
presenter::Action::None => Task::none(),
|
||||
presenter::Action::ChangeSlide(
|
||||
item_index,
|
||||
slide_index,
|
||||
) => {
|
||||
self.current_item = (item_index, slide_index);
|
||||
let action = self.presenter.update(
|
||||
presenter::Message::ActivateSlide(
|
||||
item_index,
|
||||
slide_index,
|
||||
),
|
||||
);
|
||||
|
||||
if let presenter::Action::Task(task) = action
|
||||
{
|
||||
task.map(|m| {
|
||||
cosmic::Action::App(Message::Present(
|
||||
m,
|
||||
))
|
||||
})
|
||||
} else {
|
||||
Task::none()
|
||||
}
|
||||
}
|
||||
presenter::Action::NextSlide => {
|
||||
let slide_index = self.current_item.1;
|
||||
let item_index = self.current_item.0;
|
||||
|
|
@ -982,8 +1005,6 @@ impl cosmic::Application for App {
|
|||
Task::batch(tasks)
|
||||
} else {
|
||||
// debug!("Slides are not longer");
|
||||
self.current_item =
|
||||
(item_index + 1, 0);
|
||||
if self
|
||||
.service
|
||||
.get(item_index + 1)
|
||||
|
|
@ -1000,6 +1021,8 @@ impl cosmic::Application for App {
|
|||
)
|
||||
}));
|
||||
}
|
||||
self.current_item =
|
||||
(item_index + 1, 0);
|
||||
}
|
||||
Task::batch(tasks)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@ pub(crate) enum Action {
|
|||
Task(Task<Message>),
|
||||
NextSlide,
|
||||
PrevSlide,
|
||||
ChangeSlide(usize, usize),
|
||||
None,
|
||||
}
|
||||
|
||||
|
|
@ -68,6 +69,7 @@ pub(crate) enum Message {
|
|||
PrevSlide,
|
||||
SlideChange(Slide),
|
||||
ActivateSlide(usize, usize),
|
||||
ClickSlide(usize, usize),
|
||||
EndVideo,
|
||||
StartVideo,
|
||||
StartAudio,
|
||||
|
|
@ -215,6 +217,9 @@ impl Presenter {
|
|||
// self.current_slide_index - 1,
|
||||
// ));
|
||||
}
|
||||
Message::ClickSlide(item_index, slide_index) => {
|
||||
return Action::ChangeSlide(item_index, slide_index);
|
||||
}
|
||||
Message::ActivateSlide(item_index, slide_index) => {
|
||||
debug!(slide_index, item_index);
|
||||
if let Some(slide) = self
|
||||
|
|
@ -547,7 +552,7 @@ impl Presenter {
|
|||
)))
|
||||
})
|
||||
.on_exit(Message::HoveredSlide(None))
|
||||
.on_press(Message::ActivateSlide(
|
||||
.on_press(Message::ClickSlide(
|
||||
item_index,
|
||||
slide_index,
|
||||
));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue