gpt4all
75 строк · 2.1 Кб
1import QtCore
2import QtQuick
3import QtQuick.Controls
4import QtQuick.Controls.Basic
5import QtQuick.Layouts
6
7Dialog {
8id: popupDialog
9anchors.centerIn: parent
10padding: 20
11property alias text: textField.text
12property bool shouldTimeOut: true
13property bool shouldShowBusy: false
14modal: shouldShowBusy
15closePolicy: shouldShowBusy ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside)
16
17Theme {
18id: theme
19}
20
21Row {
22anchors.centerIn: parent
23spacing: 20
24
25Label {
26id: textField
27width: Math.min(1024, implicitWidth)
28height: Math.min(600, implicitHeight)
29anchors.verticalCenter: shouldShowBusy ? busyIndicator.verticalCenter : parent.verticalCenter
30horizontalAlignment: Text.AlignLeft
31verticalAlignment: Text.AlignVCenter
32textFormat: Text.StyledText
33wrapMode: Text.WordWrap
34color: theme.textColor
35linkColor: theme.linkColor
36Accessible.role: Accessible.HelpBalloon
37Accessible.name: text
38Accessible.description: qsTr("Reveals a shortlived help balloon")
39onLinkActivated: function(link) { Qt.openUrlExternally(link) }
40}
41
42MyBusyIndicator {
43id: busyIndicator
44visible: shouldShowBusy
45running: shouldShowBusy
46
47Accessible.role: Accessible.Animation
48Accessible.name: qsTr("Busy indicator")
49Accessible.description: qsTr("Displayed when the popup is showing busy")
50}
51}
52
53background: Rectangle {
54anchors.fill: parent
55color: theme.containerBackground
56border.width: 1
57border.color: theme.dialogBorder
58radius: 10
59}
60
61exit: Transition {
62NumberAnimation { duration: 500; property: "opacity"; from: 1.0; to: 0.0 }
63}
64
65onOpened: {
66if (shouldTimeOut)
67timer.start()
68}
69
70Timer {
71id: timer
72interval: 500; running: false; repeat: false
73onTriggered: popupDialog.close()
74}
75}