mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-04-30 15:54:32 +08:00

There are cases where Cura and the browser fall out of sync when it comes to accounts. In such cases, you may be logged in cura with an account that has no cloud printers and in the browser with an account that has printers. So when you press the "Add cloud printer" button, you are redirected to mycloud and you see cloud printers that are not detected by Cura (because Cura is in a different acconut). In such cases, the user can now press the "Sign in with a different account" link in the "Waiting for cloud response" page, which will log him/her out in Cura AND in the browser, and then reinitiate the whole authorization flow, to make sure the accounts are in sync. CURA-7427
224 lines
8.4 KiB
QML
224 lines
8.4 KiB
QML
// Copyright (c) 2019 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.10
|
|
import QtQuick.Controls 2.3
|
|
import QtQuick.Layouts 1.3
|
|
|
|
import UM 1.3 as UM
|
|
import Cura 1.7 as Cura
|
|
|
|
|
|
//
|
|
// This component gets activated when the user presses the "Add cloud printers" button from the "Add a Printer" page.
|
|
// It contains a busy indicator that remains active until the user logs in and adds a cloud printer in his/her account.
|
|
// Once a cloud printer is added in mycloud.ultimaker.com, Cura discovers it (in a time window of 30 sec) and displays
|
|
// the newly added printers in this page.
|
|
//
|
|
Item
|
|
{
|
|
UM.I18nCatalog { id: catalog; name: "cura" }
|
|
|
|
property bool searchingForCloudPrinters: true
|
|
property var discoveredCloudPrintersModel: CuraApplication.getDiscoveredCloudPrintersModel()
|
|
|
|
// The area where either the discoveredCloudPrintersScrollView or the busyIndicator will be displayed
|
|
Rectangle
|
|
{
|
|
id: cloudPrintersContent
|
|
width: parent.width
|
|
height: parent.height
|
|
anchors
|
|
{
|
|
top: parent.top
|
|
left: parent.left
|
|
leftMargin: UM.Theme.getSize("default_margin").width
|
|
right: parent.right
|
|
bottom: finishButton.top
|
|
bottomMargin: UM.Theme.getSize("default_margin").height
|
|
}
|
|
|
|
Label
|
|
{
|
|
id: titleLabel
|
|
anchors.top: parent.top
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: catalog.i18nc("@label", "Add a Cloud printer")
|
|
color: UM.Theme.getColor("primary_button")
|
|
font: UM.Theme.getFont("huge")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
|
|
// Component that contains a busy indicator and a message, while it waits for Cura to discover a cloud printer
|
|
Item
|
|
{
|
|
id: waitingContent
|
|
width: parent.width
|
|
height: childrenRect.height
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
BusyIndicator
|
|
{
|
|
id: waitingIndicator
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
running: searchingForCloudPrinters
|
|
}
|
|
Label
|
|
{
|
|
id: waitingLabel
|
|
anchors.top: waitingIndicator.bottom
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: catalog.i18nc("@label", "Waiting for Cloud response")
|
|
font: UM.Theme.getFont("large")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
Label
|
|
{
|
|
id: noPrintersFoundLabel
|
|
anchors.top: waitingLabel.bottom
|
|
anchors.topMargin: 2 * UM.Theme.getSize("wide_margin").height
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: catalog.i18nc("@label", "No printers found in your account?")
|
|
font: UM.Theme.getFont("medium")
|
|
}
|
|
Label
|
|
{
|
|
text: "Sign in with a different account"
|
|
anchors.top: noPrintersFoundLabel.bottom
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
font: UM.Theme.getFont("medium")
|
|
color: UM.Theme.getColor("text_link")
|
|
MouseArea {
|
|
anchors.fill: parent;
|
|
onClicked: Cura.API.account.loginWithForcedLogout()
|
|
hoverEnabled: true
|
|
onEntered:
|
|
{
|
|
parent.font.underline = true
|
|
}
|
|
onExited:
|
|
{
|
|
parent.font.underline = false
|
|
}
|
|
}
|
|
}
|
|
visible: discoveredCloudPrintersModel.count == 0
|
|
}
|
|
|
|
// Label displayed when a new cloud printer is discovered
|
|
Label
|
|
{
|
|
anchors.top: titleLabel.bottom
|
|
anchors.topMargin: 2 * UM.Theme.getSize("default_margin").height
|
|
id: cloudPrintersAddedTitle
|
|
font: UM.Theme.getFont("medium")
|
|
text: catalog.i18nc("@label", "The following printers in your account have been added in Cura:")
|
|
height: contentHeight + 2 * UM.Theme.getSize("default_margin").height
|
|
visible: discoveredCloudPrintersModel.count > 0
|
|
}
|
|
|
|
// The scrollView that contains the list of newly discovered Ultimaker Cloud printers. Visible only when
|
|
// there is at least a new cloud printer.
|
|
ScrollView
|
|
{
|
|
id: discoveredCloudPrintersScrollView
|
|
width: parent.width
|
|
clip : true
|
|
ScrollBar.horizontal.policy: ScrollBar.AsNeeded
|
|
ScrollBar.vertical.policy: ScrollBar.AsNeeded
|
|
visible: discoveredCloudPrintersModel.count > 0
|
|
anchors
|
|
{
|
|
top: cloudPrintersAddedTitle.bottom
|
|
topMargin: UM.Theme.getSize("default_margin").height
|
|
left: parent.left
|
|
leftMargin: UM.Theme.getSize("default_margin").width
|
|
right: parent.right
|
|
bottom: parent.bottom
|
|
}
|
|
|
|
Column
|
|
{
|
|
id: discoveredPrintersColumn
|
|
spacing: 2 * UM.Theme.getSize("default_margin").height
|
|
|
|
Repeater
|
|
{
|
|
id: discoveredCloudPrintersRepeater
|
|
model: discoveredCloudPrintersModel
|
|
delegate: Item
|
|
{
|
|
width: discoveredCloudPrintersScrollView.width
|
|
height: contentColumn.height
|
|
|
|
Column
|
|
{
|
|
id: contentColumn
|
|
Label
|
|
{
|
|
id: cloudPrinterNameLabel
|
|
leftPadding: UM.Theme.getSize("default_margin").width
|
|
text: model.name
|
|
font: UM.Theme.getFont("large_bold")
|
|
color: UM.Theme.getColor("text")
|
|
elide: Text.ElideRight
|
|
}
|
|
Label
|
|
{
|
|
id: cloudPrinterTypeLabel
|
|
leftPadding: 2 * UM.Theme.getSize("default_margin").width
|
|
topPadding: UM.Theme.getSize("thin_margin").height
|
|
text: {"Type: " + model.machine_type}
|
|
font: UM.Theme.getFont("medium")
|
|
color: UM.Theme.getColor("text")
|
|
elide: Text.ElideRight
|
|
}
|
|
Label
|
|
{
|
|
id: cloudPrinterFirmwareVersionLabel
|
|
leftPadding: 2 * UM.Theme.getSize("default_margin").width
|
|
text: {"Firmware version: " + model.firmware_version}
|
|
font: UM.Theme.getFont("medium")
|
|
color: UM.Theme.getColor("text")
|
|
elide: Text.ElideRight
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Cura.SecondaryButton
|
|
{
|
|
id: backButton
|
|
anchors.left: parent.left
|
|
anchors.bottom: parent.bottom
|
|
text: catalog.i18nc("@button", "Add printer manually")
|
|
onClicked:
|
|
{
|
|
discoveredCloudPrintersModel.clear()
|
|
base.showPreviousPage()
|
|
}
|
|
visible: discoveredCloudPrintersModel.count == 0
|
|
}
|
|
|
|
Cura.PrimaryButton
|
|
{
|
|
id: finishButton
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
text: catalog.i18nc("@button", "Finish")
|
|
onClicked:
|
|
{
|
|
discoveredCloudPrintersModel.clear()
|
|
base.showNextPage()
|
|
}
|
|
|
|
enabled: !waitingContent.visible
|
|
}
|
|
}
|