Phase II MTP Support

Document Complete

This document will no longer be updated. Please use bugzilla to track issues and progress for stories.

Contents

MTP Devise Support Phase 2

Introduction

For phase 1 we focused on the API/infrastructure over consumer-user-facing functionality that would make managing devices with Songbird particularly useful. In phase 2 let's add automatic syncing support that mimics that of iTunes and iPod.

Purpose of This Document

This document suggests a possible incremental evolution to MTP support in Songbird.

Goals

By user

  • [Business]
  • [User]
  • [Developer]

Wireframes

Sync settings in the summary page

Image:Sync-settings.png

Dialogs

Not enough free space

Image:Dialog-free-space.png

Confirmation of sync

Image:Dialog-sync-confirm.png

Transfer error

Image:Dialog-transfer-error.png

Progress display

Strings for each state

Image:Progress-strings.png

Flow with sync + CSS change

Image:Progress-spec-flow.png

Playlists and libraries

Device

Image:Read-only-media-list.png

Main

Image:Media-item-contextual-menu.png

Service pane

Image:Contextual-menu-device.png

Sync specifications

Description

ID Cost Title Story
8301 8302 8303

8306

8307
10

Sync it!

When Songbird syncs, it should transfer media items (music and video), playlists, media list ordering, and media list sort ordering.

Music files should go in the appropriate location in the device and so should video files.

Media items that have completed transfer should appear in the device where ones in progress or in queue should not. (Experiment with adding style to the row later)

8312 8313 8314

Sync metadata to device metadata under the hood

All metadata that is transfered between Songbird DB and the device DB should happen without any status display to the user. If the user wants to update the metadata on file for media items on the device then they need to trigger a sync.

NOTE: Maybe enhance this in the future, somehow.

8317

8318

8320

8321

8323

8324

2

Multiple ways to trigger and cancel a sync

Both the user and system can trigger a sync:

  • User:
    • click [Sync] button in summary page progress display widget
    • select "Sync" in device node contextual menu
  • System:
    • when sync settings are saved - where "Sync" is selected
    • sync source media list definition has changed
    • metadata for media items contained in the sync source media list has changed
    • when a device is connected and the sync settings is set to "Sync"

Questions: Do we need a timer or something for this? Is there a problem if every little change is reflected in the device atomically?

Maybe wait n seconds for a command before grouping it as a unit of transaction?

User can cancel sync:

  • User:
    • click [Cancel] button in summary page progress display widget
    • select "Cancel $(action)" in device node contextual menu

Service Pane Contextual Menu Wireframe

[1] 2

Multiple ways to trigger and cancel a manual file transfer

Both the user and system can trigger a sync:

  • User:
    • drag media items from a media list to the device node, device library, or device playlist, or media view
    • drag media items from OS to the device node, device library, or device playlist, or media view
    • contextual menu item - "Add to device" - from the main library or playlist

User can cancel sync:

  • User:
    • click [Cancel] button in summary page progress display widget
    • select "Cancel $(action)" in device node contextual menu

Service Pane Contextual Menu Wireframe

8309 0

Daisy-chain sync/transfers smartly

Need to talk to engineering to see what the "smartly" means...

NOTE: This happens now - test to see if implemented behavior is ok.

Songbird should deal with requests for transfer/sync that are submitted during a transfer/sync in progress...

SKIP

Transfer album art so that the device can display it

Transfer whatever artwork Songbird has for the media item and transfer it to the device.

DEPENDENCY: Songbird needs to support album art before this story can be worked on.

QUESTION: Do we have the ability to detect what image file format a given device supports and not transfer if the one in the DB is not supported?
ANSWER: I think we have enough information (at least for MTP), but do not know how easy it would be to hook up. --Mook 23:40, 13 March 2008 (PDT)

