Commit 43cf7843 authored by Tomi Korpipää's avatar Tomi Korpipää

Update menus to match kria-cluster-2d-demo

parent f6d11867
......@@ -52,4 +52,7 @@ import QtQuick 2.7
ContactsContainerForm {
id: contactsContainer
property string imageBgSrc: redTheme ? "qrc:/icons/RedHighlight.png" :
"qrc:/icons/BlueHighlight.png"
}
......@@ -16,7 +16,7 @@ Item {
anchors.rightMargin: 0
anchors.left: listView.left
anchors.leftMargin: 0
source: "RedHighlight.png"
source: imageBgSrc
}
ListView {
......@@ -32,7 +32,7 @@ Item {
anchors.leftMargin: 0
anchors.topMargin: 3
highlight: Image {
source: "qrc:/selectionBox.png"
source: "qrc:/icons/selectionBox.png"
}
currentIndex: selectedMenuIndex
delegate: Item {
......@@ -62,37 +62,37 @@ Item {
}
model: ListModel {
ListElement {
face: "qrc:/simonedoe.png"
face: "qrc:/icons/simonedoe.png"
name: "Simone Brown"
itemOpacity: 1.0
}
ListElement {
face: "qrc:/timdoe.png"
face: "qrc:/icons/timdoe.png"
name: "Tim Davis"
itemOpacity: 1.0
}
ListElement {
face: "qrc:/jimdoe.png"
face: "qrc:/icons/jimdoe.png"
name: "Jim Johnson"
itemOpacity: 1.0
}
ListElement {
face: "qrc:/lauradoe.png"
face: "qrc:/icons/lauradoe.png"
name: "Laura Jones"
itemOpacity: 1.0
}
ListElement {
face: "qrc:/janedoe.png"
face: "qrc:/icons/janedoe.png"
name: "Jane Smith"
itemOpacity: 0.75
}
ListElement {
face: "qrc:/johndoe.png"
face: "qrc:/icons/johndoe.png"
name: "John Williams"
itemOpacity: 0.5
}
......
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the Kria Cluster 2D Demo.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.7
Rectangle {
id: helpItem
anchors.fill: parent
anchors.topMargin: -10
color: "black"
Text {
id: helpText
width: parent.width
anchors.centerIn: parent
text: "Copyright (C) 2017 The Qt Company Ltd."
color: "#ffffff"
wrapMode: Text.WordWrap
verticalAlignment: Text.AlignBottom
horizontalAlignment: Text.AlignHCenter
anchors.horizontalCenter: parent.horizontalCenter
font.pixelSize: 30
}
}
......@@ -53,6 +53,8 @@ import QtQuick 2.7
MusicContainerForm {
id: musicContainer
property int album: selectedMenuIndex
property string imageBgSrc: redTheme ? "qrc:/icons/musicBackground.png" :
"qrc:/icons/musicBackgroundBlue.png"
PropertyAnimation {
id: progressAnimation
......@@ -70,32 +72,32 @@ MusicContainerForm {
case 0:
artistText = "Arch Enemy";
albumText = "Will To Power";
albumCoverSource = "qrc:/album1.png";
albumCoverSource = "qrc:/icons/album1.png";
break;
case 1:
artistText = "Battle Beast";
albumText = "Unholy Savior";
albumCoverSource = "qrc:/album2.png";
albumCoverSource = "qrc:/icons/album2.png";
break;
case 2:
artistText = "Machine Head";
albumText = "Bloodstone & Diamonds";
albumCoverSource = "qrc:/album3.png";
albumCoverSource = "qrc:/icons/album3.png";
break;
case 3:
artistText = "Metallica";
albumText = "Master of Puppets";
albumCoverSource = "qrc:/album4.png";
albumCoverSource = "qrc:/icons/album4.png";
break;
case 4:
artistText = "Sabaton";
albumText = "Primo Victoria";
albumCoverSource = "qrc:/album5.png";
albumCoverSource = "qrc:/icons/album5.png";
break;
case 5:
artistText = "Sabaton";
albumText = "The Last Stand";
albumCoverSource = "qrc:/album6.png";
albumCoverSource = "qrc:/icons/album6.png";
break;
}
}
......
......@@ -14,7 +14,7 @@ Item {
Image {
id: image
anchors.fill: parent
source: "musicBackground.png"
source: imageBgSrc
}
Text {
......@@ -90,7 +90,7 @@ Item {
height: 256
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
source: "album1.png"
source: "qrc:/icons/album1.png"
}
}
}
......@@ -56,7 +56,7 @@ Item {
Image {
id: fakeMap
source: "qrc:/Map.png"
source: "qrc:/icons/Map.png"
y: -580
width: 2560
height: 1540
......
......@@ -100,10 +100,10 @@ OverlayContainerForm {
signalTimer.stop();
var turnLeft = (turnSignal & Qt.LeftArrow);
var turnRight = (turnSignal & Qt.RightArrow);
leftTurnSignalSource = turnLeft ? "qrc:/icon_turnsignal_on.png"
: "qrc:/icon_turnsignal_off.png";
rightTurnSignalSource = turnRight ? "qrc:/icon_turnsignal_on.png"
: "qrc:/icon_turnsignal_off.png";
leftTurnSignalSource = turnLeft ? "qrc:/icons/icon_turnsignal_on.png"
: "qrc:/icons/icon_turnsignal_off.png";
rightTurnSignalSource = turnRight ? "qrc:/icons/icon_turnsignal_on.png"
: "qrc:/icons/icon_turnsignal_off.png";
}
Timer {
......@@ -116,10 +116,10 @@ OverlayContainerForm {
flashing = !flashing
var turnLeft = (flashing && (turnSignal & Qt.LeftArrow));
var turnRight = (flashing && (turnSignal & Qt.RightArrow));
leftTurnSignalSource = turnLeft ? "qrc:/icon_turnsignal_on.png"
: "qrc:/icon_turnsignal_off.png";
rightTurnSignalSource = turnRight ? "qrc:/icon_turnsignal_on.png"
: "qrc:/icon_turnsignal_off.png";
leftTurnSignalSource = turnLeft ? "qrc:/icons/icon_turnsignal_on.png"
: "qrc:/icons/icon_turnsignal_off.png";
rightTurnSignalSource = turnRight ? "qrc:/icons/icon_turnsignal_on.png"
: "qrc:/icons/icon_turnsignal_off.png";
}
}
......
......@@ -29,7 +29,7 @@ Item {
Image {
id: overlayBackground
anchors.fill: parent
source: "QML_mask.jpg"
source: "icons/QML_mask.jpg"
}
Row {
......@@ -45,7 +45,7 @@ Item {
width: 78
height: 78
fillMode: Image.Stretch
source: "icon_turnsignal_off.png"
source: "icons/icon_turnsignal_off.png"
}
Picture {
......@@ -84,7 +84,7 @@ Item {
width: 95
height: 95
fillMode: Image.PreserveAspectFit
source: "settingsIcon.png"
source: "icons/settingsIcon.png"
MouseArea {
id: mouseAreaSettings
......@@ -98,7 +98,7 @@ Item {
width: 95
height: 95
fillMode: Image.PreserveAspectFit
source: "navigationIcon.png"
source: "icons/navigationIcon.png"
MouseArea {
id: mouseAreaNavigation
......@@ -114,7 +114,7 @@ Item {
width: 95
height: 95
fillMode: Image.PreserveAspectFit
source: "musicIcon.png"
source: "icons/musicIcon.png"
MouseArea {
id: mouseAreaMusic
......@@ -128,7 +128,7 @@ Item {
width: 95
height: 95
fillMode: Image.PreserveAspectFit
source: "callIcon.png"
source: "icons/callIcon.png"
MouseArea {
id: mouseAreaCall
......@@ -141,7 +141,7 @@ Item {
width: 95
height: 95
fillMode: Image.PreserveAspectFit
source: "carIcon.png"
source: "icons/carIcon.png"
MouseArea {
id: mouseAreaCar
......@@ -184,7 +184,7 @@ Item {
id: rightTurnSignal
width: 78
height: 78
source: "icon_turnsignal_off.png"
source: "icons/icon_turnsignal_off.png"
rotation: 180
}
}
......
......@@ -49,7 +49,290 @@
****************************************************************************/
import QtQuick 2.7
import "./listmodels"
SettingsContainerForm {
id: settingsContainer
property string imageBgSrc: redTheme ? "qrc:/icons/RedHighlight.png" :
"qrc:/icons/BlueHighlight.png"
property string menuBackSrc: redTheme ? "qrc:/icons/MenuBack.png" :
"qrc:/icons/MenuBackBlue.png"
property var modelMap: ({ 0:displayModel, 1: daModel, 2: lightningModel,
3: chimesModel, 4: convenienceModel })
property var previousModel: mainModel
property int subMenuLevel: 0
property string currentSetting: ""
property string currentSubSetting: ""
onSubMenuLevelChanged: {
if (subMenuLevel === 0) {
setMainMenu();
highlightSpeed = 600;
} else if (subMenuLevel === 1) {
currentSubSetting = "";
listview.model = previousModel;
titleText = currentSetting;
highlightSpeed = 200;
}
}
onCurrentSettingChanged: {
titleText = currentSetting;
}
onCurrentSubSettingChanged: {
titleText = currentSubSetting;
}
function handleMenu() {
if (subMenuLevel === 0) {
setMenu(selectedMenuIndex);
// Reset selectedMenuIndex
selectedMenuIndex = 0;
} else if (subMenuLevel === 1) {
handleSubMenu(selectedMenuIndex);
// Reset selectedMenuIndex
selectedMenuIndex = 0;
} else {
handleAction(selectedMenuIndex);
}
}
function setMainMenu() {
listview.model = mainModel;
titleText = qsTr("Settings");
}
function setMenu(selectedIndex) {
if (selectedIndex === listview.count - 1) {
helpItem.visible = true;
} else {
currentSetting = listview.model.get(selectedIndex).name;
previousModel = modelMap[selectedMenuIndex];
subMenuLevel++;
}
}
function handleSubMenu(selectedIndex) {
if (selectedIndex === listview.count - 1) {
subMenuLevel--;
} else {
appendMenuActions(selectedIndex);
subMenuLevel++;
}
}
function appendMenuActions(selectedIndex) {
if (listview.model === displayModel) {
if (selectedIndex === 0) {
listview.model = displayColorModel
} else {
listview.model = displayUnitModel
}
} else if (listview.model === daModel) {
currentSubSetting = listview.model.get(selectedIndex).name;
if (selectedIndex === 0) {
listview.model = daESCModel;
} else {
listview.model = daTrafficModel;}
} else if (listview.model === lightningModel) {
currentSubSetting = listview.model.get(selectedIndex).name;
if (selectedIndex === 0) {
listview.model = lightningAutoModel;
} else {
listview.model = lightningHdlampModel;
}
} else if (listview.model === chimesModel) {
currentSubSetting = listview.model.get(selectedIndex).name;
if (selectedIndex === 0) {
listview.model = chimesParkModel;
} else if (selectedIndex === 1) {
listview.model = chimesInfoModel;
} else {
listview.model = chimesWarningModel;
}
} else if (listview.model === convenienceModel) {
currentSubSetting = listview.model.get(selectedIndex).name;
if (selectedIndex === 0) {
listview.model = convenienceAuxModel;
} else {
listview.model = convenienceParkHeaterModel
}
}
}
function handleAction(selectedIndex) {
if (selectedIndex === listview.count -1) {
subMenuLevel--;
} else {
var selectedOption = listview.model.get(selectedIndex).name;
if (listview.model === displayColorModel) {
redTheme = selectedOption === qsTr("Red") ? true : false
} else if (listview.model === displayUnitModel) {
useMetric = selectedOption === qsTr("Kph") ? true : false
} else if (listview.model === daESCModel) {
esc = selectedOption;
} else if (listview.model === daTrafficModel) {
trafficSigns = selectedOption;
} else if (listview.model === lightningAutoModel) {
autoHighBeam = selectedOption;
} else if (listview.model === lightningHdlampModel) {
hdLampDelay = selectedOption;
} else if (listview.model === chimesParkModel) {
chimesPark = selectedOption;
} else if (listview.model === chimesInfoModel) {
chimesInfo = selectedOption;
} else if (listview.model === chimesWarningModel) {
chimesWarning = selectedOption;
} else if (listview.model === convenienceAuxModel) {
auxHeater = selectedOption;
} else if (listview.model === convenienceParkHeaterModel) {
parkHeater = selectedOption;
}
}
}
function getCheckVisibility(itemName) {
var result = false;
if (listview.model === displayColorModel) {
if (itemName === qsTr("Red") && redTheme) {
result = true;
} else if (itemName === qsTr("Blue") && !redTheme) {
result = true;
}
} else if (listview.model === displayUnitModel) {
if (itemName === qsTr("Kph") && useMetric) {
result = true;
} else if (itemName === qsTr("Mph") && !useMetric) {
result = true;
}
} else if (listview.model === daESCModel) {
return itemName === esc ? true : false;
} else if (listview.model === daTrafficModel) {
return itemName === trafficSigns ? true : false;
} else if (listview.model === lightningAutoModel) {
return itemName === autoHighBeam ? true : false;
} else if (listview.model === lightningHdlampModel) {
return itemName === hdLampDelay ? true : false;
} else if (listview.model === chimesParkModel) {
return itemName === chimesPark ? true : false;
} else if (listview.model === chimesInfoModel) {
return itemName === chimesInfo ? true : false;
} else if (listview.model === chimesWarningModel) {
return itemName === chimesWarning ? true : false;
} else if (listview.model === convenienceAuxModel) {
return itemName === auxHeater ? true : false;
} else if (listview.model === convenienceParkHeaterModel) {
return itemName === parkHeater ? true : false;
}
return result;
}
Component {
id: settingsListDelegate
Item {
width: listview.width
height: 100
Text {
id: itemText
text: name
visible: name !== qsTr("Back")
color: "#ffffff"
opacity: itemOpacity
font.pixelSize: 50
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Image {
id: backIcon
source: menuBackSrc
visible: name === qsTr("Back")
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Text {
id: checkMark
text: "\u2713"
visible: getCheckVisibility(itemText.text)
color: "#ffffff"
opacity: itemOpacity
font.pixelSize: 50
anchors.verticalCenter: parent.verticalCenter
anchors.right: itemText.left
anchors.rightMargin: 20
}
MouseArea {
anchors.fill: parent
onClicked: {
if (selectedMenuIndex !== index) {
selectedMenuIndex = index;
highlightTimer.start();
} else {
selectedMenuIndex = index;
handleMenu();
}
}
}
}
}
Timer {
id: highlightTimer
interval: highlightSpeed === 200 ? 500 : 1000
onTriggered: { handleMenu(); }
}
SettingsMainModel {
id: mainModel
}
SettingsDisplayModel {
id: displayModel
}
DisplayColorModel {
id: displayColorModel
}
DisplayUnitsModel {
id: displayUnitModel
}
SettingsDriverAssistModel {
id: daModel
}
DriverAssistESCModel {
id: daESCModel
}
DriverAssistTrafficSignsModel {
id: daTrafficModel
}
SettingsLightningModel {
id: lightningModel
}
LightningAutoHighbeamModel {
id: lightningAutoModel
}
LightningHdlampModel {
id: lightningHdlampModel
}
SettingsChimesModel {
id: chimesModel
}
ChimesParkSlotModel {
id: chimesParkModel
}
ChimesInformationModel {
id: chimesInfoModel
}
ChimesWarningModel {
id: chimesWarningModel
}
OnOffModel {
id: onOffModel
}
SettingsConvenienceModel {
id: convenienceModel
}
ConvenienceAuxModel {
id: convenienceAuxModel
}
ConvenienceParkHeaterModel {
id: convenienceParkHeaterModel
}
}
......@@ -4,6 +4,12 @@ import QtQuick.Layouts 1.0
Item {
id: settings
property alias listview: listView
property alias helpItem: helpItem
property alias titleText: title.text
property alias highlightSpeed: listView.highlightMoveDuration
width: 680
height: 680
......@@ -16,7 +22,7 @@ Item {
anchors.rightMargin: 0
anchors.left: listView.left
anchors.leftMargin: 0
source: "RedHighlight.png"
source: imageBgSrc
}
ListView {
......@@ -32,56 +38,11 @@ Item {
anchors.leftMargin: 0
anchors.topMargin: 3
highlight: Image {
source: "qrc:/selectionBox.png"
source: "qrc:/icons/selectionBox.png"
}
currentIndex: selectedMenuIndex
delegate: Item {
width: listView.width
height: 100
Text {
text: name
color: "#ffffff"
opacity: itemOpacity
font.pixelSize: 50
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
}
MouseArea {
anchors.fill: parent
onClicked: selectedMenuIndex = index;
}
}
model: ListModel {
ListElement {
name: "Driver Assist"
itemOpacity: 1.0
}
ListElement {
name: "Lighting"
itemOpacity: 1.0
}
ListElement {
name: "Display"
itemOpacity: 1.0
}
ListElement {
name: "Chimes"
itemOpacity: 1.0
}
ListElement {
name: "Convenience"
itemOpacity: 0.75
}
ListElement {
name: "Help"
itemOpacity: 0.5
}
}
delegate: settingsListDelegate
model: mainModel
}