[SailfishDevel] One ListModel for multiple SilicaGridViews
Tomek
discuss at tdress.de
Sun Mar 16 05:37:49 UTC 2014
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});
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20140316/757be466/attachment.html>
More information about the Devel
mailing list