vertical sandbox/tiansen/vertical
authortiansen <tian_sen@dl.cn.nexty-ele.com>
Fri, 2 Nov 2018 12:40:38 +0000 (20:40 +0800)
committertiansen <tian_sen@dl.cn.nexty-ele.com>
Fri, 2 Nov 2018 12:40:38 +0000 (20:40 +0800)
29 files changed:
README.md
homescreen/homescreen.pro
homescreen/qml/MediaAreaBlank.qml
homescreen/qml/ShortcutArea.qml
homescreen/qml/ShortcutIcon.qml
homescreen/qml/StatusArea.qml
homescreen/qml/TopArea.qml
homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png
homescreen/qml/images/AGL_HMI_Full_Background.png [new file with mode: 0644]
homescreen/qml/images/AGL_HMI_Normal_Background.png [new file with mode: 0644]
homescreen/qml/images/Shortcut/shortcut.qrc
homescreen/qml/images/Shortcut/video.svg [new file with mode: 0644]
homescreen/qml/images/Shortcut/video_active.svg [new file with mode: 0644]
homescreen/qml/images/TopSection_NoText_NoIcons-01.png [new file with mode: 0644]
homescreen/qml/images/TopSection_NoText_NoIcons-01.svg [deleted file]
homescreen/qml/images/Utility_Logo_Background-01.png [new file with mode: 0644]
homescreen/qml/images/Utility_Logo_Background-01.svg [deleted file]
homescreen/qml/images/fullscreen.png [new file with mode: 0644]
homescreen/qml/images/images.qrc
homescreen/qml/images/normal.png [new file with mode: 0644]
homescreen/qml/main.qml
homescreen/src/homescreenhandler.cpp
homescreen/src/homescreenhandler.h
homescreen/src/main.cpp
homescreen/src/mastervolume.cpp
homescreen/src/mastervolume.h
homescreen/src/statusbarmodel.cpp
homescreen/src/toucharea.cpp [new file with mode: 0644]
homescreen/src/toucharea.h [new file with mode: 0644]

index 2c04a91..610164d 100644 (file)
--- a/README.md
+++ b/README.md
@@ -15,14 +15,14 @@ $ git clone git clone https://gerrit.automotivelinux.org/gerrit/staging/meta-hmi
 
 Then you can get the following recipe.
 
-* `meta-agl-demo/recipes-demo-hmi/homescreen`
+* `meta-hmi-framework/homescreen-2017`
 
 
 **Bitbake**
 
 ```
 $ source meta-agl/scripts/aglsetup.sh -m m3ulcb agl-demo agl-devel agl-appfw-smack agl-hmi-framework
-$ bitbake homescreen
+$ bitbake homescreen-2017
 ```
 
 Instructions for building HomeScreen app
@@ -54,5 +54,5 @@ Launch HomeScreen App:
 Usage:
 
 ```
-afm-util start homescreen
+afm-util start homescreen-2017
 ```
index 0e5bb58..9c36660 100644 (file)
@@ -30,14 +30,16 @@ SOURCES += \
     src/statusbarserver.cpp \
     src/applicationlauncher.cpp \
     src/mastervolume.cpp \
-    src/homescreenhandler.cpp
+    src/homescreenhandler.cpp \
+    src/toucharea.cpp
 
 HEADERS  += \
     src/statusbarmodel.h \
     src/statusbarserver.h \
     src/applicationlauncher.h \
     src/mastervolume.h \
-    src/homescreenhandler.h
+    src/homescreenhandler.h \
+    src/toucharea.h
 
 OTHER_FILES += \
     README.md
index c3a5f89..2b888c8 100644 (file)
@@ -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 {
index e0c9182..a2d98c8 100644 (file)
@@ -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
@@ -36,11 +43,11 @@ Item {
             application: 'mediaplayer@0.1'
         }
         ListElement {
-            name: 'HVAC'
-            application: 'hvac@0.1'
+            name: 'Video'
+            application: 'video@0.1'
         }
         ListElement {
-            name: 'Navigation'
+            name: 'navigation'
             application: 'navigation@0.1'
         }
     }
@@ -66,7 +73,7 @@ Item {
                         console.warn(model.application)
                         console.warn("app cannot be launched!")
                     }
-                    homescreenHandler.tapShortcut(model.name)
+                    homescreenHandler.tapShortcut(model.name, false)
                 }
             }
         }
