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










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

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

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">What is "-" for?</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">"-" means "don't show this".
It's set for entries that are older than 3 days (and for all entries on first run), so they won't get shown anymore.
This is an optimization, for older entries (which are most of the entries) only 1 char has to be saved and the date doesn't have to be compared due to this.
Since seenPrograms is a QHash<QString, QDate> now, I am using an empty QDate() for this instead.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

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

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Can it really be null? Did you see this elsewhere, or did you add it "just in case"?
It seems unnecessary to me.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This was there "just in case".
On second thought, e could only be null when the list is empty, I think. But then this line wouldn't be reached anyway...
So I have removed this check.

I also removed the check for list.isEmpty() a few lines before that, because if the list is empty list.begin() equals list.end() and the for loop won't be entered. So the check is unnecessary.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

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

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">|= is a bitwise operator, for booleans you have to write a = foo || a (in this order to avoid shortcut-evaluation).
In this particular case it would be more readable to write
  if (createNewProgramList(...))
     seenProgramsChanged = true;

(shouldn't this variable be named seenNewPrograms, rather?)</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Well, its meaning is the variable seenPrograms has changed, so it's called "seenProgramsChanged"

I could change that of course if you think this would be better.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">649</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                    <span class="n">QString</span> <span class="n">shortStorageId</span> <span class="o">=</span> <span class="n">s</span><span class="o">-></span><span class="n">storageId</span><span class="p">().</span><span class="n">replace</span><span class="p">(</span><span class="s">".desktop"</span><span class="p">,</span> <span class="n">QString</span><span class="o">::</span><span class="n">null</span><span class="p">);</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Use QString::remove instead.

But is there any purpose in removing the .desktop, actually? It's part of the storageId, which is the best key to use, I see no reason to do extra string manipulation just to shorten it.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">.desktop is removed because it is redundant anyway.
This shortens the strings to compare (so it's a little bit faster) and saves space in the config file.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

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

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This whole for() loop could be replaced with something like
 index = d->seenPrograms.indexOf(shortStorageId);
no?</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Because seenPrograms is a QHash<QString, QDate> now, the for loop has been replaced by "it_find = d->seenPrograms.find(shortStorageId)"</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">663</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">                        <span class="n">d</span><span class="o">-></span><span class="n">seenPrograms</span> <span class="o">+=</span> <span class="n">d</span><span class="o">-></span><span class="n">currentDate</span><span class="p">;</span></pre></td>
  </tr>

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Why not just use QDate::currentDate here, and remove the member variable?

If this was due to performance, a local variable is enough, IMHO, rather than polluting the class with an extra member var.</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">The member variable was a QString, so it couldn't just be replaced with QDate::currentDate().
But I have removed d->currentDate, since the QDate is stored now in seenPrograms instead of a QString.</pre>
<br />

<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On April 16th, 2013, 4:45 p.m. CEST, <b>David Faure</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  



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

     (Diff revision 1)

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



 
 

 <tbody>

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

 </tbody>

</table>

  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">This is really an unexpected data structure.
It took me some time to figure out that it's a list where odd and even items don't have the same meaning:
(storageId1, date1, storageId2, date2, ...)

This requires some reverse-engineering skills to understand.

I would have suggested the obvious QHash<QString, QDate>, but I see why you did this: in order to save the list into KConfig.

Well, I would have done the conversion from/to QStringList at the time of the readEntry/writeEntry, but I would have used the QHash for everything else, it makes algorithms much easier to write.

It makes things a bit faster too, since this code (create...) is going to be called every time a desktop file is added/modified, while the KConfig code is only called once on startup and once every time a new desktop file is installed. (but not when desktop files are updated, e.g. make install with new translations).

The indexOf() that I suggested (linear search in the large list of all desktop files) would become a QHash lookup. Major performance improvement. 

Maybe the storage to KConfig should be a separate group in fact, rather than one humongous value. It must be huge, no? Two strings per desktop file, all concatenated into one big string... I think I would use a group, and just write
entries into it like desktopId=date. By iterating over the QHash, obviously.
And to avoid bloating up plasmarc, I would even move this to a separate config file.
If parsing the file takes too much time, we could even replace it with a binary cache one day.
</pre>
 </blockquote>





</blockquote>
<pre style="margin-left: 1em; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Thanks for the suggestion!
I have changed this, seenPrograms is a QHash<QString, QDate> now.

Regarding the config file:
The list is not stored in plasmarc, but in kickoffrc.
Is it huge? Well, it depends how you define "huge"... the size of kickoffrc is 7.3 KiB on my system. This is much much smaller than the StringLists stored by the akonadi_pop3_resource, f.e. (2 lists, seenUidList and seenUidTimeList, each in one very long line resulting in 712 KiB on my system)

But I have changed this now to write desktopId=date entries as you suggested. They are stored in the group "[Seen Applications]".</pre>
<br />




<p>- Wolfgang</p>


<br />
<p>On May 19th, 2013, 11:39 p.m. CEST, Wolfgang Bauer wrote:</p>








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

<div>Review request for kde-workspace.</div>
<div>By Wolfgang Bauer.</div>


<p style="color: grey;"><i>Updated May 19, 2013, 11:39 p.m.</i></p>






<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Description </h1>
 <table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">(This comes from a patch included in openSUSE)

This patch makes kickoff remember all the .desktop files it sees (in kickoffrc). 
New ones are additionally shown in a seperate submenu named "Recently Installed" (for 3 days).

The seen entries are saved as "id=date" pairs in the "Seen Applications" group.
Entries older than 3 days get their date set to empty, which means "don't show this entry anymore".
Also if there have no entries been saved yet, the date of all found entries is set to empty as well. This prevents that all menu entries are shown in the "Recently Installed" submenu on first start.

The "Recently Installed" submenu can be toggled on and off in the plasmoid's settings.</pre>
  </td>
 </tr>
</table>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Testing </h1>
<table width="100%" bgcolor="#ffffff" cellspacing="0" cellpadding="10" style="border: 1px solid #b8b5a0">
 <tr>
  <td>
   <pre style="margin: 0; padding: 0; white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Created a new .desktop file in ~/.local/share/applications, ran kbuildsycoca4 and the menu "Recently Installed" appeared with this entry.
After logout/login this is still present.
Deleted the .desktop file again, ran kbuildsycoca4 and the menu "Recently Installed" disappeared again.

I have been using the (vanilla KDE) kickoff applet with this patch for about a week now.

Also this patch is already part of openSUSE for several years...</pre>
  </td>
 </tr>
</table>



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


 <a href="http://bugs.kde.org/show_bug.cgi?id=316916">316916</a>


</div>


<h1 style="color: #575012; font-size: 10pt; margin-top: 1.5em;">Diffs</b> </h1>
<ul style="margin-left: 3em; padding-left: 0;">

 <li>plasma/desktop/applets/kickoff/applet/applet.cpp <span style="color: grey">(a6f7379)</span></li>

 <li>plasma/desktop/applets/kickoff/applet/kickoffConfig.ui <span style="color: grey">(8664ac8)</span></li>

 <li>plasma/desktop/applets/kickoff/core/applicationmodel.h <span style="color: grey">(f0f8872)</span></li>

 <li>plasma/desktop/applets/kickoff/core/applicationmodel.cpp <span style="color: grey">(57b6ba5)</span></li>

 <li>plasma/desktop/applets/kickoff/simpleapplet/simpleapplet.cpp <span style="color: grey">(28fba18)</span></li>

 <li>plasma/desktop/applets/kickoff/ui/launcher.h <span style="color: grey">(2a234c3)</span></li>

 <li>plasma/desktop/applets/kickoff/ui/launcher.cpp <span style="color: grey">(4425bcc)</span></li>

</ul>

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



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

<ul>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/kickoff-settings.png">Settings dialog (kickoff style) with patch</a></li>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/kickoff.png">Plasmoid (kickoff style) showing the "Recently Installed" submenu</a></li>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/classic-settings.png">Settings dialog (classic style) with patch</a></li>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/04/02/classic.png">Plasmoid (classic style) showing the "Recently Installed" submenu</a></li>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/04/18/kickoffrc">example kickoffrc with this patch</a></li>

 <li><a href="http://git.reviewboard.kde.org/media/uploaded/files/2013/05/19/kickoffrc">sample kickoffrc written by this patch</a></li>

</ul>





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








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