<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/100001/">http://git.reviewboard.kde.org/r/100001/</a>
</td>
</tr>
</table>
<br />
<p>Ship it!</p>
<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 good to me! Max, feel free to review the CurriedQM stuff, where Andy essentially saves a list of function calls and replays them. Code looks clean. Andy, if you fix the really absolutely minor things i found, merge when you have the chance. Oh, and make sure you add an entry to the ChangeLog :)
Also, for future reference, we discussed on IRC something like the following:
1) On startup, check for playdar. If it exists, show the playdar collection.
2) Show a Playdar entry in Internet Sources. If checked, poll for playdar every ~5 or 10 minutes, with a refresh button available in the settings of the internet service. Though playdar is not technically an internet service, we could write a small stub one to provide a config UI in a logical place. It would be nice to have a "collections config" page to put this, but as all the other collections are auto-detected, this might not make a ton of sense.
Thoughts appreciated.</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="/r/100001/diff/1/?file=154#file154line42" style="color: black; font-weight: bold; text-decoration: underline;">src/core-impl/collections/playdarcollection/PlaydarCollection.h</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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">namespace Collections</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">42</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">PlaydarCollectionFactory</span><span class="p">(</span> <span class="n">QObject</span><span class="o">*</span> <span class="o">&</span><span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariantList</span> <span class="o">&</span><span class="n">args</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;">I'm guessing the & is a copy and paste error here :)</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="/r/100001/diff/1/?file=155#file155line40" style="color: black; font-weight: bold; text-decoration: underline;">src/core-impl/collections/playdarcollection/PlaydarCollection.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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">namespace Collections</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">40</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="n">PlaydarCollectionFactory</span><span class="o">::</span><span class="n">PlaydarCollectionFactory</span><span class="p">(</span> <span class="n">QObject</span><span class="o">*</span> <span class="o">&</span><span class="n">parent</span><span class="p">,</span> <span class="k">const</span> <span class="n">QVariantList</span> <span class="o">&</span><span class="n">args</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;">Probably worth calling the superclass constructor with parent() rather than in the constructor body :)</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="/r/100001/diff/1/?file=155#file155line124" style="color: black; font-weight: bold; text-decoration: underline;">src/core-impl/collections/playdarcollection/PlaydarCollection.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="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
<td colspan="2"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">namespace Collections</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">124</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "> <span class="o">:</span> <span class="n">m_collectionId</span><span class="p">(</span> <span class="s">"Playdar Collection"</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;">is this string shown to the user? if so, it needs to be wrapped in i18n()</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="/r/100001/diff/1/?file=159#file159line2" style="color: black; font-weight: bold; text-decoration: underline;">src/core-impl/collections/playdarcollection/PlaydarQueryMaker.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; "></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">2</font></th>
<td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="cm"> * Copyright (c) 2010 Andrew Coder <andrew.coder@gmail.com *</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;">I don't know if you care, but all your license headers are missing a final > in your email address :D</pre>
</div>
<br />
<p>- Leo</p>
<br />
<p>On September 24th, 2010, 1:49 a.m., Andy Coder 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 and Leo Franchi.</div>
<div>By Andy Coder.</div>
<p style="color: grey;"><i>Updated 2010-09-24 01:49:15</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 what it does, (basically):
1) Adds the PlaydarCollection/QueryMaker/Meta/etc. code in src/core-impl/collections/playdar-collection/
2) Adds the top-level external/ directory and moves JsonQt into it
3) Changes the formerly unused side of the behavior of MetaProxy::Track,
(when AwaitLookupNotification == false), so that PlaydarTracks can sit
around and eventually get updated without slowing things to a crawl
4) Changes CurrentEngine and the SimilarArtists applet' use of
CollectionManager::instance()->primaryCollection() to ->queryMaker()
5) Adds the 'Add top track to playlist' button to SimilarArtists
6) Prevents XSPFPlaylist from killing of MetaProxy::Tracks just
because they're not playable yet</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>CMakeLists.txt <span style="color: grey">(191b02e)</span></li>
<li>external/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/COMPATIBILITY <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/COPYING.HEADER <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/Doxyfile.cmake <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/README.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/add-copyright-header.sh <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonQtExport.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpc.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpc.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpcAdaptor.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpcAdaptor.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpcAdaptorPrivate.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonRpcAdaptorPrivate.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonToProperties.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonToProperties.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonToVariant.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/JsonToVariant.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/ParseException.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/ParseException.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/VariantToJson.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/lib/VariantToJson.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/JsonRpc.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/JsonRpcAdaptor.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/JsonToProperties.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/JsonToVariant.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/JsonQt/tests/VariantToJson.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>external/README.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/context/applets/similarartists/ArtistWidget.h <span style="color: grey">(a9331f6)</span></li>
<li>src/context/applets/similarartists/ArtistWidget.cpp <span style="color: grey">(702248e)</span></li>
<li>src/context/engines/current/CurrentEngine.cpp <span style="color: grey">(bb8e869)</span></li>
<li>src/context/engines/songkick/CMakeLists.txt <span style="color: grey">(fab9a28)</span></li>
<li>src/context/engines/songkick/JsonQt/CMakeLists.txt <span style="color: grey">(9978895)</span></li>
<li>src/context/engines/songkick/JsonQt/COMPATIBILITY <span style="color: grey">(1a5b619)</span></li>
<li>src/context/engines/songkick/JsonQt/COPYING.HEADER <span style="color: grey">(bf9c30e)</span></li>
<li>src/context/engines/songkick/JsonQt/Doxyfile.cmake <span style="color: grey">(4d2a4bf)</span></li>
<li>src/context/engines/songkick/JsonQt/README.txt <span style="color: grey">(4ebcf73)</span></li>
<li>src/context/engines/songkick/JsonQt/add-copyright-header.sh <span style="color: grey">(8d21c92)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/CMakeLists.txt <span style="color: grey">(3d39457)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonQtExport.h <span style="color: grey">(d7024e5)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpc.h <span style="color: grey">(8f0024c)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpc.cpp <span style="color: grey">(cbcd161)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpcAdaptor.h <span style="color: grey">(83836c8)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpcAdaptor.cpp <span style="color: grey">(18a1504)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpcAdaptorPrivate.h <span style="color: grey">(03c990c)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonRpcAdaptorPrivate.cpp <span style="color: grey">(c8fddb0)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonToProperties.h <span style="color: grey">(f04bd58)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonToProperties.cpp <span style="color: grey">(4859d49)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonToVariant.h <span style="color: grey">(82b62c0)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/JsonToVariant.cpp <span style="color: grey">(323e31a)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/ParseException.h <span style="color: grey">(a942d37)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/ParseException.cpp <span style="color: grey">(c663179)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/VariantToJson.h <span style="color: grey">(2a1a645)</span></li>
<li>src/context/engines/songkick/JsonQt/lib/VariantToJson.cpp <span style="color: grey">(baa7cdd)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/CMakeLists.txt <span style="color: grey">(4954fe7)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/JsonRpc.cpp <span style="color: grey">(1ce4c9c)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/JsonRpcAdaptor.cpp <span style="color: grey">(6e99599)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/JsonToProperties.cpp <span style="color: grey">(e1a0707)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/JsonToVariant.cpp <span style="color: grey">(414d1c9)</span></li>
<li>src/context/engines/songkick/JsonQt/tests/VariantToJson.cpp <span style="color: grey">(dfad043)</span></li>
<li>src/core-impl/collections/CMakeLists.txt <span style="color: grey">(79046d6)</span></li>
<li>src/core-impl/collections/playdarcollection/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarCollection.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarCollection.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarMeta.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarMeta.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarQueryMaker.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/PlaydarQueryMaker.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/amarok_collection-playdarcollection.desktop <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/Controller.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/Controller.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/ProxyResolver.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/ProxyResolver.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/QMFunctionTypes.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/Query.h <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/playdarcollection/support/Query.cpp <span style="color: grey">(PRE-CREATION)</span></li>
<li>src/core-impl/collections/support/MemoryFilter.cpp <span style="color: grey">(e329faa)</span></li>
<li>src/core-impl/collections/support/MemoryQueryMaker.cpp <span style="color: grey">(831601b)</span></li>
<li>src/core-impl/meta/proxy/MetaProxy.cpp <span style="color: grey">(341e076)</span></li>
<li>src/core-impl/meta/proxy/MetaProxy_p.h <span style="color: grey">(d2638a8)</span></li>
<li>src/core-impl/playlists/types/file/xspf/XSPFPlaylist.cpp <span style="color: grey">(592bc24)</span></li>
</ul>
<p><a href="http://git.reviewboard.kde.org/r/100001/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/100001/s/2/"><img src="http://git.reviewboard.kde.org/media/uploaded/images/2010/09/24/ss-amarok-defaultPlaylistAndCoversLoaded_400x100.png" style="border: 1px black solid;" alt="It works! (for me)" /></a>
</div>
</td>
</tr>
</table>
</div>
</body>
</html>