getting closer to working move function
This commit is contained in:
parent
cf20c94c17
commit
cf20d1aeb7
1 changed files with 50 additions and 18 deletions
|
@ -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,6 +568,23 @@ mod slide_model {
|
||||||
let mut dest_slide = 0;
|
let mut dest_slide = 0;
|
||||||
let mut count = 0;
|
let mut count = 0;
|
||||||
|
|
||||||
|
if move_down {
|
||||||
|
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().rev() {
|
||||||
|
if slide.service_item_id == destination_index {
|
||||||
|
dest_slide = i as i32;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
for (i, slide) in slides_iter.clone().enumerate() {
|
for (i, slide) in slides_iter.clone().enumerate() {
|
||||||
if slide.service_item_id == source_index {
|
if slide.service_item_id == source_index {
|
||||||
first_slide = i as i32;
|
first_slide = i as i32;
|
||||||
|
@ -582,19 +600,33 @@ mod slide_model {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
self.as_mut().begin_reset_model();
|
self.as_mut().begin_reset_model();
|
||||||
}
|
}
|
||||||
|
let slides = self.slides().clone();
|
||||||
|
let slides_iter = slides.iter();
|
||||||
|
|
||||||
self.as_mut().move_items(first_slide, dest_slide, count);
|
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) {
|
if let Some(slide) = self.as_mut().slides_mut().get_mut(dest_slide as usize) {
|
||||||
slide.service_item_id = destination_index;
|
slide.service_item_id = destination_index;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
let slides = self.slides().clone();
|
|
||||||
let slides_iter = slides.iter();
|
|
||||||
let move_down = source_index < destination_index;
|
|
||||||
|
|
||||||
if move_down {
|
if move_down {
|
||||||
for (i, slide) in slides_iter
|
for (i, slide) in slides_iter
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue