Lomiri
NotificationButton.qml
1 /*
2  * Copyright 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 Lesser 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 Lesser General Public License for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 import QtQuick 2.12
18 import Lomiri.Components 1.3
19 
20 Rectangle {
21  id: root
22  height: units.gu(4)
23  radius: units.gu(0.6)
24 
25  // to be read from outside
26  readonly property alias containsMouse: mouseArea.containsMouse
27 
28  // to be set from outside
29  property bool outline: true
30  property alias text: label.text
31  property alias iconName: icon.name
32  property bool hoverEnabled: false
33 
34  signal clicked()
35 
36  Label {
37  id: label
38  fontSize: "medium"
39  font.weight: Font.Light
40  anchors.centerIn: root
41  color: theme.name == "Lomiri.Components.Themes.SuruDark" ? "#111"
42  : "white"
43  visible: text !== ""
44  }
45 
46  Icon {
47  id: icon
48  height: root.height * 2 / 3
49  width: height
50  anchors.centerIn: root
51  color: "white"
52  visible: !label.visible
53  }
54 
55  MouseArea {
56  id: mouseArea
57  anchors.fill: root
58  hoverEnabled: root.hoverEnabled
59  onClicked: {
60  Haptics.play();
61  root.clicked();
62  }
63  }
64 
65  transformOrigin: Item.Top
66  scale: mouseArea.pressed ? 0.98 : 1.0
67  Behavior on scale {
68  ScaleAnimator {
69  duration: LomiriAnimation.SnapDuration
70  easing.type: Easing.Linear
71  }
72  }
73 }