Unity 8
Notifications.qml
1 /*
2  * Copyright (C) 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 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 General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.0
18 import Ubuntu.Components 0.1
19 import Unity.Notifications 1.0 as UnityNotifications
20 import Utils 0.1
21 import "../Components"
22 
23 ListView {
24  id: notificationList
25 
26  objectName: "notificationList"
27  interactive: false
28 
29  property real margin
30  property bool useModal: snapDecisionProxyModel.count > 0
31 
32  UnitySortFilterProxyModel {
33  id: snapDecisionProxyModel
34  objectName: "snapDecisionProxyModel"
35 
36  model: notificationList.model
37  filterRole: UnityNotifications.ModelInterface != undefined ? UnityNotifications.ModelInterface.RoleType : 0
38  filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
39  }
40 
41  property bool topmostIsFullscreen: false
42  spacing: topmostIsFullscreen ? 0 : units.gu(.5)
43 
44  currentIndex: count > 1 ? 1 : -1
45 
46  delegate: Notification {
47  objectName: "notification" + index
48  width: parent.width
49  type: model.type
50  hints: model.hints
51  iconSource: model.icon
52  secondaryIconSource: model.secondaryIcon
53  summary: model.summary
54  body: model.body
55  value: model.value
56  actions: model.actions
57  notificationId: model.id
58  notification: notificationList.model.getRaw(notificationId)
59  maxHeight: notificationList.height
60  margins: notificationList.margin
61 
62  // make sure there's no opacity-difference between the several
63  // elements in a notification
64  // FIXME: disabled all transitions because of LP: #1354406 workaround
65  //layer.enabled: add.running || remove.running || populate.running
66 
67  Component.onCompleted: {
68  if (index == 1) {
69  notificationList.topmostIsFullscreen = fullscreen
70  }
71  }
72 
73  onFullscreenChanged: {
74  // index 1 because 0 is the PlaceHolder...
75  if (index == 1) {
76  notificationList.topmostIsFullscreen = fullscreen
77  }
78  }
79  }
80 
81  // FIXME: disabled all transitions because of LP: #1354406 workaround
82  /*populate: Transition {
83  UbuntuNumberAnimation {
84  property: "opacity"
85  to: 1
86  duration: UbuntuAnimation.SnapDuration
87  }
88  }
89 
90  add: Transition {
91  UbuntuNumberAnimation {
92  property: "opacity"
93  to: 1
94  duration: UbuntuAnimation.SnapDuration
95  }
96  }
97 
98  remove: Transition {
99  UbuntuNumberAnimation {
100  property: "opacity"
101  to: 0
102  }
103  }
104 
105  displaced: Transition {
106  UbuntuNumberAnimation {
107  properties: "x,y"
108  duration: UbuntuAnimation.SnapDuration
109  }
110  }*/
111 }