C

Qt Quick Ultralite Watch Demo

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial

import QtQuick 2.15
import Watch 1.0
import QtQuickUltralite.Extras 2.0
import Benchmark 1.0
import QtQuickUltralite.Profiling

Rectangle {
    id: window
    color: Theme.backgroundColor
    // The desktop platform requires to set the root item size to know the size
    // of the main window
    height: Theme.isDesktop ? Theme.appHeight : 0
    width: Theme.isDesktop ? Theme.appWidth : 0

    Rectangle {
        height: Theme.appHeight
        width: Theme.appWidth
        anchors.centerIn: parent
        color: Theme.backgroundColor
        clip: true

        WidgetsRow {
            id: widgets
            anchors.fill: parent
            visible: !MainModel.compassOn
        }

        CompassWidget {
            id: compass
            visible: MainModel.compassOn
        }
    }

    QulPerfOverlay {
        id: benchmarkResult
        anchors.horizontalCenter: parent.horizontalCenter;
        anchors.verticalCenter: parent.verticalCenter;
        visible: false
    }

    Timer {
        id: benchmarkTimer
        interval: 30000
        running: true
        repeat: false
        onTriggered: {
            simulationTimer.running = false
            compass.visible = false
            QulPerf.recording = false;
            benchmarkResult.visible = true
        }
    }

    Component.onCompleted: {
        QulPerf.recording = true
    }

    property int simulationState: 0;
    property int repetitionCount: 0;
    property int flickDirection: 1;

    Timer {
        id: simulationTimer
        interval: 2000
        running: true
        repeat: true
        onTriggered: {
            switch(simulationState) {
                case 0:
                if(!FlickControl.running()) {
                    FlickControl.startFlick(window.width/2, window.height/2, (flickDirection?1:-1)*10, 0);
                    if(++repetitionCount >= 3) {
                        repetitionCount = 0;
                        simulationState = 1;
                        simulationTimer.interval = 10;
                    }
                }
                break;

                case 1:
                if(!FlickControl.running()) {
                    FlickControl.startFlick(window.width/2, window.height/2, 0, (flickDirection?1:-1)*10);
                    flickDirection = 1 - flickDirection
                    if(++repetitionCount >= 12) {
                        repetitionCount = 0;
                        MainModel.compassOn = true;
                        simulationTimer.running = false;
                    }
                }
                break;
            }
        }
    }
}