on 34be00a help sign in
unity8/qml/Notifications/Notifications.qml
115 lines 3.7 kB history raw
1/*
2 * Copyright (C) 2013-2016 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.4
18import Ubuntu.Components 1.3
19import Unity.Notifications 1.0 as UnityNotifications
20import Utils 0.1
21import "../Components"
23ListView {
24 id: notificationList
26 objectName: "notificationList"
27 interactive: false
29 readonly property bool hasNotification: count > 0
30 property real margin
31 property bool hasMouse
32 property url background: ""
34 readonly property bool useModal: snapDecisionProxyModel.count > 0
36 UnitySortFilterProxyModel {
37 id: snapDecisionProxyModel
38 objectName: "snapDecisionProxyModel"
40 model: notificationList.model ? notificationList.model : null
41 filterRole: UnityNotifications.ModelInterface != undefined ? UnityNotifications.ModelInterface.RoleType : 0
42 filterRegExp: RegExp(UnityNotifications.Notification.SnapDecision)
43 }
45 property bool topmostIsFullscreen: false
46 spacing: topmostIsFullscreen ? 0 : units.gu(1)
48 currentIndex: -1
50 delegate: Notification {
51 objectName: "notification" + index
52 width: parent.width
53 type: model.type
54 hints: model.hints
55 iconSource: model.icon
56 secondaryIconSource: model.secondaryIcon ? model.secondaryIcon : ""
57 summary: model.summary
58 body: model.body
59 value: model.value ? model.value : -1
60 actions: model.actions
61 notificationId: model.id
62 notification: notificationList.model.getRaw(notificationId)
63 maxHeight: notificationList.height
64 margins: notificationList.margin
65 hasMouse: notificationList.hasMouse
66 background: notificationList.background
68 Component.onCompleted: topmostIsFullscreen = false; // async, the factory loader will set fullscreen to true later
70 property int theIndex: index
71 onTheIndexChanged: {
72 if (theIndex == 0) {
73 ListView.view.topmostIsFullscreen = fullscreen; // when we get pushed down by e.g. volume notification
74 }
75 }
77 // make sure there's no opacity-difference between the several
78 // elements in a notification
79 // FIXME: disabled all transitions because of LP: #1354406 workaround
80 //layer.enabled: add.running || remove.running || populate.running
81 }
83 onCountChanged: if (count == 0) topmostIsFullscreen = false; // reset
85 // FIXME: disabled all transitions because of LP: #1354406 workaround
86 /*populate: Transition {
87 UbuntuNumberAnimation {
88 property: "opacity"
89 to: 1
90 duration: UbuntuAnimation.SnapDuration
91 }
92 }
94 add: Transition {
95 UbuntuNumberAnimation {
96 property: "opacity"
97 to: 1
98 duration: UbuntuAnimation.SnapDuration
99 }
100 }
102 remove: Transition {
103 UbuntuNumberAnimation {
104 property: "opacity"
105 to: 0
106 }
107 }
109 displaced: Transition {
110 UbuntuNumberAnimation {
111 properties: "x,y"
112 duration: UbuntuAnimation.SnapDuration
113 }
114 }*/