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