<html>
 <body>
  <div style="font-family: Verdana, Arial, Helvetica, Sans-Serif;">
   <table bgcolor="#f9f3c9" width="100%" cellpadding="12" style="border: 1px #c9c399 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
    <tr>
     <td>
      This is an automatically generated e-mail. To reply, visit:
      <a href="https://git.reviewboard.kde.org/r/125262/">https://git.reviewboard.kde.org/r/125262/</a>
     </td>
    </tr>
   </table>
   <br />




<table bgcolor="#fefadf" width="100%" cellspacing="0" cellpadding="12" style="border: 1px #888a85 solid; border-radius: 6px; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
 <tr>
  <td>

<div>Review request for KDE Frameworks.</div>
<div>By Alex Richardson.</div>


<p style="color: grey;"><i>Updated Sept. 17, 2015, 12:37 a.m.</i></p>









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


<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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">KPluginMetadata("foo.desktop") or kcoreaddons_desktop_to_json() do not always result in the correct JSON for example when a property is
supposed to be a list. the .desktop file parser in kcoreaddons so far had no way of know this so instead of treating the entry as a 
comma-separated list it would simply return a JSON string.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This is a follow up to https://git.reviewboard.kde.org/r/121672/ with a different solution that also handles service types that are not compiled into the kcoreaddons library but instead parses the installed servicetype .desktop file.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It also contains a bit of code-deduplication and porting to categorized logging which is not directly related to this patch but it would be some effort to split that into a separate RR.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">It is a series of commits with the following messages:</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">desktopparser: avoid unnecessary utf8 decoding</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Parse ServiceType files when reading .desktop files</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Remove lots of duplicated code for desktop{tojson,fileparser}.cpp</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The only reason these were copy-pasted are minor differences in the
output which is now fixed by using qInstallMessageHandler and the
ability to generate JSON compatible with the first published version
of desktoptojson (which is hopefully no longer used and can be removed
soon)</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">QCommandLineParser uses -v for --version so just use --verbose</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Otherwise the whole QCommandlineOption is ignored and there is no way
to enable verbose mode</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">desktopparser: Use more categorized logging</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">desktopparser: Allow passing relative paths to service type files</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Add KPluginMetaData::fromDesktopFile()</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">This function allows specifying a list of service type files to be
parsed when loading the .desktop file.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">desktopparser: Improve warning messages and add new unit test</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The new test checks how the desktop parser handles service type files
with invalid property definitions</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">desktopparser: Fix parsing of double and bool values</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">QString::compare returns 0 on equal and make sure that we don't assign
the parsed double to an integer local variable</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Add another unit test for desktop parsing with service types</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Test that all supported types are converted correctly</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Allow setting service types in kcoreaddons_desktop_to_json()</p></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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Added some unit test and they pass</p></pre>
  </td>
 </tr>
</table>


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

 <li>KF5CoreAddonsMacros.cmake <span style="color: grey">(acfcaa3069991395d83923bcc30cd08f231c30eb)</span></li>

 <li>autotests/data/servicetypes/bad-groups-input.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/data/servicetypes/bad-groups-servicetype.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/data/servicetypes/example-input.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/data/servicetypes/example-servicetype.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/data/servicetypes/fake-kdevelopplugin.desktop <span style="color: grey">(PRE-CREATION)</span></li>

 <li>autotests/desktoptojsontest.cpp <span style="color: grey">(64373d5be930426dd8a1f8e455e33c411a4795fd)</span></li>

 <li>autotests/kpluginmetadatatest.cpp <span style="color: grey">(3af5e1b842b0bc231a5ac001112e141f751d2ff5)</span></li>

 <li>src/desktoptojson/CMakeLists.txt <span style="color: grey">(94a199d8fa44a21b15e24c2e4f42551adada8f72)</span></li>

 <li>src/desktoptojson/desktoptojson.h <span style="color: grey">(bfa38b0f5ddd0581ad176d854614bc9c80dd139a)</span></li>

 <li>src/desktoptojson/desktoptojson.cpp <span style="color: grey">(82626b256df6b3bd106e6d4c6fad84d7d970af37)</span></li>

 <li>src/desktoptojson/main.cpp <span style="color: grey">(9bac8ff55d005d1944c04f557aa9601de2b0ca15)</span></li>

 <li>src/lib/plugin/desktopfileparser.h <span style="color: grey">(98d47ddf0f877c4a25928026b3d5fe169cfc9e75)</span></li>

 <li>src/lib/plugin/desktopfileparser.cpp <span style="color: grey">(0b03eb154deb58840c91c12658780c0d492b593c)</span></li>

 <li>src/lib/plugin/kpluginmetadata.h <span style="color: grey">(183b0d0583259f7ed74e97858a68c5c388fd0a9a)</span></li>

 <li>src/lib/plugin/kpluginmetadata.cpp <span style="color: grey">(b13d6dd52827cc03d9473600aa4d2bab8a95a1d4)</span></li>

</ul>

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






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



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