<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p
{mso-style-priority:99;
margin:0cm;
margin-bottom:.0001pt;
font-size:12.0pt;
font-family:"Times New Roman","serif";}
pre
{mso-style-priority:99;
mso-style-link:"HTML-esimuotoiltu Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
{mso-style-priority:99;
mso-style-link:"Seliteteksti Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:8.0pt;
font-family:"Tahoma","sans-serif";}
span.SelitetekstiChar
{mso-style-name:"Seliteteksti Char";
mso-style-priority:99;
mso-style-link:Seliteteksti;
font-family:"Tahoma","sans-serif";}
span.Shkpostityyli20
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
span.HTML-esimuotoiltuChar
{mso-style-name:"HTML-esimuotoiltu Char";
mso-style-priority:99;
mso-style-link:HTML-esimuotoiltu;
font-family:"Courier New";}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">Thanks for help, I did it about like this for starters and it seems to work.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">On my C++ function:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<pre><span style="color:purple">Q_INVOKABLE QVariantMap</span><span style="color:silver"> </span><span style="color:black">readEntries(</span><span style="color:purple">QString</span><span style="color:silver"> </span><span style="color:black">table)</span><o:p></o:p></pre>
<pre style="-qt-block-indent:0"><o:p> </o:p></pre>
<pre>...<o:p></o:p></pre>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:purple">QSqlQuery</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">q</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">=</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:purple">QSqlQuery</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">(</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">"SELECT</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">*</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">FROM</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">params</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">ORDER</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">BY</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">parameter</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">ASC"</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">,</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">*</span><span style="font-size:10.0pt;font-family:"Courier New";color:maroon">db</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">);</span><span style="font-size:10.0pt;font-family:"Courier New""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:purple">QVariantMap</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">tmp;</span><span style="font-size:10.0pt;font-family:"Courier New""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New""><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:olive">if</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">(q.exec())</span><span style="font-size:10.0pt;font-family:"Courier New""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:olive">while</span><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">(q.next())</span><span style="font-size:10.0pt;font-family:"Courier New""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">tmp.insert(q.record().value(</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">"parameter"</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">).toString(),<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:black"> q.record().value(</span><span style="font-size:10.0pt;font-family:"Courier New";color:green">"value"</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">).toString());</span><span style="font-size:10.0pt;font-family:"Courier New""><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New";color:olive">return</span><span style="color:silver">
</span><span style="font-size:10.0pt;font-family:"Courier New";color:black">tmp;</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">On my QML:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<pre><span style="color:maroon">Component.onCompleted</span>:<o:p></o:p></pre>
<pre style="-qt-block-indent:0">{<o:p></o:p></pre>
<pre style="-qt-block-indent:0"><span style="color:silver"> </span><span style="color:olive">var</span><span style="color:silver"> </span><i><span style="color:#2985C7">tmp</span></i><span style="color:silver"> </span>=<span style="color:silver"> </span><i><span style="color:black">logger</span></i>.readEntries(<span style="color:green">"parameters"</span>)<o:p></o:p></pre>
<pre style="-qt-paragraph-type:empty;-qt-block-indent:0"><o:p> </o:p></pre>
<pre style="-qt-block-indent:0"><span style="color:silver"> </span><span style="color:olive">for</span><span style="color:silver"> </span>(<span style="color:olive">var</span><span style="color:silver"> </span><i><span style="color:#2985C7">par</span></i><span style="color:silver"> </span><span style="color:olive">in</span><span style="color:silver"> </span><i><span style="color:#2985C7">tmp</span></i>)<o:p></o:p></pre>
<pre style="-qt-block-indent:0"><span style="color:silver"> </span>{<o:p></o:p></pre>
<pre style="-qt-block-indent:0"><span style="color:silver"> </span><i><span style="color:black">parameterListModel</span></i>.append({<span style="color:green">"parameter"</span>:<span style="color:silver"> </span><i><span style="color:#2985C7">par</span></i>,<span style="color:silver"> </span><span style="color:green">"value"</span>:<span style="color:silver"> </span><i><span style="color:#2985C7">tmp</span></i>[<i><span style="color:#2985C7">par</span></i>]})<o:p></o:p></pre>
<pre style="-qt-block-indent:0"><span style="color:silver"> </span>}<o:p></o:p></pre>
<pre style="-qt-paragraph-type:empty;-qt-block-indent:0">}<o:p></o:p></pre>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D">-kimmo<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="FI" style="font-size:10.0pt;font-family:"Tahoma","sans-serif"">From:</span></b><span lang="FI" style="font-size:10.0pt;font-family:"Tahoma","sans-serif""> devel-bounces@lists.sailfishos.org [mailto:devel-bounces@lists.sailfishos.org]
<b>On Behalf Of </b>Jarko Vihriala<br>
<b>Sent:</b> Friday, May 23, 2014 11:24 AM<br>
<b>To:</b> Sailfish OS Developers<br>
<b>Subject:</b> Re: [SailfishDevel] Technical question: populating ListModel from C++<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">Actually, that's the best solution so far. Just make sure you follow the structure of the in qml/js of data inside QVariantList. Playing around QVariant and *List
is a bit tricky but once you get the hang of it, it's awesome datatype.<br>
<br>
thanks,Jarko<o:p></o:p></span></p>
<div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="color:black">
<hr size="2" width="100%" align="center">
</span></div>
<div id="divRpF414161">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">From:</span></b><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black">
<a href="mailto:devel-bounces@lists.sailfishos.org">devel-bounces@lists.sailfishos.org</a> [devel-bounces@lists.sailfishos.org] on behalf of Mikko Leppänen [mleppan23@gmail.com]<br>
<b>Sent:</b> Friday, May 23, 2014 11:20 AM<br>
<b>To:</b> Sailfish OS Developers<br>
<b>Subject:</b> Re: [SailfishDevel] Technical question: populating ListModel from C++</span><span style="color:black"><o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Tahoma","sans-serif";color:black">Hi,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-family:"Tahoma","sans-serif";color:black">Or if you don't want to subclass e.g. qabstractitemmodel, you can always return a QVariantList(or QList) from c++ and expose that sequence to QML.
Then use that JS array to populate ListModel.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-family:"Tahoma","sans-serif";color:black">/Mikko
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:black">2014-05-23 10:53 GMT+03:00 Markus Svensson <<a href="mailto:markus.svensson@me.com" target="_blank">markus.svensson@me.com</a>>:<o:p></o:p></span></p>
<div>
<div>
<p class="MsoNormal"><span style="color:black">Hi,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">I have done the same thing in my Sailfish learning project. It was way more complicated than I would have liked it to be (or maybe I did it in the wrong way...).<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Feel free to have a look at how I implemented it:
<a href="https://github.com/Ortofta/SilicaNote" target="_blank">https://github.com/Ortofta/SilicaNote</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">The code quality is probably not the best - these are my first baby steps in QT and Sailfish. ;)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="color:black">Regards,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black">Markus<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"><br>
23 maj 2014 kl. 08:52 skrev Kimmo Lindholm <<a href="mailto:Kimmo.Lindholm@eke.fi" target="_blank">Kimmo.Lindholm@eke.fi</a>>:<o:p></o:p></span></p>
</div>
<div>
<div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D">Hi,,</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D">Thank you Janne and Jarko, I will take a look on both of these approaches;</span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D">></span><span lang="EN-GB" style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> use the QSqlQueryModel in your c++ and
expose that to QML ; just like in : </span><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"><a href="http://qt-project.org/wiki/How_to_use_a_QSqlQueryModel_in_QML" target="_blank"><span lang="EN-GB">http://qt-project.org/wiki/How_to_use_a_QSqlQueryModel_in_QML</span></a></span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="font-size:10.0pt;font-family:"Tahoma","sans-serif";color:black"> </span><span style="color:black"><o:p></o:p></span></p>
<p><span style="color:black">> subclassing QAbstractItemModel. See <a href="http://qt-project.org/doc/qt-5/qtquick-modelviewsdata-cppmodels.html" target="_blank">
http://qt-project.org/doc/qt-5/qtquick-modelviewsdata-cppmodels.html</a> and <a href="http://qt-project.org/doc/qt-5/qabstractitemmodel.html" target="_blank">
http://qt-project.org/doc/qt-5/qabstractitemmodel.html</a> to get started.<o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:#1F497D"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D"> </span><span style="color:black"><o:p></o:p></span></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="EN-GB" style="color:#1F497D">-kimmo</span><span style="color:black"><o:p></o:p></span></p>
</div>
</div>
</blockquote>
</div>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><span style="color:black">_______________________________________________
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:black"><br>
<a href="http://SailfishOS.org" target="_blank">SailfishOS.org</a> Devel mailing list<br>
To unsubscribe, please send a mail to <a href="mailto:devel-unsubscribe@lists.sailfishos.org" target="_blank">
devel-unsubscribe@lists.sailfishos.org</a><o:p></o:p></span></p>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><span style="color:black"><br>
_______________________________________________<br>
SailfishOS.org Devel mailing list<br>
To unsubscribe, please send a mail to <a href="mailto:devel-unsubscribe@lists.sailfishos.org" target="_blank">
devel-unsubscribe@lists.sailfishos.org</a><o:p></o:p></span></p>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="color:black"><o:p> </o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>