summaryrefslogtreecommitdiff
path: root/src/components/qt_hmi/qml_model_qt4/controls
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/qt_hmi/qml_model_qt4/controls')
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ArrowKeys.qml68
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/BackButton.qml48
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/CheckBox.qml78
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/CircleButton.qml87
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ClickableImage.qml66
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ClickableText.qml77
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ClimateControlBtn.qml93
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ComboBox.qml143
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/GradientRectangle.qml125
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/GridItem.qml53
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/HardwareButton.qml108
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/HeaderMenu.qml134
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/Icon.qml65
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ListItem.qml70
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/MaskedButton.qml64
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/MultiTouchArea.qml77
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/OvalButton.qml240
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/PagedFlickable.qml105
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/Pager.qml53
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/PlayPauseButton.qml77
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/PowerSwitchButton.qml75
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/PresetRow.qml106
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/PushButton.qml136
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ScrollableListView.qml49
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/ScrollableText.qml70
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/SoftButton.js39
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/SoftButton.qml104
-rw-r--r--src/components/qt_hmi/qml_model_qt4/controls/StatusBar.qml42
28 files changed, 2452 insertions, 0 deletions
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ArrowKeys.qml b/src/components/qt_hmi/qml_model_qt4/controls/ArrowKeys.qml
new file mode 100644
index 0000000000..4f33960127
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ArrowKeys.qml
@@ -0,0 +1,68 @@
+/**
+ * @file ArrowKeys.qml
+ * @brief Keys with arrow for cursor movement.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../hmi_api/Common.js" as Common
+
+Item {
+ width: buttonOk.width
+ height: buttonOk.height
+
+ HardwareButton {
+ id: arrowUp
+ buttonId: Common.ButtonName.TUNEUP
+ name: "Up"
+ }
+ HardwareButton {
+ id: arrowDown
+ buttonId: Common.ButtonName.TUNEDOWN
+ name: "Down"
+ }
+ HardwareButton {
+ id: arrowLeft
+ buttonId: Common.ButtonName.SEEKLEFT
+ name: "Left"
+ }
+ HardwareButton {
+ id: arrowRight
+ buttonId: Common.ButtonName.SEEKRIGHT
+ name: "Right"
+ }
+ HardwareButton {
+ id: buttonOk
+ buttonId: Common.ButtonName.OK
+ name: "Ok"
+ longPressAvailable: false
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/BackButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/BackButton.qml
new file mode 100644
index 0000000000..906b3098ba
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/BackButton.qml
@@ -0,0 +1,48 @@
+/**
+ * @file BackButton.qml
+ * @brief Button "Back" that return to previous menu.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+OvalButton {
+ text: "Back"
+ onClicked: { contentLoader.back() }
+ fontSize: Constants.fontSize
+ opacity: 0
+
+ NumberAnimation on opacity {
+ to: 1;
+ duration: Constants.animationDuration
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/CheckBox.qml b/src/components/qt_hmi/qml_model_qt4/controls/CheckBox.qml
new file mode 100644
index 0000000000..39d693b971
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/CheckBox.qml
@@ -0,0 +1,78 @@
+/**
+ * @file CheckBox.qml
+ * @brief Check box
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ property alias text: text.text
+ property alias color: text.color
+ property bool checked: false
+
+ signal clicked
+
+ onCheckedChanged: {
+ selector.color = checked ? Constants.primaryColorPressed : Constants.transparentColor
+ }
+
+ height: checkbox.height + Constants.generalSpacing / 2
+ width: checkbox.width + text.width + 1.5 * Constants.generalSpacing
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: { checked = !checked; parent.clicked() }
+ }
+ Rectangle {
+ id: checkbox
+ width: text.font.pixelSize + Constants.generalSpacing / 2
+ height: width
+ anchors.left: parent.left
+ border.color: Constants.controlsBorderColor
+ border.width: Constants.controlsBorderWidth
+ color: Constants.panelTextColor
+ radius: Constants.controlsRadius
+ Rectangle {
+ id: selector
+ anchors.fill: parent
+ anchors.margins: checkbox.width / 8
+ color: Constants.transparentColor
+ }
+ }
+ Text {
+ id: text
+ anchors.left: checkbox.right
+ anchors.leftMargin: Constants.generalSpacing
+ anchors.verticalCenter: checkbox.verticalCenter
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/CircleButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/CircleButton.qml
new file mode 100644
index 0000000000..818f07ffc5
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/CircleButton.qml
@@ -0,0 +1,87 @@
+/**
+ * @file CircleButton.qml
+ * @brief Parent class for circle button.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Image {
+ id: circleBtn
+ source: imgOff
+ property alias text: btnText.text
+ property alias pixelSize: btnText.font.pixelSize
+ property string dest: ""
+ property bool isPressed: false
+ property string imgOff: "../res/buttons/round_btn.png"
+ property string imgOn: "../res/buttons/round_pressed_btn.png"
+ property string textColorOnPressed: Constants.secondaryColor
+ property string textColorDefault: Constants.primaryColor
+
+ signal clicked()
+ function wasClicked()
+ {
+ clicked()
+ }
+
+ Text {
+ anchors.centerIn: parent
+ id: btnText
+ color: textColorDefault
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: {
+ console.log("CircleButton onPressed enter");
+ source = imgOn
+ btnText.color = textColorOnPressed
+ isPressed = true
+ console.log("CircleButton onPressed exit");
+ }
+ onReleased: {
+ console.log("CircleButton onReleased enter");
+ source = imgOff
+ btnText.color = textColorDefault
+ isPressed = false
+ console.log("CircleButton onReleased exit");
+ }
+ onClicked: {
+ console.log("CircleButton onClicked enter");
+ if(dest !== ""){
+ contentLoader.go(dest)
+ }
+ circleBtn.wasClicked()
+ console.log("CircleButton onClicked enter");
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ClickableImage.qml b/src/components/qt_hmi/qml_model_qt4/controls/ClickableImage.qml
new file mode 100644
index 0000000000..f35f7c3020
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ClickableImage.qml
@@ -0,0 +1,66 @@
+/**
+ * @file ClickableImage.qml
+ * @brief Clickable image item
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Image {
+ signal pressed ()
+ signal released ()
+ signal canceled ()
+ signal clicked()
+
+ MouseArea {
+ anchors.fill: parent
+
+ onPressed: {
+ parent.scale = Constants.pressedIconScale
+ parent.pressed()
+ }
+
+ onReleased: {
+ parent.scale = 1
+ parent.released()
+ }
+
+ onCanceled: {
+ parent.scale = 1
+ parent.canceled()
+ }
+
+ onClicked: {
+ parent.clicked()
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ClickableText.qml b/src/components/qt_hmi/qml_model_qt4/controls/ClickableText.qml
new file mode 100644
index 0000000000..e6b9fbf246
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ClickableText.qml
@@ -0,0 +1,77 @@
+/**
+ * @file ClickableText.qml
+ * @brief Clickable text item
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+
+Text {
+ property string defaultColor
+ property string pressedColor
+ signal pressed ()
+ signal released ()
+ signal canceled ()
+ signal clicked ()
+
+ color: defaultColor
+
+ MouseArea {
+ anchors.fill: parent
+
+ onPressed: {
+ press()
+ parent.pressed()
+ }
+
+ onReleased: {
+ release()
+ parent.released()
+ }
+
+ onCanceled: {
+ release()
+ parent.canceled()
+ }
+
+ onClicked: {
+ parent.clicked()
+ }
+ }
+
+ function press () {
+ color = pressedColor
+ }
+
+ function release () {
+ color = defaultColor
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ClimateControlBtn.qml b/src/components/qt_hmi/qml_model_qt4/controls/ClimateControlBtn.qml
new file mode 100644
index 0000000000..abd344272c
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ClimateControlBtn.qml
@@ -0,0 +1,93 @@
+/**
+ * @file ClimateControlBtn.qml
+ * @brief Round button, which is used at climat menu.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item
+{
+ id: climateControlBtn
+ width: climateBtnImg.width
+ height: climateBtnImg.height
+ property string name: ""
+ property string txt: ""
+ state: "off"
+
+ Image {
+ id: climateBtnImg
+ source: climateControlBtn.state === "off" ? "../res/climate/climate_round_off_btn.png" : "../res/climate/climate_round_on_btn.png"
+
+ Image {
+ id: hoverImg
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ property string st: climateControlBtn.state === "off" ? "_off" : "_on"
+ source: climateControlBtn.name === "" ? "": "../res/climate/" + climateControlBtn.name + st + ".png"
+ }
+
+ Text {
+ id: hoverText
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: climateControlBtn.txt
+ font.pixelSize: Constants.fontSize
+ color: climateControlBtn.state === "off" ? Constants.primaryColor : Constants.secondaryColor
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ if(climateControlBtn.state === "on") {
+ climateControlBtn.state = "off"
+ climateBtnImg.source = "../res/climate/climate_round_off_btn.png"
+ if(climateControlBtn.txt != "") {
+ hoverText.color = Constants.primaryColor
+ }
+ if(climateControlBtn.name != "") {
+ hoverImg.source = "../res/climate/" + climateControlBtn.name + "_off.png"
+ }
+ } else {
+ climateControlBtn.state = "on"
+ climateBtnImg.source = "../res/climate/climate_round_on_btn.png"
+ if(climateControlBtn.txt != "") {
+ hoverText.color = Constants.secondaryColor
+ }
+ if(climateControlBtn.name != "") {
+ hoverImg.source = "../res/climate/" + climateControlBtn.name + "_on.png"
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ComboBox.qml b/src/components/qt_hmi/qml_model_qt4/controls/ComboBox.qml
new file mode 100644
index 0000000000..d5129a2a10
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ComboBox.qml
@@ -0,0 +1,143 @@
+/**
+ * @file ComboBox.qml
+ * @brief Combo box
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ id: container
+ width: Constants.defaultComboboxWidth
+ height: main.height
+
+ property alias model: listView.model
+ property alias currentIndex: listView.currentIndex
+ property alias currentText: textMain.text
+ property string textRole
+
+ function choose(name) {
+ var count = listView.count
+ for (var i = 0; i < count; ++i) {
+ if (name === listView.model.get(i).name) {
+ listView.currentIndex = i
+ break
+ }
+ }
+
+ textMain.text = name
+ }
+
+ Rectangle {
+ id: main
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: label.font.pixelSize + Constants.generalSpacing
+ color: Constants.panelTextColor
+ border.color: Constants.controlsBorderColor
+ border.width: Constants.controlsBorderWidth
+ radius: Constants.controlsRadius
+
+ Text {
+ id: textMain
+ anchors.left: parent.left
+ anchors.right: arrow.left
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ color: Constants.secondaryColor
+ verticalAlignment: Text.AlignVCenter
+ anchors.leftMargin: Constants.generalSpacing
+ anchors.rightMargin: Constants.generalSpacing
+ elide: Text.ElideRight
+ }
+
+ Rectangle {
+ id: arrow
+ anchors.right: parent.right
+ height: parent.height; width: height
+
+ color: Constants.panelTextColor
+ border.color: Constants.controlsBorderColor
+ border.width: Constants.controlsBorderWidth
+ radius: Constants.controlsRadius
+
+ Text {
+ anchors.fill: parent
+ text: "v"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ color: Constants.secondaryColor
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onClicked: listView.visible = !listView.visible
+ }
+ }
+
+ ScrollableListView {
+ id: listView
+ anchors.top: main.bottom
+ anchors.left: main.left
+ anchors.right: main.right
+ height: 150
+ visible: false
+ delegate: Rectangle {
+ anchors.left: parent.left
+ anchors.right: parent.right
+ height: label.font.pixelSize + Constants.generalSpacing
+ color: Constants.panelTextColor
+ border.color: Constants.controlsBorderColor
+ border.width: Constants.controlsBorderWidth
+ Text {
+ id: label
+ anchors.fill: parent
+ anchors.leftMargin: Constants.generalSpacing
+ anchors.rightMargin: Constants.generalSpacing
+ verticalAlignment: Text.AlignVCenter
+ text: model.name
+ color: Constants.secondaryColor
+ elide: Text.ElideRight
+ }
+ MouseArea {
+ anchors.fill: parent
+ hoverEnabled: true
+ onClicked: { choose(model.name); listView.visible = false }
+ onEntered: { parent.color = Constants.primaryColorPressed }
+ onExited: { parent.color = Constants.panelTextColor }
+ }
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/GradientRectangle.qml b/src/components/qt_hmi/qml_model_qt4/controls/GradientRectangle.qml
new file mode 100644
index 0000000000..7b21bb4567
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/GradientRectangle.qml
@@ -0,0 +1,125 @@
+/**
+ * @file GradientRectangle.qml
+ * @brief Rectangle with gradient.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+import "../hmi_api/Common.js" as Common
+
+Rectangle {
+ property string firstColor: "grey"
+ property string secondColor: "#2E2E2E"
+ property alias fontSize: text.font.pixelSize
+ property alias text: text.text
+ property int customButtonID
+ property bool isCustomButton: false
+ property bool clickProcessed
+ signal pressed()
+ signal released()
+
+ radius: 5
+ border.color: "#D3D3D3"
+
+ Text {
+ id: text
+ anchors.fill: parent
+ font.pixelSize: Constants.titleFontSize
+ color: "white"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ onPressed: {
+ firstColor = "#2E2E2E"
+ secondColor = "grey"
+ parent.pressed()
+ }
+ onReleased: {
+ firstColor = "grey"
+ secondColor = "#2E2E2E"
+ parent.released()
+ }
+ }
+
+ Timer {
+ id: timer
+ interval: Constants.customButtonTimer
+ repeat: false
+ triggeredOnStart: false
+ }
+
+ onPressed: {
+ if (isCustomButton) {
+ timer.start()
+ clickProcessed = false
+ sdlButtons.onButtonEvent(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonEventMode.BUTTONDOWN, customButtonID)
+ }
+ }
+
+ onReleased: {
+ if (isCustomButton) {
+ sdlButtons.onButtonEvent(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonEventMode.BUTTONUP, customButtonID)
+ timer.stop()
+ if (!clickProcessed) {
+ sdlButtons.onButtonPress(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonPressMode.SHORT, customButtonID)
+ }
+ }
+ }
+
+ Connections {
+ target: timer
+ onTriggered: {
+ if (isCustomButton) {
+ if(!clickProcessed) {
+ sdlButtons.onButtonPress(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonPressMode.LONG, customButtonID)
+ clickProcessed = true
+ }
+ }
+ }
+ }
+
+ gradient: Gradient {
+ GradientStop {
+ position: 0.1
+ color: firstColor
+ }
+ GradientStop {
+ position: 0.5
+ color: secondColor
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/GridItem.qml b/src/components/qt_hmi/qml_model_qt4/controls/GridItem.qml
new file mode 100644
index 0000000000..84528ab800
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/GridItem.qml
@@ -0,0 +1,53 @@
+/**
+ * @file GridItem.qml
+ * @brief Item with animation for GridMenu
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ id: item
+ opacity: 0
+ SequentialAnimation {
+ id: animation
+ PauseAnimation {duration: index * 100 }
+ NumberAnimation {
+ target: item
+ duration: Constants.animationDuration
+ property: "opacity"
+ from: 0; to: 1;
+ }
+ }
+ Component.onCompleted: {
+ animation.start()
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/HardwareButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/HardwareButton.qml
new file mode 100644
index 0000000000..ea8e406c6e
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/HardwareButton.qml
@@ -0,0 +1,108 @@
+/**
+ * @file HardwareButton.qml
+ * @brief Parent class for hardware button.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import com.ford.sdl.hmi.hw_buttons 1.0
+import "../hmi_api/Common.js" as Common
+
+MaskedContainer {
+ property string name
+ property int buttonId: Common.ButtonName.CUSTOM_BUTTON
+ property bool upDownAvailable: true
+ property bool shortPressAvailable: true
+ property bool longPressAvailable: true
+
+ signal hold
+
+ Image {
+ source: "../res/controlButtons/" + name + "Button.png"
+ }
+ Image {
+ id: pressedImg
+ source: "../res/controlButtons/" + name + "Button_pressed.png"
+ visible: false
+ Behavior on opacity {
+ NumberAnimation { duration: 80 }
+ }
+ }
+ Timer {
+ id: timer
+ interval: 2000
+ repeat: false
+ triggeredOnStart: false
+ }
+ property bool clickProcessed
+ onPressed: {
+ clickProcessed = false
+ pressedImg.visible = true
+ timer.start()
+ if (upDownAvailable) {
+ sdlButtons.onButtonEvent(buttonId, Common.ButtonEventMode.BUTTONDOWN, undefined)
+ }
+ }
+
+ onReleased: {
+ if (upDownAvailable) {
+ sdlButtons.onButtonEvent(buttonId, Common.ButtonEventMode.BUTTONUP, undefined)
+ }
+ timer.stop()
+ if (!clickProcessed && shortPressAvailable) {
+ sdlButtons.onButtonPress(buttonId, Common.ButtonPressMode.SHORT, undefined)
+ }
+ pressedImg.visible = false
+ }
+
+ Connections {
+ target: timer
+ onTriggered: {
+ if(!clickProcessed && longPressAvailable) {
+ sdlButtons.onButtonPress(buttonId, Common.ButtonPressMode.LONG, undefined)
+ clickProcessed = true
+ hold()
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ if (buttonId !== Common.ButtonName.CUSTOM_BUTTON) {
+ settingsContainer.buttonCapabilities.push(
+ {
+ name: buttonId,
+ upDownAvailable: upDownAvailable,
+ shortPressAvailable: shortPressAvailable,
+ longPressAvailable: longPressAvailable
+ });
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/HeaderMenu.qml b/src/components/qt_hmi/qml_model_qt4/controls/HeaderMenu.qml
new file mode 100644
index 0000000000..2b0b418c54
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/HeaderMenu.qml
@@ -0,0 +1,134 @@
+/**
+ * @file HeaderMenu.qml
+ * @brief Header menu view.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ id: headerMenu
+ anchors.fill: parent
+
+ Text {
+ anchors.leftMargin: Constants.margin
+ anchors.topMargin: Constants.margin
+ anchors.left: parent.left
+ anchors.verticalCenter: parent.verticalCenter
+ color: Constants.primaryColor
+ font.pixelSize: Constants.fontSize
+ text: "75°"
+ }
+
+ Item {
+ width: menuText.width
+ height: parent.height
+ anchors.topMargin: Constants.margin
+ anchors.horizontalCenter: headerMenu.horizontalCenter
+ signal clicked ()
+
+ ClickableText {
+ id: menuLogo
+ anchors.horizontalCenter: menuText.horizontalCenter
+ anchors.bottom: parent.verticalCenter
+ text: "≡"
+ defaultColor: Constants.primaryColor
+ pressedColor: Constants.primaryColorPressed
+ font.pixelSize: Constants.fontSize
+
+ onClicked: parent.clicked()
+ onPressed: menuLogo.press()
+ onReleased: menuLogo.release()
+ onCanceled: menuLogo.release()
+ }
+
+ ClickableText {
+ id: menuText
+ anchors.top: parent.verticalCenter
+ text: "MENU";
+ defaultColor: Constants.primaryColor
+ pressedColor: Constants.primaryColorPressed
+ font.pixelSize: Constants.fontSize
+
+ onClicked: parent.clicked()
+ onPressed: menuText.press()
+ onReleased: menuText.release()
+ onCanceled: menuText.release()
+ }
+
+ onClicked: {
+ contentLoader.go("./views/MainMenuView.qml")
+ }
+ }
+
+ Row {
+ id: clock
+ height: childrenRect.height
+ anchors.right: parent.right
+ anchors.verticalCenter: parent.verticalCenter
+ anchors.rightMargin: Constants.margin
+ anchors.topMargin: Constants.margin
+ property date date: new Date()
+
+ Timer {
+ running: true
+ repeat: true
+ interval: 1000
+ onTriggered: {
+ clock.date = new Date();
+ }
+ }
+
+ Text {
+ text: Qt.formatTime(clock.date, "hh");
+ color: Constants.primaryColor
+ font.pixelSize: Constants.fontSize;
+ }
+
+ Item {
+ width: 10
+ height: parent.height
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: clock.date.getSeconds() % 2 ? ":" : ""
+ color: Constants.primaryColor
+ font.pixelSize: Constants.fontSize;
+ }
+ }
+
+ Text {
+ text: Qt.formatTime(clock.date, "mm");
+ color: Constants.primaryColor
+ font.pixelSize: Constants.fontSize;
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/Icon.qml b/src/components/qt_hmi/qml_model_qt4/controls/Icon.qml
new file mode 100644
index 0000000000..d0bfdba78b
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/Icon.qml
@@ -0,0 +1,65 @@
+/**
+ * @file Navigation.qml
+ * @brief Icon.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../hmi_api/Common.js" as Common
+
+Item {
+ property variant source
+
+ Image {
+ anchors.fill: parent
+ source: url(parent.source)
+
+ function image(turnIcon) {
+ if (turnIcon && turnIcon.imageType === Common.ImageType.STATIC) {
+ return turnIcon.value;
+ } else {
+ return "";
+ }
+ }
+
+ function url(turnIcon) {
+ if (turnIcon && turnIcon.imageType === Common.ImageType.DYNAMIC) {
+ return turnIcon.value;
+ } else {
+ return "";
+ }
+ }
+ }
+
+ function reset () {
+ source = undefined
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ListItem.qml b/src/components/qt_hmi/qml_model_qt4/controls/ListItem.qml
new file mode 100644
index 0000000000..c87c24de4d
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ListItem.qml
@@ -0,0 +1,70 @@
+/**
+ * @file Entry.qml
+ * @brief Entry with icon and text for list.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Rectangle {
+ id: main
+ color: Constants.transparentColor
+
+ property alias text: label.text
+ property alias fontSize: label.font.pixelSize
+ property alias icon: image.source
+
+ Icon {
+ id: image
+ width: Constants.iconItemListSize
+ height: Constants.iconItemListSize
+ anchors.left: parent.left
+ anchors.leftMargin: Constants.generalSpacing
+ anchors.verticalCenter: parent.verticalCenter
+ visible: source ? true : false
+ }
+ Text {
+ id: label
+ anchors.verticalCenter: parent.verticalCenter
+ height: image.height
+ width: parent.width - image.width
+ z: 50
+ verticalAlignment: Text.AlignVCenter
+ font.pixelSize: Constants.fontSize
+ text: "Name Entry"
+ anchors.left: image.right
+ anchors.leftMargin: Constants.generalSpacing
+ anchors.verticalCenterOffset: 0
+ visible: text !== ""
+ color: Constants.primaryColor
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/MaskedButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/MaskedButton.qml
new file mode 100644
index 0000000000..d8a95d1a00
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/MaskedButton.qml
@@ -0,0 +1,64 @@
+/**
+ * @file MaskedButton.qml
+ * @brief Masked button.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import com.ford.sdl.hmi.hw_buttons 1.0
+
+MaskedContainer {
+ property string name
+
+ Image {
+ id: icon
+ source: "../res/controlButtons/" + name + "Button.png"
+ }
+
+ onPressed: {
+ state = "pressed";
+ }
+
+ onReleased: {
+ state = "";
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ PropertyChanges {
+ target: icon
+ source: "../res/controlButtons/" + name + "Button_pressed.png"
+ }
+ }
+
+ ]
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/MultiTouchArea.qml b/src/components/qt_hmi/qml_model_qt4/controls/MultiTouchArea.qml
new file mode 100644
index 0000000000..e86dcedc8f
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/MultiTouchArea.qml
@@ -0,0 +1,77 @@
+/**
+ * @file MultiTouchArea.qml
+ * @brief Area for multitouch.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../hmi_api/Common.js" as Common
+
+MultiPointTouchArea {
+ readonly property int created: Date.now()
+
+ signal pressed(var touchPoints)
+ signal released(var touchPoints)
+ signal canceled(var touchPoints)
+ signal updated(var touchPoints)
+
+ function fillEvent(touchPoints) {
+ var event = []
+ for (var i = 0; i < touchPoints.length; ++i) {
+ event.push({
+ id: touchPoints[i].pointId,
+ ts: [Date.now() - created],
+ c: [{ x: touchPoints.x, y: touchPoints.y }] // TODO(KKolodiy): need cast to int
+ })
+ }
+ return event
+ }
+
+ minimumTouchPoints: 1
+ maximumTouchPoints: 10
+
+ onPressed: {
+ sdlUI.onTouchEvent(Common.BEGIN, fillEvent(touchPoints))
+ parent.pressed(touchPoints)
+ }
+ onReleased: {
+ sdlUI.onTouchEvent(Common.END, fillEvent(touchPoints))
+ parent.released(touchPoints)
+ }
+ onCanceled: {
+ sdlUI.onTouchEvent(Common.END, fillEvent(touchPoints))
+ parent.canceled(touchPoints)
+ }
+ onUpdated: {
+ sdlUI.onTouchEvent(Common.MOVE, fillEvent(touchPoints))
+ parent.updated(touchPoints)
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/OvalButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/OvalButton.qml
new file mode 100644
index 0000000000..59458499a7
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/OvalButton.qml
@@ -0,0 +1,240 @@
+/**
+ * @file OvalButton.qml
+ * @brief Oval button with flexible width.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import com.ford.sdl.hmi.hw_buttons 1.0
+import "../models/Constants.js" as Constants
+
+// Don't change constants. It break button
+// TODO (dchmerev@luxoft.com): make this comment more clear
+// todo (ykazakov): eliminate this problem and remove all such comments
+
+Item {
+ id: main
+ width: dynamic ? field.width + 2 * left.width : Constants.ovalButtonWidth
+ height: Constants.ovalButtonHeight
+
+ signal clicked;
+ signal pressed;
+ signal released;
+ signal pressAndHold;
+ property alias text: label.text
+ property alias fontSize: label.font.pixelSize
+ property alias icon: image.source
+ property bool highlighted: false
+ property bool dynamic: false
+ property bool disabled: false
+ property color colorizeColor
+ property real colorizeStrength
+
+ onDisabledChanged: colorize()
+ onHighlightedChanged: colorize()
+ Component.onCompleted: colorize()
+
+ function colorize() {
+ if (disabled) {
+ colorizeColor = "gray";
+ colorizeStrength = 1;
+ } else if (highlighted) {
+ colorizeColor = "cyan";
+ colorizeStrength = 1;
+ } else {
+ colorizeStrength = 0;
+ }
+ }
+
+ Item {
+ id: buttonBorderImage
+ visible: true
+ anchors.fill: parent
+ Image {
+ id: left
+ width: 31
+ anchors.left: parent.left
+ anchors.bottom: parent.bottom
+ anchors.top: parent.top
+ source: "../res/buttons/oval_btn_left.png"
+ effect: Colorize {
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+
+ Image {
+ id: right
+ width: 31
+ anchors.top: parent.top
+ anchors.bottom: parent.bottom
+ anchors.right: parent.right
+ source: "../res/buttons/oval_btn_right.png"
+ effect: Colorize {
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+
+ Image {
+ id: top
+ height: 10
+ anchors.right: parent.right
+ anchors.rightMargin: 31
+ anchors.left: parent.left
+ anchors.leftMargin: 31
+ anchors.top: parent.top
+ fillMode: Image.TileHorizontally
+ source: "../res/buttons/oval_btn_top.png"
+ effect: Colorize {
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+
+ Image {
+ id: bottom
+ height: 11
+ anchors.right: parent.right
+ anchors.rightMargin: 31
+ anchors.left: parent.left
+ anchors.leftMargin: 31
+ anchors.bottom: parent.bottom
+ fillMode: Image.TileHorizontally
+ source: "../res/buttons/oval_btn_bottom.png"
+ effect: Colorize {
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+ }
+
+ Rectangle {
+ id: background
+ color: Constants.transparentColor
+ anchors.fill: parent
+ anchors.rightMargin: 31
+ anchors.leftMargin: 31
+ anchors.bottomMargin: 10
+ anchors.topMargin: 10
+ visible: true
+ effect: Colorize {
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+
+ MouseArea {
+ id: mousearea
+ anchors.rightMargin: 15
+ anchors.leftMargin: 15
+ anchors.bottomMargin: 11
+ anchors.topMargin: 10
+ anchors.fill: parent
+ enabled: !parent.disabled
+ onPressed: {
+ parent.state = "pressed";
+ parent.pressed();
+ }
+ onReleased: {
+ parent.state = "";
+ parent.released();
+ }
+ onClicked: {
+ parent.clicked();
+ }
+ onPressAndHold: {
+ parent.pressAndHold();
+ }
+ onCanceled: {
+ parent.state = "";
+ }
+ }
+
+ Item {
+ id: field
+ anchors.fill: background
+
+ Icon {
+ id: image
+ width: Constants.iconButtonSize
+ height: Constants.iconButtonSize
+ anchors.verticalCenter: parent.verticalCenter
+ visible: source ? true : false
+ }
+ Text {
+ id: label
+ width: image.visible ? parent.width - image.width : parent.width
+ color: Constants.primaryColor
+ anchors.centerIn: parent
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ font.pixelSize: Constants.ovalButtonFontSize
+ visible: true
+ elide: Text.ElideRight
+ effect: Colorize {
+ id: colorizeLabel
+ color: main.colorizeColor
+ strength: main.colorizeStrength
+ }
+ }
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ PropertyChanges {
+ target: left
+ source: "../res/buttons/oval_btn_pressed_left.png"
+ }
+
+ PropertyChanges {
+ target: right
+ source: "../res/buttons/oval_btn_pressed_right.png"
+ }
+
+ PropertyChanges {
+ target: background
+ color: Constants.primaryColor
+ }
+
+ PropertyChanges {
+ target: label
+ color: Constants.secondaryColor
+ }
+
+ PropertyChanges {
+ target: colorizeLabel
+ strength: 0
+ }
+ }
+ ]
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/PagedFlickable.qml b/src/components/qt_hmi/qml_model_qt4/controls/PagedFlickable.qml
new file mode 100644
index 0000000000..6d40ad6478
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/PagedFlickable.qml
@@ -0,0 +1,105 @@
+/**
+ * @file PagedFlickable.qml
+ * @brief Animated row.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+
+Item
+{
+ id: flickablePage
+ height: container.height + pager.height
+ default property alias content: containerRow.children
+ property alias spacing: containerRow.spacing
+ property int elementWidth
+ property int snapTo
+ property int count: 0
+
+ Flickable {
+ id: container
+ anchors.bottom: parent.bottom
+ maximumFlickVelocity: 1500
+ contentWidth: containerRow.width
+ height: containerRow.height
+ width: parent.width
+ interactive: contentWidth > width
+
+ onMovementEnded: {
+ var rest = contentX % snapTo
+ var t = 0.25
+ if (rest > parent.snapTo / 2) {
+ rest = rest - parent.snapTo
+ }
+ var vel = 2 * rest / t
+ flickDeceleration = Math.abs(vel) / t
+ flick(vel, 0)
+ flickDeceleration = 1500
+ }
+ Row {
+ id: containerRow
+ anchors.verticalCenter: parent.verticalCenter
+ }
+ }
+
+ Pager {
+ id: pager
+ space: 7
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.top: parent.top
+
+ pages: {
+ if ( (container.contentWidth % container.width) >= (flickablePage.elementWidth / 2 + flickablePage.spacing)) {
+ return Math.ceil(container.contentWidth / container.width)
+ }
+ else {
+ return Math.floor(container.contentWidth / container.width)
+ }
+ }
+
+ activePage: {
+ if (container.contentX <= 0) {
+ return 0
+ }
+ else if ( (container.contentWidth - container.contentX) < container.width) {
+ return pages -1
+ }
+ else {
+ if ( (container.contentX % container.width) >= (flickablePage.elementWidth / 2 + flickablePage.spacing)) {
+ return Math.ceil(container.contentX / container.width)
+ }
+ else if ( (container.contentX % container.width) > 0) {
+ return Math.floor(container.contentX / container.width)
+ }
+ }
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/Pager.qml b/src/components/qt_hmi/qml_model_qt4/controls/Pager.qml
new file mode 100644
index 0000000000..471d932113
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/Pager.qml
@@ -0,0 +1,53 @@
+/**
+ * @file Pager.qml
+ * @brief Bubbles that indicate about page switch.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+
+Row {
+ id: pager
+ property int pages
+ property int activePage: 0
+ property int space
+ property int itemsInRowOnScreen: 3
+
+ spacing: space
+ visible: pages !== 1
+
+ Repeater {
+ model: pages
+ Image {
+ source: index === activePage ? "../res/white_ball.png" : "../res/blue_ball.png"
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/PlayPauseButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/PlayPauseButton.qml
new file mode 100644
index 0000000000..825884cc1e
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/PlayPauseButton.qml
@@ -0,0 +1,77 @@
+/**
+ * @file PlayPauseButton.qml
+ * @brief Behavior of Play/Pause button.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+
+Image {
+ id: playPauseButton
+ property string sourceOnPressed: ""
+ property string sourceOnReleased: ""
+
+ signal clicked
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: {
+ playPauseButton.source = playPauseButton.sourceOnPressed
+ }
+ onReleased: {
+ playPauseButton.source = playPauseButton.sourceOnReleased
+ }
+ onClicked: {
+ playPauseButton.clicked()
+ }
+ }
+ states: [
+ State {
+ name: "Play"
+ PropertyChanges {
+ target: playPauseButton
+ source: "../res/buttons/player_play_btn.png"
+ sourceOnPressed: "../res/buttons/player_play_pressed_btn.png"
+ sourceOnReleased: "../res/buttons/player_pause_btn.png"
+ }
+ },
+
+ State {
+ name: "Pause"
+ PropertyChanges {
+ target: playPauseButton
+ source: "../res/buttons/player_pause_btn.png"
+ sourceOnPressed: "../res/buttons/player_pause_pressed_btn.png"
+ sourceOnReleased: "../res/buttons/player_play_btn.png"
+ }
+ }
+ ]
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/PowerSwitchButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/PowerSwitchButton.qml
new file mode 100644
index 0000000000..2027e1f592
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/PowerSwitchButton.qml
@@ -0,0 +1,75 @@
+/**
+ * @file PowerSwitchBtn.qml
+ * @brief On/Off button.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Rectangle {
+ id: powerSwitchBtn
+ state: "Turn ON"
+ width: 120
+ height: 80
+ radius: 5
+ property bool pressed;
+
+ gradient: Gradient {
+ GradientStop { position: pressed ? 1.0 : 0.0; color: "#2c2c2c" }
+ GradientStop { position: pressed ? 0.0 : 1.0; color: "black" }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onPressed: {
+ parent.pressed = true
+ }
+ onReleased: {
+ parent.pressed = false
+ parent.state = parent.state === "Turn ON" ? "Turn OFF" : "Turn ON"
+ btnText.text = parent.state
+ if (parent.state === "Turn OFF") {
+ contentLoader.reset()
+ mainScreen.visible = true
+ warningInfo.showOkButton()
+ }
+ }
+ }
+
+ Text {
+ id: btnText
+ color: "red"
+ text: parent.state
+ anchors.centerIn: parent
+ font.pixelSize: Constants.powerButtonFornSize
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/PresetRow.qml b/src/components/qt_hmi/qml_model_qt4/controls/PresetRow.qml
new file mode 100644
index 0000000000..1454ed812d
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/PresetRow.qml
@@ -0,0 +1,106 @@
+/**
+ * @file PresetRow.qml
+ * @brief Animated row with radio stations.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ id: presetRow
+ height: childrenRect.height
+ property variant presets: []
+ property int selectedIndex: 0
+ signal presetSelected
+ signal presetButtonPressed()
+ signal presetButtonReleased()
+ signal presetButtonClicked()
+ signal presetButtonHold()
+
+ Image {
+ id: circleButton
+ source: "../res/buttons/preset_pressed_btn.png"
+ visible: false
+ enabled: false
+ }
+
+ PagedFlickable {
+ width: parent.width
+ spacing: (width - (circleButton.width * 4)) / 3
+ snapTo: spacing + circleButton.width
+ elementWidth: circleButton.width
+
+ Repeater {
+ model: presetRow.presets.length
+ delegate:
+ Column {
+ width: circleButton.width
+ Image {
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: presetRow.selectedIndex === index ? "../res/buttons/preset_pressed_btn.png" : "../res/buttons/preset_btn.png"
+ MouseArea {
+ anchors.fill: parent
+ onPressed: {
+ presetRow.selectedIndex = index;
+ presetButtonPressed()
+ }
+ onReleased: {
+ presetRow.selectedIndex = index;
+ presetButtonReleased()
+ }
+ onClicked: {
+ presetRow.selectedIndex = index
+ presetButtonClicked()
+ }
+ onPressAndHold: {
+ presetRow.selectedIndex = index;
+ presetButtonHold()
+ }
+ }
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.verticalCenter: parent.verticalCenter
+ text: index + 1
+ font.pixelSize: Constants.fontSize
+ color: presetRow.selectedIndex === index ? Constants.secondaryColor : Constants.primaryColor
+ }
+ }
+ Text {
+ anchors.horizontalCenter: parent.horizontalCenter
+ text: presetRow.presets[index]
+ font.pixelSize: Constants.fontSize
+ color: "white"
+ }
+ }
+ }
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/PushButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/PushButton.qml
new file mode 100644
index 0000000000..36ee9bbb3f
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/PushButton.qml
@@ -0,0 +1,136 @@
+/**
+ * @file PushButton.qml
+ * @brief Simple button
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+
+Rectangle {
+ id: toggleButton
+ width: 160
+ height: 40
+ radius: 2
+ border.width: 2
+ border.color: "#000000"
+ gradient: grUnpressed
+
+ property alias label : label.text
+
+ signal pressed()
+ signal unpressed()
+ signal clicked()
+
+ property bool toggleMode: false
+
+ state: "unpressed"
+ onStateChanged: {
+ if (state == "pressed") {
+ pressed();
+ } else {
+ unpressed();
+ }
+ }
+
+ Text {
+ id: label
+ color: "white"
+ text: "PushButton"
+ font.pixelSize: 18
+ verticalAlignment: Text.AlignVCenter
+ horizontalAlignment: Text.AlignHCenter
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.fill: parent
+ }
+ MouseArea {
+ id: mouseArea
+
+ anchors.fill: parent
+ onPressed: {
+ if (toggleMode) {
+ if (parent.state == "unpressed") {
+ parent.state = "pressed"
+ } else {
+ parent.state = "unpressed"
+ }
+ } else {
+ parent.state = "pressed"
+ }
+ }
+ onReleased: {
+ if (!toggleMode) {
+ parent.state = "unpressed"
+ if (mouse.isClick) {
+ parent.clicked()
+ }
+ }
+ }
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ PropertyChanges {
+ target: toggleButton
+ gradient: grPressed
+ }
+ },
+ State {
+ name: "unpressed"
+ PropertyChanges {
+ target: toggleButton
+ gradient: grUnpressed
+ }
+ }
+ ]
+
+ Gradient {
+ id: grUnpressed
+
+ GradientStop { position: 0.0; color: "#2c2c2c" }
+ GradientStop { position: 1.0; color: "#0c0c0c" }
+ }
+
+ Gradient {
+ id: grPressed
+
+ GradientStop { position: 0.0; color: "black" }
+ GradientStop { position: 1.0; color: "black" }
+ }
+
+ transitions: [
+ Transition {
+ from: "unpressed"
+ to: "pressed"
+ reversible: true
+ }
+ ]
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ScrollableListView.qml b/src/components/qt_hmi/qml_model_qt4/controls/ScrollableListView.qml
new file mode 100644
index 0000000000..cc26c87271
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ScrollableListView.qml
@@ -0,0 +1,49 @@
+/**
+ * @file ScrollableListView.qml
+ * @brief ListView with scrollbar on the right
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+ListView {
+ clip: true
+
+ Rectangle {
+ visible: parent.height < parent.contentHeight
+ anchors.right: parent.right
+ y: parent.visibleArea.yPosition * parent.height
+ width: Constants.scrollBarWidth
+ height: parent.visibleArea.heightRatio * parent.height
+ color: Constants.primaryColor
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/ScrollableText.qml b/src/components/qt_hmi/qml_model_qt4/controls/ScrollableText.qml
new file mode 100644
index 0000000000..82f568414b
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/ScrollableText.qml
@@ -0,0 +1,70 @@
+/**
+ * @file ScrollableText.qml
+ * @brief Text with scrollers if text more than zone
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Item {
+ property alias text: text.text
+ clip: true
+
+ Flickable {
+ id: flickable
+ anchors.fill: parent
+ contentWidth: text.width
+ contentHeight: text.height
+
+ Text {
+ id: text
+ color: Constants.popUpBorderColor
+ font.pixelSize: Constants.ttsFontSize
+ }
+ }
+ Rectangle {
+ visible: flickable.height < flickable.contentHeight
+ anchors.right: flickable.right
+ y: flickable.visibleArea.yPosition * flickable.height
+ width: Constants.scrollBarWidth
+ height: flickable.visibleArea.heightRatio * flickable.height
+ color: Constants.popUpBorderColor
+ }
+ Rectangle {
+ visible: flickable.width < flickable.contentWidth
+ anchors.bottom: flickable.bottom
+ x: flickable.visibleArea.xPosition * flickable.width
+ height: Constants.scrollBarWidth
+ width: flickable.visibleArea.widthRatio * flickable.width
+ color: Constants.popUpBorderColor
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.js b/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.js
new file mode 100644
index 0000000000..227f638366
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.js
@@ -0,0 +1,39 @@
+/**
+ * @file SoftButton.js
+ * @brief Soft button view constants
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+.pragma library
+
+var Action = {
+ doOnClicked: 0,
+ doOnReleased: 1
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.qml b/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.qml
new file mode 100644
index 0000000000..b92cd51263
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/SoftButton.qml
@@ -0,0 +1,104 @@
+/**
+ * @file SoftButton.qml
+ * @brief Soft button view
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+import QtQuick 1.1
+import "../hmi_api/Common.js" as Common
+import "SoftButton.js" as SoftButton
+
+OvalButton {
+ property variant button
+ property int appId
+ visible: !!button
+
+ signal defaultAction;
+ signal stealFocus;
+ signal keepContext;
+
+ property int actionOrder: SoftButton.Action.doOnClicked
+
+ highlighted: button ? button.isHighlighted : false
+ onPressed: {
+ actionOrder = SoftButton.Action.doOnClicked
+ sdlButtons.onButtonEvent(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonEventMode.BUTTONDOWN, button.softButtonID)
+ }
+
+ onReleased: {
+ if (actionOrder === SoftButton.Action.doOnReleased) {
+ switch (button.systemAction) {
+ case Common.SystemAction.DEFAULT_ACTION:
+ defaultAction();
+ break;
+ case Common.SystemAction.STEAL_FOCUS:
+ if (dataContainer.currentApplication.isMediaApplication) {
+ contentLoader.go("views/SDLPlayerView.qml", appId);
+ } else {
+ contentLoader.go("views/SDLNonMediaView.qml", appId);
+ }
+ stealFocus();
+ break;
+ case Common.SystemAction.KEEP_CONTEXT:
+ keepContext();
+ break;
+ }
+ }
+
+ sdlButtons.onButtonEvent(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonEventMode.BUTTONUP, button.softButtonID)
+ }
+
+ onClicked: {
+ sdlButtons.onButtonPress(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonPressMode.SHORT, button.softButtonID);
+ switch (button.systemAction) {
+ case Common.SystemAction.DEFAULT_ACTION:
+ defaultAction();
+ break;
+ case Common.SystemAction.STEAL_FOCUS:
+ if (dataContainer.currentApplication.isMediaApplication) { contentLoader.go("views/SDLPlayerView.qml", appId); }
+ else { contentLoader.go("views/SDLNonMediaView.qml", appId); }
+ stealFocus();
+ break;
+ case Common.SystemAction.KEEP_CONTEXT:
+ keepContext();
+ break;
+ }
+ }
+
+ onPressAndHold: {
+ actionOrder = SoftButton.Action.doOnReleased; // action should be triggered on release
+ sdlButtons.onButtonPress(Common.ButtonName.CUSTOM_BUTTON, Common.ButtonPressMode.LONG, button.softButtonID);
+ }
+
+ onButtonChanged: {
+ icon = button && button.type !== Common.SoftButtonType.SBT_TEXT ? button.image : undefined;
+ text = button && button.type !== Common.SoftButtonType.SBT_IMAGE ? button.text : ""
+ }
+}
diff --git a/src/components/qt_hmi/qml_model_qt4/controls/StatusBar.qml b/src/components/qt_hmi/qml_model_qt4/controls/StatusBar.qml
new file mode 100644
index 0000000000..a6d7640f36
--- /dev/null
+++ b/src/components/qt_hmi/qml_model_qt4/controls/StatusBar.qml
@@ -0,0 +1,42 @@
+/**
+ * @file StatusBar.qml
+ * @brief Status bar that contains text string.
+ * Copyright (c) 2013, Ford Motor Company
+ * All rights reserved.
+ *
+ * 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 Ford Motor Company 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 HOLDER 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.
+ */
+
+import QtQuick 1.1
+import "../models/Constants.js" as Constants
+
+Text {
+ text: dataContainer.currentApplication.hmiUIText.statusBar
+ color: Constants.primaryColor
+ font.pixelSize: Constants.statusBarFontSize
+}