Microblog port to Akonadi pushed into a branch

Sebastian Kügler sebas at kde.org
Sun Oct 28 23:56:49 UTC 2012


Hi Martin,

On Saturday, October 27, 2012 19:23:46 Martin Klapetek wrote:
> I've just pushed my port of Microblog declarative plasmoid in a branch -
> mklapetek/akonadi_port (kde:declarative-plasmoids). Setting this up needs
> kdepim-libs from master, kde:libkfacebook (currently in kdereview),
> kdepim-runtime from master with this[1] patch, SocialFeed qml plugin from
> kde:scratch/mklapetek/socialfeed and this Microblog branch. If you want to
> try microblog too, you can get the new microblog resource from
> kde:scratch/mklapetek/akonadi-microblog-ng - I'm not aiming to have the
> microblog-ng resource in 4.10 though, but it might be finished by then and
> just released separately.
> 
> It's not yet finished, but it's fairly usable already. Here is what works:
>  * listing stuff
>     * facebook goes 3 days back (limit 400 posts) with number of likes and
> comments
>     * microblog for now goes 20 posts only
>  * displaying facebook comments by clicking on the status (probably needs
> better discoverability)
>  * posting to networks

Very nice. I've tried to build it and am looking at it (well, the microblog 
parts at least, I don't have a fb account). The build of the microblog 
resource fails, complaining about
akonadi-microblog-ng/libkmicroblog/microblogjob.h:27:30: fatal error: 
libkoauth/koauth.h: No such file or directory
I don't have that lib. Where can I find it?

SocialFeed wouldn't compile, missing the onShowPost(...) declaration, I've 
added it and pushed it to master as you asked. :)

> Issues:
>  * the scrollbar is baaad, unusable even (because of the non-uniform
> delegate height), not sure what to do about it

I've seen that as well, once the model refreshes with all the differently 
sized widgets, the scrollbar position vs contentHeight seems to get screwed 
up. We'll need to create an as simple as possible test case (maybe using a 
timer to add different text items to a ListView?) and debug the scrollbar 
code, or maybe even deeper. :/

>  * when using mouse wheel to scroll, sometimes it just stops scrolling and
> you have to either scroll the wheel /really/ fast or drag the list, I'm
> unsure why that happens, I suspect it's the item snapping to the list edge,
> but I don't understand qml that deeply to see how it works exactly

Have you tried changing the snap to item property of the ListView?

>  * sometimes the plasmoid can get really really slow or even freeze when
> scrolling very fast as it tries to fetch all the avatars and post images,
> this might need some optimizations

We should be able to limit that through KIO somehow, in fact KIO should not 
slow down the system in that way. Are you using the preview dataengine for 
this? Using this with the microblog plasmoid, I've not seen any problems with 
that in scrolling performance. (It downloads, caches the images, but still has 
to copy them at least twice (KImageCache -> DataEngine -> QML Runtime).

>  * actions on posts do not currently work (liking, replying and sharing),
> I'll try to have them working for 4.10, in the worst case, we can have just
> "read-only" version shipped (if we're going to ship it by default) and just
> hide those buttons

What's the actual problem?

>  * refreshing the list pushes garbage/no data into qml, I'm not yet sure
> where this problem originates, simple reloading of the applet fixes it

Maybe again a setRoleNames() in the DeclarativeModel screwing up? Where's that 
happening, does it still happen if you don't use 
PlasmaCore.SortFilterProxyModel?

>  * clicking the status fetches all the comments, but the list is not
> updated (even though the model emits dataChanged)
>  * there's no user info yet, but the facebook contacts are in Akonadi, so
> should be easy to just fetch the info and display it
>  * there's still some code that's unneeded, will be removed
>  * post times do not get updated, I'm not sure how to refresh the post
> times in the whole model

Why would you want that? Posts are one-off items, they don't change posting 
date all the time. If you want to display things like "3 minutes ago", and you 
do it like this it will "refresh' during scrolling (since the delegate is 
destroyed when going off-view and when becoming visible it's recreated.

Label {
		text: fancyDateFormatter(postDate)
}

>From a UI point of view, a possible solution without too many timers is to 
display "Posted just a moment ago" for "really new" posts and using a single 
shot timer to change that into the posting time (4:41pm which is not relative 
to $now, and therefore you don't have to change). For single delegates that 
only refresh once that is I think an acceptable trade-off between usability 
and wake-ups. For most posts (all that are older than "just a moment ago", we 
don't need to start the timer at all).

> I'll be more than glad if anyone can help with any of the issues :) Feel
> free to hack directly on the branch to make it more awesome. Or just
> awesome.
> 
> [1] - https://git.reviewboard.kde.org/r/107021/

Mighty cool stuff, by the way. :)
-- 
sebas

http://www.kde.org | http://vizZzion.org | GPG Key ID: 9119 0EF9


More information about the Plasma-devel mailing list