mirror of
https://github.com/nomic-ai/gpt4all
synced 2024-11-10 01:10:35 +00:00
f9cd2e321c
Signed-off-by: Shiranui <supersonic@livemail.tw> Signed-off-by: Jared Van Bortel <jared@nomic.ai> Co-authored-by: Jared Van Bortel <jared@nomic.ai>
99 lines
2.1 KiB
QML
99 lines
2.1 KiB
QML
/*
|
|
* SPDX-License-Identifier: MIT
|
|
* Source: https://gist.github.com/jonmcclung/bae669101d17b103e94790341301c129
|
|
* Adapted from StackOverflow: http://stackoverflow.com/questions/26879266/make-toast-in-android-by-qml
|
|
*/
|
|
|
|
import QtQuick 2.0
|
|
|
|
/**
|
|
* @brief An Android-like timed message text in a box that self-destroys when finished if desired
|
|
*/
|
|
Rectangle {
|
|
/**
|
|
* Public
|
|
*/
|
|
|
|
/**
|
|
* @brief Shows this Toast
|
|
*
|
|
* @param {string} text Text to show
|
|
* @param {real} duration Duration to show in milliseconds, defaults to 3000
|
|
*/
|
|
function show(text, duration=3000) {
|
|
message.text = text;
|
|
if (typeof duration !== "undefined") { // checks if parameter was passed
|
|
time = Math.max(duration, 2 * fadeTime);
|
|
}
|
|
else {
|
|
time = defaultTime;
|
|
}
|
|
animation.start();
|
|
}
|
|
|
|
property bool selfDestroying: false // whether this Toast will self-destroy when it is finished
|
|
|
|
/**
|
|
* Private
|
|
*/
|
|
|
|
id: root
|
|
|
|
readonly property real defaultTime: 3000
|
|
property real time: defaultTime
|
|
readonly property real fadeTime: 300
|
|
|
|
property real margin: 10
|
|
|
|
anchors {
|
|
left: parent.left
|
|
right: parent.right
|
|
margins: margin
|
|
}
|
|
|
|
height: message.height + margin
|
|
radius: margin
|
|
|
|
opacity: 0
|
|
color: "#222222"
|
|
|
|
Text {
|
|
id: message
|
|
color: "white"
|
|
wrapMode: Text.Wrap
|
|
horizontalAlignment: Text.AlignHCenter
|
|
anchors {
|
|
top: parent.top
|
|
left: parent.left
|
|
right: parent.right
|
|
margins: margin / 2
|
|
}
|
|
}
|
|
|
|
SequentialAnimation on opacity {
|
|
id: animation
|
|
running: false
|
|
|
|
|
|
NumberAnimation {
|
|
to: .9
|
|
duration: fadeTime
|
|
}
|
|
|
|
PauseAnimation {
|
|
duration: time - 2 * fadeTime
|
|
}
|
|
|
|
NumberAnimation {
|
|
to: 0
|
|
duration: fadeTime
|
|
}
|
|
|
|
onRunningChanged: {
|
|
if (!running && selfDestroying) {
|
|
root.destroy();
|
|
}
|
|
}
|
|
}
|
|
}
|