Unity 8
 All Classes Functions
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  function initialise(profile) {
28  indicatorsModel.load(profile);
29  }
30 
31  SortFilterProxyModel {
32  id: filterModel
33  filterRole: Indicators.IndicatorsModelRole.IsVisible
34  filterRegExp: RegExp("^true$")
35  dynamicSortFilter: true
36 
37  model: Indicators.VisibleIndicatorsModel {
38  id: visibleIndicatorsModel
39  model: indicatorsModel
40  }
41  }
42 
43  Indicators.IndicatorsModel {
44  id: indicatorsModel
45  }
46 
47  Repeater {
48  id: repeater
49  model: indicatorsModel
50 
51  property var visibleIndicators: undefined
52  onVisibleIndicatorsChanged: {
53  if (visibleIndicators !== undefined) {
54  visibleIndicatorsModel.visible = visibleIndicators;
55  }
56  }
57 
58  delegate: IndicatorDelegate {
59  id: item
60  objectName: model.identifier + "-delegate"
61  identifier: model.identifier
62  Component.onCompleted: {
63  for(var pName in indicatorProperties) {
64  if (item.hasOwnProperty(pName)) {
65  item[pName] = indicatorProperties[pName];
66  }
67  }
68  updateVisibility();
69  }
70 
71  onEnabledChanged: {
72  updateVisibility()
73  }
74 
75  function updateVisibility() {
76  if (repeater.visibleIndicators === undefined) {
77  repeater.visibleIndicators = {}
78  }
79  repeater.visibleIndicators[model.identifier] = enabled;
80  repeater.visibleIndicatorsChanged();
81  }
82  }
83  }
84 }