This required switching from a QML Window to a QQuickView in C++. I
want to try to eventually subclass that in Rust, but for now it works.
I'll have to still tinker with this to find out how to specifically
set the screen in certain environments, but for now the user will need
to move the window on their own.
I'm going to try to subclass QQuickWindow or View in order to control
the PresentationWindow from rust and just call the appropriate
functions from QML.
Videos, images, and presentations were all look at the wrong index. I
needed to look for the count - 1 in order to find the right index from
the model when switching to the editMode
If each model is registered as a QML type, we can pass the model back
to QML from each proxy model to have more direct access to it. This
enables us to use it's functions and properties better.
I have gotten reveal.js presentations to be viewable. I'll still need
to work with how to present them, and fix the presenter piece as well,
but for now, it works.
Since the rust implementation happens on insertion of slides and
creates a property for it, it's better as we won't need to create it
on the fly. Now we'll just need to move it into a background thread so
things will load while ffmpeg creates thumbnails for us.
We still need to handle all errors and possibly handle edge cases of
playlists and non urls better. The UI needs a lot of work too, but
this is a good start of the feature.
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.