Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Changes
In the current design we have a base-interface "QueueEntry" and the idea was that it would contain some core properties and additional ones could be implemented via inheritance. This works with the current implementation as not much data is bound to the entries, it doesn't work in the long run.
The new design is inspired by the ECS architecture mostly found in games. The QueueEntry is now just a regular class with all of it's data added via elements. This allows for various features to read/write those elements.
Right now there are two elements: metadata en baseitem. In the future this will expand for stuff like lyrics to display, the chosen streams (audio/subs), replay gain to use and lots more. There will probably also be a way to be notified about element changes (add/update/remove).
Issues
Part of #1057