Hi Mark, On Wednesday, July 03, 2013 11:41:20 Mark wrote: > On Tue, Jul 2, 2013 at 3:18 AM, Sebastian Kügler <se...@kde.org> wrote:
> > I'm looking into our dataengine and relevant QML bindings right now, I can > > now load a dataengine and use it from Plasma 2, but I have to convert the > > payload (::data() from a QHash to a QVariantMap. > > > > In src/declarativeimports/core/datasource.*) the data property returns > > QHash<QString, QVariant>. This doesn't seem to be consumable from QML, > > (javascript code sees a QVariant(QVariantHash), but I can't iterate over > > it, it has no keys, no [] accessors, etc.. > > Converting it to a QVariantMap instead makes it work from QML, but it's > > not > > actually what we want to do here. Or is it? > > > > There's some qscriptvalue magic that I don't understand completely in > > dataenginebindings_p.h, is this the necessary glue to do the conversion > > automatically (and more efficiently)? > Just a quick thought. Does it help if you expose the data as a > QAbstractItemModel (or QAbstractListModel)? That way you stay in > control of how the data is represented in the backend without > conversions specifically for QML. It also makes it very easy to use > the data in QML views > > The downside is probably that you need to have a model class which can > be a big pain to make (specially QAbstractItemModel). We actually have that, and you're correct: it's a pain. That's mainly because you have to set the rolenames pretty early on, otherwise the data is not visible from QML, and it took us a lot of fixing. I haven't tested this code path in PW2 though. That's in declarativeimports/core/datamodel.cpp For the simple case, where the dataengine just passes through a smallish set of data, it works now (with QVariantHash), and I've actually already moved on. I want to change as little code as possible in there, since it's quite brittle and could incur some serious porting costs for everybody. Btw, didn't you write a calendarcomponent which we could use in the QML version of the clock? :) Cheers, -- sebas http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9 _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel