Unity 8
 All Classes Functions Properties
VisibleIndicators.qml
1 /*
2  * Copyright 2013 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  *
16  * Authors:
17  * Nick Dedekind <nick.dedekind@canonical.com>
18  */
19 
20 import QtQuick 2.0
21 import Unity.Indicators 0.1 as Indicators
22 import Utils 0.1
23 
24 Item {
25  property SortFilterProxyModel model: filterModel
26 
27  SortFilterProxyModel {
28  id: filterModel
29  filterRole: Indicators.IndicatorsModelRole.IsVisible
30  filterRegExp: RegExp("^true$")
31  dynamicSortFilter: true
32 
33  model: Indicators.VisibleIndicatorsModel {
34  id: visibleIndicatorsModel
35  model: indicatorsModel
36  }
37  }
38 
39 
40  Indicators.IndicatorsModel {
41  id: indicatorsModel
42  }
43 
44  Repeater {
45  id: repeater
46  model: indicatorsModel
47 
48  property var visibleIndicators: undefined
49  onVisibleIndicatorsChanged: {
50  if (visibleIndicators !== undefined) {
51  visibleIndicatorsModel.visible = visibleIndicators;
52  }
53  }
54 
55  delegate: IndicatorDelegate {
56  id: item
57  objectName: model.identifier + "-delegate"
58  Component.onCompleted: {
59  for(var pName in indicatorProperties) {
60  if (item.hasOwnProperty(pName)) {
61  item[pName] = indicatorProperties[pName];
62  }
63  }
64  updateVisibility();
65  }
66 
67  onEnabledChanged: {
68  updateVisibility()
69  }
70 
71  function updateVisibility() {
72  if (repeater.visibleIndicators === undefined) {
73  repeater.visibleIndicators = {}
74  }
75  repeater.visibleIndicators[model.identifier] = enabled;
76  repeater.visibleIndicatorsChanged();
77  }
78  }
79  }
80 
81  function load(profile) {
82  indicatorsModel.load(profile);
83  }
84 }