C

Qt Quick Ultralite Automotive Cluster Demo

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

QtObject {
    id: drivemodemenumodel

    enum DriveModeOption { NormalDrive, SportDrive, ModeOptionsCount }
    enum Tabs { DriveModeTab, CarStatusTab, LastTripTab, TabsCount }
    property int currentDriveModeSelected: SettingsMenuModel.NormalDrive
    property int currentTab: SettingsMenuModel.DriveModeTab

    onCurrentTabChanged: notifyConnectivityService()

    onCurrentDriveModeSelectedChanged: notifyConnectivityService()
    function previousTab() {
        currentTab = (currentTab + SettingsMenuModel.TabsCount - 1) % SettingsMenuModel.TabsCount
    }

    function nextTab() {
        currentTab = (currentTab + 1) % SettingsMenuModel.TabsCount
    }

    function switchOption() {
        currentDriveModeSelected = (currentDriveModeSelected + 1) % SettingsMenuModel.ModeOptionsCount
    }

    function notifyConnectivityService() {
        if (NormalModeModel.menu == NormalModeModel.CarStatusMenu && MainModel.clusterMode == MainModel.ModeNormal) {
            if (currentTab == SettingsMenuModel.DriveModeTab) {
                ConnectivityService.currentMenu = ConnectivityService.Mode
            }
            else if (currentTab == SettingsMenuModel.CarStatusTab) {
                ConnectivityService.currentMenu = ConnectivityService.CarStatus
            }
            else {
                ConnectivityService.currentMenu = ConnectivityService.LastTrip
            }
        }
        ConnectivityService.enableDriveModeChange = (currentDriveModeSelected == SettingsMenuModel.NormalDrive && MainModel.clusterMode == MainModel.ModeSport) ||
                                                            (currentDriveModeSelected == SettingsMenuModel.SportDrive && MainModel.clusterMode == MainModel.ModeNormal)
    }
}