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

Reply via email to