aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-04-05 19:26:49 +0900
committerzheng_wenlong <wenlong_zheng@nexty-ele.com>2019-04-05 19:26:49 +0900
commitff86f7a823bf7b592e1011f6f31d89673ec725e6 (patch)
treefe95e5080ecefaac48140e651fabd4c43803ed4c
parent281589cfc259dc413f05fb0488fbcceeaeaf06bb (diff)
add bug code
-rw-r--r--homescreen/homescreen.pro2
-rw-r--r--homescreen/qml/MediaAreaBlank.qml2
-rw-r--r--homescreen/qml/ShortcutArea.qml21
-rw-r--r--homescreen/qml/ShortcutIcon.qml2
-rw-r--r--homescreen/qml/StatusArea.qml11
-rw-r--r--homescreen/qml/TopArea.qml2
-rw-r--r--homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.pngbin949053 -> 951359 bytes
-rw-r--r--homescreen/qml/images/AGL_HMI_Full_Background.pngbin0 -> 9120 bytes
-rw-r--r--homescreen/qml/images/AGL_HMI_Normal_Background.pngbin0 -> 10012 bytes
-rw-r--r--homescreen/qml/images/Shortcut/sdl_usb.svg311
-rw-r--r--homescreen/qml/images/Shortcut/sdl_usb_active.svg278
-rw-r--r--homescreen/qml/images/Shortcut/shortcut.qrc4
-rw-r--r--homescreen/qml/images/Shortcut/video.svg109
-rw-r--r--homescreen/qml/images/Shortcut/video_active.svg126
-rw-r--r--homescreen/qml/images/TopSection_NoText_NoIcons-01.pngbin0 -> 2097 bytes
-rw-r--r--homescreen/qml/images/TopSection_NoText_NoIcons-01.svg55
-rw-r--r--homescreen/qml/images/Utility_Logo_Background-01.pngbin0 -> 1150 bytes
-rw-r--r--homescreen/qml/images/Utility_Logo_Background-01.svg53
-rw-r--r--homescreen/qml/images/fullscreen.pngbin0 -> 1633 bytes
-rw-r--r--homescreen/qml/images/images.qrc9
-rw-r--r--homescreen/qml/images/normal.pngbin0 -> 1626 bytes
-rw-r--r--homescreen/qml/images/normal_disable.pngbin0 -> 1721 bytes
-rw-r--r--homescreen/qml/main.qml169
-rw-r--r--homescreen/src/homescreenhandler.cpp26
-rw-r--r--homescreen/src/homescreenhandler.h5
-rw-r--r--homescreen/src/main.cpp28
-rw-r--r--homescreen/src/toucharea.cpp36
-rw-r--r--homescreen/src/toucharea.h30
28 files changed, 1069 insertions, 210 deletions
diff --git a/homescreen/homescreen.pro b/homescreen/homescreen.pro
index 3a25880..ad44748 100644
--- a/homescreen/homescreen.pro
+++ b/homescreen/homescreen.pro
@@ -31,6 +31,7 @@ SOURCES += \
src/applicationlauncher.cpp \
src/mastervolume.cpp \
src/homescreenhandler.cpp \
+ src/toucharea.cpp \
helpers/qafbwebsocketclient.cpp
HEADERS += \
@@ -39,6 +40,7 @@ HEADERS += \
src/applicationlauncher.h \
src/mastervolume.h \
src/homescreenhandler.h \
+ src/toucharea.h \
helpers/qafbwebsocketclient.h
OTHER_FILES += \
diff --git a/homescreen/qml/MediaAreaBlank.qml b/homescreen/qml/MediaAreaBlank.qml
index 347c26a..a2fd473 100644
--- a/homescreen/qml/MediaAreaBlank.qml
+++ b/homescreen/qml/MediaAreaBlank.qml
@@ -24,7 +24,7 @@ import MasterVolume 1.0
Image {
width: 1080
height: 215
- source: './images/Utility_Logo_Background-01.svg'
+ source: './images/Utility_Logo_Background-01.png'
property bool displayVolume: false;
MouseArea {
diff --git a/homescreen/qml/ShortcutArea.qml b/homescreen/qml/ShortcutArea.qml
index d7e97f0..8ae1137 100644
--- a/homescreen/qml/ShortcutArea.qml
+++ b/homescreen/qml/ShortcutArea.qml
@@ -24,6 +24,13 @@ Item {
width: 785
height: 218
+ Timer {
+ id:notificationTimer
+ interval: 3000
+ running: false
+ repeat: true
+ onTriggered: notificationItem.visible = false
+ }
ListModel {
id: applicationModel
@@ -33,18 +40,18 @@ Item {
application: 'launcher@0.1'
}
ListElement {
- appid: 'mediaplayer'
- name: 'MediaPlayer'
- application: 'mediaplayer@0.1'
+ appid: 'sdl_usb'
+ name: 'sdl_usb'
+ application: 'sdl_usb@5.0'
}
ListElement {
- appid: 'hvac'
- name: 'HVAC'
- application: 'hvac@0.1'
+ appid: 'video'
+ name: 'Video'
+ application: 'video@0.1'
}
ListElement {
appid: 'navigation'
- name: 'Navigation'
+ name: 'navigation'
application: 'navigation@0.1'
}
}
diff --git a/homescreen/qml/ShortcutIcon.qml b/homescreen/qml/ShortcutIcon.qml
index 1100a7c..8dfee26 100644
--- a/homescreen/qml/ShortcutIcon.qml
+++ b/homescreen/qml/ShortcutIcon.qml
@@ -32,7 +32,7 @@ MouseArea {
Image {
id: inactiveIcon
anchors.fill: parent
- source: './images/Shortcut/%1.svg'.arg(root.name.toLowerCase())
+ source: './images/Shortcut/%1.svg'.arg(root.name.toLowerCase())
}
Image {
id: activeIcon
diff --git a/homescreen/qml/StatusArea.qml b/homescreen/qml/StatusArea.qml
index d2e0930..115bcad 100644
--- a/homescreen/qml/StatusArea.qml
+++ b/homescreen/qml/StatusArea.qml
@@ -117,11 +117,15 @@ Item {
Layout.fillHeight: true
Layout.preferredWidth: 76
spacing: -10
-
+ Rectangle {
+ Layout.preferredWidth: 77
+ Layout.preferredHeight: 55
+ opacity: 0
+ }
Image {
id: bt_icon
Layout.preferredWidth: 77
- Layout.preferredHeight: 73
+ Layout.preferredHeight: 55
source: connStatus ? './images/Status/HMI_Status_Bluetooth_On-01.png' : './images/Status/HMI_Status_Bluetooth_Inactive-01.png'
fillMode: Image.PreserveAspectFit
property string deviceName: "none"
@@ -134,11 +138,12 @@ Item {
}
}
}
+
Repeater {
model: StatusBarModel { objectName: "statusBar" }
delegate: Image {
Layout.preferredWidth: 77
- Layout.preferredHeight: 73
+ Layout.preferredHeight: 55
source: model.modelData
fillMode: Image.PreserveAspectFit
}
diff --git a/homescreen/qml/TopArea.qml b/homescreen/qml/TopArea.qml
index 2a75cf8..9cff3ed 100644
--- a/homescreen/qml/TopArea.qml
+++ b/homescreen/qml/TopArea.qml
@@ -22,7 +22,7 @@ import QtQuick.Controls 2.0
Image {
width: 1920
height: 218
- source: './images/TopSection_NoText_NoIcons-01.svg'
+ source: './images/TopSection_NoText_NoIcons-01.png'
fillMode: Image.PreserveAspectCrop
RowLayout {
diff --git a/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png b/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png
index 357c204..a4e026c 100644
--- a/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png
+++ b/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png
Binary files differ
diff --git a/homescreen/qml/images/AGL_HMI_Full_Background.png b/homescreen/qml/images/AGL_HMI_Full_Background.png
new file mode 100644
index 0000000..9631ca0
--- /dev/null
+++ b/homescreen/qml/images/AGL_HMI_Full_Background.png
Binary files differ
diff --git a/homescreen/qml/images/AGL_HMI_Normal_Background.png b/homescreen/qml/images/AGL_HMI_Normal_Background.png
new file mode 100644
index 0000000..c686067
--- /dev/null
+++ b/homescreen/qml/images/AGL_HMI_Normal_Background.png
Binary files differ
diff --git a/homescreen/qml/images/Shortcut/sdl_usb.svg b/homescreen/qml/images/Shortcut/sdl_usb.svg
new file mode 100644
index 0000000..3b6a7e9
--- /dev/null
+++ b/homescreen/qml/images/Shortcut/sdl_usb.svg
@@ -0,0 +1,311 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ version="1.1"
+ id="Home"
+ x="0px"
+ y="0px"
+ viewBox="0 0 195 216.8"
+ style="enable-background:new 0 0 195 216.8;"
+ xml:space="preserve"
+ inkscape:version="0.91 r13725"
+ sodipodi:docname="sdl.svg"><metadata
+ id="metadata61"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+ id="defs59" /><sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1855"
+ inkscape:window-height="1056"
+ id="namedview57"
+ showgrid="false"
+ showguides="true"
+ inkscape:guide-bbox="true"
+ inkscape:zoom="1.0885609"
+ inkscape:cx="18.255591"
+ inkscape:cy="102.46209"
+ inkscape:window-x="65"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="Home"><sodipodi:guide
+ position="52.936865,144.9161"
+ orientation="0,1"
+ id="guide4189" /><sodipodi:guide
+ position="66.027543,153.29873"
+ orientation="1,0"
+ id="guide4191" /><sodipodi:guide
+ position="34.449153,79.00339"
+ orientation="0,1"
+ id="guide4193" /><sodipodi:guide
+ position="132.05509,117.35678"
+ orientation="1,0"
+ id="guide4195" /><sodipodi:guide
+ position="98.9839,162.94449"
+ orientation="1,0"
+ id="guide4266" /><sodipodi:guide
+ position="67.290679,111.95975"
+ orientation="0,1"
+ id="guide4268" /></sodipodi:namedview><style
+ type="text/css"
+ id="style3">
+ .st0{fill:#FFFFFF;}
+ .st1{font-family:'Roboto-Regular';}
+ .st2{font-size:11px;}
+ .st3{letter-spacing:2;}
+ .st4{fill:url(#SVGID_1_);}
+ .st5{fill:url(#SVGID_2_);}
+ .st6{fill:url(#SVGID_3_);}
+ .st7{fill:url(#SVGID_4_);}
+ .st8{fill:url(#SVGID_5_);}
+</style><image
+ y="71.883904"
+ x="66.027542"
+ id="image4332"
+ xlink:href="data:image/png;base64,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
+"
+ preserveAspectRatio="none"
+ height="65.912712"
+ width="66.02755" /></svg>
diff --git a/homescreen/qml/images/Shortcut/sdl_usb_active.svg b/homescreen/qml/images/Shortcut/sdl_usb_active.svg
new file mode 100644
index 0000000..9584885
--- /dev/null
+++ b/homescreen/qml/images/Shortcut/sdl_usb_active.svg
@@ -0,0 +1,278 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 21.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
+ <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+ <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+ <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+ <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+ <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+ <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+ <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+ <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+]>
+<svg version="1.1" id="Home" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
+ xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 195 216.8"
+ style="enable-background:new 0 0 195 216.8;" xml:space="preserve">
+<style type="text/css">
+ .st0{fill:#0DF9FF;}
+ .st1{fill:url(#Active_2_1_);}
+ .st2{fill:#FFFFFF;}
+ .st3{font-family:'Roboto-Regular';}
+ .st4{font-size:11px;}
+ .st5{letter-spacing:2;}
+ .st6{fill:url(#SVGID_1_);}
+ .st7{fill:url(#SVGID_2_);}
+ .st8{fill:url(#SVGID_3_);}
+ .st9{fill:url(#SVGID_4_);}
+ .st10{fill:url(#SVGID_5_);}
+</style>
+<switch>
+ <g i:extraneous="self">
+ <rect id="Active_1" y="214.3" transform="matrix(-1 -1.224647e-16 1.224647e-16 -1 195.8833 431.0468)" class="st0" width="195.9" height="2.4"/>
+ <linearGradient id="Active_2_1_" gradientUnits="userSpaceOnUse" x1="97.9416" y1="236.9585" x2="97.9416" y2="-68.5304">
+ <stop offset="0" style="stop-color:#0DF9FF"/>
+ <stop offset="9.208472e-02" style="stop-color:#0DF9FF;stop-opacity:0.853"/>
+ <stop offset="0.6264" style="stop-color:#0DF9FF;stop-opacity:0"/>
+ </linearGradient>
+ <rect id="Active_2" class="st1" width="195.9" height="214.3"/>
+ <g>
+<image
+ y="71.883904"
+ x="66.027542"
+ id="image4332"
+ xlink:href="data:image/png;base64,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
+"
+ preserveAspectRatio="none"
+ height="65.912712"
+ width="66.02755" />
+ </g>
+ </g>
+</switch>
+</svg>
diff --git a/homescreen/qml/images/Shortcut/shortcut.qrc b/homescreen/qml/images/Shortcut/shortcut.qrc
index 5d67341..a480dc2 100644
--- a/homescreen/qml/images/Shortcut/shortcut.qrc
+++ b/homescreen/qml/images/Shortcut/shortcut.qrc
@@ -8,5 +8,9 @@
<file>mediaplayer_active.svg</file>
<file>navigation.svg</file>
<file>navigation_active.svg</file>
+ <file>video.svg</file>
+ <file>video_active.svg</file>
+ <file>sdl_usb.svg</file>
+ <file>sdl_usb_active.svg</file>
</qresource>
</RCC>
diff --git a/homescreen/qml/images/Shortcut/video.svg b/homescreen/qml/images/Shortcut/video.svg
new file mode 100644
index 0000000..e368922
--- /dev/null
+++ b/homescreen/qml/images/Shortcut/video.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ viewBox="0 0 195 217"
+ height="217"
+ width="195"
+ version="1.1"
+ id="svg2">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <image
+ y="0"
+ x="0"
+ id="image10"
+ xlink:href="data:image/png;base64,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
+saNgIER9vJAmFrMmFNr4923DxrbK3eEE48FgwnyeM+8JRbttnpoQvAnDeNY8Jobp2evzAtM+a/wq
+xLBCG0jWKrRSqR82y+Iny2do43Qri+kZhgl6Ln94jzKqA0S1uAgtlDS/s9XM2nhRRafI4rmhQBO6
+PmNb5hjf8m+/V3lWAABFZ95IFM8JXudnis58A3X3BtsH9fmCEornD0woRWZEjKDcKOmhiPhVUfHL
+4dbQb74/b96W6VoL0z4M23WhbhmpN5/ZXJ9ZqlZu3VpPVZ1bBWfS20f3Ntq91Hs7hZc5doPtpJ5Q
+JGQNsug82bMEamPjJEQk9d6xp34GSR9kRW8CfUnVHa8XyMzu66LqgR51psgE6lCVnXnXMqmy8/ml
+ekJGkvXOMkTQSy9V937HmRA9tayyUdVa0ajtXI4uZ20D7eGzaWZmZmZmZmZmZmZmZmZmZmZmZmZm
+ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm
+ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYv6v8BHUYYj+AaytYAAAAA
+SUVORK5CYII=
+"
+ style="image-rendering:optimizeQuality"
+ preserveAspectRatio="none"
+ height="217"
+ width="195" />
+</svg>
diff --git a/homescreen/qml/images/Shortcut/video_active.svg b/homescreen/qml/images/Shortcut/video_active.svg
new file mode 100644
index 0000000..344385f
--- /dev/null
+++ b/homescreen/qml/images/Shortcut/video_active.svg
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ viewBox="0 0 195 217"
+ height="217"
+ width="195"
+ version="1.1"
+ id="svg2">
+ <metadata
+ id="metadata8">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs6" />
+ <image
+ y="0"
+ x="0"
+ id="image10"
+ xlink:href="data:image/png;base64,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
+"
+ style="image-rendering:optimizeQuality"
+ preserveAspectRatio="none"
+ height="217"
+ width="195" />
+</svg>
diff --git a/homescreen/qml/images/TopSection_NoText_NoIcons-01.png b/homescreen/qml/images/TopSection_NoText_NoIcons-01.png
new file mode 100644
index 0000000..cf9ec4e
--- /dev/null
+++ b/homescreen/qml/images/TopSection_NoText_NoIcons-01.png
Binary files differ
diff --git a/homescreen/qml/images/TopSection_NoText_NoIcons-01.svg b/homescreen/qml/images/TopSection_NoText_NoIcons-01.svg
deleted file mode 100644
index 6841001..0000000
--- a/homescreen/qml/images/TopSection_NoText_NoIcons-01.svg
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1080 217.9"
- style="enable-background:new 0 0 1080 217.9;" xml:space="preserve">
-<style type="text/css">
- .st0{opacity:0.9;fill:#1B1A1D;}
- .st1{opacity:0.9;fill:#27232B;}
- .st2{fill:none;stroke:url(#SVGID_1_);stroke-miterlimit:10;}
- .st3{fill:none;stroke:url(#SVGID_2_);stroke-miterlimit:10;}
- .st4{fill:none;stroke:url(#SVGID_3_);stroke-miterlimit:10;}
- .st5{fill:none;stroke:url(#SVGID_4_);stroke-miterlimit:10;}
- .st6{opacity:0.9;fill:none;stroke:#545157;stroke-miterlimit:10;}
-</style>
-<switch>
- <g i:extraneous="self">
- <rect class="st0" width="784.8" height="214.3"/>
- <rect x="784.8" y="0" class="st1" width="295.2" height="214.3"/>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="391.5756" y1="107.1501" x2="392.5756" y2="107.1501">
- <stop offset="0.4644" style="stop-color:#000000"/>
- <stop offset="0.4741" style="stop-color:#4D4B51"/>
- </linearGradient>
- <line class="st2" x1="392.1" y1="214.3" x2="392.1" y2="0"/>
- <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="195.6923" y1="107.1501" x2="196.6923" y2="107.1501">
- <stop offset="0.4644" style="stop-color:#000000"/>
- <stop offset="0.4741" style="stop-color:#4D4B51"/>
- </linearGradient>
- <line class="st3" x1="196.2" y1="214.3" x2="196.2" y2="0"/>
- <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="587.4589" y1="107.1501" x2="588.4589" y2="107.1501">
- <stop offset="0.4644" style="stop-color:#000000"/>
- <stop offset="0.4741" style="stop-color:#4D4B51"/>
- </linearGradient>
- <line class="st4" x1="588" y1="214.3" x2="588" y2="0"/>
- <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="783.3421" y1="107.1501" x2="784.3421" y2="107.1501">
- <stop offset="0.4644" style="stop-color:#000000"/>
- <stop offset="0.4741" style="stop-color:#4D4B51"/>
- </linearGradient>
- <line class="st5" x1="783.8" y1="214.3" x2="783.8" y2="0"/>
- <g>
- <line class="st6" x1="815.1" y1="132" x2="983.5" y2="132"/>
- </g>
- <line class="st6" x1="1004.4" y1="-1.1" x2="1004.4" y2="213.2"/>
- </g>
-</switch>
-</svg>
diff --git a/homescreen/qml/images/Utility_Logo_Background-01.png b/homescreen/qml/images/Utility_Logo_Background-01.png
new file mode 100644
index 0000000..21a602d
--- /dev/null
+++ b/homescreen/qml/images/Utility_Logo_Background-01.png
Binary files differ
diff --git a/homescreen/qml/images/Utility_Logo_Background-01.svg b/homescreen/qml/images/Utility_Logo_Background-01.svg
deleted file mode 100644
index c289805..0000000
--- a/homescreen/qml/images/Utility_Logo_Background-01.svg
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 21.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
- <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
- <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
- <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
- <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
- <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
- <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
- <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
- <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
-]>
-<svg version="1.1" id="Layer_1" xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;"
- xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1080 215"
- style="enable-background:new 0 0 1080 215;" xml:space="preserve">
-<style type="text/css">
- .st0{opacity:0.82;}
- .st1{fill-rule:evenodd;clip-rule:evenodd;fill:url(#SVGID_1_);}
- .st2{opacity:0.9;}
- .st3{fill-rule:evenodd;clip-rule:evenodd;fill:#1B1A1D;}
-</style>
-<switch>
- <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
- <i:pgfRef xlink:href="#adobe_illustrator_pgf">
- </i:pgfRef>
- </foreignObject>
- <g i:extraneous="self">
- <g>
- <g id="box_14_" class="st0">
- <g>
- <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="540" y1="247.5651" x2="540" y2="-6.7541">
- <stop offset="0.2978" style="stop-color:#FFFFFF;stop-opacity:0"/>
- <stop offset="0.3685" style="stop-color:#FAFAFA;stop-opacity:0.1007"/>
- <stop offset="0.4554" style="stop-color:#EBEBEB;stop-opacity:0.2245"/>
- <stop offset="0.5508" style="stop-color:#D2D2D2;stop-opacity:0.3603"/>
- <stop offset="0.6523" style="stop-color:#AFAFAF;stop-opacity:0.5048"/>
- <stop offset="0.7585" style="stop-color:#828282;stop-opacity:0.6562"/>
- <stop offset="0.8689" style="stop-color:#4B4B4B;stop-opacity:0.8133"/>
- <stop offset="0.9806" style="stop-color:#0C0C0C;stop-opacity:0.9724"/>
- <stop offset="1" style="stop-color:#000000"/>
- </linearGradient>
- <rect class="st1" width="1080" height="215"/>
- </g>
- </g>
- <g id="box_17_" class="st2">
- <g>
- <rect class="st3" width="1080" height="215"/>
- </g>
- </g>
- </g>
- </g>
-</switch>
-</svg>
diff --git a/homescreen/qml/images/fullscreen.png b/homescreen/qml/images/fullscreen.png
new file mode 100644
index 0000000..f56a13c
--- /dev/null
+++ b/homescreen/qml/images/fullscreen.png
Binary files differ
diff --git a/homescreen/qml/images/images.qrc b/homescreen/qml/images/images.qrc
index 37ad676..1a886c8 100644
--- a/homescreen/qml/images/images.qrc
+++ b/homescreen/qml/images/images.qrc
@@ -1,10 +1,15 @@
<RCC>
<qresource prefix="/images">
- <file>TopSection_NoText_NoIcons-01.svg</file>
- <file>Utility_Logo_Background-01.svg</file>
+ <file>TopSection_NoText_NoIcons-01.png</file>
+ <file>Utility_Logo_Background-01.png</file>
<file>Utility_Logo_Grey-01.svg</file>
<file>Utility_Music_Background-01.png</file>
<file>Utility_Radio_Background-01.png</file>
<file>AGL_HMI_Blue_Background_NoCar-01.png</file>
+ <file>AGL_HMI_Full_Background.png</file>
+ <file>AGL_HMI_Normal_Background.png</file>
+ <file>fullscreen.png</file>
+ <file>normal.png</file>
+ <file>normal_disable.png</file>
</qresource>
</RCC>
diff --git a/homescreen/qml/images/normal.png b/homescreen/qml/images/normal.png
new file mode 100644
index 0000000..92dee7a
--- /dev/null
+++ b/homescreen/qml/images/normal.png
Binary files differ
diff --git a/homescreen/qml/images/normal_disable.png b/homescreen/qml/images/normal_disable.png
new file mode 100644
index 0000000..f191241
--- /dev/null
+++ b/homescreen/qml/images/normal_disable.png
Binary files differ
diff --git a/homescreen/qml/main.qml b/homescreen/qml/main.qml
index 7d40276..fdd3daa 100644
--- a/homescreen/qml/main.qml
+++ b/homescreen/qml/main.qml
@@ -26,6 +26,7 @@ Window {
width: container.width * container.scale
height: container.height * container.scale
title: 'HomeScreen'
+ color: "#00000000"
Image {
id: container
@@ -60,97 +61,107 @@ Window {
Layout.preferredHeight: 215
}
}
- }
- Timer {
- id:informationTimer
- interval: 3000
- running: false
- repeat: true
- onTriggered: {
- bottomInformation.visible = false
- }
- }
+ state: "normal"
- Item {
- id: bottomInformation
- width: parent.width
- height: 215
- anchors.bottom: parent.bottom
- visible: false
- Text {
- id: bottomText
- anchors.centerIn: parent
- font.pixelSize: 25
- font.letterSpacing: 5
- horizontalAlignment: Text.AlignHCenter
- color: "white"
- text: ""
- z:1
- }
- }
-
- Connections {
- target: homescreenHandler
- onShowInformation: {
- bottomText.text = info
- bottomInformation.visible = true
- informationTimer.restart()
+ states: [
+ State {
+ name: "normal"
+ PropertyChanges {
+ target: topArea
+ y: 0
+ }
+ PropertyChanges {
+ target: applicationArea
+ y: 218
+ }
+ PropertyChanges {
+ target: mediaArea
+ y: 1705
+ }
+ },
+ State {
+ name: "fullscreen"
+ PropertyChanges {
+ target: topArea
+ y: -220
+ }
+ PropertyChanges {
+ target: applicationArea
+ y: -1490
+ }
+ PropertyChanges {
+ target: mediaArea
+ y: 2135
+ }
+ }
+ ]
+ transitions: Transition {
+ NumberAnimation {
+ target: topArea
+ property: "y"
+ easing.type: "OutQuad"
+ duration: 250
+ }
+ NumberAnimation {
+ target: mediaArea
+ property: "y"
+ easing.type: "OutQuad"
+ duration: 250
+ }
}
- }
- Timer {
- id:notificationTimer
- interval: 3000
- running: false
- repeat: true
- onTriggered: notificationItem.visible = false
}
-
Item {
- id: notificationItem
- x: 0
- y: 0
+ id: switchBtn
+ width: 70
+ height: 70
+ anchors.right: parent.right
+ anchors.top: parent.top
z: 1
- width: 1280
- height: 100
- opacity: 0.8
- visible: false
+ property bool enableSwitchBtn: true
+ Image {
+ anchors.right: parent.right
+ anchors.rightMargin: 20
+ anchors.top: parent.top
+ anchors.topMargin: 25
+ width: 35
+ height: 35
+ id: image
+ source: './images/normal.png'
+ }
- Rectangle {
- width: parent.width
- height: parent.height
+ MouseArea {
anchors.fill: parent
- color: "gray"
- Image {
- id: notificationIcon
- width: 70
- height: 70
- anchors.left: parent.left
- anchors.leftMargin: 20
- anchors.verticalCenter: parent.verticalCenter
- source: ""
- }
-
- Text {
- id: notificationtext
- font.pixelSize: 25
- anchors.left: notificationIcon.right
- anchors.leftMargin: 5
- anchors.verticalCenter: parent.verticalCenter
- color: "white"
- text: qsTr("")
+ onClicked: {
+ if(switchBtn.enableSwitchBtn) {
+ var appName = homescreenHandler.getCurrentApplication()
+ if (container.state === 'normal') {
+ image.source = './images/fullscreen.png'
+ container.state = 'fullscreen'
+ touchArea.switchArea(1)
+ homescreenHandler.tapShortcut(appName, true)
+ container.opacity = 0.0
+ } else {
+ image.source = './images/normal.png'
+ container.state = 'normal'
+ touchArea.switchArea(0)
+ homescreenHandler.tapShortcut(appName, false)
+ container.opacity = 1.0
+ }
+ }
}
}
}
-
- Connections {
- target: homescreenHandler
- onShowNotification: {
- notificationIcon.source = icon_path
- notificationtext.text = text
- notificationItem.visible = true
- notificationTimer.restart()
+ function changeSwitchState(is_navigation) {
+ if(container.state === 'normal') {
+ if(is_navigation) {
+ switchBtn.enableSwitchBtn = true
+ image.source = './images/normal.png'
+ } else {
+ switchBtn.enableSwitchBtn = false
+ image.source = './images/normal_disable.png'
+ }
}
}
}
diff --git a/homescreen/src/homescreenhandler.cpp b/homescreen/src/homescreenhandler.cpp
index 3aaef26..4e3d0eb 100644
--- a/homescreen/src/homescreenhandler.cpp
+++ b/homescreen/src/homescreenhandler.cpp
@@ -23,7 +23,8 @@ void* HomescreenHandler::myThis = 0;
HomescreenHandler::HomescreenHandler(QObject *parent) :
QObject(parent),
- mp_hs(NULL)
+ mp_hs(NULL),
+ current_applciation("launcher")
{
}
@@ -79,17 +80,34 @@ void HomescreenHandler::init(int port, const char *token)
});
}
-void HomescreenHandler::tapShortcut(QString application_id)
+void HomescreenHandler::tapShortcut(QString application_id, bool is_full)
{
HMI_DEBUG("HomeScreen","tapShortcut %s", application_id.toStdString().c_str());
struct json_object* j_json = json_object_new_object();
struct json_object* value;
- value = json_object_new_string("normal");
+ if(is_full) {
+ value = json_object_new_string("fullscreen");
+ HMI_DEBUG("HomeScreen","fullscreen");
+ } else {
+ value = json_object_new_string("normal");
+ HMI_DEBUG("HomeScreen","normal");
+ }
json_object_object_add(j_json, "area", value);
-
mp_hs->showWindow(application_id.toStdString().c_str(), j_json);
}
+void HomescreenHandler::setCurrentApplication(QString application_name)
+{
+ HMI_DEBUG("HomeScreen","setCurrentApplication %s", application_name.toStdString().c_str());
+ current_applciation = application_name;
+}
+
+QString HomescreenHandler::getCurrentApplication()
+{
+ HMI_DEBUG("HomeScreen","getCurrentApplication %s", current_applciation.toStdString().c_str());
+ return current_applciation;
+}
+
void HomescreenHandler::onRep_static(struct json_object* reply_contents)
{
static_cast<HomescreenHandler*>(HomescreenHandler::myThis)->onRep(reply_contents);
diff --git a/homescreen/src/homescreenhandler.h b/homescreen/src/homescreenhandler.h
index 5dfe041..983056f 100644
--- a/homescreen/src/homescreenhandler.h
+++ b/homescreen/src/homescreenhandler.h
@@ -32,7 +32,9 @@ public:
void init(int port, const char* token);
- Q_INVOKABLE void tapShortcut(QString application_id);
+ Q_INVOKABLE void tapShortcut(QString application_id, bool is_full);
+ Q_INVOKABLE QString getCurrentApplication();
+ void setCurrentApplication(QString application_name);
void onRep(struct json_object* reply_contents);
void onEv(const string& event, struct json_object* event_contents);
@@ -46,6 +48,7 @@ signals:
void showInformation(QString info);
private:
LibHomeScreen *mp_hs;
+ QString current_applciation;
};
#endif // HOMESCREENHANDLER_H
diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp
index 939577f..176bcec 100644
--- a/homescreen/src/main.cpp
+++ b/homescreen/src/main.cpp
@@ -22,6 +22,7 @@
#include <QtQml/QQmlContext>
#include <QtQml/qqml.h>
#include <QQuickWindow>
+#include <QThread>
#include <qlibwindowmanager.h>
#include <weather.h>
@@ -32,6 +33,7 @@
#include "mastervolume.h"
#include "homescreenhandler.h"
#include "hmi-debug.h"
+#include "toucharea.h"
// XXX: We want this DBus connection to be shared across the different
// QML objects, is there another way to do this, a nice way, perhaps?
@@ -108,15 +110,24 @@ int main(int argc, char *argv[])
layoutHandler->endDraw(graphic_role);
});
- layoutHandler->set_event_handler(QLibWindowmanager::Event_ScreenUpdated, [layoutHandler, launcher](json_object *object) {
+ layoutHandler->set_event_handler(QLibWindowmanager::Event_ScreenUpdated, [layoutHandler, launcher, homescreenHandler, root](json_object *object) {
json_object *jarray = json_object_object_get(object, "ids");
+ HMI_DEBUG("HomeScreen","ids=%s", json_object_to_json_string(object));
int arrLen = json_object_array_length(jarray);
+ QString label = QString("");
for( int idx = 0; idx < arrLen; idx++)
{
- QString label = QString(json_object_get_string( json_object_array_get_idx(jarray, idx) ));
+ label = QString(json_object_get_string( json_object_array_get_idx(jarray, idx) ));
HMI_DEBUG("HomeScreen","Event_ScreenUpdated application: %s.", label.toStdString().c_str());
+ homescreenHandler->setCurrentApplication(label);
QMetaObject::invokeMethod(launcher, "setCurrent", Qt::QueuedConnection, Q_ARG(QString, label));
}
+ if((arrLen == 1) && (QString("navigation") == label)){
+ QMetaObject::invokeMethod(root, "changeSwitchState", Q_ARG(QVariant, true));
+ }else{
+ QMetaObject::invokeMethod(root, "changeSwitchState", Q_ARG(QVariant, false));
+ }
+
});
HomescreenHandler* homescreenHandler = new HomescreenHandler();
@@ -132,11 +143,14 @@ int main(int argc, char *argv[])
query.addQueryItem(QStringLiteral("token"), token);
bindingAddress.setQuery(query);
+ TouchArea* touchArea = new TouchArea();
+
// mail.qml loading
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("bindingAddress", bindingAddress);
engine.rootContext()->setContextProperty("layoutHandler", layoutHandler);
engine.rootContext()->setContextProperty("homescreenHandler", homescreenHandler);
+ engine.rootContext()->setContextProperty("touchArea", touchArea);
engine.rootContext()->setContextProperty("launcher", launcher);
engine.rootContext()->setContextProperty("weather", new Weather(bindingAddress));
engine.rootContext()->setContextProperty("bluetooth", new Bluetooth(bindingAddress));
@@ -145,11 +159,19 @@ int main(int argc, char *argv[])
QObject *root = engine.rootObjects().first();
QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
- QObject::connect(window, SIGNAL(frameSwapped()), layoutHandler, SLOT(slotActivateSurface()));
+
+ touchArea->setWindow(window);
+ QThread* thread = new QThread;
+ touchArea->moveToThread(thread);
+ QObject::connect(thread, &QThread::started, touchArea, &TouchArea::init);
+
+ thread->start();
QList<QObject *> sobjs = engine.rootObjects();
StatusBarModel *statusBar = sobjs.first()->findChild<StatusBarModel *>("statusBar");
statusBar->init(bindingAddress, engine.rootContext());
+ QObject::connect(window, SIGNAL(frameSwapped()), layoutHandler, SLOT(slotActivateSurface()));
+
return a.exec();
}
diff --git a/homescreen/src/toucharea.cpp b/homescreen/src/toucharea.cpp
new file mode 100644
index 0000000..1cf4384
--- /dev/null
+++ b/homescreen/src/toucharea.cpp
@@ -0,0 +1,36 @@
+#include "toucharea.h"
+#include "hmi-debug.h"
+
+TouchArea::TouchArea()
+{
+}
+
+TouchArea::~TouchArea()
+{
+
+}
+
+void TouchArea::setWindow(QQuickWindow *window)
+{
+ myWindow = window;
+}
+
+void TouchArea::init()
+{
+ bitmapNormal = QPixmap(":/images/AGL_HMI_Normal_Background.png").createHeuristicMask();
+ bitmapFullscreen = QPixmap(":/images/AGL_HMI_Full_Background.png").createHeuristicMask();
+ myWindow->setMask(QRegion(bitmapNormal));
+}
+
+void TouchArea::switchArea(int areaType)
+{
+ if(areaType == NORMAL) {
+ myWindow->setMask(QRegion(bitmapNormal));
+ HMI_DEBUG("HomeScreen","TouchArea switchArea: %d.", areaType);
+ } else if (areaType == FULLSCREEN) {
+ HMI_DEBUG("HomeScreen","TouchArea switchArea: %d.", areaType);
+ myWindow->setMask(QRegion(bitmapFullscreen));
+ }
+}
+
+
diff --git a/homescreen/src/toucharea.h b/homescreen/src/toucharea.h
new file mode 100644
index 0000000..69c6872
--- /dev/null
+++ b/homescreen/src/toucharea.h
@@ -0,0 +1,30 @@
+#ifndef TOUCHAREA_H
+#define TOUCHAREA_H
+
+#include <QBitmap>
+#include <QQuickWindow>
+
+enum {
+ NORMAL=0,
+ FULLSCREEN
+};
+
+class TouchArea : public QObject
+{
+ Q_OBJECT
+public:
+ explicit TouchArea();
+ ~TouchArea();
+
+ Q_INVOKABLE void switchArea(int areaType);
+ void setWindow(QQuickWindow* window);
+
+public slots:
+ void init();
+
+private:
+ QBitmap bitmapNormal, bitmapFullscreen;
+ QQuickWindow* myWindow;
+};
+
+#endif // TOUCHAREA_H