C
Qt Cluster: Rendering and Recovery from Main UI Failure
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
// This file is part of the Qt Safe Renderer module
import QtQuick
import ClusterDemo
Item {
anchors.fill: parent
anchors.topMargin: 120
property real defaultScale: 1.0
property var previousView: calendarView
property bool view: ValueSource.viewChange
property int viewNumber: -1
z: -1
CenterViewMusic {
id: musicView
anchors.horizontalCenter: parent.horizontalCenter
yTarget: 430
width: 186
height: 186
visible: false
y: defaultYPos
}
CenterViewContacts {
id: contactView
anchors.horizontalCenter: parent.horizontalCenter
yTarget: 430
width: 100
height: 100
visible: false
y: defaultYPos
}
CenterViewCarInfo {
id: carinfoView
xTarget: (parent.width - width) / 2
anchors.top: parent.top
anchors.topMargin: 430
width: 146
height: 80
x: defaultXPos
visible: false
}
CenterViewCalendar {
id: calendarView
xTarget: (parent.width - width) / 2
anchors.top: parent.top
anchors.topMargin: 430
width: 150
height: 136
x: defaultXPos
visible: false
}
PropertyAnimation {
id: shrinkCenter
property: "scale"
to: 0.0
running: false
duration: 500
onStopped: {
if (target != null)
target.visible = false
}
}
function handleViewChange(number) {
var currentView
if (number === 0)
currentView = musicView
else if (number === 1)
currentView = contactView
else if (number === 2)
currentView = carinfoView
else if (number === 3)
currentView = calendarView
if (previousView !== currentView) {
currentView.scale = defaultScale
currentView.visible = true
shrinkCenter.target = previousView
previousView = currentView
shrinkCenter.start()
}
}
onViewChanged: {
if (view) {
if (++viewNumber > 3)
viewNumber = 0
handleViewChange(viewNumber)
}
}
// Used on automatic demo mode
Timer {
id: centerTimer
property int viewNumber: -1
running: ValueSource.automaticDemoMode
repeat: true
interval: 6000
onTriggered: {
if (++viewNumber > 3)
viewNumber = 0
handleViewChange(viewNumber)
}
}
function stopAll() {
centerTimer.stop()
}
}