index 1100a7c..8dfee26 100644 (file)
@@ -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
index 3f2b280..fb37ca0 100644 (file)
@@ -1,7 +1,6 @@
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
- * Copyright (c) 2017, 2018 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -117,38 +116,36 @@ 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"
                 property bool connStatus: false
                 Connections {
                     target: bluetooth
-
-                    //{"event":"Bluetooth-Manager\/connection","data":{"Status":"connected","Address":"88:BD:45:EC:3A:E6"},"jtype":"afb-event"}
-                    //{"event":"Bluetooth-Manager\/connection","data":{"Status":"disconnected","Address":"88:BD:45:EC:3A:E6"},"jtype":"afb-event"}
                     onConnectionEvent: {
-                        // console.log("bluetooth connection is:", data.Status)
-                        // console.log("onConnectionEvent bt_icon.deviceName:",bt_icon.deviceName, "bt_icon.connStatus:", bt_icon.connStatus)
-                        if (data.Status == "connected"){
+                        console.log("onConnectionEvent", data.Status)
+                        if (data.Status === "connected") {
                             bt_icon.connStatus = true
-                        } else if (data.Status == "disconnected"){
+                        } else if (data.Status === "disconnected") {
                             bt_icon.connStatus = false
                         }
                     }
-                    //{"event":"Bluetooth-Manager\/device_updated","data":{"Address":"88:BD:45:EC:3A:E6","Name":"SG02","Paired":"True","Connected":"True","AVPConnected":"True","Metadata":{"Title":"","Artist":"","Status":"stop}
-                    onDeviceUpdatedEvent: {
-                        // console.log("bluetooth onDeviceUpdatedEvent date is:", data.Name, "Paired: ", data.Paired, "Connected: ", data.Connected)
-                        // console.log("onDeviceUpdatedEvent bt_icon.deviceName:",bt_icon.deviceName, "bt_icon.connStatus:", bt_icon.connStatus)
-                        if ( data.Paired == "True" &&  data.Connected == "True" ){
-                            bt_icon.deviceName = data.Name
+                    onDeviceUpdateEvent: {
+                        console.log("onConnectionEvent", data.Paired)
+                        if (data.Paired === "True" && data.Connected === "True") {
+                            bt_icon.deviceName = data.name
                             bt_icon.connStatus = true
                         } else {
-                            if(bt_icon.deviceName == data.Name)
+                            if(bt_icon.deviceName === data.Name)
                             {
                                 bt_icon.connStatus = false
                             }
@@ -156,11 +153,12 @@ Item {
                     }
                 }
             }
+
             Repeater {
                 model: StatusBarModel { objectName: "statusBar" }
                 delegate: Image {
                     Layout.preferredWidth: 77
-                    Layout.preferredHeight: 73
+                    Layout.preferredHeight: 55
                     source: model.modelData
                     fillMode: Image.PreserveAspectFit
                 }
index 2a75cf8..9cff3ed 100644 (file)
@@ -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 {
index 357c204..a4e026c 100644 (file)
Binary files a/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png and b/homescreen/qml/images/AGL_HMI_Blue_Background_NoCar-01.png 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 (file)
index 0000000..8b11e20
Binary files /dev/null and b/homescreen/qml/images/AGL_HMI_Full_Background.png 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 (file)
index 0000000..c686067
Binary files /dev/null and b/homescreen/qml/images/AGL_HMI_Normal_Background.png differ
index 5d67341..f5b3bca 100644 (file)
@@ -8,5 +8,7 @@
         <file>mediaplayer_active.svg</file>
         <file>navigation.svg</file>
         <file>navigation_active.svg</file>
+        <file>video.svg</file>
+        <file>video_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 (file)
index 0000000..e368922
--- /dev/null
@@ -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 (file)
index 0000000..344385f
--- /dev/null
@@ -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,iVBORw0KGgoAAAANSUhEUgAAAMMAAADZCAYAAACdMoRXAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
+WXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gUOCS0TFCLI1AAAE5JJREFUeNrtneuTFNd5xp/3Pd1z
+3VmWZVlu5iKEJDDYMsa2ZCPFVtmO/SEfUmVXpSr5R5LKX5T4g5PYqbLjlCNFNuhGLAsjCTACCZbL
+wsLeZ6Yv582H7t6ZgUUISzBLz/OrkrZ3trunz+F9+n3O6XNOA4QQQgghhBBCCCGEEEIIIYQQQggh
+hBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQ
+QgghhBBCCCGEkM+HwExYDYQAAQCKgZBcDMpqIISZgRCKgRDaJEKYGQh5gBh2UgyEZGKIb9ImEQIA
+gW1lZiAEAAJPm0RILoZ52iRCMps0wcxASCYG2iRCcjEs0SYRkomhxcxACMAn0IT0ZYYV2iRCMjE0
+mRkIoU0iZCAztGmTCGFmIKRfDLU6xUBIZpM6tEmEZGKgTSIkbzPUKAZCsszQpU0CAN8xh5WoLkvt
+hpjWfOrDwEys2MFlPxQB4LKeBwAwA9QBIgBgsHxXMWQ5V4vjsl/EDE4Ac8XdKDug+B5DkH2VAk6y
+8xgs+8x6fzABVAGV/Bryr4Nk53PFdedf5PJNUZj38KnTdhtpZyEM2quGLiNgxHuTfDsJk0sL+3Wp
+e1gTO6ip3yOGCVGpOJgTZEGuIlmwiUA0/yl9f5MiEPPPke+n2bZDb/9iHy32yz8XkTy447Xfi+8X
+ZN+hmeLyz7PvUO3fRyD5PpofrJL2rjsBVMUEgHqNzPyqj/21xOn5ZciZq4JzV0N3Z3QzQ3X0xJAu
+JFV/fv55Wex8V6P0mAK7RaQpIlWFqfi+AC2CD/m2ydrvxY1/LagtzwDFti/Egb7z9J1PeucRAGrF
+OQeFUIiu/zjI4DGFeBQ2INY14Vm+nf8Ub8UxMVLfHhOdnRL78Gkvr31c0RMfO9watbiQVtcOjlKB
+47N39trsyo81Sr+vZk+LSANZUCyKw3UVzEF1RVVjEYWIzwJZ8yBWXbt7FBlBtBe8WtzVtRfEKAJV
++8Wgg0GtgKqu3fm1sFcq+Tny82Mwo6AQ7UC2KrKH9j4DIM5BzAAx51SrYrY5VJl2wFYRcRBLoDob
+wd6ad8Ev31W8tQrEIyOGsa4dGoWCWmIa/3H2KBajn2rsXxaxSRFLxOkHCN07Ug3OSMNdt0q4IBVE
+qi4170XE1gLd8jtwz6pkPr64gyNvN4g4iOiApcHanX6t6nseH727+MC50bNkA+eynoiK//WfW/pt
+W26GxXIhqxoEUhGE1dSaDfgtTfMHqimOhSrPB8AkRGJTOb3o9N9Oe/uvG04WR0UMXy69EKJUo/du
+vYD5zj9oasdFUBGHC6i438rm2uuyuXrJNtcXtRGOzF2wr19AJ5OkOWU6vc3b0ZbgB1XgBVVUvODi
+kujPTsN+cVX19ig0oEvfmxR9cPuozXf+XhP/XQjMQvd7jFf/XXY039SdY7f7btAj17OWArgZBCs3
+gYszcXLtgOj5Hd4u14EfOcNT42J/9xWBQewXV00Wyt2ALnlvUnxhcbe/1f5bjf1xy4TwmkzW/8U9
+N/mO1FzMh449FsKgewr407Metw94v9QS/MTB9jYgx7YZ3p4BSm2XSt216pfiajKz8H2JkpcNqCLQ
+N3Si8rPgyNRb4sSDQliXc4prKeTnB82HVcP+ZZGTt1LMwZW7voK8x7CcWeHi/GG04+8JsBVOLsl4
+9T/doclTEshIWqKH4YKTGy7Bz2uq9RnI1bkAK2WvsyAs6d3Rr0ahv91+Eak9YyKJVNzvK3s3vxk2
+KgkzwmfjYuBmiu1wBOqstG2G7uXl3dZNnxdDy1Q+1PHayWB7bY5tBPJpbYZSpr70TucZePsSIJCq
+OxNsa1ykNSIjlxmsG6tvJwfgbQIiS1ILzrup+jyzAnlQZihdgPgOapbYdgANU3wiNXdDa45tBTJ6
+Nsm3kzrMJgAonMxLPVyiRSIPtklSQpvkk6p5C/PxOW2puKiM5SRfdGaIS3jHjCwUyea3CNTgDcMq
+pyWp+uWkYd20po1wWcaCrkhvzhDZSGIoY2YQCMyyxGC++GQo5UznOpuji/M/0Cg96JrhGbdz/E2Z
+rl1F4DzDb6OJISifGET7Qr+YWTOkcqYrybStJC8h9Ucl8cc1unMMi7Vf+X2bTmlNOxTFRmozJOWz
+SWZQy/tRDRAYdFjltG7cMPNjEINAGhL54zrXOVBpp6+m02P/nUxXLiIMKYgNkRnK2d14ty2SoZXT
+vMLMwQADIi+WhN52uE7yk8r1xUPWrv2qPd08kY4Fy1BlW4I26Qvm7tGVChlaOVWLWfpt1NzvpBn+
+2TrJ98RwyKX2vC529laT9HA0Vf/14vbmB9JbKIPQJn0RRv2urGAiQ7NJtjYrNPJVdz49vPU/cHnx
+nFuIfmRJ8m0xbA666Y+rs+1naivpb5an6q+vNsMNN6usDoR1QS1JkXYVURdIypcZytj/LsWMYruf
+bXrM17KWoSAVl6Z7xt9vryYzdn3ljHbivxZvR9Tbc812vKsxmx5ZbVV/fXNL7Y+muiECrmoIvq74
+zjbDKz7E8jXg1Tc9TpVODEEJJ2x4tzaHHiLZPPhhlTMWiBdI1pJ3CBwEzhlqbj5pVf6nM7t8wS10
+X3GR/ysx2xYm9nJtqftUK/Gvzm+uvbbQDGY2QMNSxgw7G8A3vWF+THCmjHETWFpCm+T7ymR579Kw
+ymkQ+Oz5t4ih/zpMJelubV5Kxhv/On5r+bx20x+EZkcDw75qlP60fmf12YlO9bczzeBUHLr2sKoz
+Xw5KxRAiG9zpzJcvbsrbm3TvqixDsklr32sm/YvDFI19tbSB5YUdrTejpc7Hspwc1zj5bmDYW03w
+rVo72juWpM/daYSvzTTCC0OuT8PaQjUlzAylFIPcuzzREMspfRnrvtfhQ41XJhuX40byy80LnY82
+xf6Vhtk3AsiuWmp/02zH+zd5/9qVRvXtRcXC0Mrw6Z898WIo42hOuUsbOrRyDghT5EHXEdWC1Zuu
+/m67k1yd6iTnN6X2Ugg7WIN8vZb4XZva3Wdvhu71jwJ31qs8rga29tdpvs5x+WxSKSf3ZEvJrWUE
+y/8bki6z5wxiAjF8lutIQ5cuhO5apxb8Jmqnl6ai+OUm8M0asL3i/Q8bseydFPn9Jx5vXwvc7GNo
+M9xTf0ab9GRmhqG2Gfq/Nxs8+Jmvoxu69hWnp5divb4zSj/a4u2lBvDlmuArNe+3b3Ly1Bb4V89D
+zz7Kfv/7CKGEYijjUjHaX6Y8S8jQbZLlC6Q+1HWYE8y74FYnkNe6Ca7sTNMftoBvVoGtVcgr+wwt
+7+DfN5x9lDVaLDCOwUXJmRmeuN4kbJDMoH95w7MTuO6FAO+32raj6f1zgDQVqFQEe5vA5CMu34hk
+hlGwSRhy16oMNKD/ousIU1/dGdn+ZuqPqGATAMTA3DLk1CzwyWMQgzygjkvRgC53b1JukYZVTltb
+PF6KASIPfR0TnWR6V+yf35L67zQcDomotWEfLkLfuGR4a8Yw+yh7dyx/x0l//ZYxbkbEJslwM4MV
+QSUPdUetRUlzquMPbI2TF1uGoxUnW7zJ7SWRP9x0evKi0w/biu5jKBtt0hMshQ3zkEiKN4YYLHvr
+4YOvQ1MftFbTbVOd+NimxL/YUDkgTqIu8P5S4E5erbj/mw305mMs10Zqgz1SMZTQJq078VOHJk0r
+gufBD/9qK9H4ptXk4OZ2+p0a7KuhSj11Mrsa6B/mKu6NK43wXJq9VuFxlqffJhXPHGiTnsgG9NDH
+JhXDeXob90Rb7Kv15Wj75FL8Qj2OX6iq7hQnnY6T0ysVd+JaI3x3peIWhpTlRmM4hpawUHcVSKT3
+fsJhXEsuRIPA33sd3iTopq3m3OqRsdXk5ZrhcOBEE5EbUcW9s9CsnLjVqlxEdiseShn0Lls0zPp8
+tJmhhENxYdDeKwLzlqsf4hDuYsCnH7wOidJquBDtaMy3v12L028FIlsRyGrX6bnVZvj63ETtvcRp
+e9j/RpY9xuzrCMgWWSifGLSENknXsUk67CHcYnAKKMSSVHU1aVVudr5aW45eCtL0kAYuTSs6E9fd
+O4ub6yeXW5WZDWRH5K4rkTLOkCzptM97/tmGOO0zH7jgoTCrWBRX5VZnT+VW53jYTY45kQk4W40r
+7k/RZO1/F6cbZ0yQbjBPLnlHQJYZpKS9SSWe6SZFTofJ0Ga6mS88ktX9UnzQPrgzFqxGXxOP/eI0
+SWv6STxeO9mZarwVjVXm8jkPG+rfxAC1PpsEg1gpbZIruU0q7szDKmeg2ZJJhop2km9IlBwVlRCh
+W44b4R9tW/13ne1jZz+tp2kD9Ulk3apS0t4kjMY7C4aW1kXEJB9eLd4rRFNfdReSidqJdM+mU74Z
+LG6gtsFnqr/yPoEuo00y6ZuZJVkPzpDKKYF0JHQLSBOYk9toVd5Nd7VOJNvGPhaBPSH1f49NAm3S
+E2ST+kvlIMMqp5uq37GV+IQtxZdtsnrJ7xr7s1a1LZ9jOPfQM6twbNKTZYqK9rMITIY3UE9qrhs+
+O3EaiX8fThMJ1D8BtujeGvWQbGyVwBtQyq5VK+VDN82arABgFiCVIa7zky+YFGar4z2J9S3eB6Lq
+sgfpZibiuW7Sk0IoCRxiGADvaxbFVfDlhn8xVacVB6tBRD0kjgVRMR69XGIo4RNobVQiCdyySeIt
+QcsiP1bKJ+2PiYa3RgC/ySBIRDptyGoZ67OUY5MkkFRqbs5WpCNpusmvxFPWTqpSDWKG9sPTMkzW
+RKYAQQxZXDAslLI3SUtqH9x49Zq/01lGimm0kz22nJxx1WCOof2QWdagW4CdFWDKDGlHcHPBsFTO
+UasltQ/BVP1aem1l1pJo2rfjfentlS8FW2u3Gd4Px1bD1GZvT4fAeAzcvG12pa0SgUO4n6DMMFGb
+l1blI+sm+yTy2/yt9pF0S/uam6wzO3zWrADol8yebYrsA4AVwcwNyJWyxkxph2OICsIdzXPRUvSM
+tJNDthwfTGaWr0kjfFNrQZeh/mD2GZ6aNnu+AmzpiszNQs5eN8yVNWaCMveyBNub19PbndPp9ZVp
+SdItfm71WFJ1y+HTE+9JqCnD/f7sALbtS/wLTeCAAekC5NxlxXlvG3pA4eeLFytpysvSgyDYPf6h
+byfTuNN+Ed10j7+2cjwWkWBP6wOpMkOsxy6znc+YfXsC+IoCwRJw/rLhvRsp5oHyxkvpR6268cpS
+uGf8VJL4pix2viadZL9dWw7TKBmXna33dVP1tqjwDZsAGmb1XYa9e7z/+oTgy05QXYVcvgx5+yPY
+pYGptKUUgyv/w6hgR+MGzJ9MP4ZgsXtEusluzK6OWyfdbltqZzFRuYqx6pJUXTRqAnBmrpn65mZg
+y7YUT08aDo4BuwHICuTjK4G+cVbsg1hko82+ewRiKLNNGmg/jF2F6u/8J4ttLEaHkdqkzne/JavJ
+ftwKLkszvGr14LZUtC2BxlDJBtR5y16vAMCkN/dRinn+RYRo/qn0fESxepj0reAkAwf1TSYWQe+v
+vWOK75FB9zfwy8CrifJ9VeTe/UUh5gEVcQJXSa1WB8Zb5reNm+yuw3Y6kTARdFeAC1ecO/Vnw7kY
+EpfxIds9rrrVtX8cpTuhX+y0/JWVgzbfOezayS4BxrI35SKFkxUX6IqodMXBi2gemLI2j7R4qa5A
+19ZLUS2CTtaEk+0nUOkFYyYUydeuKfaTwXPmYsqHeOfvVO8TWP855a7vBPK/ydp5Ifk50BuHLZkY
+gsBQD0RaoaAqAEwligVz8yrnL6ucvqIyUywDOApIq2v/NGrWwMzEbra3YXb1AJajfRL7reKtKd6q
+TuB6AdoLPIH0BVrv59pnRbAXQaj5NvqPHTx+8Hy9Y7VfIP2f4a5zoH/fu67nPsf275+9Lh6RV2nH
+wPyy6swtlfOXnX7SEXRGLS5krGv/PMqNRj/fnZCF7rQsR9s0SjdLamNqFsCsTxQ6eLfuC7TMIfVt
+FytsqazZHMW9QiiCuRAF7hKe9NbuBlx2Xu1bkqyXBXqWaEAA+dJf6wgmX+xSklTRiUQWVpzenBe5
+flNsLlYd2fFbozIH+r7oRHUBE9UFAOfT1Jyl5tSbQ+IdYOv4dFkTxcBdxfqMe74exnoVqwrY2mkz
+G6b5puHu47SvrdH/Zehbqs9g/ZOSJWvbFJeug6/ERqYGMw+kiZMkhqWydvUPt0o4xVDmNOnEixMP
+IAbcoLW6z/YTWtK+rdEWwN1iUFYDISUewk0IbRIhtEmEMDMQ8sWIwSgGQvLM4GmTCMnEwCVUCGGb
+gZBBMRhtEiG0SYTQJhGyjhiMvUmE0CYRQptEyLpioE0iJBMDh3ATwjYDIbRJhKwrBo5aJYQ2iRDa
+JELWFwNtEiG0SYQMioFDuAmhTSJkUAxCMRBCm0RIvxj40I0QthkIuUcMtEmEgEO4CaFNImS9BjRt
+EiHMDIRQDISsKwbaJEKYGQihGAhZRwwcm0RILgaOWiWENokQ2iRC1hOD0SYRQptEyIAYlDaJkDwz
+cKkYQvI2A20SIXlm4PKShNAmETIoBtokQmiTCGFmIIRtBkI+TQx86EYIbRIhg2LgQD1CaJMIoU0i
+ZD0xcD4DIbkYOISbkCIz0CYRwjYDIXeLgTaJEGYGQigGQmiTCGFmIIRiIIQ2iRBmBkIoBkI+lxg4
+NomQXAwctUrImk16n9VACCCtrhmrgZAsM5xjNRAC/D8DlbvEcx9iPAAAAABJRU5ErkJggg==
+"
+     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 (file)
index 0000000..cf9ec4e
Binary files /dev/null and b/homescreen/qml/images/TopSection_NoText_NoIcons-01.png 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 (file)
index 6841001..0000000
+++ /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 (file)
index 0000000..21a602d
Binary files /dev/null and b/homescreen/qml/images/Utility_Logo_Background-01.png 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 (file)
index c289805..0000000
+++ /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 (file)
index 0000000..3bb9ef0
Binary files /dev/null and b/homescreen/qml/images/fullscreen.png differ
index 37ad676..593167c 100644 (file)
@@ -1,10 +1,14 @@
 <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>
     </qresource>
 </RCC>
diff --git a/homescreen/qml/images/normal.png b/homescreen/qml/images/normal.png
new file mode 100644 (file)
index 0000000..34a9c65
Binary files /dev/null and b/homescreen/qml/images/normal.png differ
index 96a1950..c218057 100644 (file)
@@ -26,13 +26,14 @@ Window {
     width: container.width * container.scale
     height: container.height * container.scale
     title: 'HomeScreen'
+    color: "#00000000"
 
     Image {
         id: container
         anchors.centerIn: parent
         width: 1080
         height: 1920
-        scale: screenInfo.scale_factor()
+        scale: 1.0
         source: './images/AGL_HMI_Blue_Background_NoCar-01.png'
 
         ColumnLayout {
@@ -60,5 +61,95 @@ Window {
                 Layout.preferredHeight: 215
             }
         }
+
+        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
+            }
+        }
+
+    }
+    Item {
+        id: switchBtn
+        anchors.right: parent.right
+        anchors.rightMargin: 20
+        anchors.top: parent.top
+        anchors.topMargin: 25
+        width: 35
+        height: 35
+        z: 1
+
+        MouseArea {
+            anchors.fill: parent
+            property string btnState: 'normal'
+            Image {
+                id: image
+                anchors.fill: parent
+                source: './images/normal.png'
+            }
+            onClicked: {
+                var appName = homescreenHandler.getCurrentApplication()
+                if (btnState === 'normal') {
+                    image.source = './images/fullscreen.png'
+                    btnState = 'fullscreen'
+                    container.state = 'fullscreen'
+                    touchArea.switchArea(1)
+                    homescreenHandler.tapShortcut(appName, true)
+                    if (appName === 'navigation' || appName === 'browser') {
+                        container.opacity = 0.0
+                    }
+                } else {
+                    image.source = './images/normal.png'
+                    btnState = 'normal'
+                    container.state = 'normal'
+                    touchArea.switchArea(0)
+                    homescreenHandler.tapShortcut(appName, false)
+                    if (appName === 'navigation' || appName === 'browser') {
+                        container.opacity = 1.0
+                    }
+                }
+            }
+        }
     }
 }
index 5da8b9e..ac50451 100644 (file)
@@ -22,7 +22,8 @@ void* HomescreenHandler::myThis = 0;
 
 HomescreenHandler::HomescreenHandler(QObject *parent) :
     QObject(parent),
-    mp_hs(NULL)
+    mp_hs(NULL),
+    current_applciation("launcher")
 {
 
 }
@@ -48,13 +49,34 @@ void HomescreenHandler::init(int port, const char *token)
             json_object_object_get(object, "display_message"));
         HMI_DEBUG("HomeScreen","set_event_handler Event_OnScreenMessage display_message = %s", display_message);
     });
+}
 
