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










<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On július 28th, 2015, 9:47 de CEST, <b>Dennis Nienhüser</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="https://git.reviewboard.kde.org/r/124493/diff/3/?file=388181#file388181line270" style="color: black; font-weight: bold; text-decoration: underline;">src/lib/marble/MarbleQuickItem.cpp</a>
    <span style="font-weight: normal;">

     (Diff revision 3)

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

 <tbody style="background-color: #e4d9cb; padding: 4px 8px; text-align: center;">
  <tr>

   <td colspan="4"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">namespace Marble</pre></td>

  </tr>
 </tbody>



 
 

 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">270</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; ">        <span class="n">QList</span><span class="o"><</span><span class="k">const</span> <span class="n">RenderPlugin</span> <span class="o">*></span> <span class="n">plugins</span> <span class="o">=</span> <span class="n">d</span><span class="o">-></span><span class="n">model</span><span class="p">()</span><span class="o">-></span><span class="n">pluginManager</span><span class="p">()</span><span class="o">-></span><span class="n">renderPlugins</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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">There's an unfortunate trap hidden in Marble's plugin implementation: A Plugin is both a factory of a certain interface and an implementation of that interface. Therefore a RenderPlugin is a factory for a LayerInterface (you can use it to create something that draws on the map) and an implementation of LayerInterface (you can use it directly to draw on the map).</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The desired usage is that PluginManager holds the factory part of the plugins, and anything that wants to use an instance of the corresponding interface retrieves the factory (the plugin) from PluginManager and calls its factory method <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">newInstance()</code>.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">The trap then is that all the plugins that PluginManager holds look and behave like implementing some interface, but in reality the instances that are actually used lie elsewhere. We will fix that at some point in the future (e.g. <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">AbstractFloatItem</code> will not inherit <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">RenderPlugin</code>, but <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">RenderPluginInterface</code>), but for now have to take care manually.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Long story short: Please iterate over <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">map()->renderPlugins()</code> here, not <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">model()->pluginManager()->renderPlugins()</code>. Same for <code style="text-rendering: inherit;color: #4444cc;padding: 0;white-space: normal;margin: 0;line-height: inherit;">setShowPositionMarker</code> below.</p></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;"><p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Thank you for pointing out this for me. I have not noticed this until now.</p></pre>
<br />




<p>- Gábor</p>


<br />
<p>On július 28th, 2015, 10:35 de CEST, Gábor Péterffy wrote:</p>








<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 Marble.</div>
<div>By Gábor Péterffy.</div>


<p style="color: grey;"><i>Updated júl. 28, 2015, 10:35 de</i></p>









<div style="margin-top: 1.5em;">
 <b style="color: #575012; font-size: 10pt;">Repository: </b>
marble
</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;">I have updated the qtmobility plugin to be able to compile with Qt5, and I also enabled the PositionMarker render plugin for Marble Maps.</p>
<p style="padding: 0;text-rendering: inherit;margin: 0;line-height: inherit;white-space: inherit;">Focusing to the current position will be in a new patch. Also I think the current position marker has to be redesigned for the osm theme because now it is hiding (see the screenshot).</p></pre>
  </td>
 </tr>
</table>



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

 <li>src/apps/marble-maps/MainScreen.qml <span style="color: grey">(5552a54eca8b37fa17588a14a035927418b23fbe)</span></li>

 <li>CMakeLists.txt <span style="color: grey">(e74694a0da8507415a9a5472c4f09dfe2561f846)</span></li>

 <li>src/apps/marble-maps/CMakeLists.txt <span style="color: grey">(fff00ffc5ee4dcb3a78b5cdea18035e9267df1e9)</span></li>

 <li>src/apps/marble-maps/create-apk.py <span style="color: grey">(f5fa5489aae2780b04f61b32b21e4c45bd3df85b)</span></li>

 <li>src/apps/marble-maps/package/AndroidManifest.xml <span style="color: grey">(3eee53b142c444a3f456208220b3e91ef5759219)</span></li>

 <li>src/lib/marble/MarbleQuickItem.h <span style="color: grey">(21b8fe5c4570ac894f668603a660da81f1d8a8e4)</span></li>

 <li>src/lib/marble/MarbleQuickItem.cpp <span style="color: grey">(ee8bae8ea379cae3a0e6378259622a1ad88f8a2b)</span></li>

 <li>src/plugins/positionprovider/CMakeLists.txt <span style="color: grey">(f9bfdd691d1905db29cad41af769320c694cd324)</span></li>

 <li>src/plugins/positionprovider/qtmobility/CMakeLists.txt <span style="color: grey">(502513afef8f9bb9b23d70eb868c7a751c7fc4d6)</span></li>

 <li>src/plugins/positionprovider/qtmobility/QtMobilityPositionProviderPlugin.h <span style="color: grey">(edf75285c18473a42f0bc7dd0c406206626a31fc)</span></li>

 <li>src/plugins/positionprovider/qtmobility/QtMobilityPositionProviderPlugin.cpp <span style="color: grey">(a2e6dca574564938813ed06466bf67b1a9900fcb)</span></li>

 <li>src/plugins/positionprovider/qtpositioning/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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



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


 <li><a href="https://git.reviewboard.kde.org/media/uploaded/files/2015/07/27/22c65232-7061-4ec5-86f1-de4acbd95e05__Screenshot_2015-07-27-19-04-35.png">Screenshot</a></li>

</ul>




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







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