StatSyncing GSoC week 3 (squashed commits, recent on top)

Review Request #105219 - Created June 11, 2012 and discarded

Matěj Laitl
schweingruber, shanachie
StatSyncing: implement actual synchronization

 * add set[Rating,Playcount...] methods to StatSyncing::Track
 * implement synchronize() in TrackTuple, misc fixes in TrackTuple
 * introduce SynchronizeTracksJob and call use it -> synchronization
   is working now!

EditCapability: add set{First,Last}Played(), setPlayCount()

These are needed for statistics synchronization to work (without
hacks). I want to move setRating() and setScore() out of Meta::Track
to EditCapability in future, too.

StatSyncing: introduce Provider::writableTrackStatsData() and use it that we don't e.g. try to set labels on iPod over and over again.
The implementation of writableTrackStatsData() in CollectionProvider is
currently very naïve, the proper solution would be to add a method to
Collections::Collection (which I'll probably do in future).

StatSyncing: rating conflict resolution

StatSyncing: functional view filtering, update & conflict detection

 * TrackTuple learns how to tell conflict in ratings, how to denote
   that any field's gonna be updated
 * MatchedTracksModel can say what track tuples are going to be
   updated and which have conflicts
 * view learns how to sort, filter by string and filter by state

StatSyncing: show fields that are going to be updated in bold

This implements following features:
 * support in TrackTuple for determining synced values
 * support in TrackTuple for determining which fields will be updated
 * forwarding both of these in MatchedTracksModel

Matěj Laitl
Review request changed

Status: Discarded

Change Summary:

GSoC 2012 has ended, I will post complete review when the code is seady for merging into master.