49 lines
1.2 KiB
QML
49 lines
1.2 KiB
QML
|
import QtQuick
|
||
|
import QtQuick.Controls
|
||
|
import FluentUI
|
||
|
|
||
|
Image {
|
||
|
property string errorButtonText: qsTr("Reload")
|
||
|
property var clickErrorListener : function(){
|
||
|
image.source = ""
|
||
|
image.source = control.source
|
||
|
}
|
||
|
property Component errorItem : com_error
|
||
|
property Component loadingItem: com_loading
|
||
|
id: control
|
||
|
FluLoader{
|
||
|
anchors.fill: parent
|
||
|
sourceComponent: {
|
||
|
if(control.status === Image.Loading){
|
||
|
return com_loading
|
||
|
}else if(control.status == Image.Error){
|
||
|
return com_error
|
||
|
}else{
|
||
|
return undefined
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Component{
|
||
|
id:com_loading
|
||
|
Rectangle{
|
||
|
color: FluTheme.itemHoverColor
|
||
|
FluProgressRing{
|
||
|
anchors.centerIn: parent
|
||
|
visible: control.status === Image.Loading
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
Component{
|
||
|
id:com_error
|
||
|
Rectangle{
|
||
|
color: FluTheme.itemHoverColor
|
||
|
FluFilledButton{
|
||
|
text: control.errorButtonText
|
||
|
anchors.centerIn: parent
|
||
|
visible: control.status === Image.Error
|
||
|
onClicked: clickErrorListener()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|