126 lines
4.5 KiB
Plaintext
126 lines
4.5 KiB
Plaintext
ORDERING
|
|
--------
|
|
Consider the following order to implement this todo:
|
|
|
|
1. create eet to persist data (used by lib/manager, preferences, resume...)
|
|
- versioned
|
|
- provide defaults
|
|
2. Save/Resume state between runs (simple data);
|
|
- window geometry
|
|
- volume
|
|
- repeat and shuffle states
|
|
3. Create preferences infrastructure:
|
|
- new elm_layout style (in Elementary) for preferences
|
|
- choose media backend (xine, gstreamer)
|
|
4. Create library manager preferences:
|
|
- add/remove directories (or at least choose folder)
|
|
- rescan, stop-scan. with progress feedback
|
|
- option to choose rescan schedule
|
|
- remove command line scan
|
|
5. Refactor some features into plugins
|
|
- define ecore_events and plugin interface
|
|
- coverart-lastfm
|
|
- cover art local fs lookup
|
|
6. Modular plugins (elm_module)
|
|
- selection saved in eet
|
|
- gui to select enabled plugins
|
|
7. Save/Resume between runs (list, nowplaying and navigation)
|
|
|
|
|
|
Library (from "Preferences")
|
|
----------------------------
|
|
* manager:
|
|
- allows add directories; - DONE
|
|
- allows remove directories;
|
|
- maybe limit to one single folder to simplify GUI?
|
|
- or settle with $XDG_MUSIC_DIR and no need for GUI?
|
|
* rescan: allows rescan media immediately
|
|
* stop-scan: while scanning, allows cancel the process
|
|
* provide progress feedback;
|
|
* put all this stuff into the UI (currently scan just works from the cmd line);
|
|
* while scan remember to stop any access to database to avoid locks;
|
|
* option to choose rescan schedule: always, every day/week/month, never
|
|
* remove command line scan?
|
|
|
|
|
|
Plugins
|
|
-------
|
|
|
|
Must cover the following cases:
|
|
|
|
* [EASY] Listeners: It should be done in a way to allow things like
|
|
last.fm to be informed of favorite musics, chats, twitter,
|
|
facebook, osd-notify, MPRIS dbus interface. Basically post
|
|
meaningful ecore_events to main loop.
|
|
|
|
* [HARD] Providers: It should be done to provide new lists or items
|
|
to lists. Needs thinking if the plugin should provide the full
|
|
widget (ie: genlist) or just the contents. How to cope with
|
|
filtering. How to do navigation.
|
|
|
|
* [MEDIUM] Settings: similar to providers, but auguments simpler
|
|
configurations. Likely should provide the full widget, unless we
|
|
create a configuration UI standard. Examples: Cover lookup from
|
|
filesystem, amazon.com or last.fm
|
|
|
|
* [MEDIUM] Playback Gadgets: random Evas_Object that will react to
|
|
music playback, things like showing wikipedia for band, lyrics,
|
|
etc. They can use Listeners case to udpate themselves, but needs
|
|
thinking how to show them on the screen. Maybe another tab/area on
|
|
the now playing screen?
|
|
|
|
|
|
Work to cover the above cases:
|
|
|
|
* create ecore_events to notify listeners plugins.
|
|
- database contents changed;
|
|
* query plugins for available settings:
|
|
- give a context path with settings area. like "/", "/library/", "/$plugin/"
|
|
- allow plugins to specify priority (list positioning)?
|
|
- allow plugins to specify relative positioning (above/below "$plugin")
|
|
* query plugins for available major providers (root list entries):
|
|
- similar to settings, may require priority/relative positioning
|
|
* query plugins for available minor providers (item providers):
|
|
- needs requirements... postponed
|
|
* query plugins for available playback gadgets:
|
|
- needs requirements... postponed
|
|
|
|
|
|
More
|
|
----
|
|
* Save/Resume state between runs (start from the same place as last time);
|
|
- window geometry
|
|
- volume
|
|
- current playing
|
|
- repeat and shuffle states
|
|
- navigation (full, or at least current list)
|
|
* Preferences:
|
|
- choose media backend (xine, gstreamer)
|
|
- choose to resume media playback on restart
|
|
- list/enable/disable plugins
|
|
|
|
|
|
Media List
|
|
----------
|
|
* filter limits the current section and thus creates a dynamic playlist
|
|
|
|
|
|
Misc
|
|
----
|
|
* plugin: search covers locally. For every music in the database
|
|
without associated cover, walk the music directory and look for
|
|
jpeg (Currently done from inside enjoy/list, must be moved)
|
|
* playlist support (use lms to scan for playlists, etc)
|
|
* on-the-go playlist (dynamic playlist). Hold items to add to
|
|
playlist, be a virtual-folder or a single song.
|
|
* plugin: search covers at amazon.com
|
|
* plugin: search covers at last.fm
|
|
* plugin: internet radio (shoutcast.com? tunein.com?)
|
|
* plugin: inform now playing music to webservices
|
|
* plugin: fetch lyrics from webservices (maybe use webkit)
|
|
* plugin: fetch track/artist/album info from webservices (wikipedia?
|
|
uses webkit)
|
|
* plugin: support for e_notify (libnotify)
|
|
* evas: read cover from id3? requires id3 image loader in evas
|
|
* plugin: audio bookmarks
|