diff options
Diffstat (limited to 'src/components/qt_hmi/qml_model_qt5/popups')
3 files changed, 91 insertions, 5 deletions
diff --git a/src/components/qt_hmi/qml_model_qt5/popups/InteractionPopup.qml b/src/components/qt_hmi/qml_model_qt5/popups/InteractionPopup.qml index 782fd76c18..a6fc4d7107 100644 --- a/src/components/qt_hmi/qml_model_qt5/popups/InteractionPopup.qml +++ b/src/components/qt_hmi/qml_model_qt5/popups/InteractionPopup.qml @@ -46,6 +46,7 @@ ContextPopup { property int appID property int interactionLayout property var async + property var grammarID property bool performInteractionIsActiveNow Text { @@ -84,13 +85,15 @@ ContextPopup { } } - function performInteraction(initialText, choiceSet, vrHelpTitle, vrHelp, timeout, interactionLayout, appID) { + function performInteraction(initialTextArg, choiceSet, vrHelpTitle, vrHelp, timeout, interactionLayout, appID) { console.debug("enter") var app = dataContainer.getApplication(appID) var dataToUpdate = {} performInteractionIsActiveNow = true - initialText.text = initialText.fieldText + if (initialTextArg !== undefined){ + initialText.text = initialTextArg.fieldText + } this.timeout = timeout this.appID = appID @@ -123,6 +126,8 @@ ContextPopup { async = new Async.AsyncCall() if (piPopUp.choiceSet.count !== 0) { activate() + }else if (grammarID) { + vrActivate() } console.debug("exit") return async @@ -132,9 +137,21 @@ ContextPopup { console.debug("enter") timer.interval = timeout timer.start() + if (grammarID) { + vrPopUp.sortModelforPerformInteraction() + } show() console.debug("exit") } + function vrActivate () { + console.debug("enter") + timer.interval = timeout + timer.start() + vrPopUp.sortModelforPerformInteraction() + vrPopUp.show() + vrHelpPopup.show() + console.debug("exit") + } function complete (reason, data) { console.debug("enter") @@ -150,6 +167,7 @@ ContextPopup { break } timer.stop() + grammarID = "" hide() performInteractionIsActiveNow = false console.debug("exit") diff --git a/src/components/qt_hmi/qml_model_qt5/popups/TTSPopUp.qml b/src/components/qt_hmi/qml_model_qt5/popups/TTSPopUp.qml index 33f82013b2..d16015ec56 100644 --- a/src/components/qt_hmi/qml_model_qt5/popups/TTSPopUp.qml +++ b/src/components/qt_hmi/qml_model_qt5/popups/TTSPopUp.qml @@ -42,6 +42,7 @@ PopUp { width: Constants.ttsPopUpWidth padding: Constants.ttsPopUpPadding property var async + property string helpPromptstr ScrollView { anchors.fill: parent @@ -50,6 +51,7 @@ PopUp { anchors.fill: parent color: Constants.popUpBorderColor font.pixelSize: Constants.ttsFontSize + text:"" } } @@ -63,12 +65,16 @@ PopUp { Timer { id: ttsPerformInteractionTimer interval: Constants.ttsSpeakTime - onTriggered: activate(message) + onTriggered: + if(interactionPopup.performInteractionIsActiveNow) + activate(message) property var message: undefined } ] function performInteraction(helpPrompt, initialPrompt, timeoutPrompt, timeout) { + console.debug("Activate TTS popup:", "message"); + helpPromptstr = helpPrompt activate(initialPrompt); if (timeout * 2 - Constants.ttsSpeakTime > 0) { ttsPerformInteractionTimer.message = timeoutPrompt; diff --git a/src/components/qt_hmi/qml_model_qt5/popups/VRPopUp.qml b/src/components/qt_hmi/qml_model_qt5/popups/VRPopUp.qml index 2acf4f0651..ed33e5ca8d 100644 --- a/src/components/qt_hmi/qml_model_qt5/popups/VRPopUp.qml +++ b/src/components/qt_hmi/qml_model_qt5/popups/VRPopUp.qml @@ -57,22 +57,47 @@ PopUp { anchors.right: parent.right source: "../res/controlButtons/vrImage.png" } + OvalButton{ + id:helpButton + anchors.rightMargin: Constants.popupMargin + anchors.leftMargin: Constants.popupMargin + anchors.top: voice.bottom + anchors.left: parent.left + anchors.right: parent.right + text: "Help" + onClicked:{ + if (interactionPopup.performInteractionIsActiveNow) + ttsPopUp.activate(ttsPopUp.helpPromptstr) + if (dataContainer.activeVR) { + vrPopUp.complete(); + vrHelpPopup.hide() + } + } + } ScrollableListView { anchors.bottomMargin: Constants.popupMargin anchors.rightMargin: Constants.popupMargin anchors.leftMargin: Constants.popupMargin - anchors.top: voice.bottom + anchors.top: helpButton.bottom anchors.right: parent.right anchors.bottom: parent.bottom anchors.left: parent.left - model: dataContainer.vrCommands + model: if (interactionPopup.grammarID) { + dataContainer.choicesVrCommands + } + else { + dataContainer.vrCommands + } delegate: OvalButton { width: parent.width text: command + visible: visibleButtons(grammarID,type) onClicked: { + if (interactionPopup.performInteractionIsActiveNow && type === Common.VRCommandType.Choice) + interactionPopup.complete(Common.Result.SUCCESS, {"choiceID": cmdID}) sdlVR.onCommand(cmdID, appID === 0 ? undefined : appID); if (dataContainer.activeVR) { vrPopUp.complete(); @@ -93,4 +118,41 @@ PopUp { sdlVR.stopped(); hide(); } + + function sortModelforPerformInteraction() { + var n, + i, + j; + for (n = 0; n < dataContainer.choicesVrCommands.count; n++) { + for (i = n + 1; i < dataContainer.choicesVrCommands.count; i++) { + if (dataContainer.choicesVrCommands.get(n).type === Common.VRCommandType.Command && + dataContainer.choicesVrCommands.get(i).type === Common.VRCommandType.Choice) { + dataContainer.choicesVrCommands.move(i, n, 1); + n = 0; + } + } + } + for (j = interactionPopup.grammarID.length; j > 0; j--) { + for (n = 0; n < dataContainer.choicesVrCommands.count && + dataContainer.choicesVrCommands.get(n).type === Common.VRCommandType.Choice; n++) { + for (i = n + 1; i < dataContainer.choicesVrCommands.count && + dataContainer.choicesVrCommands.get(i).type === Common.VRCommandType.Choice; i++) { + if (dataContainer.choicesVrCommands.get(n).grammarID !== interactionPopup.grammarID[j-1] + && dataContainer.choicesVrCommands.get(i).grammarID === interactionPopup.grammarID[j-1]) { + dataContainer.choicesVrCommands.move(i, n, 1); + n = 0; + } + } + } + } + } + + function visibleButtons(grammarID, type) { + if (interactionPopup.grammarID) { + return interactionPopup.grammarID.indexOf(grammarID) !== -1 + } + else { + return type === Common.VRCommandType.Command + } + } } |