Stories / Tasks
High-level Feature Goals
Provide users with greater visual feedback when performing drag & drop actions in Songbird. When item(s) are being dragged collapse them into something size wise that doesn't interfere with interacting with the UI.
- Display how many items have been selected.
- Draggable media items should appear as a single unit with a graphical icon + numeric cue.
- Draggable media items should not appear like a row in the playlist.
Inform when the user can take actions with draggable media items in the application, by showing some change when hovering a drag & drop session over a valid target. For example:
- Items in the service pane should clearly show they accept something (a playlist should highlight when hovered)
- Draggable media items should indicate an icon if they are being added to something (such as a playlist or library)
Details
Songbird has several different kinds of items within the system. Various sources can generate a drag session containing these items, or consume a drag session to make use of them. The drag session itself can also escape or enter the system from the OS or another application.
| Draggable Types |
| MediaItem | MediaItems | MediaList | Bookmark | File | URL | XPI
|
| Internal | External
|
Drag Session Sources
Playlist Widget
Dragging a selection in the playlist widget creates an iconified representation of that selection which can be treated as playlists or as a group of files bug 10301. Filter panes should drag their contents. bug 10349
Service Pane
Service pane nodes define their own drag behaviour. Playlists should be flavoured as internal sb/playlists. Bookmarks should be able to appear as URLs. All service pane nodes drag with their service-pane rendered appearance.
Browser
The browser can create standard drag browser sessions, as well as allowing tabs and URLs to be dragged.
OS
The OS is beyond our control. However, we are interested in media/playlist files, URLs, and XPIs.
Drop Locations
There are many locations throughout the application which need to be able to consume drag sessions from various sources. Actions highlighted in red are not currently implemented.
Playlist Widget (playlist mode)
all items dropped in the widget should be selected and the first item should be scrolled onscreen bug 10299
- mediaitem(s)
- add at drop location for other playlist
- reorder within same playlist
- [P3] (within same playlist) reorder/duplicate depending on [alt] key modifier
- playlist
- file(media)
- add at drop location and import if necessary
- file(playlist)
- [P3] prompt: "add to this playlist, or import as playlist?" add contents to playlist.library as necessary.
Playlist Widget (library mode)
- file (media)
- [P1] import (if necessary)
- file (playlist)
- [P3] create new playlist and import items as necessary + display playlist
Service Pane (background)
- file(media)
- [P1] import and add to main library + select the library
- file(playlist)
- [P3] import and add playlist + display playlist
- url
- [P4] add to bookmarks if necessary or to library if media
- [P4] cannot drop on downloads
Service Pane (bookmarks)
- url
- [P4] add bookmark as necessary (don't allow drops of media?)
- bookmark
Service Pane (playlists)
- mediaitem(s)
- (special) hover for a while
- [P1] open playlist in a new tab without interrupting D&D session (or focus if open)
- medialist
- medialist (not present in service pane)
- undefined -- currently not possible via any of our tools
- file (playlist)
- [P3] import and add as required + display playlist
New Playlist button
- mediaitems / files(mediaitems)
- create a new playlist with those items
Faceplate
- [P3] mediaitem(s) / playlist / files
External
Media lists dropped on the desktop or other applications should create a playlist file there. (P4) Dragging files out of the application should work and copy them to the drop location.
It would be cool to have smarts around auto-naming new playlists that are created as a result of drag and drop.
I think we can skip the subscription <-> bookmark use case. The current best thinking is to move bookmarks out of the service pane. We can decide to support this case later, if we chose?
I'm not entirely sure about the back/forward button -- I don't think that makes sense to me, since the service pane is already showing all your playlists anyway and only certain kinds of playlists could be dropped on (simple playlists created by the user and not deleted, not smart playlists, web playlists, or anything else I can think of.)