When a video is first loaded (placed on the scene), we play/pause it to
load the first frame; but this was also called when the video was
manually stopped. To avoid this, a mStopped attribute was added to
UBGraphicsMediaItem. It is set to true only when the video is stopped by
the user.
The documents' metadata.rdf file is now persisted only when a scene in
the document is also persisted; as well as when the document is modified
(trashed / path changed) in the the Documents pane.
Code was cleaned-up a bit too (added a forgotten return value, etc)
Some settings were changed between v1.02 and 1.10 (current), and some
of these changes cause OpenBoard to crash at launch. This commit adds
a function to check for these specific new settings, and wipe the old
values if they are found.
This avoids problems when the user upgrades from 1.02 without deleting
their configuration file.
(This is an alternative to having a post-install script, which would be
ineffective in a multi-user configuration)
This should cut down on disk access. Instead of loading and saving
settings directly through QSettings instances (which occasionally
read and write to their associated file; but there is no way to control
how often this happens), they are now added to a QHash for in-app
access.
Save() and load() functions were also added to enable manually saving
the settings, and loading all settings from file, respectively.
During trashing of multiple documents, a new document was selected
every time that one was moved to the trash -- even if it was about
to be trashed itself. This is no longer the case; the
selectADocumentOnMultipleTrashing() method was added to select the
first unselected document found (but this is currently not used, as
it seems OK to just select no document when we have just deleted a
whole selection)
That function requires access to variables that are initialized
in videoItem and audioItem constructors, so it can sometimes fail
when called from the superclass's constructor.
It might be an idea to avoid those calls altogether though
- Hovering over the video now makes the seek bar visible
- The size of the video item is no longer changed when the video
finishes playing
- Media errors are now handled by the mediaItem and displayed for the
user
- Code clean-up
- Removed inheritance of UBGraphicsProxyWidget; cleaned up related code
- Added two children classes: UBGraphicsVideoItem and
UBGraphicsAudioItem. UBGraphicsMediaItem is now an abstract class.
- Better encapsulation; the Scene and other external classes no longer
access the mediaObject directly
There is now less distinction between audio and video items to outside
code: apart from the UBSvgSubsetAdaptor, there is no need to know
whether a media item holds a video or audio file. Creation is handled
through the static function `UBGraphicsMediaItem::createMediaItem(URL,
parent)`
When both a folder and items it contained were selected, and trashed,
the documents could sometimes be deleted twice and thus, permanently
deleted when one just intended to move them to the trash.
- When clicking a stroke, they aren't moved immediately anymore; a
certain drag distance is necessary, which makes it easy (again) to
select a stroke with a stylus (which tends to move a little as it is
clicked, hence the problem).
- Removed duplicate code; the movement is now managed by
QGraphicsItemGroup::mouseMoveEvent. This prevents use of the transform()
method to get the stroke's transformation matrix; so sceneTransform() is
used instead when copying a strokes group.
- Also fixed an oversight in UBBoardView: Media items couldn't be moved
directly anymore.
This makes it possible e.g to use the colorPicker app in conjunction
with the compass.
Colors will still be updated when one clicks the pen or marker tools.
- Modified UBvgSubsetAdaptor to correctly save and load strokes, so the
transform matrices that were saved are now loaded correctly.
- Added handling of mousePress / Move / Release events to
UBGraphicsStrokesGroup, so that the transform matrix is calculated and
stored after moving a pen stroke directly (by clicking on it, and not on
its frame). Note: this duplicates quite a bit of code that is in
UBGraphicsDelegateFrame. It may be best to go back and modify both
classes so that the same functions can be called when moving a stroke.