<div dir="ltr"><span id="docs-internal-guid-565c1139-61fd-9f50-0a39-a9467f6fc5a7" style="color:rgb(0,0,0);font-family:'Times New Roman';font-size:medium"><p dir="ltr" style="line-height:1.6;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Here's a new version of the proposal. Some things like suspend inhibition and transcoding are still tentative, since I am awaiting a response to my previous email.
</span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Also, the version of my proposal on the melange page is a major formatting mess. Can I link to a pdf or external webpage instead?</span><span style="font-weight:bold;font-size:15px;font-family:Arial;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">
Short description</span><span style="font-weight:bold;font-size:12px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-weight:bold;font-size:12px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">My proposal aims at revamping the Amarok scripting interface, and adding an intuitive Script Creator graphical application allowing easy script creation by non-coders and coders alike. This involves getting rid of dangerous and obsolete methods, and adding accessors for all the new features added to Amarok over the years. Every major type will have a QtScript object representation, allowing unparalleled scripting flexibility. I also plan on writing unit tests to allow automated testing of the Amarok scripting API. The third part involves documentation of the entire scripting API in-source and automating the generation of Amarok Scripting API documentation from the in-source documentation. All of this will lead to a cleaner and more feature rich well-documented scripting API hopefully generating new interest in Amarok scripting. Other features I plan to work upon, if time permits, are allowing users to terminate long running or stuck scripts instead of forcing a restart, adding GUI handling to the script creation utility and porting popular Amarok 1.4 scripts, if possible, to the newer QtScript based interface.</span></p>

<br><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span><p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Name</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Anmol Ahuja</span><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Email Address</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"><a href="mailto:darthcodus@gmail.com">darthcodus@gmail.com</a></span><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"> </span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Freenode IRC Nick</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">DarthCodus</span><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">IM Service and Username</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"> Gtalk, <a href="mailto:darthcodus@gmail.com">darthcodus@gmail.com</a></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Location (City, Country and/or Time Zone)</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> : </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">New Delhi, India ( GMT +5:30</span><span style="font-size:15px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">)</span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.4625;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Proposal Title</span><span style="font-size:19px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"> :</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">Revamping Amarok’s Scripting Interface</span></p>

<br><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Motivation for Proposal</span><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">:</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Amarok has a thriving scripting community, but the existing scripting API is:</span></p>

