[SailfishDevel] One ListModel for multiple SilicaGridViews

Andrey Kozhevnikov coderusinbox at gmail.com
Sun Mar 16 08:03:42 UTC 2014


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20140316/fea34294/attachment.html>


More information about the Devel mailing list