enjoy: update to-do list.

Want to help enjoy? There are plenty of things to do, at various
difficulty levels. I can help with mentoring, but I can't code them
all by myself. So let's publish ideas and hope people will contribute
:-)



SVN revision: 62828
This commit is contained in:
Gustavo Sverzut Barbieri 2011-08-25 16:53:18 +00:00
parent 15957b61a2
commit ea1e80ef11
1 changed files with 90 additions and 83 deletions

173
TODO
View File

@ -1,99 +1,106 @@
UI - base ui similar to eve (browser)
-------------------------------------
* top one of:
* list + header, allows going back or selecting new + filter
* cover + info
* bottom action bar (always visible):
* volume
* back
* forward
* play/pause (toggle)
* mini-mode (toggle)
* more: preferences, library manager, plugins? (cover fetch, etc)
List Mode:
.-------------------------------------.
| <BACK] Albums by 'Artist' |
}-------------------------------------{
| album name1 |
| album name2 |
| album name3 |
| album name4 |
| ... |
| ... |
| ... |
| ... |
| ... |
}-------------------------------------{
| =====V----------------------------- | <- volume
| | | | | |
| <Prev | Next> | Play | Mode | Prefs |
| | | | | |
`-------------------------------------'
^
|
toggles
|
V
Play Mode:
.-------------------------------------.
| 01 - My Song |
| By Artist |
| Album Name |
| * * * * * [repeat] [random] | <- rating + toggles: repeat, random
| 02:03 ========V------------- -03:04 | <- progress/seek
}-------------------------------------{
| |
| |
| |
| | <- cover area
| |
| |
| |
| |
| |
}-------------------------------------{
| =====V----------------------------- | <- volume
| | | | | |
| <Prev | Next> | Play | Mode | More |
| | | | | |
`-------------------------------------'
Media List
----------
* top shows "<Back", $CURRENT_SECTION [and filter field - later]
* all sections should start with "All songs"
* all sections should contain "Shuffle songs"
* root sections: Songs, Artist, Albums, Genres
* filter limits the current section and thus creates a dynamic playlist
Library (all from "more")
-------------------------
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 plugin loading infrastructure using eina_module;
* create ecore_events to notify listeners plugins.
- database contents changed;
- list contents changed;
- current music changed;
- rating changed;
- progress/position changed (manually);
- volume changed;
- repeat changed;
- shuffle 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
----
* Single instance using dbus (otherwise configuration will be screwed with
multiple processes writing it);
* 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)
* Bookmarks? (show list of songs with bookmarked positions)
- 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
----
* single instance using dbus
* support for e_notify (libnotify)
* read cover from id3? requires id3 image loader in evas
* fetch lyrics from webservices (maybe use webkit)
* fetch track/artist/album info from webservices (wikipedia? uses webkit)
* audio bookmarks
* 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