moving more of the logic to slide_model

With more of the logic coming to the rust models, I can start to make
compile time guarantees.
This commit is contained in:
Chris Cochrun 2024-09-26 14:54:25 -05:00
parent 8c7f2d794f
commit 8463af6ad9
3 changed files with 21 additions and 34 deletions

View file

@ -249,22 +249,6 @@ Controls.Page {
console.log("text: " + item.text); console.log("text: " + item.text);
console.log("slide_index: " + item.slideIndex); console.log("slide_index: " + item.slideIndex);
console.log("slide_count: " + item.imageCount); console.log("slide_count: " + item.imageCount);
/* if (item.html) { */
/* let index = item.slideIndex; */
/* let count = item.imageCount; */
/* if (index > 0 && index < count - 1) { */
/* console.log("I should advance revealy"); */
/* if (isMoveDown) */
/* presentation.revealNext() */
/* else */
/* presentation.revealPrev() */
/* return */
/* } */
/* } */
/* presentation.stopVideo(); */
/* pWindow.stopVideo(); */
/* presentation.itemType = item.type; */
console.log("Time to start changing"); console.log("Time to start changing");
ServiceItemModel.activate(currentServiceItem); ServiceItemModel.activate(currentServiceItem);

View file

@ -481,9 +481,7 @@ FocusScope {
function nextSlideAction() { function nextSlideAction() {
keyHandler.forceActiveFocus(); keyHandler.forceActiveFocus();
if (SlideModel.next()) { SlideModel.next()
console.log("VICTORY")
}
/* const nextSlideIdx = SlideObject.html && (SlideObject.innerSlideIndex + 1 < SlideObject.slideSize) ? currentSlide : currentSlide + 1; */ /* const nextSlideIdx = SlideObject.html && (SlideObject.innerSlideIndex + 1 < SlideObject.slideSize) ? currentSlide : currentSlide + 1; */
/* const nextSlide = SlideModel.getItem(nextSlideIdx); */ /* const nextSlide = SlideModel.getItem(nextSlideIdx); */
/* if (nextSlideIdx > totalSlides || nextSlideIdx < 0) */ /* if (nextSlideIdx > totalSlides || nextSlideIdx < 0) */
@ -508,19 +506,7 @@ FocusScope {
function previousSlideAction() { function previousSlideAction() {
keyHandler.forceActiveFocus(); keyHandler.forceActiveFocus();
const prevSlideIdx = currentSlide - 1; SlideModel.prev()
const prevSlide = SlideModel.getItem(prevSlideIdx);
if (prevSlideIdx > totalSlides || prevSlideIdx < 0)
return;
console.log("currentServiceItem " + currentServiceItem);
console.log("totalSlides " + totalSlides);
console.log("currentSlide " + currentSlide);
console.log("prevSlideIdx " + prevSlideIdx);
/* changeSlide(prevSlideIdx); */
if (SlideObject.previous(prevSlide)) {
currentSlide = prevSlideIdx;
currentServiceItem = prevSlide.serviceItemId;
}
} }
function previousSlide() { function previousSlide() {

View file

@ -1122,9 +1122,26 @@ impl slide_model::SlideModel {
pub fn next(mut self: Pin<&mut Self>) -> bool { pub fn next(mut self: Pin<&mut Self>) -> bool {
if let Some(object) = unsafe { self.slide_object.as_mut() } { if let Some(object) = unsafe { self.slide_object.as_mut() } {
let object = unsafe { Pin::new_unchecked(object) }; let object = unsafe { Pin::new_unchecked(object) };
if let Some(slide) = self.rust().slides.get(self.id as usize + 1) { let id = self.as_ref().id + 1;
if let Some(slide) = self.rust().slides.get(id as usize) {
object.set_slide(slide);
self.as_mut().activate(id);
self.as_mut().rust_mut().id = id;
true
} else {
false
}
} else {
false
}
}
pub fn prev(mut self: Pin<&mut Self>) -> bool {
if let Some(object) = unsafe { self.slide_object.as_mut() } {
let object = unsafe { Pin::new_unchecked(object) };
let id = self.as_ref().id - 1;
if let Some(slide) = self.rust().slides.get(id as usize) {
object.set_slide(slide); object.set_slide(slide);
let id = self.as_ref().id + 1;
self.as_mut().activate(id); self.as_mut().activate(id);
self.as_mut().rust_mut().id = id; self.as_mut().rust_mut().id = id;
true true