on 6ca9421 help sign in
unity8/qml/Notifications/Notifications.qml
113 lines 3.4 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
31 property bool hasMouse
33 UnitySortFilterProxyModel {
34 id: snapDecisionProxyModel
35 objectName: "snapDecisionProxyModel"
37 model: notificationList.model ? notificationList.model : null
38 filterRole: UnityNotifications.ModelInterface != undefined ? UnityNotifications.ModelInterface.RoleType : 0
39 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
40 }
42 property bool topmostIsFullscreen: false
43 spacing: topmostIsFullscreen ? 0 : units.gu(.5)
45 currentIndex: count > 1 ? 1 : -1
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
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
69 Component.onCompleted: {
70 if (index == 1) {
71 notificationList.topmostIsFullscreen = fullscreen
72 }
73 }
75 onFullscreenChanged: {
76 // index 1 because 0 is the PlaceHolder...
77 if (index == 1) {
78 notificationList.topmostIsFullscreen = fullscreen
79 }
80 }
81 }
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 }
92 add: Transition {
93 UbuntuNumberAnimation {
94 property: "opacity"
95 to: 1
96 duration: UbuntuAnimation.SnapDuration
97 }
98 }
100 remove: Transition {
101 UbuntuNumberAnimation {
102 property: "opacity"
103 to: 0
104 }
105 }
107 displaced: Transition {
108 UbuntuNumberAnimation {
109 properties: "x,y"
110 duration: UbuntuAnimation.SnapDuration
111 }
112 }*/