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))
|
cosmic::Action::App(Message::Present(m))
|
||||||
}),
|
}),
|
||||||
presenter::Action::None => Task::none(),
|
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 => {
|
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;
|
||||||
|
|
@ -982,8 +1005,6 @@ impl cosmic::Application for App {
|
||||||
Task::batch(tasks)
|
Task::batch(tasks)
|
||||||
} else {
|
} else {
|
||||||
// debug!("Slides are not longer");
|
// debug!("Slides are not longer");
|
||||||
self.current_item =
|
|
||||||
(item_index + 1, 0);
|
|
||||||
if self
|
if self
|
||||||
.service
|
.service
|
||||||
.get(item_index + 1)
|
.get(item_index + 1)
|
||||||
|
|
@ -1000,6 +1021,8 @@ impl cosmic::Application for App {
|
||||||
)
|
)
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
self.current_item =
|
||||||
|
(item_index + 1, 0);
|
||||||
}
|
}
|
||||||
Task::batch(tasks)
|
Task::batch(tasks)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,7 @@ pub(crate) enum Action {
|
||||||
Task(Task<Message>),
|
Task(Task<Message>),
|
||||||
NextSlide,
|
NextSlide,
|
||||||
PrevSlide,
|
PrevSlide,
|
||||||
|
ChangeSlide(usize, usize),
|
||||||
None,
|
None,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -68,6 +69,7 @@ pub(crate) enum Message {
|
||||||
PrevSlide,
|
PrevSlide,
|
||||||
SlideChange(Slide),
|
SlideChange(Slide),
|
||||||
ActivateSlide(usize, usize),
|
ActivateSlide(usize, usize),
|
||||||
|
ClickSlide(usize, usize),
|
||||||
EndVideo,
|
EndVideo,
|
||||||
StartVideo,
|
StartVideo,
|
||||||
StartAudio,
|
StartAudio,
|
||||||
|
|
@ -215,6 +217,9 @@ impl Presenter {
|
||||||
// self.current_slide_index - 1,
|
// self.current_slide_index - 1,
|
||||||
// ));
|
// ));
|
||||||
}
|
}
|
||||||
|
Message::ClickSlide(item_index, slide_index) => {
|
||||||
|
return Action::ChangeSlide(item_index, slide_index);
|
||||||
|
}
|
||||||
Message::ActivateSlide(item_index, slide_index) => {
|
Message::ActivateSlide(item_index, slide_index) => {
|
||||||
debug!(slide_index, item_index);
|
debug!(slide_index, item_index);
|
||||||
if let Some(slide) = self
|
if let Some(slide) = self
|
||||||
|
|
@ -547,7 +552,7 @@ impl Presenter {
|
||||||
)))
|
)))
|
||||||
})
|
})
|
||||||
.on_exit(Message::HoveredSlide(None))
|
.on_exit(Message::HoveredSlide(None))
|
||||||
.on_press(Message::ActivateSlide(
|
.on_press(Message::ClickSlide(
|
||||||
item_index,
|
item_index,
|
||||||
slide_index,
|
slide_index,
|
||||||
));
|
));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue