104 lines
2.6 KiB
QML
104 lines
2.6 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.5
|
|
|
|
import "util.mjs" as Util
|
|
import QtGraphicalEffects 1.12
|
|
|
|
AnimatedImage {
|
|
property var wrapper
|
|
|
|
property var uuid: Util.uuidv4()
|
|
|
|
property var tag: "Image"
|
|
|
|
Rectangle {
|
|
id: bg
|
|
color: "transparent"
|
|
}
|
|
|
|
onSourceChanged: {
|
|
console.log(tag, uuid + " onSourceChanged: " + this.source)
|
|
}
|
|
|
|
onStatusChanged: {
|
|
if (this.status === Image.Null) {
|
|
console.log(tag, uuid + " onStatusChanged: Image.Null")
|
|
imageBridge.onNull(wrapper);
|
|
} else if (this.status === Image.Ready) {
|
|
console.log(tag, uuid + " onStatusChanged: Image.Ready")
|
|
|
|
if (this.width !== 0 && this.height !== 0 && this.status === Image.Ready) {
|
|
imageBridge.onReady(wrapper);
|
|
}
|
|
} else if (this.status === Image.Loading) {
|
|
console.log(tag, uuid + " onStatusChanged: Image.Loading")
|
|
imageBridge.onLoading(wrapper);
|
|
} else if (this.status === Image.Error) {
|
|
console.log(tag, uuid + " onStatusChanged: Image.Error")
|
|
imageBridge.onError(wrapper);
|
|
}
|
|
}
|
|
|
|
onProgressChanged: {
|
|
console.log(tag, uuid + " onProgressChanged: " + this.progress)
|
|
}
|
|
|
|
onWidthChanged: {
|
|
console.log(tag, uuid + " onWidthChanged: " + this.width)
|
|
bg.width = this.width
|
|
|
|
if (this.width !== 0 && this.height !== 0 && this.status === Image.Ready) {
|
|
imageBridge.onReady(wrapper);
|
|
}
|
|
}
|
|
|
|
onHeightChanged: {
|
|
console.log(tag, uuid + " onHeightChanged: " + this.height)
|
|
bg.height = this.height
|
|
|
|
if (this.width !== 0 && this.height !== 0 && this.status === Image.Ready) {
|
|
imageBridge.onReady(wrapper);
|
|
}
|
|
}
|
|
|
|
property var backgroundColor
|
|
|
|
onBackgroundColorChanged: {
|
|
bg.color = backgroundColor
|
|
}
|
|
|
|
property var borderWidth: 0
|
|
onBorderWidthChanged: {
|
|
bg.border.width = borderWidth
|
|
}
|
|
|
|
property var borderColor: ""
|
|
onBorderColorChanged: {
|
|
bg.border.color = borderColor
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
console.log(tag, uuid + " wrapper: " + wrapper)
|
|
mouseAreaBridge.onClick(wrapper)
|
|
}
|
|
}
|
|
|
|
property var isBlur: false
|
|
onIsBlurChanged: {
|
|
console.log(tag, uuid + " onIsBlurChanged: " + this.isBlur)
|
|
if (isBlur) {
|
|
this.layer.enabled = true
|
|
} else {
|
|
this.layer.enabled = false
|
|
}
|
|
}
|
|
|
|
layer.enabled: false
|
|
layer.effect: FastBlur {
|
|
radius: 50
|
|
transparentBorder: true
|
|
}
|
|
}
|