fixing slide_model moves not following service_item moves
This commit is contained in:
parent
bece8e4e7b
commit
9c30af7a5b
1 changed files with 130 additions and 118 deletions
|
@ -313,7 +313,7 @@ impl slide_model::SlideModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clear(mut self: Pin<&mut Self>) {
|
pub fn clear(mut self: Pin<&mut Self>) {
|
||||||
println!("CLEARING ALL SLIDES");
|
debug!("CLEARING ALL SLIDES");
|
||||||
unsafe {
|
unsafe {
|
||||||
self.as_mut().begin_reset_model();
|
self.as_mut().begin_reset_model();
|
||||||
self.as_mut().rust_mut().slides.clear();
|
self.as_mut().rust_mut().slides.clear();
|
||||||
|
@ -326,19 +326,19 @@ impl slide_model::SlideModel {
|
||||||
index: i32,
|
index: i32,
|
||||||
_service_item: &QMap_QString_QVariant,
|
_service_item: &QMap_QString_QVariant,
|
||||||
) {
|
) {
|
||||||
println!("Rusty-Removal-Time: {:?}", index);
|
debug!("Rusty-Removal-Time: {:?}", index);
|
||||||
let slides = self.slides.clone();
|
let slides = self.slides.clone();
|
||||||
let slides_iter = slides.iter();
|
let slides_iter = slides.iter();
|
||||||
for (i, slide) in slides_iter.enumerate().rev() {
|
for (i, slide) in slides_iter.enumerate().rev() {
|
||||||
if slide.service_item_id == index {
|
if slide.service_item_id == index {
|
||||||
self.as_mut().remove_item(i as i32);
|
self.as_mut().remove_item(i as i32);
|
||||||
println!("Removing-slide: {:?}", i);
|
debug!("Removing-slide: {:?}", i);
|
||||||
} else if slide.service_item_id > index {
|
} else if slide.service_item_id > index {
|
||||||
if let Some(slide) =
|
if let Some(slide) =
|
||||||
self.as_mut().rust_mut().slides.get_mut(i)
|
self.as_mut().rust_mut().slides.get_mut(i)
|
||||||
{
|
{
|
||||||
println!("changing-serviceid-of: {:?}", i);
|
debug!("changing-serviceid-of: {:?}", i);
|
||||||
println!(
|
debug!(
|
||||||
"changing-serviceid-fromandto: {:?}-{:?}",
|
"changing-serviceid-fromandto: {:?}-{:?}",
|
||||||
slide.service_item_id,
|
slide.service_item_id,
|
||||||
slide.service_item_id - 1
|
slide.service_item_id - 1
|
||||||
|
@ -363,12 +363,12 @@ impl slide_model::SlideModel {
|
||||||
self.as_mut().rust_mut().slides.remove(index as usize);
|
self.as_mut().rust_mut().slides.remove(index as usize);
|
||||||
self.as_mut().end_remove_rows();
|
self.as_mut().end_remove_rows();
|
||||||
}
|
}
|
||||||
println!("removed-row: {:?}", index);
|
debug!("removed-row: {:?}", index);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn add_slide(mut self: Pin<&mut Self>, slide: &Slide) {
|
fn add_slide(mut self: Pin<&mut Self>, slide: &Slide) {
|
||||||
let index = self.as_ref().slides.len() as i32;
|
let index = self.as_ref().slides.len() as i32;
|
||||||
println!("{:?}", slide);
|
debug!("{:?}", slide);
|
||||||
let slide = slide.clone();
|
let slide = slide.clone();
|
||||||
|
|
||||||
let count = self.as_ref().count;
|
let count = self.as_ref().count;
|
||||||
|
@ -563,17 +563,17 @@ impl slide_model::SlideModel {
|
||||||
slide.video_background = QString::from("");
|
slide.video_background = QString::from("");
|
||||||
slide.slide_index = 0;
|
slide.slide_index = 0;
|
||||||
self.as_mut().insert_slide(&slide, slide_index);
|
self.as_mut().insert_slide(&slide, slide_index);
|
||||||
println!("Image added to slide model!");
|
debug!("Image added to slide model!");
|
||||||
}
|
}
|
||||||
Some(ty) if ty == QString::from("song") => {
|
Some(ty) if ty == QString::from("song") => {
|
||||||
let count = text_vec.len();
|
let count = text_vec.len();
|
||||||
for (i, text) in text_vec.iter().enumerate() {
|
for (i, text) in text_vec.iter().enumerate() {
|
||||||
println!(
|
debug!(
|
||||||
"rust: add song of {:?} length at index {:?}",
|
"rust: add song of {:?} length at index {:?}",
|
||||||
&count, &slide_index
|
&count, &slide_index
|
||||||
);
|
);
|
||||||
slide.ty = ty.clone();
|
slide.ty = ty.clone();
|
||||||
// println!("{:?}", text_vec[i].clone());
|
// debug!("{:?}", text_vec[i].clone());
|
||||||
slide.text = text.clone();
|
slide.text = text.clone();
|
||||||
slide.slide_count = count as i32;
|
slide.slide_count = count as i32;
|
||||||
slide.slide_index = i as i32;
|
slide.slide_index = i as i32;
|
||||||
|
@ -618,10 +618,10 @@ impl slide_model::SlideModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => println!("It's somethign else!"),
|
_ => debug!("It's somethign else!"),
|
||||||
};
|
};
|
||||||
|
|
||||||
println!("Item added in slide model!");
|
debug!("Item added in slide model!");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn add_item_from_service(
|
pub fn add_item_from_service(
|
||||||
|
@ -629,7 +629,7 @@ impl slide_model::SlideModel {
|
||||||
index: i32,
|
index: i32,
|
||||||
service_item: &QMap_QString_QVariant,
|
service_item: &QMap_QString_QVariant,
|
||||||
) {
|
) {
|
||||||
println!("add rust slide {:?}", index);
|
debug!("add rust slide {:?}", index);
|
||||||
let mut slide = Slide::default();
|
let mut slide = Slide::default();
|
||||||
let iter = service_item.iter();
|
let iter = service_item.iter();
|
||||||
|
|
||||||
|
@ -768,7 +768,7 @@ impl slide_model::SlideModel {
|
||||||
Some(ty) if ty == QString::from("song") => {
|
Some(ty) if ty == QString::from("song") => {
|
||||||
for (i, text) in text_vec.iter().enumerate() {
|
for (i, text) in text_vec.iter().enumerate() {
|
||||||
slide.ty = ty.clone();
|
slide.ty = ty.clone();
|
||||||
// println!("{:?}", text_vec[i].clone());
|
// debug!("{:?}", text_vec[i].clone());
|
||||||
slide.text = text.clone();
|
slide.text = text.clone();
|
||||||
slide.slide_count = text_vec.len() as i32;
|
slide.slide_count = text_vec.len() as i32;
|
||||||
slide.slide_index = i as i32;
|
slide.slide_index = i as i32;
|
||||||
|
@ -811,10 +811,10 @@ impl slide_model::SlideModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => println!("It's somethign else!"),
|
_ => debug!("It's somethign else!"),
|
||||||
};
|
};
|
||||||
|
|
||||||
println!("Item added in rust model!");
|
debug!("Item added in rust model!");
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn move_item_from_service(
|
pub fn move_item_from_service(
|
||||||
|
@ -844,8 +844,12 @@ impl slide_model::SlideModel {
|
||||||
// first slide is 1
|
// first slide is 1
|
||||||
// dest slide is 2
|
// dest slide is 2
|
||||||
|
|
||||||
for (i, slide) in slides_iter.clone().enumerate() {
|
//lets get the first slide and count
|
||||||
if slide.service_item_id == source_index {
|
for (i, slide) in slides_iter
|
||||||
|
.clone()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|slide| slide.1.service_item_id == source_index)
|
||||||
|
{
|
||||||
debug!(index = i, ?slide);
|
debug!(index = i, ?slide);
|
||||||
first_slide = i as i32;
|
first_slide = i as i32;
|
||||||
count = if slide.slide_count == 0 {
|
count = if slide.slide_count == 0 {
|
||||||
|
@ -855,46 +859,46 @@ impl slide_model::SlideModel {
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
// lets get the dest_slide and count
|
||||||
if move_down {
|
if move_down {
|
||||||
for (i, slide) in slides_iter.enumerate().rev() {
|
for (i, slide) in
|
||||||
if slide.service_item_id == destination_index {
|
slides_iter.clone().enumerate().rev().filter(
|
||||||
// if count > 1 {
|
|slide| {
|
||||||
// dest_slide = i as i32 - count
|
slide.1.service_item_id == destination_index
|
||||||
// } else {
|
},
|
||||||
|
)
|
||||||
|
{
|
||||||
dest_slide = i as i32;
|
dest_slide = i as i32;
|
||||||
dest_count = if slide.slide_count == 0 {
|
dest_count = if slide.slide_count == 0 {
|
||||||
1
|
1
|
||||||
} else {
|
} else {
|
||||||
slide.slide_count
|
slide.slide_count
|
||||||
};
|
};
|
||||||
println!(
|
debug!(
|
||||||
"RUST_dest_slide: {:?} with {:?} slides",
|
"RUST_dest_slide: {:?} with {:?} slides",
|
||||||
dest_slide, dest_count
|
dest_slide, dest_count
|
||||||
);
|
);
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
for (i, slide) in slides_iter.enumerate() {
|
for (i, slide) in
|
||||||
if slide.service_item_id == destination_index {
|
slides_iter.enumerate().filter(|slide| {
|
||||||
// if count > 1 {
|
slide.1.service_item_id == destination_index
|
||||||
// dest_slide = i as i32 - count
|
})
|
||||||
// } else {
|
{
|
||||||
dest_slide = i as i32;
|
dest_slide = i as i32;
|
||||||
println!("RUST_dest_slide: {:?}", dest_slide);
|
dest_count = if slide.slide_count == 0 {
|
||||||
// }
|
1
|
||||||
|
} else {
|
||||||
|
slide.slide_count
|
||||||
|
};
|
||||||
|
debug!("RUST_dest_slide: {:?}", dest_slide);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
println!("RUST_COUNT: {:?}", count);
|
debug!(count, first_slide, dest_slide);
|
||||||
println!("RUST_first_slide: {:?}", first_slide);
|
|
||||||
println!("RUST_dest_slide: {:?}", dest_slide);
|
|
||||||
// println!("RUST_len: {:?}", self.rust().slides.len());
|
|
||||||
|
|
||||||
let slides = self.slides.clone();
|
let slides = self.slides.clone();
|
||||||
let slides_iter = slides.iter();
|
let slides_iter = slides.iter();
|
||||||
|
@ -911,60 +915,19 @@ impl slide_model::SlideModel {
|
||||||
|
|
||||||
let rc = self.as_ref().count() - 1;
|
let rc = self.as_ref().count() - 1;
|
||||||
let tl = &self.as_ref().index(
|
let tl = &self.as_ref().index(
|
||||||
source_index,
|
first_slide,
|
||||||
|
0,
|
||||||
|
&QModelIndex::default(),
|
||||||
|
);
|
||||||
|
let br = &self.as_ref().index(
|
||||||
|
dest_slide,
|
||||||
0,
|
0,
|
||||||
&QModelIndex::default(),
|
&QModelIndex::default(),
|
||||||
);
|
);
|
||||||
let br = &self.as_ref().index(rc, 0, &QModelIndex::default());
|
|
||||||
let mut vector_roles = QVector_i32::default();
|
let mut vector_roles = QVector_i32::default();
|
||||||
vector_roles.append(self.get_role(SlideRoles::ServiceItemId));
|
vector_roles.append(self.get_role(SlideRoles::ServiceItemId));
|
||||||
|
vector_roles
|
||||||
// Change the shifted slides, not the moved service_item
|
.append(self.get_role(SlideRoles::ImageBackground));
|
||||||
if move_down {
|
|
||||||
debug!("While moving down, change service item id");
|
|
||||||
for (i, slide) in slides_iter
|
|
||||||
.clone()
|
|
||||||
.enumerate()
|
|
||||||
.filter(|x| {
|
|
||||||
x.0 >= (first_slide + dest_count) as usize
|
|
||||||
})
|
|
||||||
.filter(|x| x.1.service_item_id <= destination_index)
|
|
||||||
.filter(|x| x.1.service_item_id >= source_index)
|
|
||||||
{
|
|
||||||
if let Some(slide) =
|
|
||||||
self.as_mut().rust_mut().slides.get_mut(i)
|
|
||||||
{
|
|
||||||
debug!(
|
|
||||||
old_service_id = slide.service_item_id,
|
|
||||||
new_service_id = slide.service_item_id - 1,
|
|
||||||
"rust-switching-service",
|
|
||||||
);
|
|
||||||
slide.service_item_id -= 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
debug!("While moving up, change service item id");
|
|
||||||
for (i, slide) in slides_iter
|
|
||||||
.clone()
|
|
||||||
.enumerate()
|
|
||||||
.filter(|x| {
|
|
||||||
x.0 >= (dest_slide as usize + count as usize)
|
|
||||||
})
|
|
||||||
.filter(|x| x.1.service_item_id >= destination_index)
|
|
||||||
.filter(|x| x.1.service_item_id <= source_index)
|
|
||||||
{
|
|
||||||
if let Some(slide) =
|
|
||||||
self.as_mut().rust_mut().slides.get_mut(i)
|
|
||||||
{
|
|
||||||
debug!(
|
|
||||||
old_service_id = slide.service_item_id,
|
|
||||||
new_service_id = slide.service_item_id + 1,
|
|
||||||
"rust-switching-service",
|
|
||||||
);
|
|
||||||
slide.service_item_id += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change the service_item_id of the moved slide
|
// Change the service_item_id of the moved slide
|
||||||
if count > 1 {
|
if count > 1 {
|
||||||
|
@ -984,7 +947,8 @@ impl slide_model::SlideModel {
|
||||||
if let Some(slide) =
|
if let Some(slide) =
|
||||||
self.as_mut().rust_mut().slides.get_mut(i)
|
self.as_mut().rust_mut().slides.get_mut(i)
|
||||||
{
|
{
|
||||||
println!(
|
debug!(
|
||||||
|
?slide,
|
||||||
"rust: these ones right here officer. from {:?} to {:?}",
|
"rust: these ones right here officer. from {:?} to {:?}",
|
||||||
slide.service_item_id, destination_index
|
slide.service_item_id, destination_index
|
||||||
);
|
);
|
||||||
|
@ -1002,7 +966,8 @@ impl slide_model::SlideModel {
|
||||||
if let Some(slide) =
|
if let Some(slide) =
|
||||||
self.as_mut().rust_mut().slides.get_mut(i)
|
self.as_mut().rust_mut().slides.get_mut(i)
|
||||||
{
|
{
|
||||||
println!(
|
debug!(
|
||||||
|
?slide,
|
||||||
"rust: these ones right here officer. from {:?} to {:?}",
|
"rust: these ones right here officer. from {:?} to {:?}",
|
||||||
slide.service_item_id, destination_index
|
slide.service_item_id, destination_index
|
||||||
);
|
);
|
||||||
|
@ -1027,11 +992,58 @@ impl slide_model::SlideModel {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Change the service_item_id of the shifted slides, not the moved service_item
|
||||||
|
if move_down {
|
||||||
|
debug!("While moving down, change service item id");
|
||||||
|
for (i, slide) in slides_iter
|
||||||
|
.clone()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|x| x.1.service_item_id <= destination_index)
|
||||||
|
.filter(|x| x.1.service_item_id >= source_index)
|
||||||
|
.filter(|x| x.0 <= (dest_slide - count) as usize)
|
||||||
|
{
|
||||||
|
if let Some(slide) =
|
||||||
|
self.as_mut().rust_mut().slides.get_mut(i)
|
||||||
|
{
|
||||||
|
debug!(
|
||||||
|
?slide,
|
||||||
|
old_service_id = slide.service_item_id,
|
||||||
|
new_service_id = slide.service_item_id - 1,
|
||||||
|
"rust-switching-service",
|
||||||
|
);
|
||||||
|
slide.service_item_id -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
debug!("While moving up, change service item id");
|
||||||
|
for (i, slide) in slides_iter
|
||||||
|
.clone()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|x| x.0 >= (dest_slide + count) as usize)
|
||||||
|
.filter(|x| x.1.service_item_id >= destination_index)
|
||||||
|
.filter(|x| x.1.service_item_id <= source_index)
|
||||||
|
{
|
||||||
|
if let Some(slide) =
|
||||||
|
self.as_mut().rust_mut().slides.get_mut(i)
|
||||||
|
{
|
||||||
|
debug!(
|
||||||
|
?slide,
|
||||||
|
old_service_id = slide.service_item_id,
|
||||||
|
new_service_id = slide.service_item_id + 1,
|
||||||
|
"rust-switching-service",
|
||||||
|
);
|
||||||
|
slide.service_item_id += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.as_mut().data_changed(tl, br, &vector_roles);
|
||||||
|
|
||||||
// unsafe {
|
// unsafe {
|
||||||
// self.as_mut().end_reset_model();
|
// self.as_mut().end_reset_model();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
println!("rust-move: {first_slide} to {dest_slide} with {count} slides");
|
debug!("rust-move: {first_slide} to {dest_slide} with {count} slides");
|
||||||
}
|
}
|
||||||
|
|
||||||
fn move_items(
|
fn move_items(
|
||||||
|
@ -1045,8 +1057,8 @@ impl slide_model::SlideModel {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
let end_slide = source_index + count - 1;
|
let end_slide = source_index + count - 1;
|
||||||
println!("rust-end-slide: {:?}", end_slide);
|
debug!("rust-end-slide: {:?}", end_slide);
|
||||||
println!("rust-dest-slide: {:?}", dest_index);
|
debug!("rust-dest-slide: {:?}", dest_index);
|
||||||
let model_index = self.index(
|
let model_index = self.index(
|
||||||
source_index as i32,
|
source_index as i32,
|
||||||
0,
|
0,
|
||||||
|
@ -1069,13 +1081,13 @@ impl slide_model::SlideModel {
|
||||||
if source_index < dest_index {
|
if source_index < dest_index {
|
||||||
let move_amount =
|
let move_amount =
|
||||||
dest_index - source_index - count + 1;
|
dest_index - source_index - count + 1;
|
||||||
// println!("rust-move_amount: {:?}", move_amount);
|
// debug!("rust-move_amount: {:?}", move_amount);
|
||||||
self.as_mut().rust_mut().slides
|
self.as_mut().rust_mut().slides
|
||||||
[source_index..=dest_index]
|
[source_index..=dest_index]
|
||||||
.rotate_right(move_amount);
|
.rotate_right(move_amount);
|
||||||
} else {
|
} else {
|
||||||
let move_amount = end_slide - dest_index - count + 1;
|
let move_amount = end_slide - dest_index - count + 1;
|
||||||
println!("rust-move_amount: {:?}", move_amount);
|
debug!("rust-move_amount: {:?}", move_amount);
|
||||||
self.as_mut().rust_mut().slides
|
self.as_mut().rust_mut().slides
|
||||||
[dest_index..=end_slide]
|
[dest_index..=end_slide]
|
||||||
.rotate_left(move_amount);
|
.rotate_left(move_amount);
|
||||||
|
@ -1088,7 +1100,7 @@ impl slide_model::SlideModel {
|
||||||
self: Pin<&mut Self>,
|
self: Pin<&mut Self>,
|
||||||
index: i32,
|
index: i32,
|
||||||
) -> QMap_QString_QVariant {
|
) -> QMap_QString_QVariant {
|
||||||
println!("{index}");
|
debug!("{index}");
|
||||||
let mut qvariantmap = QMap_QString_QVariant::default();
|
let mut qvariantmap = QMap_QString_QVariant::default();
|
||||||
let idx = self.index(index, 0, &QModelIndex::default());
|
let idx = self.index(index, 0, &QModelIndex::default());
|
||||||
if !idx.is_valid() {
|
if !idx.is_valid() {
|
||||||
|
@ -1133,7 +1145,7 @@ impl slide_model::SlideModel {
|
||||||
let mut vector_roles = QVector_i32::default();
|
let mut vector_roles = QVector_i32::default();
|
||||||
vector_roles.append(self.get_role(SlideRoles::Active));
|
vector_roles.append(self.get_role(SlideRoles::Active));
|
||||||
for slide in self.as_mut().rust_mut().slides.iter_mut() {
|
for slide in self.as_mut().rust_mut().slides.iter_mut() {
|
||||||
// println!("slide is deactivating {:?}", i);
|
// debug!("slide is deactivating {:?}", i);
|
||||||
slide.active = false;
|
slide.active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1313,7 +1325,7 @@ impl slide_model::SlideModel {
|
||||||
|
|
||||||
pub fn row_count(&self, _parent: &QModelIndex) -> i32 {
|
pub fn row_count(&self, _parent: &QModelIndex) -> i32 {
|
||||||
let cnt = self.rust().slides.len() as i32;
|
let cnt = self.rust().slides.len() as i32;
|
||||||
// println!("row count is {cnt}");
|
// debug!("row count is {cnt}");
|
||||||
cnt
|
cnt
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue