Heh, Aaron woke up :) So, this is what is going to be done (90% finished already):
** API mostly stays the same. ** Info, Consumer: =================== In the back: - all instances of both classes share a backend that syncs the data with the server In the front: - expose the synced data through the already existing API (properties) - introduce a property which states whether the data is ready. * What does it mean for QML: - connect something to a property and relax - it will be loaded as soon as possible * What does it mean for C++: - create in instance of Consumer or Info and: 1) Cover the case when the results are not valid (if the service is not running, or the data has not been synced) - the same as before, though everybody mostly ignored this part. :) - In this case, the client gets a single activity with no name and a null uuid. 2) Hook into the signal which will tell you when the data is ready (or just into the signal of the property you want) - advice: at least one instance of Consumer/Info should be long-lived for best performance. For heavy activities users like plasma and kwin, it would be the best if one Consumer instance was a always-living. The static Info::name(QString id) method will, from now on return QFuture<QString> and it should not really be used unless you *really* don't want to make a long-lived instance of Info or Consumer. (though, I'm wondering whether I should remove it altogether) Controller: =================== Since it is a more advanced class, for advanced clients, it will mostly return QFuture<something-might-be-even-void-for-some-methods> for the methods for which the users want to know when it has actually finished (start, stop, create and similar). I've managed to do it in a very light-weight manner - no threads or other evil things - just simple signals :) Models: =================== Models library will also be an option (exists in 4.x branch already) - but, since it has more features, some depend on Nepomuk - it will have to be done later. Also, usable from QML, or item-views. Directly from C++, if you are a masochist :) Cheerio, Ivan -- Money can't buy happiness, but neither can poverty. -- Leo Rosten _______________________________________________ Plasma-devel mailing list Plasma-devel@kde.org https://mail.kde.org/mailman/listinfo/plasma-devel