[Kde-pim] Akonadi EntityTreeModel Fetch Strategies and Invariants

Stephen Kelly steveire at gmail.com
Thu Oct 20 00:40:43 BST 2011


Yes, sorry, this stuff is on my todo list, but I'm busy with other stuff 
these days.

I should get to it next week.

Thanks,

Steve.

Christian Mollekopf wrote:

> On Friday, October 14, 2011 03:09:46 PM David Narvaez wrote:
>> Hi,
>> 
>> First of all, happy b'day to KDE! :)
>> 
>> I have a question about Fetching Strategies in the Akonadi
>> EntityTreeModel. According to the documentation, the
>> InvisibleCollectionFetch "Fetches collections, but does not put them
>> in the model. This can be used to create a list of items in all
>> collections. The ParentCollectionRole can still be used to retrieve
>> the parent collection of an Item."[0]
>> 
>> Now, on the code, we disconnect collection change notifications if the
>> InvisibleCollectionFetch flag is set[1] which means no collection
>> addition or removal is notified. Later, in the code, we assume that
>> all Items that are to be removed from the model have a collection in
>> the model[2] but, since you can set the InvisibleCollectionFetch
>> strategy independent from the Item fetch strategy, you might as well
>> receive notifications of items added and removed from collections not
>> in the model. This causes crashes in the assertions and makes me
>> wonder if it's the right way to do stuff or if I should be looking at
>> fixing this behavior.
>> 
>> Am I understanding it right? Any comments or suggestions? Thanks.
> 
> Hey David,
> 
> For me InvisibleCollectionFetch is generally broken, thats why I prepared
> some patches some time ago which you can find here
> 
> 
http://quickgit.kde.org/?p=clones%2Fkdepimlibs%2Fcmollekopf%2FpimlibsClone.git&a=shortlog&h=refs/heads/invisibleCollectionFetch
> 
> Steven Kelly has yet to include them, but afaik he is in the progress of
> some larger changes, which is why it is taking a bit.
> Therefore I wouldn't spend much time fixing the ETM right now, unless
> Steven says it's ok.
> 
> If you need an InvisibleCollectionFetch I suggest working around the issue
> using a KDesendandsProxy to flatten the tree and then a
> MimeTypeFilterProxy to filter the collections. That works for me without
> problems.
> 
> Regarding the specific issue; I didn't go through it thoroughly, but if
> the item is not in the model it also shouldn't be in m_items and therefore
> you should never get to the assert.
> 
> Cheers,
> Christian
> 
>> 
>> David E. Narvaez
>> 
>> [0]
>> http://api.kde.org/4.7-api/kdepimlibs-
apidocs/akonadi/html/classAkonadi_1_1
>> 
EntityTreeModel.html#aaf514b1eeffd1c08e01555cc14edb072a0797046b326fb5117173a
>> 71c51662798 [1]
>> 
https://projects.kde.org/projects/kde/kdepimlibs/repository/revisions/maste
>> r/entry/akonadi/entitytreemodel.cpp#L1054 [2]
>> 
https://projects.kde.org/projects/kde/kdepimlibs/repository/revisions/maste
>> r/entry/akonadi/entitytreemodel_p.cpp#L1033
>> _______________________________________________
>> KDE PIM mailing list kde-pim at kde.org
>> https://mail.kde.org/mailman/listinfo/kde-pim
>> KDE PIM home page at http://pim.kde.org/
> _______________________________________________
> KDE PIM mailing list kde-pim at kde.org
> https://mail.kde.org/mailman/listinfo/kde-pim
> KDE PIM home page at http://pim.kde.org/


_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/



More information about the kde-pim mailing list