<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="8" style="border: 1px #c9c399 solid;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="http://git.reviewboard.kde.org/r/105219/">http://git.reviewboard.kde.org/r/105219/</a>
     </td>
    </tr>
   </table>
   <br />


<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.org/media/rb/images/review_request_box_top_bg.png'); background-position: left top; background-repeat: repeat-x; border: 1px black solid;">
 <tr>
  <td>

<div>Review request for Amarok, Bart Cerneels and Myriam Schweingruber.</div>
<div>By Matěj Laitl.</div>







<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">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

...so 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</pre>
  </td>
 </tr>
</table>





<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>src/CMakeLists.txt <span style="color: grey">(a54e2dcbea4ad415d2f5a25c6cd925bf7760b625)</span></li>

 <li>src/core-impl/capabilities/timecode/TimecodeEditCapability.h <span style="color: grey">(bfd50407acbfe1d5b1f02186032c927cd7b04b39)</span></li>

 <li>src/core-impl/collections/db/sql/CapabilityDelegateImpl.cpp <span style="color: grey">(e344e0f8a8f26450b4340a64188cab72fa1a755c)</span></li>

 <li>src/core-impl/collections/ipodcollection/IpodMetaEditCapability.h <span style="color: grey">(a19691e3dfc7fbb20befefc19dbd9c2a00c8af47)</span></li>

 <li>src/core-impl/collections/ipodcollection/IpodMetaEditCapability.cpp <span style="color: grey">(bc62412923ebf6c90de7b0c180a18c238d2fd0b8)</span></li>

 <li>src/core-impl/collections/mediadevicecollection/MediaDeviceEditCapability.h <span style="color: grey">(63f85e7f3b20a534a83830cb5aa70758007ebc1a)</span></li>

 <li>src/core-impl/collections/mediadevicecollection/MediaDeviceEditCapability.cpp <span style="color: grey">(13a08bb98d4ed1473dcc0e2116172929a97cdf10)</span></li>

 <li>src/core-impl/collections/proxycollection/ProxyCollectionMeta.cpp <span style="color: grey">(8d4df176e4ada5b63e6ca9b57f142c76e1b1ce5b)</span></li>

 <li>src/core-impl/meta/file/File.cpp <span style="color: grey">(b64015035b1d1d0156be65271e7e158756c9216e)</span></li>

 <li>src/core-impl/meta/proxy/MetaProxy.cpp <span style="color: grey">(51299f827e11ccaace9c8ffb012780c1b7db30b6)</span></li>

 <li>src/core/capabilities/EditCapability.h <span style="color: grey">(b3b3013d33fe73b416fb38627cc9eafd6f0742de)</span></li>

 <li>src/statsyncing/Options.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/Options.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/Process.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/Process.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/Provider.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/Track.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/TrackTuple.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/TrackTuple.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/collection/CollectionProvider.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/collection/CollectionProvider.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/collection/CollectionTrack.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/collection/CollectionTrack.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/jobs/MatchTracksJob.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/jobs/SynchronizeTracksJob.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/jobs/SynchronizeTracksJob.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/models/CommonModel.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/models/CommonModel.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/models/MatchedTracksModel.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/models/MatchedTracksModel.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>src/statsyncing/ui/MatchedTracksPage.ui <span style="color: grey">(PRE-CREATION)</span></li>

 <li>tests/core-impl/collections/proxycollection/TestProxyCollectionMeta.cpp <span style="color: grey">(640c09c1e3fcac68e067b809bd1b723e4b0509e0)</span></li>

</ul>

<p><a href="http://git.reviewboard.kde.org/r/105219/diff/" style="margin-left: 3em;">View Diff</a></p>




  </td>
 </tr>
</table>




  </div>
 </body>
</html>