Very important remaining tasks for beta2:
Use autopointers for TIOs? - Reworking the way the AnalyserQueue works instead (in progress by Adam)
Update LibraryTableModel's rows when TrackDAO is accessed, without resetting it. (How?!)
M4A Plugin + Downloader
Featured Artists agreement + stats
Very important remaining tasks for beta1:
-
Schema versioning
1.7.0 to 1.8.0 XML→DB Library importer (Patch from Zach)
Playlist blurb
Crate image blurb
Fix as many crashes as possible
Crate/Playlist/MissingTracks need working location column.
Analyze view text is not readable on dark skins.
Escape Prepare view searches, use fetchMore(), search in the GUI thread
Complete the rewrite for basic – but stable – functionality
Track DB
1.7.0 to 1.8.0 XML→DB Library importer (Zach)
Searching across library features
Make sure search is case-insensitive everywhere
Search is saved and restored per-model
Playlist models store the search per-playlist
Searches occur in background thread.
Drag-n-drop across library features
Make sure you can drop tracks from any place (browse, external track source, mixxx library) into a Mixxx playlist and the play queue Auto DJ queue
Win/Mac/Linux drag of files from
OS file browser into Mixxx?
Make explicit the cases in which a file outside the Mixxx library is added to the Mixxx library.
-
Context menus across the whole library
UI Feedback
When a track is missing from the library (Missing Songs model done)
When a track failed to load
When your results are filtered (i.e. a search is active)
When you are about to add a track to your Mixxx library. Make any warnings disable-able via mixxx.cfg.
Browse Mode
Use a file-system model that polls in a background thread
Searches and sorting for the filesystem view
Always show .. as a choice
Always sort folders before files
Needs header that shows you your current path
Sorting doesn't work in Size column (kb/mb treated as the same)
Playlists
Playlist table headers show raw column names
Playlists need duration delegate
Dragging a file thats in a playlist to its own playlist results in many added copies.
Drag-and-drop reordering
Invisible playlists so that e.g. the Auto-DJ playlist do not show under playlists.
Play Queue/AutoDJ
Library Rescan
Basic fast hashing rescan
Modify Library table to make orphan detection easier later (add extra track_locations table)
Add mixxx_deleted to Libray table and fs_deleted cols to track_locations table
Use mixxx_deleted to blacklist files “removed” from the Mixxx library.
Cancel rescan functionality (just needs to be fixed)
Tagging (not file metadata tagging)
DAO for tags
Feature for tags
Drag-n-drop to sidebar
Tag table model
Context menu for track table
Context menus for tags in sidebar
Feature overview page
Prepare view
Delegate for showing tags in library table
Track Sources
iTunes playlist TrackModel
iTunes needs duration delegate
Rhythmbox Need Date delegate
Sorting doesn't work in XML-sourced Playlists
Polish
MIDI Control of Library
Track-table column header context menu to show/hide columns
Cue/Loop Storage in the DB - (this is really a mini-project in itself)
Write a CueDAO/Cue service.
Make TIO's have a list of Cue's
Make TrackCollection save a TIO's Cue's on track save (via CueDAO)
Ditch EngineBufferCue
Extend EngineBuffer to allow outside addition of EngineControls
Write CueControl, created by Player, added to EngineBuffer as an EngineControl
Restore track-editor, make it show hotcues
Add custom widgets for hotcues – not happening: skins will have to have hacked buttons instead
Waveform / waveform overview loops and cues
Update skins
Minor Bugs
Remaining tasks here are just polish and are not required for release.
Move all PortMIDI calls to one thread (the script engines can not directly call send*Msg anymore.) See this.
Save multiple device files correctly, deleting previous .midi.xml files in .mixxx/
Save the meta-data (controller ID, author, description, etc…)
First make a
GUI object that lets the user modify the author and description
Find a more appropriate place to save the files other than the MidiDeviceManager destructor Now done (only) when OK is clicked in the prefs
Need a way to keep track of duplicate devices so separate files can be saved: Have DlgPreferences::slotApply() call MidiDeviceManager::saveMappings() which does them all in one shot (and can thereby keep track of them)
Load those files correctly
Replace MidiCategory with MidiStatusByte permanently (see mididevice.cpp line 195.)
MIDI Scripting:
Pass the <group> value from the XML to the script as an additional parameter (at the end of the list so existing scripts are not affected.) - Done by Phil
-
Replace “Activate” button with an “Enabled” check box
Display enabled devices in the tree in bold text
Auto-change “Output” drop-down based on auto-selected output device in MidiDevice(Manager) when the device is enabled - Albert
Make “Output” drop-down take effect when changed - not happening in 1.8. Output drop-down is disabled for now.
Persistent mapping preset drop-down (don't return to ”…” unless Clear All is pressed. If the user tweaks the mapping, say ”<custom>” or something.)
Also clear the list of MIDI scripts when Clear All is pressed
Do not commit changes to the MIDI mapping tables unless OK is pressed in the preferences window. (I.e. allow pressing the Cancel button or the X on the preferences window to restore the MIDI mappings to their previous states.)
Add MIDI script timers - done in features_scriptTimers
Add a way to pass extra parameters from the MIDI mapping to the script function ?
MIDI script cross-communication (via custom Control[Objects] the scripts can create via special ScriptEngine functions)