on 7f16e39 help sign in
unity8/qml/Notifications/Notifications.qml
114 lines 3.5 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"
22import "../Components/Flickables" as Flickables
24Flickables.ListView {
25 id: notificationList
27 objectName: "notificationList"
28 interactive: false
30 property real margin
31 property bool useModal: snapDecisionProxyModel.count > 0
33 SortFilterProxyModel {
34 id: snapDecisionProxyModel
36 model: notificationList.model
37 filterRole: UnityNotifications.ModelInterface != undefined ? UnityNotifications.ModelInterface.RoleType : 0
38 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
39 }
41 property bool topmostIsFullscreen: false
42 spacing: topmostIsFullscreen ? 0 : units.gu(.5)
44 // FIXME: This doesn't make any sense and results in a binding loop
45 currentIndex: (currentIndex < 1 && count > 1) ? 1 : -1
47 delegate: Notification {
48 objectName: "notification" + index
49 anchors {
50 left: parent.left
51 right: parent.right
52 }
53 type: model.type
54 hints: model.hints
55 iconSource: model.icon
56 secondaryIconSource: model.secondaryIcon
57 summary: model.summary
58 body: model.body
59 actions: model.actions
60 notificationId: model.id
61 notification: notificationList.model.getRaw(notificationId)
62 maxHeight: notificationList.height
63 margins: notificationList.margin
65 // make sure there's no opacity-difference between the several
66 // elements in a notification
67 // FIXME: disabled all transitions because of LP: #1354406 workaround
68 //layer.enabled: add.running || remove.running || populate.running
70 Component.onCompleted: {
71 if (index == 1) {
72 notificationList.topmostIsFullscreen = fullscreen
73 }
74 }
76 onFullscreenChanged: {
77 // index 1 because 0 is the PlaceHolder...
78 if (index == 1) {
79 notificationList.topmostIsFullscreen = fullscreen
80 }
81 }
82 }
84 // FIXME: disabled all transitions because of LP: #1354406 workaround
85 /*populate: Transition {
86 UbuntuNumberAnimation {
87 property: "opacity"
88 to: 1
89 duration: UbuntuAnimation.SnapDuration
90 }
91 }
93 add: Transition {
94 UbuntuNumberAnimation {
95 property: "opacity"
96 to: 1
97 duration: UbuntuAnimation.SnapDuration
98 }
99 }
101 remove: Transition {
102 UbuntuNumberAnimation {
103 property: "opacity"
104 to: 0
105 }
106 }
108 displaced: Transition {
109 UbuntuNumberAnimation {
110 properties: "x,y"
111 duration: UbuntuAnimation.SnapDuration
112 }
113 }*/