Engineering Notes

  • We may already be smart enough about batching. We will determine this with help from Keisuke and Daniel. Tentatively costing this 0 until we have our answers.
  • Need an explicit conflict resolution algorithm (possibly we just overwrite everything and take the songbird view as the truth? Note: This means clobbering play count too?) --Mook 13:07, 10 March 2008 (PDT)
    • We will want both merging and override. --Mook 18:57, 12 March 2008 (PDT)
    • Probably default to songbird wins, and let device override per-property? --Mook 19:00, 12 March 2008 (PDT)
  • When do we want the metadata to sync? Queued up with everything else would be the easiest; that might not work as well for users though. --Mook 12:27, 10 March 2008 (PDT)
    • As soon as possible. (i.e. can cut in line and go right after the current action finishes) --Mook 19:02, 12 March 2008 (PDT)
  • Do we need to do anything with any on-the-go playlists? --Mook 11:12, 14 March 2008 (PDT)
    • skip (WMP doesn't support it) --Mook 14:22, 25 March 2008 (PDT)
  • So we merge metadata from the device over; and we just warn about extra items on the device (i.e. stop the sync). What about changed playlists? --Mook 11:14, 14 March 2008 (PDT)
    • Clobber their changes (the songbird version wins) --Mook 14:22, 25 March 2008 (PDT)

Production Notes

  • Asset list
  • none
  • Visual design
  • none

Sync settings specification

Description

ID Cost Title Story

8325

8326
4

User is able to configure how Songbird manages the device through an iTunes-like interface in the device summary page

"Sync" and "Manually manage" are mutually exclusive.

"All music, video, and playlists" and "Selected playlists" are only enabled when "Sync" is selected.

"All music, video, and playlists" and "Selected playlists" are mutually exclusive.

A list of all playlists - excluding the "Web Media History" and "Downloads" - should be selectable by the user as sources for device sync. The selection made by the user should be saved even if the configuration does not use the selection.

  • [Cancel] Should revert any changes made between the last time changes were committed to the time when the [Cancel] button was clicked.
  • [Save] If either the "All music, video, and playlists" or the "Selected playlists:" options are selected then Songbird should kick off a sync immediately.

If a factory setting device is connected to Songbird then Songbird should select the "Manually manage" settings.

If a device that Songbird recognized for the first time is connected then Songbird should select the "Manually manage" settings.

Wireframe

Engineering Notes

  • none

Production Notes

  • Asset list
  • none
  • Visual design
  • none - start by using the default element styles that are provided by the feather

Progress display widget specification

Description

ID Cost Title Story
8339 3

Progress status are reflected through strings, better

The progress display widget has 3 strings - the summary message, the detailed message, and the button label. These strings should update to reflect the state of sync/file transfer.

If the sync/transfer completes with errors then the user should be able to view details about the error in the form of a dialog that is invoked from the progress widget's summary message.

Table of strings and statuses

8340 1

Addition of a button that invokes sync

User is able to invoke a sync manually by clicking a button in the progress display widget.

NOTE: Maybe this is not useful - I'm told it's easy to implement so lets and remove it if there is no value in it.

Wireframe

7958 1

The progress display widget should not wiggle

Currently the widget wiggles when it is asked to display messages that are longer than the width of the progress bar. Let's set a static width to the progress bar and labels. The labels should crop the strings they display at the right side. A tooltip should appear when the user hovers over a cropped string.

Wireframe

Engineering Notes

  • When the label clips, how do we show the rest to the user? Via tooltip? Just ignore? (Note that the string may be of the form "hello.mp3 failed to transfer" in some languages) --Mook 12:32, 10 March 2008 (PDT)
    • [komi] Tooltip, please!

Production Notes

  • Asset list
  • none
  • Visual design
  • none - start by using the default element styles that are provided by the feather

Dialogs specification

Description

ID Cost Title Story
8341 1

Confirmation dialog if device not empty

If a sync is triggered but the device contains music, video, or playlists that will be deleted by the sync then the "Sync Confirmation" dialog should be displayed.

  • If [Yes] then the Songbird should go ahead with the sync.
  • If [No] then Songbird should take no action and select the "Manually manage" setting.

Wireframe

8346 2

Auto-generate a playlist containing a random selection of media items if not enough free space

If a sync is triggered but the sum of file size of the media items in the sync source is more than that of the device then Songbird should display the "Insufficient free disk space" dialog to prompt the user for action:

  • If [Yes] is chosen then Songbird should create a new playlist titled "$(device display label) playlist" which is filled with a random selection of media items from the main Library. Songbird should then automatically set "Sync" mode to "Selected playlists:" and select the newly created playlist. Finally, Songbird should kick off a sync.
  • If [No] then Songbird should take no action and select the "Manually manage" setting.

Wireframe

8347

Confirm sync if device is coupled with another Library

If sync is invoked but the device is the sync destination of another Library then a "Sync confirmation" dialog should be displayed.

  • If [Yes] then sync should be performed. Songbird should create some coupling between the device and the Library for future use.
  • If [No] then Songbird should take no action and select the "Manually manage" setting.

If the user

  1. configures the device to sync with Songbird
  2. disconnect device
  3. edits the contents of the device using another media player
  4. reconnects device to Songbird

...then...

  1. Songbird should change settings to be manual mode
  2. Songbird should invoke sync which will display the confirmation dialog

Wireframe

8349 3

Display prompt when device does not have enough free space for manual transfers

If a manual media item transfer is triggered but the sum of file size of the media items in at the source is more than that of the device then Songbird should display the "Insufficient free disk space" dialog to prompt the user for action:

  • If [Yes] is chosen then Songbird should transfer as much of the files as possible. The order of media items should be defined by the media list that is the source.
  • If [No] then Songbird should take no action.

Wireframe

8350 3

A single error dialog for all transfer errors

Modify the "Incompatible files detected" dialog to make it a more generic dialog that can handle all sorts of errors that are collected during file transfers. This dialog is accessible from the "errors" link in the progress display widget.

Wireframe

Maybe f there are any errors then the dialog should automatically display after transfer is complete? (this might be super-annoying) Maybe add a "[x] tell me next time" option to the dialog? (this adds the requirements for a [Reset warning messages] button somewhere)

8351

Dialog for when user tries to close Songbird while the device is busy

If the user tries to close Songbird (or if Songbird tries to close tiself) then a confirmation dialog should appear to ask if the user would like to:

  • Cancel all transfer and quite Songbird
  • Continue with transfer and cancel quitting Songbird

TODO: Wireframe pending.

Engineering Notes

  • For the auto-generated list, if a list of that name already exists? Make a new one of the same name, replace, or append some number? --Mook 12:46, 10 March 2008 (PDT)
    • [komi] For better or for worse, Songbird allows playlists of the same name to be created - we should do the same. Just need to make sure that th eordering in the service pane is the same as the ordering in the sync settings widget.
  • That auto-generated list goes in the main library? --Mook 12:46, 10 March 2008 (PDT)
    • [komi] Yes please.
  • If songbird is already in sync playlist mode (but still manages to run out of space), we still do that auto-generated playlist thing right? --Mook 12:46, 10 March 2008 (PDT)
    • [komi] Correct. I should update the wireframe to abstract "Library".
  • How do we define "sync destination of another library"? I suck and can't understand this. --Mook 12:46, 10 March 2008 (PDT)
    • [komi] The Library that is synced with the device should couple with the device. If the user attempts to sync the device with any Library than the the one that is coupled with the device then we should detect it.
    • If we detect that the device's physical library isn't the same state we left it (i.e. songbird device library and physical library are out of sync), put it into manual mode; immediately trigger a sync. (Leads to dialog) --Mook 19:10, 12 March 2008 (PDT)
  • On manual transfer with not enough space: If I have 5M of space, and songs (in order) of 4, 3, 2M, I transfer one file only? And 4, 3, 1M I also transfer 1 only? or first and last? --Mook 12:46, 10 March 2008 (PDT)
    • [komi] The dialog will say "...as many files as possible..." so let's do what we can to fit as much as possible.

Production Notes

  • Asset list
  • none
  • Visual design
  • none

Device playlist/library specification

Description

ID Cost Title Story
8355
8356
8357
8358
4

Read-only mode for playlists/libraries

If "Sync" is set then any playlists and libraries under the device node should be in read only mode. Read only mode means:

  • "Remove", "Edit", "Add to playlist" are disabled in the contextual menu
  • Media items can not be dragged and dropped to the node
  • Media items can not be reordered through drag and drop (defined by the source media list)
  • Tree headers can not be reordered (defined by the source media list)
  • Tree headers can not be clicked to change sort order (defined by the source media list)
  • Metadata editor can be invoked but displays in read-only mode
  • Media items can not be dragged and dropped to the media view loaded in the content pane

Wireframes

Engineering Notes

  • (I believe this may be under-costed - I'd go for at least 1 per bullet point) --Mook 12:50, 10 March 2008 (PDT)

Production Notes

  • Asset list
  • none
  • Visual design
    • Color for disabled media list rows - The rows should be grayed out to communicate that they can not be interacted with in the same way as media lists in read/write mode.

Main playlist/library specification

Description

ID Cost Title Story
8360 2

Transferring media item(s) from the main Library and playlists to a device via contextual menu

The user is able to transfer selected media item(s) in the main Library to devices via a contextual menu.

The contextual menu should list all devices recognized by Songbird. If no device is connected to Songbird then the menu item should be disabled.

Note: It's going to be difficult to implement this while we have the new and old device API. Let's revisit when we have deprecated the old APIs. Aus said this is stupid easy!

Wireframe

Q What to do with playlists? Should playlists have a similar contextual menu?
A Eh - there are other ways of creating playlists - eg: contextual menu on the device node - so let's skip this.

Engineering Notes

  • Assuming this means only for the new API and not devicesobsolete --Mook 12:52, 10 March 2008 (PDT)

Production Notes

  • Asset list
  • none
  • Visual design
  • none

UI enhancements

Description

ID Cost Title Story
SKIP ?

Display generic device type specific icons when the device does not provide an icon.

We have the ability to detect 5 unique device types:

  • Generic
  • Camera
  • Media Player
  • Phone
  • Video
  • PIM (Personal Information Manager)
  • Audio Recorder

Feathers should include icons for each device type so that if the device does not provide an icon for itself then Songbird should displays these in the summary pane and in the service pane. See Windows for examples.

SKIP ?

Refine visual design of device summary page

Spiff up the visual design of the summary page. See discussion about visual design for details

DEPENDENCY: Can't do much till the summary page and all assets/CSS are migrated to core/feather.

SKIP

Communicate "in transit" state at a media item level

Media items that are scheduled to be transfered should be styled the same.

The media item that is being transfered should be styled.

Engineering Notes

  • none

Production Notes

  • Asset list
  • Icons for each device type
  • Visual design
  • none


Additional Engineering Notes

  • Device support must be implemented on a per-platform basis - Windows, Mac, Linux.
  • Should code used for the iPod summary page UI and the MTP device summary page be consolidated somewhere?
    • We'll continue with separate code lines. Consolidate when iPod is absorbed by core.

Known Risks

  • Windows device SDK is a risk, always.

Interdependencies

  • none

Future

Carried over

  • handling remote media files well
  • more error messages and dialogs
  • metadata written to file so that the device and the app show the same data all the time [scheduled for Eno]
    • Does this mean we want to overwrite the stored media on the device, in addition to telling the device itself about the metadata changes? (I.e. so that when you pull the media off the device again it'll have the right metadata) --Mook 13:06, 10 March 2008 (PDT)
  • album art - Songbird needs to support album art first [scheduled for Eno]
  • sync device time and system time
  • merge/update playcount, skipped, rating, last-played metadata syncing [scheduled for Eno (free with list-to-list syncing mechanism)]
  • status in status bar
  • firmware update

New

  • Songbird core adopting the summary page to be used for all devices
    • Style the summary page using feather CSS and assets
  • A nice first run (factory settings device on-boarding) process
  • Background syncing of metadata - Bug 7071 [scheduled for Eno]
    • This will allow for enabling/disabling the sync button - Bug 6680 [scheduled for Eno]
  • Bi-directional transfer of media items
  • manual sync mode - the user is the only one who can trigger a sync. This is different than manual transfer/management mode.
  • Testing with non-Sansa devices

Sansa / Sandisk UED Requirements

  • For devices offering external memory slots (SD, MMC, TransFlash, etc), offer an option to prompt the user for each batch of files transferred to the device so that they may select if the files should go onto the internal or external memory. The dialog should have a "Don't show me this again" checkbox.
  • The user should have the ability to set a default for the memory to be used.

Roadmap

Image:Sansa-roadmap.png

Visual Design

The XUL/CSS/graphic assets that are used for the summary page for MTP devices is now part of Songbird's core code base. This means that feather developers have full access to the resources required to customize the page - as opposed to the iPod summary page that is packaged as part of the add-on.

Questions: Do we want to fit in a pass at visual design for the MTP device summary page as part of MTP support phase 2?

Current state

Image:Sb-device-summary-page.png

Samsung demo

Image:Samsung-demo-summary-page.png

iTunes

Image:Itunes-ipod-summary-page.png

WMP

Image:Wmp-device-summary-page.png

Notes

Komi 18:03, 19 February 2008 (PST) Seeded document-

Komi 23:53, 3 March 2008 (PST) Presented document to Aus earlier today

Komi 23:58, 3 March 2008 (PST) Aus updated the doc with a rough estimate of cost (for planning purposes only, engineering still needs to create tasks) 43 points

Komi 18:19, 25 March 2008 (PDT) [Google doc with tasks]


Tag page
You must login to post a comment.