<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/110658/">http://git.reviewboard.kde.org/r/110658/</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;">Looks very well, *BIG* kudos for cleaning up all places that can now be simplified, we love patches that actually remove more lines than they add while improving functionality. But perhaps Shuffle can be removed also from Playlist::Column enum and Playlist::columnForName().

BTW I've tried and it works fine, only consideration is the behavirour when the Shuffle is used for example after "Artist" - currently the effect is not visible unless you have multiple same artists, which looks confusing. Another problem is that "Shuffle" is not visible under leftmost arrow when you already have some sorting levels active. (more specifically, it is shown only under the rightmost arrow)

I suggest either
 a) show Shuffle *only* under the leftmost arrow (which I prefer)
 b) make Shuffle reset all sorting levels

Normally I would think whether this is important enought to be added to ChangeLog, but bug number exists, then is is simple: bug exists -> should be in ChangeLog, this one under BUGFIXES.

Also thanks for including proper tags in commit msg.</pre>
 <br />







<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="http://git.reviewboard.kde.org/r/110658/diff/2/?file=146497#file146497line449" style="color: black; font-weight: bold; text-decoration: underline;">src/playlist/PlaylistController.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#e9eaa8" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2">449</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">if</span><span class="p">((</span> <span class="n">from</span><span class="p">.</span><span class="n">count</span><span class="p">(</span> <span class="n">i</span> <span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span> <span class="p">)</span> <span class="o">||</span> <span class="p">(</span> <span class="n">to</span><span class="p">.</span><span class="n">count</span><span class="p">(</span> <span class="n">i</span> <span class="p">)</span> <span class="o">!=</span> <span class="mi">1</span> <span class="p">)</span> <span class="p">)</span></pre></td>
    <th bgcolor="#e9eaa8" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">448</font></th>
    <td bgcolor="#fdfebc" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">QSet</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">fromItems</span><span class="p">(</span> <span class="n">from</span><span class="p">.</span><span class="n">toSet</span><span class="p">()</span> <span class="p">),</span> <span class="n">toItems</span><span class="p">(</span> <span class="n">to</span><span class="p">.</span><span class="n">toSet</span><span class="p">()</span> <span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">nitpick: when it improves readability, we prefer single variable declaration per line, this seems to be the case.</pre>
</div>
<br />

<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="http://git.reviewboard.kde.org/r/110658/diff/2/?file=146497#file146497line450" style="color: black; font-weight: bold; text-decoration: underline;">src/playlist/PlaylistController.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">void</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">449</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="k">if</span><span class="p">(</span> <span class="n">fromItems</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">!=</span> <span class="n">from</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">||</span> <span class="n">toItems</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">!=</span> <span class="n">to</span><span class="p">.</span><span class="n">size</span><span class="p">()</span> <span class="o">||</span> <span class="n">fromItems</span> <span class="o">!=</span> <span class="n">toItems</span> <span class="p">)</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">1. Nice way to checking every item is there just once! ;)

2. I think that fromItems == toItems is unssecessary assumption. I think it is perfectly valid to move rows 2, 3 to places 14, 15, assuming the playlist is long enough.</pre>
</div>
<br />

<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="http://git.reviewboard.kde.org/r/110658/diff/2/?file=146503#file146503line54" style="color: black; font-weight: bold; text-decoration: underline;">tests/playlist/TestPlaylistModels.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">TestPlaylistModels::TestPlaylistModels()</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">53</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="c1">// Initialize playlistAction before we set the playlist, lest our playlist be overwritten with Art Of Nations</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">nitpick: typo: lest</pre>
</div>
<br />

<div>




<table width="100%" border="0" bgcolor="white" style="border: 1px solid #C0C0C0; border-collapse: collapse; margin: 2px padding: 2px;">
 <thead>
  <tr>
   <th colspan="4" bgcolor="#F0F0F0" style="border-bottom: 1px solid #C0C0C0; font-size: 9pt; padding: 4px 8px; text-align: left;">
    <a href="http://git.reviewboard.kde.org/r/110658/diff/2/?file=146503#file146503line245" style="color: black; font-weight: bold; text-decoration: underline;">tests/playlist/TestPlaylistModels.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

    </span>
   </th>
  </tr>
 </thead>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">226</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">Meta</span><span class="o">::</span><span class="n">TrackList</span> <span class="n">oldTrackList</span> <span class="o">=</span> <span class="n">The</span><span class="o">::</span><span class="n">playlist</span><span class="p">()</span><span class="o">-></span><span class="n">tracks</span><span class="p">();</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">227</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">228</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">The</span><span class="o">::</span><span class="n">playlistActions</span><span class="p">()</span><span class="o">-></span><span class="n">shuffle</span><span class="p">();</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">229</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">230</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">QVERIFY</span><span class="p">(</span> <span class="n">oldTrackList</span> <span class="o">!=</span> <span class="n">The</span><span class="o">::</span><span class="n">playlist</span><span class="p">()</span><span class="o">-></span><span class="n">tracks</span><span class="p">()</span> <span class="p">);</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">231</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">232</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">The</span><span class="o">::</span><span class="n">playlistController</span><span class="p">()</span><span class="o">-></span><span class="n">undo</span><span class="p">();</span></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">233</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
  </tr>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">234</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">QCOMPARE</span><span class="p">(</span> <span class="n">oldTrackList</span><span class="p">,</span> <span class="n">The</span><span class="o">::</span><span class="n">playlist</span><span class="p">()</span><span class="o">-></span><span class="n">tracks</span><span class="p">()</span> <span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

<pre style="margin-left: 2em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">nitpick: a bit too much newlines for my taste, but this is just bikeshedding, feel free to keep this.</pre>
</div>
<br />



<p>- MatÄ›j</p>


<br />
<p>On May 27th, 2013, 12:26 a.m. UTC, Konrad Zemek wrote:</p>








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

<div>Review request for Amarok.</div>
<div>By Konrad Zemek.</div>


<p style="color: grey;"><i>Updated May 27, 2013, 12:26 a.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;">Playlist sort widget: reimplement Shuffle "sort" as an action.

Remove now-unnecessary Shuffle handlers in sort-related functions. Additionally, PlaylistController::MoveRows has been modified to help with big move actions (validation complexity reduced).

GUI: In the playlist sort widget, the Shuffle menu entry is now separated from other entries. Activating the entry no longer results in a "Shuffle" sort level being added.
BUG: 320129
FIXED-IN: 2.8</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;">Test added for the shuffle action. GUI tested manually.</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/playlist/PlaylistActions.h <span style="color: grey">(dee8793e5386d3a44c98698631f6e8dd13a7d62f)</span></li>

 <li>src/playlist/PlaylistActions.cpp <span style="color: grey">(1decce7c3d7bef36f314b8abcc337064438a92e0)</span></li>

 <li>src/playlist/PlaylistBreadcrumbItem.h <span style="color: grey">(d6ff243d7b78358f3a943de9a345d694c613aec9)</span></li>

 <li>src/playlist/PlaylistBreadcrumbItem.cpp <span style="color: grey">(59fc6d2a68d86e4d0cd4c1def343ac6973bc5965)</span></li>

 <li>src/playlist/PlaylistBreadcrumbItemSortButton.h <span style="color: grey">(c141597614ac40c3c4adaf212f3d46b9ff360293)</span></li>

 <li>src/playlist/PlaylistBreadcrumbItemSortButton.cpp <span style="color: grey">(8bf861cfcd4234a0d34c3542b9fa806ce66454de)</span></li>

 <li>src/playlist/PlaylistBreadcrumbLevel.cpp <span style="color: grey">(185ebfbafcbc3ef8ca80d9fd9ae42b0663a59eca)</span></li>

 <li>src/playlist/PlaylistController.cpp <span style="color: grey">(95d2b828be0a6fa3c73998fe6681e57743788f1d)</span></li>

 <li>src/playlist/PlaylistSortWidget.cpp <span style="color: grey">(62f760cc6a201a67be65c80bf03ae696bd44444c)</span></li>

 <li>src/playlist/proxymodels/SortAlgorithms.h <span style="color: grey">(2eba6a7dd4c227f55d519083f9af9cf7b08f043d)</span></li>

 <li>src/playlist/proxymodels/SortAlgorithms.cpp <span style="color: grey">(47b468c99e37d3ff8b148704791c5058726ac812)</span></li>

 <li>src/playlist/proxymodels/SortScheme.cpp <span style="color: grey">(d29f9dec6b1c2ae555146853782819328ae192f0)</span></li>

 <li>tests/playlist/TestPlaylistModels.h <span style="color: grey">(3751e6a2c3d56be1a6abcea742eec088e2a1123b)</span></li>

 <li>tests/playlist/TestPlaylistModels.cpp <span style="color: grey">(ec8adb8f2c5bbb141f291989499e361d5a73381d)</span></li>

</ul>

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







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








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