ocarina/TODO

102 lines
3.4 KiB
Plaintext

Future work:
I want to set reasonable expectations for Ocarina 6 so that I don't
have to spend a large amount of time coding before releasing something
to the wild. This section will be a list of features that I want, but
should be deferred to a future release so basic support can be coded.
Hint: If feature B depends on A, implement A in 6.x and B in 6.x+1
- Categories:
Use these to make "groups of groups" for better organization.
Different categories can include Album, Artist and Genere
dynamic groups in addition to user created groups (see below)
The Artist, Album and Genre "tables" can be used to populate
these categories.
- User created song groups:
Basic add and remove features can be implemented using the
Library and Banned Songs groups. This will give me a chance
to test saving groups on a small scale before letting users
create anything they want.
- Save a user's playlist as a group:
- Library defragment:
Ocarina 6.0 will leave holes in the library when tracks are
deleted, potentially leading to fragmentation and larger-than-
needed file sizes. A "defragment" utility can be created to
clean up unused slots.
To help with fixing groups, a mapping of (old values) ->
(new values) should be kept.
- Fix track durations:
Some tracks in my library are tagged with the wrong duration,
so fix them as they are played.
- Track tag editor:
Make a pop-up window for editing the tags of a track. Be sure
to update the library information and the on-disk file.
- Album art:
(easy) Start with album art fetching script
(hard) Build in to Ocarina
- Copy a song group to a different directory:
This can be useful for keeping an external device (like an
Android phone) updated with the music you want to listen to.
Complications: I have an mp3 mirror of all my music, and I
want the mp3s to be synced. Perhaps track mirrors in Ocarina?
- Mirror directory:
I rip music to .flac, but keep an mp3 mirror directory to sync
to other computers and phones. An Ocarina tool to manage a
COMPLETE library mirror might be a good idea so I no longer
need to manage it externally. This can still be done with a
script, a cron job, and maybe a "mirror this track" option in
the library? Perhaps create a mirror group?
- Extra testing ideas:
- Create a default main() that deletes data directory
- Preferences:
- Set default sort
- Save window size
- Set album art size
- AirPlay / remote audio support
- Media keys
- Replaygain support
External script to calculate values?
Calculate value after first playback?
Store in library :: Track structure
- Playqueue and database inherit from common class
- "About" dialog
- Investigate "Bulk insert" callbacks for performance
- Jenkins
- Run tests
- Show gcov graph
- Run cppcheck
- Read tags with gstreamer?
- Move search functions from filter to index code
- Move tag index into tagdb
- Rename filter.cpp -> text.cpp (or something to reflect
that it is used for text processing)
- Make DatabaseEntry::primary_key() private (only used by Database)
- "On demand" databases that load the first time they are accessed?
- Queues have their own indexes?
- Remove glib specifc code from core/
- Virtual file system
- Fake filesystem access for testing
- Ports:
- OSX
- Windows
- Android
- Command line tools for web interface development?
- Broken track detection
- QueueModel should be a QNotifier