mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-10 07:15:03 -06:00
Account sync: create additional sync states
CURA-7290
This commit is contained in:
parent
4b88247af8
commit
4e7f446fe1
6 changed files with 184 additions and 72 deletions
38
resources/qml/Account/SyncStateError.qml
Normal file
38
resources/qml/Account/SyncStateError.qml
Normal file
|
@ -0,0 +1,38 @@
|
|||
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
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
|
||||
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: updateImage
|
||||
width: 20 * screenScaleFactor
|
||||
height: width
|
||||
|
||||
source: UM.Theme.getIcon("warning_light")
|
||||
color: palette.text
|
||||
|
||||
signal syncingChanged(bool newSyncing)
|
||||
property double animationDuration: 1500
|
||||
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: syncStateSuccessLabel
|
||||
text: catalog.i18nc("@info", "Something went wrong...\nPlease try again later.")
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
44
resources/qml/Account/SyncStateIdle.qml
Normal file
44
resources/qml/Account/SyncStateIdle.qml
Normal file
|
@ -0,0 +1,44 @@
|
|||
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
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
|
||||
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: updateImage
|
||||
width: 20 * screenScaleFactor
|
||||
height: width
|
||||
|
||||
source: UM.Theme.getIcon("update")
|
||||
color: palette.text
|
||||
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
32
resources/qml/Account/SyncStateSuccess.qml
Normal file
32
resources/qml/Account/SyncStateSuccess.qml
Normal file
|
@ -0,0 +1,32 @@
|
|||
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
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: updateImage
|
||||
width: 20 * screenScaleFactor
|
||||
height: width
|
||||
|
||||
source: UM.Theme.getIcon("checked")
|
||||
color: palette.text
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: syncStateSuccessLabel
|
||||
text: catalog.i18nc("@info", "You are up to date")
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
43
resources/qml/Account/SyncStateSyncing.qml
Normal file
43
resources/qml/Account/SyncStateSyncing.qml
Normal file
|
@ -0,0 +1,43 @@
|
|||
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
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: updateImage
|
||||
width: 20 * screenScaleFactor
|
||||
height: width
|
||||
|
||||
source: UM.Theme.getIcon("update")
|
||||
color: palette.text
|
||||
|
||||
RotationAnimator
|
||||
{
|
||||
id: updateAnimator
|
||||
target: updateImage
|
||||
from: 0
|
||||
to: 360
|
||||
duration: 1000
|
||||
loops: Animation.Infinite
|
||||
running: true
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: accountSyncButton
|
||||
text: catalog.i18nc("@button", "Checking...")
|
||||
color: UM.Theme.getColor("text")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
|
@ -29,79 +29,23 @@ Column
|
|||
color: UM.Theme.getColor("text")
|
||||
}
|
||||
|
||||
Row
|
||||
{
|
||||
width: childrenRect.width
|
||||
height: childrenRect.height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
spacing: UM.Theme.getSize("narrow_margin").height
|
||||
|
||||
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
id: updateImage
|
||||
width: 20 * screenScaleFactor
|
||||
height: width
|
||||
|
||||
source: UM.Theme.getIcon("update")
|
||||
color: palette.text
|
||||
|
||||
signal syncingChanged(bool newSyncing)
|
||||
property double animationDuration: 1500
|
||||
|
||||
|
||||
RotationAnimator
|
||||
{
|
||||
id: updateAnimator
|
||||
target: updateImage
|
||||
to: 360;
|
||||
}
|
||||
|
||||
onSyncingChanged:
|
||||
{
|
||||
if(newSyncing)
|
||||
{
|
||||
// start infinite rotation loop
|
||||
updateAnimator.from = 0
|
||||
updateAnimator.duration = animationDuration
|
||||
updateAnimator.loops = Animation.Infinite
|
||||
updateAnimator.start()
|
||||
} else {
|
||||
// complete current rotation
|
||||
updateAnimator.stop()
|
||||
updateAnimator.from = updateImage.rotation
|
||||
updateAnimator.duration = ((360 - updateImage.rotation) / 360) * animationDuration
|
||||
updateAnimator.loops = 1
|
||||
updateAnimator.start()
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: Cura.API.account.isSyncingChanged.connect(syncingChanged) //todo connect to pyqtsignal or a pyqtproperty?
|
||||
|
||||
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
SyncStateIdle {
|
||||
visible: Cura.API.account.syncState == "idle"
|
||||
}
|
||||
|
||||
Label
|
||||
SyncStateSyncing {
|
||||
visible: Cura.API.account.syncState == "syncing"
|
||||
}
|
||||
|
||||
SyncStateSuccess {
|
||||
visible: Cura.API.account.syncState == "success"
|
||||
}
|
||||
|
||||
SyncStateError {
|
||||
visible: Cura.API.account.syncState == "error"
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: lastSyncLabel
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue