Non-destructive saving of items
Currently, when an item is written back to disk, it is converted to a QVariant data structure and then serialized to JSON. The resulting string is written to disk, replacing the previously existing item data. This is okay as long as the very same app version is used everywhere. However, if a user runs the app on different devices using a sync service to have his library available on all devices, it might be the case that multiple versions of the app are used. In such a case, it would be good if the app is "forward compatible" in the sense that a JSON file on disk is not just overridden, but:
- loaded to memory
- the attributes known by this version are overridden and finally
- the resulting structure is written back to disk.
This way, it could be avoided that an older version of the app accidentally removes attributes created by a newer version.