<table><tr><td style="">broulik added inline comments.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D25326">View Revision</a></tr></table><br /><div><strong>INLINE COMMENTS</strong><div><div style="margin: 6px 0 12px 0;"><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142990">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.cpp:84</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">QQmlEngine</span> <span style="color: #aa2211">*</span><span class="n">engine</span> <span style="color: #aa2211">=</span> <span class="n">QQmlEngine</span><span style="color: #aa2211">::</span><span class="n">contextForObject</span><span class="p">(</span><span style="color: #aa4000">this</span><span class="p">)</span><span style="color: #aa2211">-></span><span class="n">engine</span><span class="p">();</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">        <span class="n">args</span> <span style="color: #aa2211"><<</span> <span class="n">engine</span><span style="color: #aa2211">-></span><span class="n">toScriptValue</span><span style="color: #aa2211"><</span><span class="n">QVariant</span><span style="color: #aa2211">></span><span class="p">(</span><span class="n">idx</span><span class="p">.</span><span class="n">data</span><span class="p">(</span><span class="n">m_roleIds</span><span class="p">.</span><span class="n">value</span><span class="p">(</span><span class="n">m_filterRole</span><span class="p">)));</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Can we also just have it send <tt style="background: #ebebeb; font-size: 13px;">source_row</tt> and <tt style="background: #ebebeb; font-size: 13px;">source_parent</tt> since we have proper <tt style="background: #ebebeb; font-size: 13px;">QModelIndex</tt> handling now?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142991">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.cpp:97</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="p">}</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QSortFilterProxyModel</span><span style="color: #aa2211">::</span><span class="n">setFilterRegExp</span><span class="p">(</span><span class="n">QRegExp</span><span class="p">(</span><span class="n">exp</span><span class="p">,</span> <span class="n">Qt</span><span style="color: #aa2211">::</span><span class="n">CaseInsensitive</span><span class="p">));</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_EMIT</span> <span style="color: #004012">filterRegExpChanged</span><span class="p">(</span><span class="n">exp</span><span class="p">);</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;"><tt style="background: #ebebeb; font-size: 13px;">QRegExp</tt> is deprecated, use <tt style="background: #ebebeb; font-size: 13px;">setFilterRegularExpression</tt> taking a <tt style="background: #ebebeb; font-size: 13px;">QRegularExpression</tt></p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142984">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:43</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     */</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">filterRegExp</span> <span class="n">READ</span> <span class="n">filterRegExp</span> <span class="n">WRITE</span> <span class="n">setFilterRegExp</span> <span class="n">NOTIFY</span> <span class="n">filterRegExpChanged</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Can this be a <tt style="background: #ebebeb; font-size: 13px;">QRegularExpression</tt>?<br />
I would assume a JS <tt style="background: #ebebeb; font-size: 13px;">RegExp</tt> object (or regexp literal <tt style="background: #ebebeb; font-size: 13px;">/syntax/</tt>) was supported (didn't test)</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142982">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:48</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     */</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span class="n">QString</span> <span class="n">filterString</span> <span class="n">READ</span> <span class="n">filterString</span> <span class="n">WRITE</span> <span class="n">setFilterString</span> <span class="n">NOTIFY</span> <span class="n">filterStringChanged</span> <span class="n">REVISION</span> <span style="color: #601200">1</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Given this is a new class/import, remove <tt style="background: #ebebeb; font-size: 13px;">REVISION</tt></p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142992">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:56</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     * ignored. Attempts to write a non-callable to this property are silently ignored, but you can set</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     * it to null.</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     */</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Could this use a <tt style="background: #ebebeb; font-size: 13px;">RESET</tt> method instead of telling people to assign <tt style="background: #ebebeb; font-size: 13px;">null</tt>?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142985">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:78</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     */</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_PROPERTY</span><span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">count</span> <span class="n">READ</span> <span class="n">count</span> <span class="n">NOTIFY</span> <span class="n">countChanged</span><span class="p">)</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Is this needed?</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142986">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:80</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">friend</span> <span class="n">class</span> <span class="n">DataModel</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Remove</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142987">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:117</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #74777d">     */</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_INVOKABLE</span> <span class="n">QVariantMap</span> <span style="color: #004012">get</span><span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">i</span><span class="p">)</span> <span style="color: #aa4000">const</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">I don't like this. We have proper <tt style="background: #ebebeb; font-size: 13px;">QModelIndex</tt> handling in QML now, this is a hack imho</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142988">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:119</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">Q_INVOKABLE</span> <span style="color: #aa4000">int</span> <span style="color: #004012">mapRowToSource</span><span class="p">(</span><span style="color: #aa4000">int</span> <span class="n">i</span><span class="p">)</span> <span style="color: #aa4000">const</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Remove, <tt style="background: #ebebeb; font-size: 13px;">QAbstractProxyModel::mapToSource</tt> (and <tt style="background: #ebebeb; font-size: 13px;">fromSource</tt>) is <tt style="background: #ebebeb; font-size: 13px;">Q_INVOKABLE</tt> and we have proper <tt style="background: #ebebeb; font-size: 13px;">QModelIndex</tt> handling in QML now</p></div></div><br /><div style="border: 1px solid #C7CCD9; border-radius: 3px;"><div style="padding: 0; background: #F7F7F7; border-color: #e3e4e8; border-style: solid; border-width: 0 0 1px 0; margin: 0;"><div style="color: #74777d; background: #eff2f4; padding: 6px 8px; overflow: hidden;"><a style="float: right; text-decoration: none;" href="https://phabricator.kde.org/D25326#inline-142989">View Inline</a><span style="color: #4b4d51; font-weight: bold;">sortfiltermodel.h:138</span></div>
<div style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; white-space: pre-wrap; clear: both; padding: 4px 0; margin: 0;"><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);"><span style="color: #a0a000">private</span><span class="p">:</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QString</span> <span class="n">m_filterRole</span><span class="p">;</span>
</div><div style="padding: 0 8px; margin: 0 4px; background: rgba(151, 234, 151, .6);">    <span class="n">QString</span> <span class="n">m_sortRole</span><span class="p">;</span>
</div></div></div>
<div style="margin: 8px 0; padding: 0 12px;"><p style="padding: 0; margin: 8px;">Does this need a <tt style="background: #ebebeb; font-size: 13px;">d</tt> pointer or is it just for use in QML? Perhaps rename the header to <tt style="background: #ebebeb; font-size: 13px;">_p.h</tt> then?</p></div></div></div></div></div><br /><div><strong>REPOSITORY</strong><div><div>R275 KItemModels</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D25326">https://phabricator.kde.org/D25326</a></div></div><br /><div><strong>To: </strong>davidedmundson<br /><strong>Cc: </strong>broulik, ahiemstra, mart, kde-frameworks-devel, LeGast00n, GB_2, michaelh, ngraham, bruns<br /></div>