<i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">
<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">
<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Undocumented</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Currently, Amarok script functions must be documented manually on the wiki, and the documentation in its current state only includes only names of Global objects and methods, with no description or example to clarify their purpose or usage. [</span><a href="https://bugs.kde.org/show_bug.cgi?id=313283" style="text-decoration:none"><span style="background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">BR 313283</span></a><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">]</span></p>

</li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Untested</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">No tests for Amarok’s scripting interface exist as of this writing</span></p></li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Unreliable </span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Inconsistent signals [</span><a href="https://bugs.kde.org/show_bug.cgi?id=299218" style="text-decoration:none"><span style="background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">BR 299218</span></a><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">]</span></p>

</li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Incomplete</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">No scripting interface for new features added to Amarok over the years, like saved playlists and playlist object, CollectionManager, Dynamic Playlists, etc.</span></p>

</li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Dangerous</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Allows direct access to the underlying SQL database</span></p></li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Obsolete</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Uses deprecated methods and calls, for instance, the Collection methods called in AmarokCollectionScript.</span></p>

</li></ul></i></ul></i><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Project Goals</span><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">:</span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">My proposal involves four main parts :</span></p><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:square;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Part I : Setting up Automating Documentation</span><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Setup Doxygen for automatically generating the Scripting API Documentation wiki content from in-source documentation.</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Document any undocumented scripting API code in-source.</span></p>

</li></ul></i><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">Part II : Clean up, document and write unit tests for the existing Scripting API</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Deprecate AmarokCollectionScript</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:square;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Some features will be moved to the new AmarokScript::CollectionManager class.</span></p>

</li><li dir="ltr" style="list-style-type:square;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Others, like direct SQL access, will be deprecated without replacement</span></p>

</li></ul></i><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Set up notification for scripts calling deprecated methods and objects</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Write scripts for unit-testing the existing scripting interface. Look into existing solutions like </span><a href="http://blog.qt.digia.com/blog/2007/11/05/unit-testing-with-qt-script/" style="text-decoration:none"><span style="background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">QSTestLib</span></a><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> to see if they’re viable for unit testing Amarok Scripting API, and write custom unit tests if they’re not.</span></p>

</li></ul></i></ul></i><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:square;font-size:16px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Part III : Revamping the Scripting API</span><span style="font-size:15px;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Add accessors for the other Amarok features to the Amarok scripting API</span></p>

</li></ul></i><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">( Documentation and unit tests will be written as soon as an API class/ method is implemented )</span></p>

<i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">CollectionManager</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Collection</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">CollectionLocation</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Transcoding [Uncertain, awaiting Matěj’s response]</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">QueryMaker( exposed indirectly via QueryFilter )</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Playlists</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Dynamic Playlists</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Automatic Playlist Generator</span></p></li>

</ul></i></ul></i><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Bookmarks</span></p></li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Equalizer [Uncertain, awaiting Matěj’s response]</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Podcast Management</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">MatchTracksJob</span></p></li></ul></i><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Others</span></p></li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Add suspend inhibition to AmarokScript [Uncertain, awaiting Matěj’s response]</span></p>

</li></ul></i></ul></i></ul></i></ul></i><br><span style="font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"></span><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Add other requested features/ wishes and fix bugs</span><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt"><a href="https://bugs.kde.org/show_bug.cgi?id=183497" style="text-decoration:none"><span style="font-size:15px;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 183497</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Scripting API to add a context menu to everything representing a song or file</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=187957" style="text-decoration:none"><span style="font-size:15px;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 187957</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Create submenus from the Scripting interface</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=176663" style="text-decoration:none"><span style="font-size:15px;background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 176663</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Installing a new script requires a restart of amarok</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=232711" style="text-decoration:none"><span style="font-size:15px;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 23271</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">: - Provide scripting interface to customize collection display (filter, sort, group, displayed tags, etc.)</span></h2>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt"><a href="https://bugs.kde.org/show_bug.cgi?id=205509" style="text-decoration:none"><span style="font-size:15px;background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 205509</span></a><span style="font-size:15px;background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> :</span><span style="font-size:17px;font-family:'Trebuchet MS';background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> </span><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Add dbus functions to update podcasts and download podcast tracks</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=176663" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 176663</span></a><span style="font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Installing a new script requires restart of Amarok</span><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i></ul></i></ul></i><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Others ( Covered earlier/ later ):</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt"><a href="https://bugs.kde.org/show_bug.cgi?id=299218" style="text-decoration:none"><span style="font-size:15px;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 299218</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Amarok script API track signals are unreliable, undocumented</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=150610" style="text-decoration:none"><span style="font-size:15px;background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 150610</span></a><span style="font-size:15px;background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> -</span><span style="font-size:17px;font-family:'Trebuchet MS';background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> </span><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Add Dynamic Playlist API for scripts</span></h2>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><a href="https://bugs.kde.org/show_bug.cgi?id=279701" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 279701</span></a><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Scripting support for the equalizer</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=243096" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 243096</span></a><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Load a saved playlist in database from script</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=313283" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 313283</span></a><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Amarok Scripting API lacks documentation</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=245647" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 245647</span></a><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"> - Programmatic access to data objects in QtScript</span></p>

</li></ul></i></ul></i></ul></i></ul></i><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:square;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Others ( if time permits, can be continued after GSoC )</span><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Add new scripts demonstrating the new scripting API </span><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">( and adding cool new features )</span><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">A generic full-fledged synchronization framework like iTunes written in Amarok Script for media devices</span></p>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><h2 dir="ltr" style="line-height:1.3;margin-top:10pt;margin-bottom:0pt">

<span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Link to Google Music Search for currently playing artist (also </span><a href="https://bugs.kde.org/show_bug.cgi?id=136502" style="text-decoration:none"><span style="font-size:15px;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 136502</span></a><span style="font-size:15px;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">)</span></h2>

</li><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;margin-left:48px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">Automatic adjust equalizer according to genre (also </span><a href="https://bugs.kde.org/show_bug.cgi?id=129374" style="text-decoration:none"><span style="background-color:transparent;font-weight:normal;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Bug 129374</span></a><span style="background-color:transparent;font-weight:normal;vertical-align:baseline;white-space:pre-wrap">)</span></p>

</li></ul></i></ul></i><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;margin-left:48px">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">Allow abortion of long running scripts</span><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">The scripting engine is blocking, and poorly written scripts freeze the UI. Popup a dialog box (popup delay user configurable) allowing users to terminate long running scripts.</span><span style="font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"></span></p>

<br><span style="font-size:15px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"></span><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Implementation Details</span></p><br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QObjects can easily be accessed in QtScript, an ECMAScript based language, thanks to the Qt meta-object system. This can be achieved by passing them to QScriptEngine::newQObject(), resulting in a QtScript accessible QScriptValue with all of the QObject's public slots and signals, functions with the Q_INVOKABLE macro, named child objects, and Q_PROPERTY parameters (with SCRIPTABLE true) accessible in the script environment.</span></p>

<br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">In Amarok script, only selected methods are exposed to the QtScript environment by creating QObject( and for prototypes, QScriptable ) - derived wrappers for the classes to be accessed via Amarok script, to avoid cluttering the scripting API and customizing behavior of Amarok classes to be script friendly. This gives complete control over functionality made available via the scripting API. These wrappers simply call the functions of the actual class they link to, which do the real work. So, instead of having to design Javascript equivalents of every class, only the wrapper QObjects must be made and exported.</span></p>

<br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">I will be using the following QtScript classes in this GSoC project:</span></p><br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:disc;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QScriptable - For exposing Amarok classes like Collection, CollectionLocation to the scripting environment. They will be exposed using QScriptable and QObject derived classes registered as protoypes via QScriptEngine::setDefaultPrototype(). The </span></p>

</li></ul></i><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:disc;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline">

<p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QScriptable derivation allows accessing the scriptable environment's context from within the C++ code, allowing access to the calling object and more.</span></p>

</li><li dir="ltr" style="list-style-type:disc;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QScriptEngine - Provides the environment for QtScript evaluation. Used for setting custom protoypes of objects, setting global objects in the scripting environment, etc.</span></p>

</li></ul></i><br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:disc;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Other basic classes, like:</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QScriptContext for Javascript to C++ interaction, like accessing function arguments, accessing the this pointer, etc.</span></p></li>

<li dir="ltr" style="list-style-type:circle;font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">QScriptValue : for translating objects back and forth between QtScript and Qt/ C++.</span></p>

</li></ul></i></ul></i><br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Qt Script uses garbage collection to reclaim memory used by script objects when they are no longer needed, with this need being determined on the basis of the ownership parameter passed as the second argument to QScriptEngine::newQObject():</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">1. Qt Ownership (default) - QObject owned by the C++ code, not the script engine. That is, it managed according to Qt's object ownership.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">2. Script ownership - Script engine fully owns the QObject, deleting it when there are no references to it in the script code.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">3. Auto-Ownership - Behaves like Script ownership when no parent, Qt Ownership otherwise.</span></p>

<br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><br><b style="font-weight:normal"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Here are class diagrams for some of the classes I plan on implementing, as detailed in the project goals:</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:16px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">1. Collection Management and Manipulation</span></p>

<br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span><img src="https://lh4.googleusercontent.com/TNEHya2OECXJlIR4XJpy9hdZfyySQUM9lLHuiEc7DqVBQYtfd-7fPO4IlI8aySXn_VNHx3IjwYRV9vBeQrpQFF1vNWyhFZITVM0D04Opmrf7XlHmr1OAeDR3" width="691px;" height="329px;"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Handling collections, copying between collections, transcoding and querying in an object oriented way.</span><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">( Names of other scripting classes will also be changed to reflect this naming scheme, like AmarokScript::Engine instead of AmarokScript::AmarokEngineScript )</span></p>

<br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">The QueryMaker will be exposed in a simplified form via the QueryFilter class, which will use Collections::addTextualFilter and addDateFilter to allow the CollectionBrowser search widget like queries. For example:</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt;margin-left:72pt;text-indent:36pt"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">title:"carry" AND artist:"Fun."</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Besides being much simpler, it’s also easy to test directly from the Amarok collection browser.</span></p>

<br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">2. AmarokScript::EngineController</span><img src="https://lh3.googleusercontent.com/HgouxiQ_w0qiCcEOBBxAB3quurrROMOUkf9SrydzyUT5pdl3d3K56f631FcdIev9eR10sNSI0PVSulz_e2bt8PpkNa5yapCa_vBVn-Jc0Nf3JJKTgFVre8TJ" width="503px;" height="276px;"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">( only lists properties and methods which do not already exist )</span></p>

<br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">3. AmarokScript::Equalizer</span><img src="https://lh4.googleusercontent.com/aGKan8rIJRXmSi_yVJxuTjlvVVUGv6zT95DR6Ad9OhjbaEsp254muGviQ3upnjEMWLGTghDM_YAfppWnYLih0P3pLWwV1Q7C6xcOyvs7KLBHs-oF3WUJIZbZ" width="380px;" height="308px;"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Other changes/ refactoring ( part of the initial cleanup ):</span></p><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><i style="font-weight:bold;font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt">

<li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">AmarokScript</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Write script errors to the error log</span><span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.6;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">AmarokNetworkScript</span></p>

</li><i style="font-style:normal"><ul style="margin-top:0pt;margin-bottom:0pt"><li dir="ltr" style="list-style-type:circle;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.6;margin-top:0pt;margin-bottom:0pt">

<span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Check if 0th parameter of Context passed to Downloader::init is a QUrl</span><span style="font-size:13px;color:rgb(80,0,80);vertical-align:baseline;white-space:pre-wrap"></span></p>

</li></ul></i><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Move all Amarok Scripting classes to the AmarokScript namespace, if they aren’t already there, like StreamItem and ScriptableServiceScript.</span></p>

</li><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Move classes StreamItem and ScriptableServiceScript to different files.</span></p>

</li><li dir="ltr" style="list-style-type:disc;font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">Rename classes in the AmarokScripting namespace, like AmarokScript::AmarokEngineScript to AmarokScript::Engine. Rename </span><span style="font-size:13px;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">MetaTypeExporter to TrackExporter.</span></p>

</li></ul></i><br><b style="font-weight:normal"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap"></span></b><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Tentative Timeline</span><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">:</span><span style="font-size:19px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">May 27 - May 30 : Familiarize myself with members of the Amarok team. Discuss  proposal with team-members and fine-tune implementation details based on the feedback.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">May 31 - June 5 : Finalize all implementation details and the work plan, resolving any ambiguities.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">June 6 - June 17 :</span><span style="font-size:15px;font-family:Arial;color:rgb(153,153,153);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> Unavailable due</span><a href="https://bugs.kde.org/show_bug.cgi?id=313283" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(153,153,153);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> to my ex</span></a><span style="font-size:15px;font-family:Arial;color:rgb(153,153,153);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ams</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(0,255,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><-----Coding Period Starts-----></span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">June 17 - June 23 : Set up automatic scripting API documentation on the Ama</span><a href="https://bugs.kde.org/show_bug.cgi?id=299218" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">rok Scrip</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">t wiki page using Doxygen. Document the existing scripting API</span><span style="font-size:15px;font-family:Arial;color:rgb(180,167,214);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">June 24 - June 30 : Clean up existing API. Deprecate redundant, obsolete, soon to be replaced objects and calls. Add deprecation notifier for scripts using deprecated API calls.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">June 31  - July 6  :  Continue with cleanup. Write unit tests for the existing API</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(180,167,214);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">( For the rest of the API, documentation will be written along with the code, and unit tests for every component of the scripting API written as soon as it is complete )</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">July 7  - July 13 : Implement CollectionManager and write QtScriptObject accessors for Collection and CollectionLocation.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">July 14  - July 20 : Implement file copying and moving among CollectionLocations, with script configurable transcoding support  using TranscodingConfiguration objects.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">July 21 - July 27 : Implement EqualizerController class. Implement AmarokScript::Equalizer.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">July 28 - July 31 : Write QtScriptObject for QueryFilter ( Querymaker ) and Bookmarks. Add accessors for QueryFilter to CollectionTypeExporter.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(204,65,37);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><--------August 2----------> Midterm</span><a href="http://blog.qt.digia.com/blog/2007/11/05/unit-testing-with-qt-script/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(204,65,37);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> Evaluati</span></a><span style="font-size:15px;font-family:Arial;color:rgb(204,65,37);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ons Deadline</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">August 3  - August 9 : Podcast Management. MatchTracksJobs.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">August 10 - August 16 : Dynamic playlists and automatic playlist generators</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">August 17  - August 23 : Add missing features to AmarokScript::Engine as detailed in the class diagram above. Other features, like suspend inhibition.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">August 24  - September 9 : : Other requested features and bug-fixes.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(106,168,79);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><----- All components of the scripting interface ready at this point-----></span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">September 10 - September 16 : Write the new scripts. Implement script execution control.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(204,65,37);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><-----September 16-----> Suggested Pencils Down</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">September 17   - September 23</span><a href="https://bugs.kde.org/show_bug.cgi?id=183497" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">  : (Buffe</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">r Time)  Finish any pending tasks.</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;color:rgb(204,65,37);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"><----- September 23----->Firm Pencils Down</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Sep</span><a href="https://bugs.kde.org/show_bug.cgi?id=187957" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">tember 23 </span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">and on - tweaking, bug fixing, polishing interfa</span><a href="https://bugs.kde.org/show_bug.cgi?id=176663" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ce based o</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">n community feedback</span></p>

<br><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">About Me</span><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">:</span></p>

<p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">I’m Anmol, a 20 year old</span><a href="https://bugs.kde.org/show_bug.cgi?id=232711" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> engineer</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ing student, studying Computer Science and Engineering in New Delhi, India.</span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">I  was introduced to KDE by my </span><a href="https://bugs.kde.org/show_bug.cgi?id=205509" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">college se</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">nior Rishab (spacetime) as a solution to my session management proble</span><a href="https://bugs.kde.org/show_bug.cgi?id=176663" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">m, and I w</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">as hooked. Being an avid music fan, I was naturally drawn to Amarok as my music player of </span><a href="https://bugs.kde.org/show_bug.cgi?id=299218" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">choice, an</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">d eventually the first  open source project I decided to contrib</span><a href="https://bugs.kde.org/show_bug.cgi?id=150610" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ute to.</span></a></p>

<br><a href="https://bugs.kde.org/show_bug.cgi?id=150610" style="font-weight:bold;text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></a><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<a href="https://bugs.kde.org/show_bug.cgi?id=150610" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">T</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">he Amarok community has been very welcom</span><a href="https://bugs.kde.org/show_bug.cgi?id=279701" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ing, espec</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ially </span><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">Matěj (strohel)</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> and Myriam (Mamar</span><a href="https://bugs.kde.org/show_bug.cgi?id=243096" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">ok)</span><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">, guidi</span></a><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">ng me through my open source journey, and it’s be</span><a href="https://bugs.kde.org/show_bug.cgi?id=313283" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">en a lot o</span></a><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">f fun  working with them. Even more exciting</span><a href="https://bugs.kde.org/show_bug.cgi?id=245647" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap"> has been </span></a><span style="font-size:15px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">adding features from my wishlist to Amarok myself and watching them being accepted upstream, knowing they’ll eventually reach the entire Amarok user-base [ waiting for 2.8 ;) ].</span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">I am a rapid learner and a proficient C++ developer, it being the first language I started coding in four years ago in high school. I have worked in several other languages over the</span><a href="https://bugs.kde.org/show_bug.cgi?id=136502" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> years, in</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">cluding Python, Java, Javascript and Dart . I have mad</span><a href="https://bugs.kde.org/show_bug.cgi?id=129374" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;color:rgb(0,0,0);background-color:transparent;vertical-align:baseline;white-space:pre-wrap">e some pro</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">jects in college, and an Android app </span><a href="https://play.google.com/store/apps/details?id=com.anm.bwished" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">B’Wished</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"> (now defunct), and have been an active member of the Amarok community.</span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">After GSoC, I will continue contributing to Amarok as I have been, and hopefully contribute to some other KDE software too!</span><span style="font-size:13px;font-family:Arial;color:rgb(80,0,80);vertical-align:baseline;white-space:pre-wrap"></span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">My contributions to Amarok include the following patches:</span></p><br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">Contributions to Amarok</span><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">:</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

<br><b style="font-weight:normal"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></b><div dir="ltr" style="font-weight:bold"><table style="border:none;border-collapse:collapse;width:624px">

<colgroup><col width="*"><col width="*"><col width="*"></colgroup><tbody><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Description</span></p></td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Reviewboard Link</span></p></td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px">

<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Commit</span></p></td></tr><tr style="height:0px">

<td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Added power management options to Amarok-</span></p>

<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">allow pausing playback on suspend and inhibiting automatic suspend if playing</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109846/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109846/</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">71e55e7bdd9b31642d09145a5801777c0e120454</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Added  fine-tuning transcode control options while copying and moving tracks</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109781/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109781/</span></a><span style="font-size:15px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;color:rgb(34,34,34);vertical-align:baseline;white-space:pre-wrap">e84b44ebbb6c470af1272852ba8afd258aa858d0</span></p>

<br><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px">

<p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Added tooltips describing why a track doesn’t play</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109817/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109817/</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">0b1391318ae98c5f077b301ccb76a23b7efd1c3f</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Handle Data CDs in Amarok</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109752/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109752/</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">6dd3e1e190118dd079c7c414a44f22eaecffc5d5</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Added 3 different seek options to Amarok</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/108964/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/108964/</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">265696b694559e09cad34f4b5e06077b92f91dce</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">SIGNAL SLOT Normalization patch</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109794/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109794/</span></a><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">7a72f13d7f57e83efdae66b5078b7f1aa0131b2d</span><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td></tr><tr style="height:0px"><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">Added a prepareToQuit() signal to amarokWindowScript</span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1;margin-top:0pt;margin-bottom:0pt"><a href="https://git.reviewboard.kde.org/r/109695/" style="text-decoration:none"><span style="font-size:15px;font-family:Arial;background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap">https://git.reviewboard.kde.org/r/109695/</span></a><span style="font-size:15px;font-family:Arial;color:rgb(17,85,204);background-color:transparent;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap"></span></p>

</td><td style="border:1px solid rgb(0,0,0);vertical-align:top;padding:7px"><p dir="ltr" style="line-height:1.15;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">b0c79900429e8987c018112f875e09e565126408</span></p>

</td></tr></tbody></table></div><br><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"></span><br><span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap"></span><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:19px;font-family:Arial;background-color:transparent;font-weight:bold;vertical-align:baseline;white-space:pre-wrap">Other Obligations:</span></p><p dir="ltr" style="font-weight:bold;line-height:1.15;margin-top:0pt;margin-bottom:0pt">

<span style="font-size:15px;font-family:Arial;background-color:transparent;vertical-align:baseline;white-space:pre-wrap">I have my current semester’s final exams from June 4 to June 17, during which I will unavailable. I have no other obligations for the rest of my summer vacations and will be fully available for my GSoC work.</span></p>

<br></span></div>