Moving to using begin_move_rows to move service_items

This commit is contained in:
Chris Cochrun 2023-10-11 15:01:54 -05:00
parent 6d696c43db
commit a5f49a84d9
2 changed files with 32 additions and 28 deletions

View file

@ -327,45 +327,52 @@ mod service_item_model {
dest_index: i32, dest_index: i32,
count: i32, count: i32,
) -> bool { ) -> bool {
debug!(
source = source_index,
dest = dest_index,
count = count
);
let model_index = let model_index =
self.index(source_index, 0, &QModelIndex::default()); self.index(source_index, 0, &QModelIndex::default());
// let parent = model_index.parent(); let parent = model_index.parent();
let source_id = source_index as usize; let source_id = source_index as usize;
let dest_id = dest_index as usize; let dest_id = dest_index as usize;
let count = count as usize; let cnt = count as usize;
let end_service_item = source_id + count - 1; let end_service_item = source_id + cnt - 1;
let dest_index = if source_index < dest_index {
dest_index + 1
} else {
dest_index
};
println!("rust-end-service_item: {:?}", end_service_item); println!("rust-end-service_item: {:?}", end_service_item);
println!("rust-dest-service_item: {:?}", dest_index); println!("rust-dest-service_item: {:?}", dest_index);
unsafe { unsafe {
// this function doesn't build // this function doesn't build
// self.as_mut().begin_move_rows( self.as_mut().begin_move_rows(
// &parent, &parent,
// source_index, source_index,
// source_index + count - 1, source_index + count - 1,
// &parent, &parent,
// dest_index, dest_index,
// ); );
self.as_mut().begin_reset_model();
if source_id < dest_id { if source_id < dest_id {
let move_amount = dest_id - source_id - count + 1; let move_amount = dest_id - source_id - cnt + 1;
self.as_mut().service_items_mut() self.as_mut().service_items_mut()
[source_id..=dest_id] [source_id..=dest_id]
.rotate_right(move_amount); .rotate_right(move_amount);
println!("rust-move_amount: {:?}", move_amount); println!("rust-move_amount: {:?}", move_amount);
} else { } else {
let move_amount = let move_amount =
end_service_item - dest_id - count + 1; end_service_item - dest_id - cnt + 1;
println!("rust-move_amount: {:?}", move_amount); println!("rust-move_amount: {:?}", move_amount);
self.as_mut().service_items_mut() self.as_mut().service_items_mut()
[dest_id..=end_service_item] [dest_id..=end_service_item]
.rotate_left(move_amount); .rotate_left(move_amount);
} }
// this function works, begin does not self.as_mut().end_move_rows();
// self.as_mut().end_move_rows();
self.as_mut().end_reset_model();
let item = self.as_mut().get_item(dest_index); let item = self.as_mut().get_item(dest_index);
self.as_mut().emit_item_moved( self.as_mut().emit_item_moved(
&source_index, &source_index,
@ -1129,15 +1136,14 @@ mod service_item_model {
self: Pin<&mut qobject::ServiceItemMod>, self: Pin<&mut qobject::ServiceItemMod>,
); );
// cxx-qt can't build this function for some reason unsafe fn begin_move_rows(
// unsafe fn begin_move_rows( self: Pin<&mut qobject::ServiceItemMod>,
// self: Pin<&mut qobject::ServiceItemMod>, source_parent: &QModelIndex,
// source_parent: &QModelIndex, source_first: i32,
// source_first: i32, source_last: i32,
// source_last: i32, destination_parent: &QModelIndex,
// destination_parent: &QModelIndex, destination_child: i32,
// destination_child: i32, ) -> bool;
// );
unsafe fn end_move_rows( unsafe fn end_move_rows(
self: Pin<&mut qobject::ServiceItemMod>, self: Pin<&mut qobject::ServiceItemMod>,

View file

@ -88,9 +88,7 @@ pub mod song_editor {
let split = vo.split(" "); let split = vo.split(" ");
debug!(verse_order = ?vo, iterator = ?split); debug!(verse_order = ?vo, iterator = ?split);
for s in split { for s in split {
if s.contains(",") { if s.contains(",") || s.is_empty() {
self.as_mut().set_verse_order_error(true);
} else if s.is_empty() {
self.as_mut().set_verse_order_error(true); self.as_mut().set_verse_order_error(true);
} else { } else {
self.as_mut().set_verse_order_error(false); self.as_mut().set_verse_order_error(false);