+void HomescreenHandler::tapShortcut(QString application_name, bool is_full)
+{    
+    HMI_DEBUG("HomeScreen","tapShortcut %s", application_name.toStdString().c_str());
+    struct json_object* j_json = json_object_new_object();
+    struct json_object* value;
+    if(is_full) {
+        value = json_object_new_string("fullscreen");
+        HMI_DEBUG("HomeScreen","tapShortcut fullscreen");
+    } else {
+        value = json_object_new_string("normal");
+        HMI_DEBUG("HomeScreen","tapShortcut normal");
+    }
+    json_object_object_add(j_json, "area", value);
+    mp_hs->showWindow(application_name.toStdString().c_str(), j_json);
 }
 
-void HomescreenHandler::tapShortcut(QString application_name)
+void HomescreenHandler::setCurrentApplication(QString application_name)
 {
-    HMI_DEBUG("HomeScreen","tapShortcut %s", application_name.toStdString().c_str());
-    mp_hs->tapShortcut(application_name.toStdString().c_str());
+    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)
index c18d7a0..539d380 100644 (file)
@@ -32,7 +32,9 @@ public:
 
     void init(int port, const char* token);
 
-    Q_INVOKABLE void tapShortcut(QString application_name);
+    Q_INVOKABLE void tapShortcut(QString application_name, 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);
@@ -40,8 +42,14 @@ public:
     static void* myThis;
     static void onRep_static(struct json_object* reply_contents);
     static void onEv_static(const string& event, struct json_object* event_contents);
