C

Qt Quick Ultralite loader Example

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial
import QtQuick 2.15
import SettingsData
import GameState

Rectangle {
    id: root

    color: SettingsData.backgroundColor

    readonly property int numberOfPages: 2
    property int currentPage: -1

    Loader {
        id: mainView

        anchors.fill: parent
        source: "Logo.qml"

        Connections {
            target: root
            function onCurrentPageChanged(currentPage: int) {
                if (currentPage === 0) {
                    mainView.source = "memory_game/MemoryGame.qml"
                } else if (currentPage === 1) {
                    mainView.source = "settings/Settings.qml"
                    GameState.running = false
                }
            }
        }
    }

    PageButton {
        id: prevButton

        anchors.left: root.left
        height: root.height
        width: root.width / 10
        visible: root.currentPage != -1

        icon: "images/previous_page.png"

        onClicked: {
            if(--currentPage < 0) {
                currentPage = numberOfPages-1
            }
        }

    }

    PageButton {
        id: nextButton

        anchors.right: root.right
        height: root.height
        width: root.width / 10
        visible: root.currentPage != -1

        icon: "images/next_page.png"

        onClicked: {
            currentPage = (++currentPage)%(numberOfPages)
        }

    }

    MouseArea {
        anchors.fill: parent
        enabled: root.currentPage == -1
        onClicked: {
            root.currentPage = 0
        }
    }
}