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





<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On November 15th, 2010, 3:33 p.m., <b>Ralf Engels</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Regarding the noCompilation of the collection scanner.
Actually this makes sense.

The collection scanner has a lot of heuristics for detecting if an album is a compilation.
However we also have a compilation tag.
If the tag claims that a track is definitely not in a compilation, then we should respect this and not try to auto-detect the compilation status.

I just noticed that I was not following this rule myself, but neighter should the noCompilation variable be removed unless you can argue why this doesn&#39;t make sense.
</pre>
 </blockquote>




 <p>On November 15th, 2010, 4:03 p.m., <b>Sergey Ivanov</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Track could only has 2 states: belong_to_compilation or belong_to_regular_album. But to indicate this 1bit information is currently used 2 mutually exclusive boolean variables. Initially they all are false, if track is a part of compilation isCompilation becomes true, if not - isNoCompilation. ATM there is no any way to get both of them true or false simultaneously, so I don&#39;t see any reason to use both.
This &quot;a lot of heuristics&quot; contains 2 checks in Directory: 1 directory AND 1 album but several artists - this is compilation; 1 directory AND empty album name AND less then 20 tracks - directory name is album name. ( isCompilation isn&#39;t used ) and 2 twins-functions isCompilation and isNoCompilation in Album class, which checks is isCompilation and isNoCompilation flags and compare album artist name with &quot;Various Artists&quot;. Since isCompilation and isNoCompilation are mutually exclusive all this &quot;heuristic&quot; fold up to 1 line compact check. :)</pre>
 </blockquote>





 <p>On November 15th, 2010, 7:22 p.m., <b>Ralf Engels</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">No. 
That&#39;s not it.
An album is a not a compilation if all tracks have the same artists, no artist or not &quot;various artist&quot; as album artist.
It is also not a compilation if one of it&#39;s tracks have the corresponding tag.
It is a compilation if one of it&#39;s tracks says so.

So, you see. The twenty lines of artist name checking aren&#39;t there for show.
The three states that a track can have are: in a compilation, not in a compilation, depends on the artists.
Actually I made a mistake in Directory.cpp. There I will throw tracks together into one compilation album independent of their compilation state.
I should not throw them together if one of the tracks says &quot;noCompilation&quot;. That&#39;s where you need the flag again.

&quot;isCompilation&quot; and &quot;noCompilation&quot; are only mutually exclusive at the very end, when you actually know all the tracks you want to put into an album.

</pre>
 </blockquote>








</blockquote>

<pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Ok. Reverted collection scanner changes for this patch. But still disagree with current way of handling collections and Album Artists. Probably It will be another patch, with more deep changes. :)</pre>
<br />








<p>- Sergey</p>


<br />
<p>On November 16th, 2010, 11:21 a.m., Sergey Ivanov wrote:</p>






<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="8" style="background-image: url('http://git.reviewboard.kde.orgrb/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 Sergey Ivanov.</div>