+
+signals:
+    void notification(QString id, QString icon, QString text);
+    void information(QString text);
+
 private:
     LibHomeScreen *mp_hs;
+    QString current_applciation;
 };
 
 #endif // HOMESCREENHANDLER_H
index 620c869..ff30e15 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
- * Copyright (c) 2017, 2018 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -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?
@@ -75,7 +77,7 @@ int main(int argc, char *argv[])
     parser.addVersionOption();
     parser.process(a);
     QStringList positionalArguments = parser.positionalArguments();
-
+    
     int port = 1700;
     QString token = "wm";
 
@@ -93,12 +95,11 @@ int main(int argc, char *argv[])
 
     ApplicationLauncher *launcher = new ApplicationLauncher();
     QLibWindowmanager* layoutHandler = new QLibWindowmanager();
+    HomescreenHandler* homescreenHandler = new HomescreenHandler();
     if(layoutHandler->init(port,token) != 0){
         exit(EXIT_FAILURE);
     }
 
-    AGLScreenInfo screenInfo(layoutHandler->get_scale_factor());
-
     if (layoutHandler->requestSurface(QString("HomeScreen")) != 0) {
         exit(EXIT_FAILURE);
     }
@@ -107,19 +108,18 @@ int main(int argc, char *argv[])
         layoutHandler->endDraw(QString("HomeScreen"));
     });
 
