This means we are loading and saving files with the rfd crate which
utilizes platform appropriate dialogs for saving and loading files. We
can start to use this in all other file dialog locations to make sure
we are getting the right files.
It uses xdg-desktop-portals on linux so we will always use the
appropriate file dialog for each desktop environment.
Since songs had more than one slide, anything inserted after the first
multi-slide item would break the insertion. ServiceItem indexes are
not the same as the slide indexes so we needed to find the right
index, then properly change the other indexes in the right spot.
I think I've done this by using rust iterators better.
This will make it easier to ensure we are always using the appropriate
data type in the DataChanged signal since we won't need to hand pass
i32s around and instead define them once in the function get_role.
slide_model.rs activate function now properly tells of the data that
was changed so that ListViews that use it as a model will reset their
data properly on changes.
The important parts were to ensure we are using the right indexes for
top_left and bottom_right. Then also ensure the roles are correct, but
I think I had that already, just went with the implementation that
CXX-Qt used in their examples.
While the previous function technically worked, the connections
weren't setup properly. Also the row_count function wasn't running
because it requires a QModelIndex parameter. Added a simple count
function to make sure we know how many slides there are in QML.
This model, built in Rust, works in that functions are getting called
and the right pieces are mapped into the model. I've yet to connect
things up to see if QML is talking to the model just yet.