mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-17 20:36:41 +08:00
110 lines
3.1 KiB
QML
110 lines
3.1 KiB
QML
import QtQuick 2.10
|
|
import QtQuick.Controls 2.3
|
|
|
|
import UM 1.4 as UM
|
|
import Cura 1.1 as Cura
|
|
|
|
Row // sync state icon + message
|
|
{
|
|
|
|
property alias iconSource: icon.source
|
|
property alias labelText: stateLabel.text
|
|
property alias syncButtonVisible: accountSyncButton.visible
|
|
property alias animateIconRotation: updateAnimator.running
|
|
|
|
width: childrenRect.width
|
|
height: childrenRect.height
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
spacing: UM.Theme.getSize("narrow_margin").height
|
|
|
|
UM.RecolorImage
|
|
{
|
|
id: icon
|
|
width: 20 * screenScaleFactor
|
|
height: width
|
|
|
|
source: UM.Theme.getIcon("update")
|
|
color: palette.text
|
|
|
|
RotationAnimator
|
|
{
|
|
id: updateAnimator
|
|
target: icon
|
|
from: 0
|
|
to: 360
|
|
duration: 1000
|
|
loops: Animation.Infinite
|
|
running: true
|
|
|
|
// reset rotation when stopped
|
|
onRunningChanged: {
|
|
if(!running)
|
|
{
|
|
icon.rotation = 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Column
|
|
{
|
|
width: childrenRect.width
|
|
height: childrenRect.height
|
|
|
|
Label
|
|
{
|
|
id: stateLabel
|
|
text: catalog.i18nc("@state", "Checking...")
|
|
color: UM.Theme.getColor("text")
|
|
font: UM.Theme.getFont("medium")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
|
|
Label
|
|
{
|
|
id: accountSyncButton
|
|
text: catalog.i18nc("@button", "Check for account updates")
|
|
color: UM.Theme.getColor("secondary_button_text")
|
|
font: UM.Theme.getFont("medium")
|
|
renderType: Text.NativeRendering
|
|
|
|
MouseArea
|
|
{
|
|
anchors.fill: parent
|
|
onClicked: Cura.API.account.sync()
|
|
hoverEnabled: true
|
|
onEntered: accountSyncButton.font.underline = true
|
|
onExited: accountSyncButton.font.underline = false
|
|
}
|
|
}
|
|
}
|
|
|
|
signal syncStateChanged(string newState)
|
|
|
|
onSyncStateChanged: {
|
|
if(newState == Cura.AccountSyncState.SYNCING){
|
|
syncRow.iconSource = UM.Theme.getIcon("update")
|
|
syncRow.labelText = catalog.i18nc("@label", "Checking...")
|
|
} else if (newState == Cura.AccountSyncState.SUCCESS) {
|
|
syncRow.iconSource = UM.Theme.getIcon("checked")
|
|
syncRow.labelText = catalog.i18nc("@label", "You are up to date")
|
|
} else if (newState == Cura.AccountSyncState.ERROR) {
|
|
syncRow.iconSource = UM.Theme.getIcon("warning_light")
|
|
syncRow.labelText = catalog.i18nc("@label", "Something went wrong...")
|
|
} else {
|
|
print("Error: unexpected sync state: " + newState)
|
|
}
|
|
|
|
if(newState == Cura.AccountSyncState.SYNCING){
|
|
syncRow.animateIconRotation = true
|
|
syncRow.syncButtonVisible = false
|
|
} else {
|
|
syncRow.animateIconRotation = false
|
|
syncRow.syncButtonVisible = true
|
|
}
|
|
}
|
|
|
|
Component.onCompleted: Cura.API.account.syncStateChanged.connect(syncStateChanged)
|
|
|
|
|
|
} |