-    layoutHandler->set_event_handler(QLibWindowmanager::Event_ScreenUpdated, [layoutHandler, launcher](json_object *object) {
+    layoutHandler->set_event_handler(QLibWindowmanager::Event_ScreenUpdated, [layoutHandler, launcher, homescreenHandler](json_object *object) {
         json_object *jarray = json_object_object_get(object, "ids");
         int arrLen = json_object_array_length(jarray);
         for( int idx = 0; idx < arrLen; idx++)
         {
             QString label = QString(json_object_get_string(    json_object_array_get_idx(jarray, idx) ));
-            HMI_DEBUG("HomeScreen","Event_ScreenUpdated application: %s.", label.toStdString().c_str());
+            HMI_DEBUG("HomeScreen","Event_ScreenUpdated application11: %s.", label.toStdString().c_str());
+            homescreenHandler->setCurrentApplication(label);
             QMetaObject::invokeMethod(launcher, "setCurrent", Qt::QueuedConnection, Q_ARG(QString, label));
         }
     });
 
-    HomescreenHandler* homescreenHandler = new HomescreenHandler();
-    homescreenHandler->init(port, token.toStdString().c_str());
 
     QUrl bindingAddress;
     bindingAddress.setScheme(QStringLiteral("ws"));
@@ -131,23 +131,35 @@ 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("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));
-    engine.rootContext()->setContextProperty("screenInfo", &screenInfo);
     engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
 
     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()));
+
+    homescreenHandler->init(port, token.toStdString().c_str());
+
     return a.exec();
 }
