Column Browser Design

Registered by Danielle Foré

The purpose of the column browser is to provide a way to filter down the list of songs in the library. This has a couple of big use cases:

1. Finding a specific song. The column can be used to find a specific song by narrowing down the view to displaying a smaller set of songs. This is helpful if you can't remember a songs name but you know other attributes of the song such as (primarily) what album it's on, the genre, and (secondarily) if it's track 5 or has 4 stars.

2. Filtering the list of currently playing songs. The column can be used to create sort of "temporary playlists" by filtering the list of currently playing songs. This is useful if you'd like to listen to a specific genre, artist or album. This mental model implies that non-traditional columns such as "composer" "Producer" "record label" or "star rating" could be useful.

Behavior:

* Positioning.
    * Browser positioning should default to "Automatic" based on screen size, with the option to force "Left" and "Top" [DONE]

* Column Headers:
    * Columns should have headers that display what the column contains, such as "Artists" [DONE]
    * Primary click on column headers scrolls to the top and selects the "All" filter [DONE]
    * Alternate click on column headers should allow for hiding and showing of available columns as well as setting the positioning of the browser. [DONE]
        * We should make sure that as long as the browser is enabled one column is always shown. The last item should be made insensitive to disallow a situation where we're unable to get the browser back. [DONE]

* Filtering:
    * All Columns should be prefixed with a filter "All # %NAME" where %NAME is the name of the column such as "Artists" or "Genres" and # is the number of available items in the browser such as "All 30 Genres" [DONE]
    * Columns should filter other columns "below" them, but not "above". For example, selecting an Artist should filter down the selection of Albums, but not genres. [DONE]
        * If a higher level column is selected that doesn't apply to a lower level column (for example, select the genre Jazz for the band Weezer) the lower level columns should be reset to "All" to avoid an impossible selection. [DONE]
    * If you've selected (for example) an artist in the browser, the artist column should be hidden in the media list. [TODO]

Blueprint information

Status:
Complete
Approver:
None
Priority:
Medium
Drafter:
None
Direction:
Approved
Assignee:
None
Definition:
Approved
Series goal:
Accepted for 0.2
Implementation:
Implemented
Milestone target:
None
Started by
Victor Martinez
Completed by
Danielle Foré

Whiteboard

Since the current column view and the list view share the same treeview, we need to hide the columns which match the filter from it (genre, artist and album name).

Some users have expressed that they feel certain columns are unnecessary. However, point 2 implies that having more columns could be useful. This implies that it would be beneficial to be able to hide and show columns like BeatBox 0.2 and iTunes. Otherwise we should probably stick to the traditional three columns.

Having the columns on the left side might not work out well for smaller screens (this is 13", imagine a 10" tablet): http://imgur.com/6cU5f However, I think having them on the left side does make more sense.

After some discussion in IRC, we reached the conclusion that Left side makes more sense hierarchically, but Top makes more sense on a smaller window. So the sanest default would be to have the column position itself automatically based on the size of the window, but to allow the user to force a preferred side.

For 1.0, we'll only have Ratings, Years, Genres, Artists and Albums, due to our limited search engine. We don't want to break things with a feature freeze just around the corner. -- Victor

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.