getting closer to working move function

This commit is contained in:
Chris Cochrun 2023-04-13 15:09:27 -05:00
parent cf20c94c17
commit cf20d1aeb7

View file

@ -560,6 +560,7 @@ mod slide_model {
return; return;
} }
let move_down = source_index < destination_index;
let slides = self.slides().clone(); let slides = self.slides().clone();
let slides_iter = slides.iter(); let slides_iter = slides.iter();
@ -567,34 +568,65 @@ mod slide_model {
let mut dest_slide = 0; let mut dest_slide = 0;
let mut count = 0; let mut count = 0;
for (i, slide) in slides_iter.clone().enumerate() { if move_down {
if slide.service_item_id == source_index { for (i, slide) in slides_iter.clone().enumerate() {
first_slide = i as i32; if slide.service_item_id == source_index {
count = slide.slide_count; first_slide = i as i32;
println!("RUST_COUNT: {:?}", count); count = slide.slide_count;
break; println!("RUST_COUNT: {:?}", count);
break;
}
} }
}
for (i, slide) in slides_iter.enumerate() { for (i, slide) in slides_iter.enumerate().rev() {
if slide.service_item_id == destination_index { if slide.service_item_id == destination_index {
dest_slide = i as i32; dest_slide = i as i32;
break; break;
}
}
} else {
for (i, slide) in slides_iter.clone().enumerate() {
if slide.service_item_id == source_index {
first_slide = i as i32;
count = slide.slide_count;
println!("RUST_COUNT: {:?}", count);
break;
}
}
for (i, slide) in slides_iter.enumerate() {
if slide.service_item_id == destination_index {
dest_slide = i as i32;
break;
}
} }
} }
unsafe { unsafe {
self.as_mut().begin_reset_model(); self.as_mut().begin_reset_model();
} }
self.as_mut().move_items(first_slide, dest_slide, count);
if let Some(slide) = self.as_mut().slides_mut().get_mut(dest_slide as usize) {
slide.service_item_id = destination_index;
}
let slides = self.slides().clone(); let slides = self.slides().clone();
let slides_iter = slides.iter(); let slides_iter = slides.iter();
let move_down = source_index < destination_index;
self.as_mut().move_items(first_slide, dest_slide, count);
if count > 1 {
for (i, slide) in slides_iter
.clone()
.enumerate()
.filter(|x| x.0 >= dest_slide as usize)
.filter(|x| x.0 < (dest_slide + count) as usize)
{
if let Some(slide) = self.as_mut().slides_mut().get_mut(i) {
slide.service_item_id = destination_index;
}
println!("this one right here officer.");
}
} else {
if let Some(slide) = self.as_mut().slides_mut().get_mut(dest_slide as usize) {
slide.service_item_id = destination_index;
}
}
if move_down { if move_down {
for (i, slide) in slides_iter for (i, slide) in slides_iter