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  property bool hasMouse
32 
33  UnitySortFilterProxyModel {
34  id: snapDecisionProxyModel
35  objectName: "snapDecisionProxyModel"
36 
37  model: notificationList.model ? notificationList.model : null
38  filterRole: UnityNotifications.ModelInterface != undefined ? UnityNotifications.ModelInterface.RoleType : 0
39  filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
40  }
41 
42  property bool topmostIsFullscreen: false
43  spacing: topmostIsFullscreen ? 0 : units.gu(.5)
44 
45  currentIndex: count > 1 ? 1 : -1
46 
47  delegate: Notification {
48  objectName: "notification" + index
49  width: parent.width
50  type: model.type
51  hints: model.hints
52  iconSource: model.icon
53  secondaryIconSource: model.secondaryIcon
54  summary: model.summary
55  body: model.body
56  value: model.value ? model.value : -1
57  actions: model.actions
58  notificationId: model.id
59  notification: notificationList.model.getRaw(notificationId)
60  maxHeight: notificationList.height
61  margins: notificationList.margin
62  hasMouse: notificationList.hasMouse
63 
64  // make sure there's no opacity-difference between the several
65  // elements in a notification
66  // FIXME: disabled all transitions because of LP: #1354406 workaround
67  //layer.enabled: add.running || remove.running || populate.running
68 
69  Component.onCompleted: {
70  if (index == 1) {
71  notificationList.topmostIsFullscreen = fullscreen
72  }
73  }
74 
75  onFullscreenChanged: {
76  // index 1 because 0 is the PlaceHolder...
77  if (index == 1) {
78  notificationList.topmostIsFullscreen = fullscreen
79  }
80  }
81  }
82 
83  // FIXME: disabled all transitions because of LP: #1354406 workaround
84  /*populate: Transition {
85  UbuntuNumberAnimation {
86  property: "opacity"
87  to: 1
88  duration: UbuntuAnimation.SnapDuration
89  }
90  }
91 
92  add: Transition {
93  UbuntuNumberAnimation {
94  property: "opacity"
95  to: 1
96  duration: UbuntuAnimation.SnapDuration
97  }
98  }
99 
100  remove: Transition {
101  UbuntuNumberAnimation {
102  property: "opacity"
103  to: 0
104  }
105  }
106 
107  displaced: Transition {
108  UbuntuNumberAnimation {
109  properties: "x,y"
110  duration: UbuntuAnimation.SnapDuration
111  }
112  }*/
113 }