<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/100128/">http://git.reviewboard.kde.org/r/100128/</a>
     </td>
    </tr>
   </table>
   <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/100128/diff/1/?file=3132#file3132line293" style="color: black; font-weight: bold; text-decoration: underline;">src/playlist/proxymodels/ProxyBase.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 1)

    </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; ">ProxyBase::tracks() const</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">293</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">    <span class="n">foreach</span><span class="p">(</span> <span class="n">QString</span> <span class="n">searchTerm</span><span class="p">,</span> <span class="n">searchList</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;">const ref the qstring</pre>
</div>
<br />



<p>- Rick W.</p>


<br />
<p>On November 2nd, 2010, 1:13 a.m., Thomas Karpiniec 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 Thomas Karpiniec.</div>


<p style="color: grey;"><i>Updated 2010-11-02 01:13:11</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;">With this patch a search string of space-separated words will return rows which match every word in the list. The old behaviour is to match rows containing the entire search string in any one of the fields searched.

This permits combination of terms Firefox-style: things like &quot;beatles abbey&quot; to find all tracks from Abbey Road, or &quot;riv anda&quot; to get &quot;Andalucia&quot; from Riverdance.

My only misgiving is that as implemented it will tokenise the search term on every single attempted row match. As rowMatch() is called both directly in several functions to find matches in SearchProxy.cpp and after a timeout to do the row filtering in SortFilterProxy.cpp, pulling the tokenisation up one level will require either that the tokenisation code is repeated, or that the search-related functions are all modified to use QStringLists instead of a QString. If that is a better way I&#39;ll do that, but as it stands rowMatch() is not a particularly small function so the small overhead seems reasonable.</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 on a playlist of ~8000 tracks. Performance seems good, matching is accurate and it works just fine with single terms or inputs with extra spaces.</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/proxymodels/ProxyBase.cpp <span style="color: grey">(b6ff53a)</span></li>

</ul>

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




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








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