gpt4all/gpt4all-chat/qml/PopupDialog.qml

75 lines
2.1 KiB
QML
Raw Normal View History

import QtCore
import QtQuick
import QtQuick.Controls
2023-04-24 03:56:33 +00:00
import QtQuick.Controls.Basic
import QtQuick.Layouts
Dialog {
id: popupDialog
anchors.centerIn: parent
padding: 20
property alias text: textField.text
property bool shouldTimeOut: true
property bool shouldShowBusy: false
modal: shouldShowBusy
closePolicy: shouldShowBusy ? Popup.NoAutoClose : (Popup.CloseOnEscape | Popup.CloseOnPressOutside)
Theme {
id: theme
}
Row {
anchors.centerIn: parent
spacing: 20
2023-06-22 19:44:49 +00:00
Label {
id: textField
2023-05-25 14:40:10 +00:00
width: Math.min(1024, implicitWidth)
height: Math.min(600, implicitHeight)
anchors.verticalCenter: shouldShowBusy ? busyIndicator.verticalCenter : parent.verticalCenter
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
2023-06-22 19:44:49 +00:00
textFormat: Text.StyledText
2023-05-25 14:40:10 +00:00
wrapMode: Text.WordWrap
color: theme.textColor
2023-06-22 19:44:49 +00:00
linkColor: theme.linkColor
Accessible.role: Accessible.HelpBalloon
Accessible.name: text
Accessible.description: qsTr("Reveals a shortlived help balloon")
2023-06-26 17:37:18 +00:00
onLinkActivated: function(link) { Qt.openUrlExternally(link) }
}
MyBusyIndicator {
id: busyIndicator
visible: shouldShowBusy
running: shouldShowBusy
Accessible.role: Accessible.Animation
Accessible.name: qsTr("Busy indicator")
Accessible.description: qsTr("Displayed when the popup is showing busy")
}
}
background: Rectangle {
anchors.fill: parent
color: theme.containerBackground
border.width: 1
border.color: theme.dialogBorder
radius: 10
}
exit: Transition {
NumberAnimation { duration: 500; property: "opacity"; from: 1.0; to: 0.0 }
}
onOpened: {
if (shouldTimeOut)
timer.start()
}
Timer {
id: timer
interval: 500; running: false; repeat: false
onTriggered: popupDialog.close()
}
}