<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/104049/">http://git.reviewboard.kde.org/r/104049/</a>
     </td>
    </tr>
   </table>
   <br />





 <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Please use the reviewboard when responding to reviews. It's impossible to keep track when switching between this and the mailing list.

> As i mentioned, this is just a preview so i am not interested in code
> style issues at this point. 

The point of a coding style is having consistent readable code. As I mentioned this code is to complex to also have to parse a different coding style as well.

> Are the actual changes to scanner logic
> good and should i continue the work? If yes, next steps would be
> implementing partial scan and deleting missing files from database.
>
> Any ideas how to implement deletion are welcome. I'm not sure if it
> should be done in amarok or scanner process.

I think it's a good idea to have the scanner process only list the current contents of the folder. When updating a collection, after the scanner is done, you could go over the list of tracks and find what was not reported. Then you should remove those tracks.

Thinking of an efficient technical step-by-step:
1) Mark all tracks as removed (in memory, using hash on database uniqueurl for instance).
2) Run scanner process, update QHash (clear bit "removed") for each reported track.
3) After scanner is done apply the removed bits to the database, but don't actually delete the tracks that were not found during the update.
4) Either after every update scan (those can run automatically) or manually from the menu > tools; offer a removed tracks review-and-confirm dialog. This will truly remove rows from the database.

This would get around the possibility of removing all tracks by accident because of bad configuration or missing mounted filesystem, yet dramatically improving performance because of live scanning and shorter code path in parsing scanner output.
I think those steps make it easier to reuse collectionscanner in more Collection plugins (like USB Mass Storage) as well.</pre>
 <br />







<p>- Bart</p>


<br />
<p>On February 23rd, 2012, 2:25 p.m., Ville Ranki wrote:</p>






<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.</div>
<div>By Ville Ranki.</div>


<p style="color: grey;"><i>Updated Feb. 23, 2012, 2:25 p.m.</i></p>






<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;">This is a preview of work i've been doing to implement live scanning. Currently it can do full scan 
and add found tracks to database during the scan. Removing missing files is not yet implemented. Also partial 
scan may not work as expected.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </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;">"Works on my pc" on a small test collection.</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/core-impl/collections/db/ScanManager.h <span style="color: grey">(5f0d153)</span></li>

 <li>src/core-impl/collections/db/ScanManager.cpp <span style="color: grey">(97d0b1c)</span></li>

 <li>src/core-impl/collections/db/ScanResultProcessor.cpp <span style="color: grey">(4f02a16)</span></li>

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

 <li>src/scanner/GenericScanManager.cpp <span style="color: grey">(215f78b)</span></li>

 <li>utilities/collectionscanner/CollectionScanner.h <span style="color: grey">(6bbc757)</span></li>

 <li>utilities/collectionscanner/CollectionScanner.cpp <span style="color: grey">(74b57a6)</span></li>

 <li>utilities/collectionscanner/Directory.cpp <span style="color: grey">(66b3a9b)</span></li>

</ul>

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




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








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