Andrey, makes sense.
It is an model which is not related to the file system. 
Instead, it contains strings like caption and url and few booleans such as 
isFavourite and isActive.
I would like to use the mentioned booleans, to filter out elements is a 
SilicaGridView.

/Tomek

Am 16.03.2014 um 10:03 schrieb Andrey Kozhevnikov <[email protected]>:

> what kind of model you implementing? files model and abstract data model 
> solutions can be differ
> 
> On 16.03.2014 11:37, Tomek wrote:
>> I am wondering how I could display a single ListModel in multiple 
>> SilicaGridViews (filtered)?
>> Simply making an item invisible in a specific view does not work, because it 
>> still consumes (cellWidth x  cellHeight) the space.
>> I know, I could also implement my own model in c++. Probably something like 
>> this was done my someone already? 
>> 
>> 
>> Currently, I am experimenting with multiple models which I need to keep in 
>> sync (implementation is far from ready ;)).
>> [FilteredListModel.qml]
>> import QtQuick 2.0
>> import Sailfish.Silica 1.0
>> 
>> Item {
>>     property ListModel filteredModel: _filteredModel
>>     property ListModel model: _model
>>     property string filterRoleName
>>     property var filterValue
>>     ListModel {
>>         id: _filteredModel
>>     }
>>     ListModel {
>>         id: _model
>>         onRowsInserted: {
>>             for (var i = first; i <= last; i++) {
>>                 var entry = model.get(i);
>>                 if (entry[filterRoleName] === filterValue)
>>                 {
>>                   _filteredModel.append(entry);
>>                 }
>>             }
>>         }
>>         onRowsRemoved: {
>>              for (var i = first; i <= last; i++) {
>>                 _filteredModel.remove(i);
>>              }
>>         }
>>     }
>>     function append(sobject)
>>     {
>>         model.append(sobject);
>>     }
>>     function setProperty(index, key, value )
>>     {
>>         model.setProperty(index, key, value);
>>         var entry = model.get(index);
>>         if (entry[filterRoleName] === filterValue)
>>         {
>>             _filteredModel.set(index, model.get(index))
>>         }
>>         else
>>         {
>>             _filteredModel.remove(index);
>>         }
>>     }
>>     function remove(index)
>>     {
>>         model.remove(index);
>>     }
>>     Component.onCompleted: {
>>         model.append({"name": "Apple","cost": 0.25,active: false});
>>         model.append({"name": "Orange","cost": 0.90,active: true});
>>         model.append({"name": "Bannana","cost": 0.30,active: true});
>>         model.append({"name": "Ananas","cost": 3.10,active: true});
>>     }
>> }
>> 
>> 
>> 
>> _______________________________________________
>> SailfishOS.org Devel mailing list
> 
> _______________________________________________
> SailfishOS.org Devel mailing list

_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to