import QtQuick import QtQuick.Controls import QtQuick.Layouts import QtQuick.Shapes import Qt5Compat.GraphicalEffects import ConnectionState 1.0 import PageEnum 1.0 Button { id: root property string defaultButtonColor: "#D7D8DB" property string progressButtonColor: "#D7D8DB" property string connectedButtonColor: "#FBB26A" implicitWidth: 190 implicitHeight: 190 Connections { target: ConnectionController function onConnectionErrorOccurred(errorMessage) { PageController.showErrorMessage(errorMessage) } } text: ConnectionController.connectionStateText // enabled: !ConnectionController.isConnectionInProgress background: Item { implicitWidth: parent.width implicitHeight: parent.height transformOrigin: Item.Center Shape { id: backgroundCircle width: parent.implicitWidth height: parent.implicitHeight anchors.bottom: parent.bottom anchors.right: parent.right layer.enabled: true layer.samples: 4 layer.smooth: true layer.effect: DropShadow { anchors.fill: backgroundCircle horizontalOffset: 0 verticalOffset: 0 radius: 10 samples: 25 color: "#FBB26A" source: backgroundCircle } ShapePath { fillColor: "transparent" strokeColor: { if (ConnectionController.isConnectionInProgress) { return "#261E1A" } else if (ConnectionController.isConnected) { return connectedButtonColor } else { return defaultButtonColor } } strokeWidth: 3 capStyle: ShapePath.RoundCap PathAngleArc { centerX: backgroundCircle.width / 2 centerY: backgroundCircle.height / 2 radiusX: 93 radiusY: 93 startAngle: 0 sweepAngle: 360 } } MouseArea { anchors.fill: parent cursorShape: Qt.PointingHandCursor enabled: false } } Shape { id: shape width: parent.implicitWidth height: parent.implicitHeight anchors.bottom: parent.bottom anchors.right: parent.right layer.enabled: true layer.samples: 4 visible: ConnectionController.isConnectionInProgress ShapePath { fillColor: "transparent" strokeColor: "#D7D8DB" strokeWidth: 3 capStyle: ShapePath.RoundCap PathAngleArc { centerX: shape.width / 2 centerY: shape.height / 2 radiusX: 93 radiusY: 93 startAngle: 245 sweepAngle: -180 } } RotationAnimator { target: shape running: ConnectionController.isConnectionInProgress from: 0 to: 360 loops: Animation.Infinite duration: 1000 } } } contentItem: Text { height: 24 font.family: "PT Root UI VF" font.weight: 700 font.pixelSize: 20 color: ConnectionController.isConnected ? connectedButtonColor : defaultButtonColor text: root.text horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter } onClicked: { if (!ContainersModel.isAnyContainerInstalled()) { PageController.setTriggeredBtConnectButton(true) ServersModel.currentlyProcessedIndex = ServersModel.getDefaultServerIndex() InstallController.setShouldCreateServer(false) PageController.goToPage(PageEnum.PageSetupWizardEasy) return } if (ConnectionController.isConnectionInProgress) { ConnectionController.closeConnection() } else if (ConnectionController.isConnected) { ConnectionController.closeConnection() } else { ConnectionController.openConnection() } } }