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








<blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
 <p style="margin-top: 0;">On August 30th, 2012, 12:17 p.m., <b>Aurélien Gâteau</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/106272/diff/2/?file=82325#file82325line25" style="color: black; font-weight: bold; text-decoration: underline;">plasma/declarativeimports/qtextracomponents/fullmodelaccess.h</a>
    <span style="font-weight: normal;">

     (Diff revision 2)

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

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

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

  </tr>
 </tbody>




 
 



 <tbody>

  <tr>
    <th bgcolor="#b1ebb0" style="border-right: 1px solid #C0C0C0;" align="right"><font size="2"></font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "></pre></td>
    <th bgcolor="#b1ebb0" style="border-left: 1px solid #C0C0C0; border-right: 1px solid #C0C0C0;" align="right"><font size="2">25</font></th>
    <td bgcolor="#c5ffc4" width="50%"><pre style="font-size: 8pt; line-height: 140%; margin: 0; "><span class="n">class</span> <span class="n">FullModelAccess</span> <span class="o">:</span> <span class="n">public</span> <span class="n">QAbstractListModel</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;">I don't like the "FullModelAccess" name. It is a model, so to avoid confusion its name should end with "Model". It works like a proxy model, so I suggest renaming it to ColumnProxyModel.

I am also wondering whether the code wouldn't be simpler if the class was inheriting from QAbstractProxyModel rather than QAbstractListModel. I think it would make it possible to remove:
- data()
- rowCount()
- headerData()
- sourceDestroyed()
- sourceModel()</pre>
 </blockquote>



 <p>On August 30th, 2012, 12:29 p.m., <b>Marco Martin</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">+1 for ColumnProxyModel.
good also to put more emphasys on the columns rather than the possibility to dive in the tree nodes, that is here only because visualdatamodel can't be used in conjunction with other proxies, since doesn't inherit from qaim</pre>
 </blockquote>





 <p>On August 31st, 2012, 7:53 a.m., <b>Aleix Pol Gonzalez</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">I already tried that, but I didn't like it because it provides an API that suggests that mapFrom/ToSource will work.

Also reducing those won't help much. The big part of the code is the forwarding of the signals and proxy models doesn't do that. I tried with QIdentityProxyModel, but then it tries to forward all signals and we only need some of them.

Regarding the name, I like the addition of proxy, although I think it's misleading if it doesn't inherit QAbstractProxyModel. I don't really like to have "Column" there.</pre>
 </blockquote>





 <p>On September 3rd, 2012, 1:33 p.m., <b>Aurélien Gâteau</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">> it provides an API that suggests that mapFrom/ToSource will work

Isn't it the case? I would indeed expect mapFrom/ToSource to work. If they don't work then I agree the class should not inherit from QAbstractProxyModel, and should have "Proxy" in its name.

> Regarding the name, I like the addition of proxy, although I think it's misleading if it doesn't inherit QAbstractProxyModel. I don't really like to have "Column" there.

This model gives you access to one column of a multi-column model, which can be a tree model or a list model, that is why I think "Column" should be in the name, but maybe it will be more often used to access the first column of a subtree within a tree model. If it cannot inherit from QAbstractProxyModel I suggest ListSubModel or SubListModel.</pre>
 </blockquote>





 <p>On September 3rd, 2012, 1:59 p.m., <b>Aleix Pol Gonzalez</b> wrote:</p>
 <blockquote style="margin-left: 1em; border-left: 2px solid #d0d0d0; padding-left: 10px;">
  <pre style="white-space: pre-wrap; white-space: -moz-pre-wrap; white-space: -pre-wrap; white-space: -o-pre-wrap; word-wrap: break-word;">Regarding Proxies:
well, in the proxy you have less items than in the source. That is all the other columns and tree branches don't have a representation so you keep returning invalid QModelIndex'es for those.

Regarding the name:
I think I'll change to ColumnProxyModel, I'm lacking any inspiration whatsoever in this regard and I don't want to stop this patch because of this :).</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, in the proxy you have less items than in the source. That is all the other columns and tree branches don't have a representation so you keep returning invalid QModelIndex'es for those.

Sure, but that is perfectly fine. Proxy models can be used to:
a) sort: in this case mapFromSource() should never return invalid QModelIndex
b) filter: in this case it is expected that mapFromSource() may return an invalid QModelIndex
</pre>
<br />




<p>- Aurélien</p>


<br />
<p>On August 31st, 2012, 3:45 p.m., Aleix Pol Gonzalez wrote:</p>






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

<div>Review request for Plasma, Aurélien Gâteau and Marco Martin.</div>
<div>By Aleix Pol Gonzalez.</div>


<p style="color: grey;"><i>Updated Aug. 31, 2012, 3:45 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 patch adds a component called ListifyModel (yeah, I hate the name too). The idea behind is to expose as a QAbstractListModel any part of a QAbstractItemModel.

This solves the problem we have in QML given the limitation that ListView only displays the first column of the root items. Here we can specify what column we want and what root index we want to have.</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;">There's a passing unit test, albeit limited.
I also tested it with a QML example I had with KPeople. If anybody is interested I can provide it too.</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>plasma/declarativeimports/qtextracomponents/CMakeLists.txt <span style="color: grey">(05a1195)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/fullmodelaccess.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/fullmodelaccess.cpp <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/qtextracomponentsplugin.cpp <span style="color: grey">(429282e)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/tests/CMakeLists.txt <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/tests/fullmodelaccesstest.h <span style="color: grey">(PRE-CREATION)</span></li>

 <li>plasma/declarativeimports/qtextracomponents/tests/fullmodelaccesstest.cpp <span style="color: grey">(PRE-CREATION)</span></li>

</ul>

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




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








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