Review Request: Add a setGenericFilter-function to qml-DataModel

Anton Kreuzkamp akreuzkamp at web.de
Tue Apr 26 20:09:20 CEST 2011



> On April 26, 2011, 3:25 p.m., Marco Martin wrote:
> > Do you have an use case wheree this would be necessary where a SortFilterModel would not be enough?
> 
> Anton Kreuzkamp wrote:
>     In the declarative RTM plasmoid I want to show only the non-completed tasks. Therefore I have
>     function isCompleted(sourceName) {
>         return !tasks.data[sourceName]["isCompleted"]
>     }
>     PlasmaCore.DataModel {
>         dataSource: tasks
>         Component.onCompleted: setGenericFilter(Filter.isCompleted)
>     }
>     
>     As I need to know what tasks.data[sourceName]["isCompleted"] is and not only need to know that "isCompleted" exists I can't SortFilterModel, can I?
> 
> Marco Martin wrote:
>     you would just set the filter role as iscompleted and "true" as the filter and that should be it

so I would do
PlasmaCore.SortFilterModel {
    sourceModel: sourceModel
    filterRole:"isCompleted"
    filterRegExp:"false"
}
PlasmaCore.DataModel {
    dataSource: tasks
    id: sourceModel
}
right?
So, anyhow I see this is not needed, so I'll discard the reviewrequest.


- Anton


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://git.reviewboard.kde.org/r/101240/#review2899
-----------------------------------------------------------


On April 26, 2011, 3:07 p.m., Anton Kreuzkamp wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://git.reviewboard.kde.org/r/101240/
> -----------------------------------------------------------
> 
> (Updated April 26, 2011, 3:07 p.m.)
> 
> 
> Review request for Plasma.
> 
> 
> Summary
> -------
> 
> Adds a setGenericFilter-function to qml-DataModel. It works similar to ECMA-Script5's Array.filter-function. You overgive a javascript-function that gets called for every possible entry in the dataModel, and only the entries where the given function returns true get added to the model (see the example below).
> There might be a more qtish/qmlish/plasmaish way to do this, and I'm fine with it if you say this is not the kind of API we want. Just a suggestion.
> 
> example:
> function foo(name) {
>     return bar.data[name].id == "hello world"
> }
> PlasmaCore.DataModel {
>     dataSource: bar
>     Component.onCompleted: setGenericFilter(foo)
> }
> 
> Realizing this as a property is not possible, as qml doesn't accept functions as property-values.
> 
> 
> Diffs
> -----
> 
>   plasma/declarativeimports/core/datamodel.h e74ffd5 
>   plasma/declarativeimports/core/datamodel.cpp 14d7f1f 
> 
> Diff: http://git.reviewboard.kde.org/r/101240/diff
> 
> 
> Testing
> -------
> 
> As far as I have tested it, it works.
> I didn't test it with a keyRoleFilter set, as don't quite get how it works.
> 
> 
> Thanks,
> 
> Anton
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/plasma-devel/attachments/20110426/d89995e6/attachment-0001.htm 


More information about the Plasma-devel mailing list