on fab9bd9 help sign in
unity8/qml/Notifications/Notifications.qml
111 lines 3.2 kB history raw
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 */
17import QtQuick 2.0
18import Ubuntu.Components 0.1
19import Unity.Notifications 1.0 as UnityNotifications
20import Utils 0.1
21import "../Components"
23ListView {
24 id: notificationList
26 objectName: "notificationList"
27 interactive: false
29 property real margin
30 property bool useModal: snapDecisionProxyModel.count > 0
32 SortFilterProxyModel {
33 id: snapDecisionProxyModel
35 model: notificationList.model
36 filterRole: UnityNotifications.ModelInterface.RoleType
37 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
38 }
40 property bool topmostIsFullscreen: false
41 spacing: topmostIsFullscreen ? 0 : units.gu(.5)
43 // FIXME: This doesn't make any sense and results in a binding loop
44 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
46 delegate: Notification {
47 objectName: "notification" + index
48 anchors {
49 left: parent.left
50 right: parent.right
51 }
52 type: model.type
53 hints: model.hints
54 iconSource: model.icon
55 secondaryIconSource: model.secondaryIcon
56 summary: model.summary
57 body: model.body
58 actions: model.actions
59 notificationId: model.id
60 notification: notificationList.model.getRaw(notificationId)
61 maxHeight: notificationList.height
62 margins: notificationList.margin
64 // make sure there's no opacity-difference between the several
65 // elements in a notification
66 layer.enabled: add.running || remove.running || populate.running
68 Component.onCompleted: {
69 if (index == 1) {
70 notificationList.topmostIsFullscreen = fullscreen
71 }
72 }
74 onFullscreenChanged: {
75 // index 1 because 0 is the PlaceHolder...
76 if (index == 1) {
77 notificationList.topmostIsFullscreen = fullscreen
78 }
79 }
80 }
82 populate: Transition {
83 UbuntuNumberAnimation {
84 property: "opacity"
85 to: 1
86 duration: UbuntuAnimation.SnapDuration
87 }
88 }
90 add: Transition {
91 UbuntuNumberAnimation {
92 property: "opacity"
93 to: 1
94 duration: UbuntuAnimation.SnapDuration
95 }
96 }
98 remove: Transition {
99 UbuntuNumberAnimation {
100 property: "opacity"
101 to: 0
102 }
103 }
105 displaced: Transition {
106 UbuntuNumberAnimation {
107 properties: "x,y"
108 duration: UbuntuAnimation.SnapDuration
109 }
110 }