-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathDialog.qml
135 lines (108 loc) · 3.54 KB
/
Dialog.qml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/*
* QML Air - A lightweight and mostly flat UI widget collection for QML
* Copyright (C) 2014 Michael Spencer
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
import QtQuick 2.0
import QtGraphicalEffects 1.0
PopupBase {
id: sheet
property alias title: titleLabel.text
property string text
//----- STYLE PROPERTIES -----//
property color titleColor: style === "default" ? theme.textColor : theme.getStyleColor(style)
property color textColor: theme.secondaryColor
property color background: "white"
property int margins: units.gu(2)
property int spacing: units.gu(1.5)
property color borderColor: Qt.rgba(0,0,0,0.2)
property string titleFontSize: "x-large"
property int titleAlignment: Qt.AlignCenter
property int footerAlignment: Qt.AlignRight
radius: units.gu(0.7)
property int horizPadding: units.gu(2)
property int minHeight: units.gu(25)
width: units.gu(38)
//
property int maxHeight: sheet.parent.height - units.gu(4)
height: Math.min(
contentHeight + contents.anchors.margins * 2,
maxHeight
)
color: "transparent"
overlayColor: Qt.rgba(0,0,0,0.4)
z: 2
property int contentWidth: contents.implicitWidth
property int contentHeight: contents.implicitHeight
property bool autosize: false
function defaultAction() {
for (var i = 0; i < footer.children.length; i++) {
if (footer.children[i].hasOwnProperty("primary") && footer.children[i].primary) {
footer.children[i].clicked(footer.children[i])
}
}
}
anchors {
centerIn: parent
verticalCenterOffset: showing ? 0 : -(parent.height/4)
Behavior on verticalCenterOffset {
NumberAnimation { duration: 200 }
}
}
Behavior on opacity {
NumberAnimation { duration: 200 }
}
default property alias data: contents.data
RectangularGlow {
id: glowEffect
opacity: 0.5
anchors.fill: parent
glowRadius: units.gu(2)
//cornerRadius: 0
color: "black"
}
Rectangle {
anchors.fill: parent
radius: sheet.radius
color: sheet.background
border.color: borderColor
border.width: 0.5
}
Column {
id: contents
anchors {
fill: parent
margins: sheet.margins
}
spacing: sheet.spacing
Label {
id: titleLabel
fontSize: titleFontSize
color: titleColor
horizontalAlignment: Text.AlignHCenter
elide: Text.ElideRight
width: parent.width
}
Label {
width: parent.width
text: sheet.text
visible: text !== ""
color: textColor
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
}
}
Keys.onEscapePressed: sheet.close()
}