well, its not trivial with GridView. You might need to use model to filteredmodel sorting manually, or implement model in C++ with methods you need

On 16.03.2014 22:56, Tomek wrote:
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] <mailto:[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  <http://SailfishOS.org>  Devel mailing list

_______________________________________________
SailfishOS.org <http://SailfishOS.org> Devel mailing list



_______________________________________________
SailfishOS.org Devel mailing list

_______________________________________________
SailfishOS.org Devel mailing list

Reply via email to