<p style="color: grey;"><i>Updated 2010-11-16 11:21:17</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;">Add new QueryType - AlbumArtist.
Add new &quot;level&quot; to collection browser.
Add Album Artist field to TagDialog.
Add Album Artist to TagGuesser and Organize Collection dialog.
Tiny changes to collection scanner: simplify albumartist handling for Album class, and remove really strange (and mostly useless) m_isNoCompilation var from Track.</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;">Tested with SqlCollection. Seems works for me. </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/amarokurls/NavigationUrlGenerator.cpp <span style="color: grey">(5c48e73)</span></li>

 <li>src/amarokurls/NavigationUrlRunner.cpp <span style="color: grey">(2d6384b)</span></li>

 <li>src/browsers/CollectionTreeItemModelBase.h <span style="color: grey">(23a189f)</span></li>

 <li>src/browsers/CollectionTreeItemModelBase.cpp <span style="color: grey">(7015cd4)</span></li>

 <li>src/browsers/CollectionTreeView.cpp <span style="color: grey">(2bb894c)</span></li>

 <li>src/browsers/collectionbrowser/CollectionWidget.cpp <span style="color: grey">(8623079)</span></li>

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

 <li>src/core-impl/collections/db/sql/SqlQueryMaker.h <span style="color: grey">(680050f)</span></li>

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

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

 <li>src/core-impl/collections/proxycollection/ProxyCollectionQueryMaker.h <span style="color: grey">(63d6c2c)</span></li>

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

 <li>src/core-impl/collections/support/MemoryQueryMaker.h <span style="color: grey">(72ddaf1)</span></li>

 <li>src/core-impl/collections/support/MemoryQueryMaker.cpp <span style="color: grey">(81bf9b6)</span></li>

 <li>src/core-impl/collections/support/MemoryQueryMakerInternal.h <span style="color: grey">(db94d8b)</span></li>

 <li>src/core-impl/collections/support/MemoryQueryMakerInternal.cpp <span style="color: grey">(eeffd77)</span></li>

 <li>src/core-impl/collections/support/XmlQueryReader.cpp <span style="color: grey">(b5518f0)</span></li>

 <li>src/core-impl/collections/support/XmlQueryWriter.h <span style="color: grey">(5caf7bc)</span></li>

 <li>src/core-impl/collections/support/XmlQueryWriter.cpp <span style="color: grey">(3c9cf41)</span></li>

 <li>src/core/collections/MetaQueryMaker.h <span style="color: grey">(799825a)</span></li>

 <li>src/core/collections/MetaQueryMaker.cpp <span style="color: grey">(10ae2a7)</span></li>

 <li>src/core/collections/QueryMaker.h <span style="color: grey">(9c15659)</span></li>

 <li>src/core/collections/QueryMaker.cpp <span style="color: grey">(78c6ba7)</span></li>

 <li>src/core/meta/support/MetaConstants.h <span style="color: grey">(ba56248)</span></li>

 <li>src/core/meta/support/MetaUtility.cpp <span style="color: grey">(5cf4519)</span></li>

 <li>src/dialogs/FilenameLayoutDialog.h <span style="color: grey">(2e20c77)</span></li>

 <li>src/dialogs/FilenameLayoutDialog.cpp <span style="color: grey">(9b572a9)</span></li>

 <li>src/dialogs/FilenameLayoutDialog.ui <span style="color: grey">(b65b6f1)</span></li>

 <li>src/dialogs/MusicBrainzTagger.cpp <span style="color: grey">(a9fc8a2)</span></li>

 <li>src/dialogs/TagDialog.h <span style="color: grey">(fbc89ae)</span></li>

 <li>src/dialogs/TagDialog.cpp <span style="color: grey">(fa0b33a)</span></li>

 <li>src/dialogs/TagDialogBase.ui <span style="color: grey">(816ecb5)</span></li>

 <li>src/dialogs/TagGuesser.h <span style="color: grey">(476b16d)</span></li>

 <li>src/dialogs/TagGuesser.cpp <span style="color: grey">(bd3820d)</span></li>

 <li>src/services/ServiceSqlQueryMaker.h <span style="color: grey">(5591ecc)</span></li>

 <li>src/services/ServiceSqlQueryMaker.cpp <span style="color: grey">(197f2cf)</span></li>

 <li>src/services/ampache/AmpacheServiceQueryMaker.cpp <span style="color: grey">(7dee8c8)</span></li>

 <li>src/services/mp3tunes/Mp3tunesServiceQueryMaker.cpp <span style="color: grey">(4dc8fed)</span></li>

 <li>src/services/scriptable/ScriptableServiceQueryMaker.cpp <span style="color: grey">(76faca2)</span></li>

</ul>

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



<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Screenshots </h1>

<div>

 <a href="http://git.reviewboard.kde.org/r/100135/s/17/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2010/11/06/AA_400x100.png" style="border: 1px black solid;" alt="Only one album &quot;Once&quot;. As It should be." /></a>

 <a href="http://git.reviewboard.kde.org/r/100135/s/18/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2010/11/06/AA1_400x100.png" style="border: 1px black solid;" alt="2 albums, and 3rd is somewhere below." /></a>

 <a href="http://git.reviewboard.kde.org/r/100135/s/19/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2010/11/06/AA_1_400x100.png" style="border: 1px black solid;" alt="" /></a>

</div>


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








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