index 9fb92a9..5e1e450 100644 (file)
@@ -16,7 +16,7 @@
 
 #include "mastervolume.h"
 
-void MasterVolume::setVolume(int volume)
+void MasterVolume::setVolume(pa_volume_t volume)
 {
        int volume_delta = volume - m_volume;
        m_volume = volume;
index bca6356..645968a 100644 (file)
@@ -17,6 +17,8 @@
 #include <QtCore/QObject>
 #include <QQmlEngine>
 
+#include <pulse/pulseaudio.h>
+
 class MasterVolume : public QObject
 {
        Q_OBJECT
@@ -31,7 +33,7 @@ class MasterVolume : public QObject
                ~MasterVolume() {}
 
                uint32_t getVolume() const { return m_volume; }
-               void setVolume(int volume);
+               void setVolume(pa_volume_t volume);
 
        public slots:
                void changeExternalVolume(int volume);
index 5e63b7d..c093ceb 100644 (file)
@@ -1,6 +1,5 @@
 /*
  * Copyright (C) 2016 The Qt Company Ltd.
- * Copyright (C) 2017, 2018 TOYOTA MOTOR CORPORATION
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 
 #include "statusbarmodel.h"
 #include "statusbarserver.h"
+#include <QDebug>
+#include "hmi-debug.h"
 
 #include <QtDBus/QDBusConnection>
 
 #include "network.h"
 
+
 class StatusBarModel::Private
 {
 public:
@@ -65,6 +67,7 @@ StatusBarModel::~StatusBarModel()
 
 void StatusBarModel::init(QUrl &url, QQmlContext *context)
 {
+    HMI_DEBUG("HomeScreen", "StatusBarModel::init");
     d->network = new Network(url, context);
     context->setContextProperty("network", d->network);
 
@@ -77,6 +80,7 @@ void StatusBarModel::init(QUrl &url, QQmlContext *context)
 
 void StatusBarModel::setWifiStatus(bool connected, bool enabled, int strength)
 {
+    HMI_DEBUG("HomeScreen", "StatusBarModel::setWifiStatus");
     if (enabled && connected)
         if (strength < 30)
             d->server.setStatusIcon(0, QStringLiteral("qrc:/images/Status/HMI_Status_Wifi_1Bar-01.png"));
@@ -111,7 +115,6 @@ int StatusBarModel::rowCount(const QModelIndex &parent) const
     if (parent.isValid())
         return 0;
 
-    // Delete bluetooth because use agl-service-bluetooth.
     return StatusBarServer::SupportedCount - 1;
 }
 
@@ -123,9 +126,9 @@ QVariant StatusBarModel::data(const QModelIndex &index, int role) const
 
     switch (role) {
     case Qt::DisplayRole:
-        if (index.row() == 0){
+        if (index.row() == 0) {
             ret = d->iconList[StatusBarServer::StatusWifi];
-        }else if (index.row() == 1){
+        } else if (index.row() == 1) {
             ret = d->iconList[StatusBarServer::StatusCellular];
         }
         break;
diff --git a/homescreen/src/toucharea.cpp b/homescreen/src/toucharea.cpp
new file mode 100644 (file)
index 0000000..1cf4384
--- /dev/null
@@ -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 (file)
index 0000000..69c6872
--- /dev/null
@@ -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