diff options
author | 2018-11-22 14:30:38 +0900 | |
---|---|---|
committer | 2018-11-22 14:30:38 +0900 | |
commit | fd1fbfdbdddaa659e8148e4ecce7ec33fb8b8ae0 (patch) | |
tree | cd90e39ae3086e7bb5041cd9f7e82bf57e6d74de | |
parent | ba7475368d0b04978e912c2bec8ce2ede1d5f52a (diff) |
dynamic update applist
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | launcher/launcher.pro | 8 | ||||
-rw-r--r-- | launcher/qml/Launcher.qml | 18 | ||||
-rw-r--r-- | launcher/qml/images/images.qrc | 4 | ||||
-rw-r--r-- | launcher/qml/images/sdl_active.svg | 140 | ||||
-rw-r--r-- | launcher/qml/images/sdl_inactive.svg | 83 | ||||
-rw-r--r-- | launcher/qml/images/webbrowser_active.svg | 368 | ||||
-rw-r--r-- | launcher/qml/images/webbrowser_inactive.svg | 311 | ||||
-rw-r--r-- | launcher/src/appfwhandler.cpp | 212 | ||||
-rw-r--r-- | launcher/src/appfwhandler.h | 76 | ||||
-rw-r--r-- | launcher/src/applicationmodel.cpp | 68 | ||||
-rw-r--r-- | launcher/src/applicationmodel.h | 1 | ||||
-rw-r--r-- | launcher/src/main.cpp | 5 | ||||
-rw-r--r-- | package/config.xml | 4 |
14 files changed, 1287 insertions, 15 deletions
@@ -1 +1,3 @@ -build/ +build +*.pro.user +app/config.tests diff --git a/launcher/launcher.pro b/launcher/launcher.pro index 7fd1319..1130052 100644 --- a/launcher/launcher.pro +++ b/launcher/launcher.pro @@ -18,7 +18,7 @@ TARGET = launcher QT = qml quick dbus websockets CONFIG += c++11 link_pkgconfig DESTDIR = $${OUT_PWD}/../package/root/bin -PKGCONFIG += qlibwindowmanager qlibhomescreen +PKGCONFIG += qlibwindowmanager qlibhomescreen libafbwsc include(../interfaces/interfaces.pri) @@ -26,12 +26,14 @@ SOURCES += \ src/main.cpp \ src/applicationmodel.cpp \ src/appinfo.cpp \ - src/applicationlauncher.cpp + src/applicationlauncher.cpp \ + src/appfwhandler.cpp HEADERS += \ src/applicationlauncher.h \ src/applicationmodel.h \ - src/appinfo.h + src/appinfo.h \ + src/appfwhandler.h OTHER_FILES += \ README.md diff --git a/launcher/qml/Launcher.qml b/launcher/qml/Launcher.qml index 6756589..7ad3f38 100644 --- a/launcher/qml/Launcher.qml +++ b/launcher/qml/Launcher.qml @@ -59,6 +59,14 @@ ApplicationWindow { height: grid.cellHeight } + Connections { + target: appfwhandler + onApplistupdate: { + console.warn("applist update in Launcher.qml") + applicationModel.updateApplist(info); + } + } + MouseArea { id: loc anchors.fill: parent @@ -67,15 +75,15 @@ ApplicationWindow { property int index: grid.indexAt(loc.mouseX, loc.mouseY) x: 62 y: 264 - anchors.rightMargin: 0 - anchors.bottomMargin: 0 - anchors.leftMargin: 0 - anchors.topMargin: 0 onPressAndHold: currentId = applicationModel.id(newIndex = index) onReleased: { + if(loc.index < 0) { + return + } if (currentId === '') { pid = launcher.launch(applicationModel.id(loc.index)) if (1 < pid) { + homescreenHandler.tapShortcut(applicationModel.name(loc.index)) } else { console.warn("app cannot be launched!") @@ -83,7 +91,7 @@ ApplicationWindow { } else { currentId = '' } - homescreenHandler.tapShortcut(applicationModel.name(loc.index)) + //homescreenHandler.tapShortcut(applicationModel.name(loc.index)) } onPositionChanged: { if (loc.currentId === '') return diff --git a/launcher/qml/images/images.qrc b/launcher/qml/images/images.qrc index b3a1cf6..64b5f9c 100644 --- a/launcher/qml/images/images.qrc +++ b/launcher/qml/images/images.qrc @@ -27,9 +27,13 @@ <file>video_inactive.svg</file> <file>browser_active.svg</file> <file>browser_inactive.svg</file> + <file>sdl_active.svg</file> + <file>sdl_inactive.svg</file> <file>blank_active.svg</file> <file>blank_inactive.svg</file> <file>plus_active.svg</file> <file>plus_inactive.svg</file> + <file>webbrowser_active.svg</file> + <file>webbrowser_inactive.svg</file> </qresource> </RCC> diff --git a/launcher/qml/images/sdl_active.svg b/launcher/qml/images/sdl_active.svg new file mode 100644 index 0000000..efe3fe7 --- /dev/null +++ b/launcher/qml/images/sdl_active.svg @@ -0,0 +1,140 @@ +<?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:i="&ns_ai;" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="HVAC_Active" + x="0px" + y="0px" + viewBox="0 0 300 300" + style="enable-background:new 0 0 300 300;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="blank_active.svg"><metadata + id="metadata3708"><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="defs3706" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1002" + inkscape:window-height="778" + id="namedview3704" + showgrid="false" + inkscape:zoom="0.78666667" + inkscape:cx="-90.254237" + inkscape:cy="150" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:current-layer="HVAC_Active" /><style + type="text/css" + id="style3659"> + .st0{fill:url(#SVGID_1_);} + .st1{opacity:0.4;fill:url(#SVGID_2_);} + .st2{fill:url(#SVGID_3_);} + </style><switch + id="switch3661" + transform="matrix(1.3314132,0,0,1.3314132,5.608242,5.2107165)"><g + i:extraneous="self" + id="g3663"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="65.307999" + y1="229.46629" + x2="205.7616" + y2="-158.244"><stop + offset="0" + style="stop-color:#0DF9FF" + id="stop3666" /><stop + offset="9.208472e-02" + style="stop-color:#0DF9FF;stop-opacity:0.853" + id="stop3668" /><stop + offset="0.6264" + style="stop-color:#0DF9FF;stop-opacity:0" + id="stop3670" /></linearGradient><circle + class="st0" + cx="109.1" + cy="108.7" + r="101.9" + id="circle3672" + style="fill:url(#SVGID_1_)" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-106.5709" + y1="410.58551" + x2="166.1564" + y2="28.7673"><stop + offset="0.2978" + style="stop-color:#FFFFFF;stop-opacity:0" + id="stop3675" /><stop + offset="0.3685" + style="stop-color:#FAFAFA;stop-opacity:0.1007" + id="stop3677" /><stop + offset="0.4554" + style="stop-color:#EBEBEB;stop-opacity:0.2245" + id="stop3679" /><stop + offset="0.5508" + style="stop-color:#D2D2D2;stop-opacity:0.3603" + id="stop3681" /><stop + offset="0.6523" + style="stop-color:#AFAFAF;stop-opacity:0.5048" + id="stop3683" /><stop + offset="0.7585" + style="stop-color:#828282;stop-opacity:0.6562" + id="stop3685" /><stop + offset="0.8689" + style="stop-color:#4B4B4B;stop-opacity:0.8133" + id="stop3687" /><stop + offset="0.9806" + style="stop-color:#0C0C0C;stop-opacity:0.9724" + id="stop3689" /><stop + offset="1" + style="stop-color:#000000" + id="stop3691" /></linearGradient><circle + class="st1" + cx="109.1" + cy="108.7" + r="101.9" + id="circle3693" + style="opacity:0.4;fill:url(#SVGID_2_)" /><g + id="g3695"><linearGradient + id="SVGID_3_" + gradientUnits="userSpaceOnUse" + x1="-47.346401" + y1="263.00369" + x2="269.0914" + y2="-40.3484" + gradientTransform="matrix(1,0.00546456,-0.00546456,1,-2.3177,-2.7461)"><stop + offset="0" + style="stop-color:#00ADDC" + id="stop3698" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop3700" /></linearGradient><path + class="st2" + d="m 108.5,213.9 c -0.2,0 -0.4,0 -0.6,0 C 49.9,213.5 3,166.1 3.3,108.1 3.6,50.4 50.7,3.6 108.4,3.6 c 0.2,0 0.4,0 0.6,0 58,0.3 104.9,47.7 104.6,105.7 l 0,0 c -0.3,57.8 -47.4,104.6 -105.1,104.6 z M 108.4,7.2 C 52.7,7.2 7.3,52.4 7,108.2 c -0.3,55.9 45,101.7 100.9,102 0.2,0 0.4,0 0.6,0 C 164.2,210.2 209.7,165 210,109.3 210.3,53.4 165,7.6 109.1,7.3 108.8,7.2 108.6,7.2 108.4,7.2 Z" + id="path3702" + style="fill:url(#SVGID_3_)" + inkscape:connector-curvature="0" /></g></g></switch><image + width="144.91524" + height="147.77542" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image4332" + x="75" + y="78.81356" /></svg> diff --git a/launcher/qml/images/sdl_inactive.svg b/launcher/qml/images/sdl_inactive.svg new file mode 100644 index 0000000..dcc077a --- /dev/null +++ b/launcher/qml/images/sdl_inactive.svg @@ -0,0 +1,83 @@ +<?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:i="&ns_ai;" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Connectivity_Inactive" + x="0px" + y="0px" + viewBox="0 0 300 300" + style="enable-background:new 0 0 300 300;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="blank_inactive.svg"><metadata + id="metadata24"><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="defs22" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1794" + inkscape:window-height="836" + id="namedview20" + showgrid="false" + inkscape:zoom="0.78666667" + inkscape:cx="-241.52542" + inkscape:cy="58.474576" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:current-layer="Connectivity_Inactive" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{font-family:'Roboto-Regular';} + .st2{font-size:25px;} + .st3{letter-spacing:6;} + .st4{fill:url(#SVGID_1_);} + </style><switch + id="switch5" + transform="matrix(1.3314132,0,0,1.3314132,5.608242,5.2107165)"><g + i:extraneous="self" + id="g7"><g + id="g9"><g + id="g11"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="-47.346401" + y1="263.00369" + x2="269.0914" + y2="-40.3484" + gradientTransform="matrix(1,0.00546456,-0.00546456,1,-2.3177,-2.7461)"><stop + offset="0" + style="stop-color:#00ADDC" + id="stop14" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop16" /></linearGradient><path + class="st4" + d="m 108.5,213.9 c -0.2,0 -0.4,0 -0.6,0 C 49.9,213.5 3,166.1 3.3,108.1 3.6,50.4 50.7,3.6 108.4,3.6 c 0.2,0 0.4,0 0.6,0 58,0.3 104.9,47.7 104.6,105.7 l 0,0 c -0.3,57.8 -47.4,104.6 -105.1,104.6 z M 108.4,7.2 C 52.7,7.2 7.3,52.4 7,108.2 c -0.3,55.9 45,101.7 100.9,102 0.2,0 0.4,0 0.6,0 C 164.2,210.2 209.7,165 210,109.3 210.3,53.4 165,7.6 109.1,7.3 108.8,7.2 108.6,7.2 108.4,7.2 Z" + id="path18" + style="fill:url(#SVGID_1_)" + inkscape:connector-curvature="0" /></g></g></g></switch><image + width="144.91524" + height="147.77542" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 " + id="image4332" + x="75" + y="78.81356" /></svg> diff --git a/launcher/qml/images/webbrowser_active.svg b/launcher/qml/images/webbrowser_active.svg new file mode 100644 index 0000000..6bb1ac5 --- /dev/null +++ b/launcher/qml/images/webbrowser_active.svg @@ -0,0 +1,368 @@ +<?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:i="&ns_ai;" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="HVAC_Active" + x="0px" + y="0px" + viewBox="0 0 300 300" + style="enable-background:new 0 0 300 300;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="sdl_active.svg"><metadata + id="metadata3708"><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="defs3706" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1002" + inkscape:window-height="778" + id="namedview3704" + showgrid="false" + inkscape:zoom="0.78666667" + inkscape:cx="-90.254237" + inkscape:cy="150" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:current-layer="HVAC_Active" /><style + type="text/css" + id="style3659"> + .st0{fill:url(#SVGID_1_);} + .st1{opacity:0.4;fill:url(#SVGID_2_);} + .st2{fill:url(#SVGID_3_);} + </style><switch + id="switch3661" + transform="matrix(1.3314132,0,0,1.3314132,5.608242,5.2107165)"><g + i:extraneous="self" + id="g3663"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="65.307999" + y1="229.46629" + x2="205.7616" + y2="-158.244"><stop + offset="0" + style="stop-color:#0DF9FF" + id="stop3666" /><stop + offset="9.208472e-02" + style="stop-color:#0DF9FF;stop-opacity:0.853" + id="stop3668" /><stop + offset="0.6264" + style="stop-color:#0DF9FF;stop-opacity:0" + id="stop3670" /></linearGradient><circle + class="st0" + cx="109.1" + cy="108.7" + r="101.9" + id="circle3672" + style="fill:url(#SVGID_1_)" /><linearGradient + id="SVGID_2_" + gradientUnits="userSpaceOnUse" + x1="-106.5709" + y1="410.58551" + x2="166.1564" + y2="28.7673"><stop + offset="0.2978" + style="stop-color:#FFFFFF;stop-opacity:0" + id="stop3675" /><stop + offset="0.3685" + style="stop-color:#FAFAFA;stop-opacity:0.1007" + id="stop3677" /><stop + offset="0.4554" + style="stop-color:#EBEBEB;stop-opacity:0.2245" + id="stop3679" /><stop + offset="0.5508" + style="stop-color:#D2D2D2;stop-opacity:0.3603" + id="stop3681" /><stop + offset="0.6523" + style="stop-color:#AFAFAF;stop-opacity:0.5048" + id="stop3683" /><stop + offset="0.7585" + style="stop-color:#828282;stop-opacity:0.6562" + id="stop3685" /><stop + offset="0.8689" + style="stop-color:#4B4B4B;stop-opacity:0.8133" + id="stop3687" /><stop + offset="0.9806" + style="stop-color:#0C0C0C;stop-opacity:0.9724" + id="stop3689" /><stop + offset="1" + style="stop-color:#000000" + id="stop3691" /></linearGradient><circle + class="st1" + cx="109.1" + cy="108.7" + r="101.9" + id="circle3693" + style="opacity:0.4;fill:url(#SVGID_2_)" /><g + id="g3695"><linearGradient + id="SVGID_3_" + gradientUnits="userSpaceOnUse" + x1="-47.346401" + y1="263.00369" + x2="269.0914" + y2="-40.3484" + gradientTransform="matrix(1,0.00546456,-0.00546456,1,-2.3177,-2.7461)"><stop + offset="0" + style="stop-color:#00ADDC" + id="stop3698" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop3700" /></linearGradient><path + class="st2" + d="m 108.5,213.9 c -0.2,0 -0.4,0 -0.6,0 C 49.9,213.5 3,166.1 3.3,108.1 3.6,50.4 50.7,3.6 108.4,3.6 c 0.2,0 0.4,0 0.6,0 58,0.3 104.9,47.7 104.6,105.7 l 0,0 c -0.3,57.8 -47.4,104.6 -105.1,104.6 z M 108.4,7.2 C 52.7,7.2 7.3,52.4 7,108.2 c -0.3,55.9 45,101.7 100.9,102 0.2,0 0.4,0 0.6,0 C 164.2,210.2 209.7,165 210,109.3 210.3,53.4 165,7.6 109.1,7.3 108.8,7.2 108.6,7.2 108.4,7.2 Z" + id="path3702" + style="fill:url(#SVGID_3_)" + inkscape:connector-curvature="0" /></g></g></switch><image + width="144.91524" + height="147.77542" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,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 +" + id="image4332" + x="75" + y="78.81356" /></svg> diff --git a/launcher/qml/images/webbrowser_inactive.svg b/launcher/qml/images/webbrowser_inactive.svg new file mode 100644 index 0000000..e4a87aa --- /dev/null +++ b/launcher/qml/images/webbrowser_inactive.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:i="&ns_ai;" + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + version="1.1" + id="Connectivity_Inactive" + x="0px" + y="0px" + viewBox="0 0 300 300" + style="enable-background:new 0 0 300 300;" + xml:space="preserve" + inkscape:version="0.91 r13725" + sodipodi:docname="sdl_inactive.svg"><metadata + id="metadata24"><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="defs22" /><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1794" + inkscape:window-height="836" + id="namedview20" + showgrid="false" + inkscape:zoom="0.78666667" + inkscape:cx="-241.52542" + inkscape:cy="58.474576" + inkscape:window-x="0" + inkscape:window-y="27" + inkscape:window-maximized="0" + inkscape:current-layer="sdl_inactive" /><style + type="text/css" + id="style3"> + .st0{fill:#FFFFFF;} + .st1{font-family:'Roboto-Regular';} + .st2{font-size:25px;} + .st3{letter-spacing:6;} + .st4{fill:url(#SVGID_1_);} + </style><switch + id="switch5" + transform="matrix(1.3314132,0,0,1.3314132,5.608242,5.2107165)"><g + i:extraneous="self" + id="g7"><g + id="g9"><g + id="g11"><linearGradient + id="SVGID_1_" + gradientUnits="userSpaceOnUse" + x1="-47.346401" + y1="263.00369" + x2="269.0914" + y2="-40.3484" + gradientTransform="matrix(1,0.00546456,-0.00546456,1,-2.3177,-2.7461)"><stop + offset="0" + style="stop-color:#00ADDC" + id="stop14" /><stop + offset="1" + style="stop-color:#6BFBFF" + id="stop16" /></linearGradient><path + class="st4" + d="m 108.5,213.9 c -0.2,0 -0.4,0 -0.6,0 C 49.9,213.5 3,166.1 3.3,108.1 3.6,50.4 50.7,3.6 108.4,3.6 c 0.2,0 0.4,0 0.6,0 58,0.3 104.9,47.7 104.6,105.7 l 0,0 c -0.3,57.8 -47.4,104.6 -105.1,104.6 z M 108.4,7.2 C 52.7,7.2 7.3,52.4 7,108.2 c -0.3,55.9 45,101.7 100.9,102 0.2,0 0.4,0 0.6,0 C 164.2,210.2 209.7,165 210,109.3 210.3,53.4 165,7.6 109.1,7.3 108.8,7.2 108.6,7.2 108.4,7.2 Z" + id="path18" + style="fill:url(#SVGID_1_)" + inkscape:connector-curvature="0" /></g></g></g></switch><image + width="144.91524" + height="147.77542" + preserveAspectRatio="none" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJEAAACUCAYAAACTFcuQAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI +WXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4gsNBy0he+6l0QAAIABJREFUeNrtnXe8nFWd/9/fZ+a2 +NJIQkhBIgVACSA1NwEKzQFhQaYKNVRErurqK6K5Zd9ey6qooKuz+LCjogq4rGEBFUCkaIRBCE0hI +Jb3dm7l1Zs7n98d5ZuZpM7kJKfeSe3wF79w788xzzvM53/Otn68xNDLHB/t0k4yzq78Qv/9Os71t +aGXSw4aWoDZmS8HaIj/BGGPGcYjxkT+vE8yrvHB53vk9s7VDqzYEIq7q1SuCgLeHLwMzrkKM2Nrn +JG7AaC85fnJjiz0xBKI9cHygT8cQcISJ44GPbu91JK4j4K/hkbf4O0320BCIXu6Sp1vTcq0MV5GP +mfHuHXz5X5PnmlIvfTe02vN7yprm9zQQBXluoMRZ2I7fQIJzrcQ5+RzPAYcNSaKXybhSmpIv8qvI +jKcbjNzJq9ojx98AXJk3fa/NlgyBaDCa6EW9UuJKjFEGb96OSxSB/wO+CfQAHwHeCjRt43V+KdEO +YAG3XZ+3O4dANJCBI53kihwZSpqZZly+HZdZB3wfuB5YnvjbvsCVwIeBvbdjtX8tx704Fn6n1e4Y +AtFAUpaLOjUHrU683Yw3GjH/Tn/HfOC7wE+Arq28txW4CLgGOHw7LLoHzJgtcOTZ9DQ8+Qez0hCI +dvG4SMqNh9EAlHkUMWU7LlMGfgVcB/xxe/R04I2hi+Cs7VDEewweUpn3WQubitBxo1lx0BkrgxVE +E+FQSiygxALEpG38eEeo6xwEvGU7AQTggDnA2cCh4TW7tuHzLYJTyPMnSizI9fKaIUm0k8cHSroc +8bbwxkcCp6b2duNpPQ98G/h/QGc/jx5s21ZpH+DvgQ8B+2+jZJoHrDNxy/XN9uMhEO3A8f6+0jtN +uRkYpwGn1cDSn6lJwO+9lLA54evE1OPgi4LGgLKDIAjfpUZAVeRraQbOBz4OnFT9g1Hn9hX96UGT +3Q/gxKrvtdp1QyDaniHZVX3lC0SuNWd8QtJxjZ5dxswKwC3hEfN0SkglPmMBSP6PKsP32tJf9O7u +bppzzVUtwCyCqaybUPX7TkV2NcabgZzHkWqYUgJfUaCZLXHiWoCuTdz+44nWOQSiBuPyDRtGDRsx +djJAYMW8ufw9GOO2fkrFHsILwI3hv039WYDKg/tec7CNEtJDwQzk+iMdORC40uB9wGht4/o4lV8v +y7/Y1czym806hhTrjDF8xNgzctL8nDTflH9Etk2+mAeAi4FDgC8jNvXn1HMSG5qNDU3bvp/WN8GG +JlDZ9fcjLwDXSEyRuBpYsk0Py3Jzcmj+iL5ttwRf9pLofT3lDwt7l3mT/cD6ynIKFb3A/wBfA1uQ +qVxnfEwSQS6gJAh64cZRL20Z3tPVRT7fVlXBFFONGp6jAXAOcHXaRWAZt1691guCzQAm3XlDW+6f +9lgQvaer/I9mHG7YTNCRjc+b2FgF3ID3Kq/v9ywt8D+7Xm5sbd3h87myUwQ5cAHgXMatx5So5DgW +n8v0DqA1U+/PWg6zRZLuN1h9Y1vu0y97EL1LGt3U694Z2Wvvl3Roo5tKLPm8UFH+GVCM2V8ZHzYD +ZGD+Dd3FgB+P3DVTvkhiTI/Lxk2WcKoJzonyOtOHDMYpy/CzzAe5VhZ8Aefo7AtuumW0bXpZgeg9 +BU1wOQ432N/kbuqfsqvKruvDe5W/DvbnTCO++jo8PDx6wgMh4L/adu+pfWWPkIT3TRqocs8RC63i +XqghrSXU8T4JvCKOP6PROsj0rhy5ZeHLRTe22bJBC6LzVq4cNnLffVvautzFoO81vokQArUVWQv8 +APi2wYrszVvZvuHSmnkrKTD+uy03ID0X7+0Wcg4LDCeXkk4WmaRqUzsV+BQwy//VkIWwk9Xer8pf +w08LhH2+e1jwjeI6ireNt8Kgs8722WvCP7Z1lReAvtDQJRQ9tsRjiPcB0/ABzhX13lv5WQr/Oeiz +HO3d7QPW/dXTCnkLcM5FJpCeX2KODwr+TnCoKqGVypwj849dQ1Xn6NVtXeUFI4e7/xw0kuiKQun7 +wIRQMhyGdEB9L21Vd3ESc/CB0Hsscu6bMhxwMeMrh3JlKINTDz8cMYLBMN61aRNB82hE2Usbi+g9 +VgFA0vFY/b+9EO8EPoExWRkGaUpXxFYLPWoB3ZTtvnVbgh/cMcm6BgyI3rauc998a/OHQuB8ADQ6 +pv1ZUpZUV6bdsB96fYelytQ6qaNmB4gy04Y3MdsGcUaLxBWFIliOwOszKUW8jpMd8wlyFwAfE7yy +vuYe+1AfsifB3SejN8jlb/p+qz27W0B0aWfnpDbXPANsn7I0LTC+tLWvMVTB1nOI64H/NuiqYEqN +bszMK6cmjBw/GJHj5Tiu6CzVQCRlroUifqSIN2om8BGDyxTmzlsKfVaNs6j28j+QPVqi/NSPR7Y8 +uUtAdMWGrsml5rYRAe61yP29wfGyDF+Gpb7IAfcC35RPn1DKnFc2eLycN+RK/GhUK3vCeOeWEhaV +KEbaV5Dww4Yvp2FcZfBeYGyWME/JKQNh33XkvgVAnp4ft9ninQaid3YUfwmc400hcqCAxiDaAvw0 +PLL+ljUpayCAnUTrqCbmzZvHvJkztzkvYzAfc1cC3T0QlMsRJSm9dilflF+iEYjLgI+ZMYNMPSl2 +qbIZ5fDF4z8a1XTiDgXRRVJuWKF0pxxjMQ6iklFYffKZB9Ei4L+QbgA2x2AP2dGJ6MbL+Rcb29dz +x6RJ7KnjSom+HlBvEZqakCthLvSieWM/4iXL1CEDsDPMFxrMytJQk3aLiS7B0wAun/+7nwy3VdsF +ordt7jvO4IMACgIzdClS29YvZA+ArhP8L4TIbqAmRt2CVtkKrsxPRrcwNDJOgvYSmMOlsqIsQ6eM +Ru4M4Bjg/UJvB9os7qJNASJ0L9xqohDAd340unlev0D0tg3FU5TXTBNHG7w7+SVpE9u7P4BbEV8B +nkzpcoorQBYVxxZOPjB+PDI/hJJ+jss7SgRycWU55mysY6f5ZzEe4wqDj2w1tbi257/vjPn+Z3v2 +5tFNv02B6K0be4/CgjF505XyZ2nsbhQ9cmpgWInP2/k2YkNcLgqZ1RV3VkW64+bRrUOoeAnj0k19 +5CsLGtQxULJHK3A5Pi3lyBT66l7Efmc5/r3s1H3LXs1/tQs2afQww3DFX5qpYaJ4RDSGgVD9FCgp +JlSzfDrmE7eiu6HouGX8EHh25Hj76tW4ljHILFRTxTakgp6KT0l5M9AP/4kws4WOrhPtsk19T5o0 +MhRxjZ5qL3A78DXD5iZPXBrakgYYrqV2XK1ugz/YED3SjrboLt/YTbmtjaC3N3wulnEyKcP3VD01 +puOLM98DDK/vuhRAEbOFdtnG3nZglOofh6uBHwHXCVZmRzAaxDUMpByS43/2bh560LvqiGvv82db +GQxHdvw/7h6waK6wMQp4F+gfEFOVdN1V/XpWsLdu8CBKnodh+cqNoJuAnopDwuo5rCoftajFJcwc +t4xpG3qquxNQ6zqxXN4/kwyFKQaiqJzxPt5K9uWngNOSsshEwS7d0NsOGpWh05sSEiaWsKm4GRCr +VAAsDz8dNXjN9EtW90Kzql5TZwG3jW0a1GB6y9oemnM1q0hRtGQa+Fk6SiKWIivYpet72gWjttcR +WdWYzVi4eAHzjj9+UC/0RWt7wCBnAaKW76PAlxJVxrpxLYNXp5s9m0s/fE0VSTIlc27ZanFcTZcq +2CXrvSTKiBBbfess7gfaMrYFFsJdBw9uRfkiiWBjL3JenYiHcmJbF5dr4baxg3e+r5VoWwgcBCM2 +9mJKquBbB1GYt1Swi9b1tFsjSZQVYTerxZDl+J99Brep/qbVW8jn8n5GQVA/0JmyZhyU4baJg1vn +u2BTNy3lHI4yJmt0simJMxGCSDDKqlm/VR+DKaEJma/SAzNuG+TAuXB9byLVQhk/ZbkswvdUjoDK +XgoCfrH34A7VXNLRgyvKB6tylk6xRKrl70Z0ogvX9njrLL3dMo6zHL8YP7jN9AtXd6IgF4FLw3Eq +MBsYg09L/SlQylJFpZp5YyZ+vs/glk5v6hC53p56hW9RmBTyfoPV9/E0zhQbPE64C9d2+5yk8LWo +e4AHiHOAz2EcH1m6m4Av4+vdviXYmFlcGAqoC9d2+0v2tnLb5MG5cGr0i8iU8jWJpfRBmEgbG0xL +MVPiwLDyqntFN2oJwrKduqMZcQnwWdAhEU9H9D37hpLpE8AtQj5HShErNeFHI9/FRRtFex/0TRhc +XnqVGzz0SBZB4JLlBin1e3AKn8mruij1dVPq66a52afW1pnOSHyuzWLgJolDlHxjpLIiHCMEVwqe +QtxOI5a0wCj19TDcehi7rofBPZQhe0VelXSCekIssntLg2ATXbC622fWREtoEuUQfik0EfiowfuB +UUoQW6cdcWkrFQgE5wHnIebhJdOtkKTMC9M0BG9a3QUYvxwEFl183VRX48nHF0b9PBwH1jh/VRfI +sCDywOof6tPwHItXAm2Kpq5kmRX9nrtm4klDvxoWan4bwvSYxKWEuGB1J5L41b4jBrTcyUzLjeU0 +m9eJGnq9TQMSR2dtFG093UTVOTnVK40AOBJfp3UZ0U4CanjmPw+8Hs9p/SOkM6JpvqasagMmgmZj +fBrPWPJl4OlYmKjCHGIB562slX6V8447x48YUCiKVIWE28xiqcwCAoXWmULxpXCCqvyvUl05QFD0 +xg1i1toehnV3+QBv9T5d+P+qloR6PUinCt0u9LjQOyTykbdE/in6b7mkoyUdImmxpBWSzhSMlPhW +5TOV2Hjss9Xf0SLxDoknJX4nmCVh0fc4qToHQ+RLxqy1PZy5YgDwV3VQw4GEUw0LLrJeIAJl1PDW +xUxx97Pj5vt6sKLLliLx+z8LT3z1AF5vsX4YDBuBk4EpwIKMvxdCJbwZuLSft2yh4n0Hniv7SqCt +3s63YpnhuaaBIoj64z3BZr1YaDesXwFYo4nb99v1zsbzVhRiSrFZXbWlkrYwG1/M19+n3C5fSfrH +qhZgRi7BVOBKLlmyFIC9GnQHsC3nUIWs4jp8inHsZsIaTRQYv540bPc4G1eIsnVX4xZkqI2VjWWz +lhfasSiIIumIiUO/bHDXfsN3mYPw3BWd/jbMGlqNYBUaln8CDq45MSx7S9XQ1wd6oxn3IZPMi2kL +DKOXOybFa//OXNFBW5DLkmYWKtb/i9nkut+ZfgQVprevAk+kdkYIqAqWuyjz+/1H7ZLlP3OFaEuX +6mfZHgU7d3mhHWMUijIKZEsiZ7bTQXTmmgItpTDA61ycayWdRzASuALxKaxWtZCWUKmplIHLQbeB +OTMveZAIrL1fdW6zXuysRvst1BHCr5mEzwTNpM+DODdRZDwQKuFzIvUx1STAiiBQEKBykbumjN7p +IGpVZyontrYXLCxSsoKds3xLO/08zhTsHBCds7K75pPw2mfdGwn/Mh54v8FHBaON7KCpso+89wLf +x8yF6WbM2f+lda46d3kXmFfwI6k5Iwy+Jq8DZXviLO75De/3eeDbgv8GujJdc2Y4M6ws1NvDXQfv +vXNA5DqTvBwZmdEq2BuXZYEoathFJpnbsSCauXIl+zXtS6k7crNqiOQDgKtlXIlo25paWKHbCy/5 +cUzXmcIAapDjrv13rL5xzootVH23qkqeFnll/D+iK1ovLhUpi24Hfgh81SocTZbWOJxzNA8bQU8Z +fjvRdiiIWlxXLZejjvg0UyHor+m+Myz8CeVRlLoL9QPANdXjKMGPBM/Jl7W0sbVP1H66NrSm/tM5 +K5Wa85Sa8xSH7XiPcVd7N+XmfKxSXF7v+Qq+DOd0QbeiTFZ1SK6AvfBzXeS94JyUIsAKW0YUuwsE +xR3Pka6oMyjDqFWoF9gbljaSRHF5YPmXJonOWrSRXHMT5gJkzivMkXpgI0HuVKWZs1kx8yzKZJD6 +XXUKXwc+Y4F1m3x5dm9rJ38YP56dPV63WlhfV2T1orlHMsSRwF1ej6sVM0fXOuoEjsR2H7Bkibqv +uMBVrCgHxVyOeycPe8mSqKncGZGOYf5DSndWwV6/dEuYT2R1lO+INqqAe6ZtH4het2QzFuTDCgJl +xaGiZGHnAp8GTumPEyZxne8AnwDrRsICuHvKSHbneMPSQqi4p0jTpwK3GZyQLe0zSYyRl07XETa6 +Sb4r2tTGEHdPHbWdICpkOrDjD0uFoOKhroSpYx7qhFf3pQxXDmqeZJfhMfbe81kSDyPukDglei/J +e8r4+eeIMYgPStbtEL0lt9sBBHD31BH8ZspwXCUxvsa1uFTiRIkxEt+PHVeqhUcy1mG6xDclViK+ +ETL0V99XDUsIRMDZSzp43eJt5bHcQrZnn9QRF5Bw+cdCBoqHQ17SyBme6zL+v6r+EoYREKV4RibV ++3LhPxKfrj4UlFe40ibRFAScsayHs57b/NJ3wQ4Yv5s6gt9MG0nZ4ueVjM2CdyNaEdciUutDfMNV +xijB1RKLEbcjneIT7iosBz4cZIAFOc5Y1sMZL3Rvk8s6Riyqmq5U+efC3Z9S6sSOTyW6Z+oI8qUR +bMmNZEtuZFqR9HP+teBk+SK5O4gLnZi4Tt2ruFBineAPgkmVgGfeFQmacpz67HoGyvj9lBG8ONWv +RefwEf6U8xPpRXwxjO9dqojek206VH+upKQ8CDwieLsqGRrhWjnk1yIobguG0t+nND7s7BfavWJt +CZKpBHWV/31uu3Wi5Dh7cQFnLqKjWZZ78GDggyFpWFtM+aZRtoYBmgtcYrC0Qo9jAM7xu+mjGUjj +7EWbcblmzJWStVqGzz74rWCCYZmxByNaZlFdj8XmU3lvBDYlM1td2MOtbHDvtFEZOlEH1kfMgLEM +TVaiYGctam9XJOwRnUDqZoMdB6LqzS7ZUruvMJWjnnMR728ZW9d5l61oPw9cSCWgauFjcL5i474D +Bw6gzlxcwGsxYTWJi81lqsH/yRNVNeb6iC9Che7wa8Bzqc0nVcvefz99VAxE9KWsrFh3tzAaVbAz +F7VXK2AtRqIcBZH/KcjldziIouP0FwoElP3OqsaOIoVLVuUh/DjGISTCCMn9Ut23HphLBOcbLKBy +/dAmFjnumz5yQEmnMxZ2YEFGjyLZOPPe7POzdk41bSlWc2/Il/POsZArPBuAlTiOYc2hhyv+HTUF +rYbigp2xcHMiAFtz+Pqbqt1hOZfnT9N2fgD2zBfWINdWk4fpmEYlWn8tMf7m9LbMqMXbCPYWUCxi +7wIwiS0bRjHv+IGTB/za5T0EfX1USMNqvEO04ft+zK54mayhe9jnmYem/6PANwgb7SRDKt58Dmlp +4nycSjNoqWCnL9xcdTY2jjiAy+8aEMWk06IOcM4vYPZbtpGcqTraw938p6itVGoSw1r2AgZedcZr +F7Vj8tpdUOH19t74d+H1n20dy4FvAf9F2D+t3n7MPM5CSRS4bbHEdkNOmpX6KDe14PLNjfpeXCyY +Efa96KbOnJQOK/xB0CO4JLRwyBehd0s7xS3tsGjAdMgEoJQXRausRdVx2QfcKMgJTg83BzR4rpHf +TRb8h2C5PAgP25qFlgx7SGCvfn5zmJQWDfDHA7AWijQn8aeDx+y+nbi4A5UrYYQ052nonh+PeL+w +DxvaO0uoKhHtrOUM6734ZLGyYV6ih8r+Hw8eWBbdqxcVMLlaaXuMM0pTwe4QHFkNRFeOvCztoPbC +Ce419E3g17U0e4t6V2JqmEHBXv3c5naDUamQiNUyMmq5XbsXRFUwLWwn2rfXkl3K/R5owXQx8Bng +0JQTzeqc2X58HOx6pN6aXuU3VwD88ea9YLYNGDAFlENLLiSZqKm14wz9EDg3BYhoolK2s2Q+8F3g +JrCeZO1HhI22YK96dnO7WTYrSIQtq4rD7lKRh48YP7B25XObqT3m1MOtKOGxWFw/G1x/EfjXyhFJ +BExyolwK+PMRew0cnem+xWj/sd6bXFXCATQC+AKei3Frek9yrAnBdD2wLuOTBTvt2U3tYBmtdLOb +REaV9U4LmHfoqIEDpufbvQUCdcI09iovZTiPbev19nXgn4FCPH01R68rY7kyc3dCYthLGa96tr1m +WdWWoik0QH7W2Eed2YS5CyOdGiAVgnpKmOA2wXHJr3BhBp9DtGYR5u/GsWzFRtpH7YWrr1jfHybk +Hx56cnv6aVR8TLBFcAswrna9Ms2IJjfwSNxzzaNoH7VXcjMV8TndObwSvi2dGIdRByx26t821fKJ +TFl2/l3AFwX3Z2XWWRhpfvCwMQNmAU/9W6dvpAeYK2IKarOpeKy9/jce33riA2Djqg7KrI4+YVJP +uDn/F3gvxsbIkVElf3/w0IGjhJ+2aCMuBLk5lywxNy8o7JfA5ApLZ8r9Xe3BZlUjKzIKdsozm2pM +aXWqR8PPP4D4MlanzVSYsSzZgNITZi7aSEvRq0ZBeMwp3aGwUi1yrcGMrGTiOq0OHgB7G2hplCJL +eAaSVas3s+T0AwbMWpz0xBpyTS0EoQM5IaXGCW4GXtdvYv2KTnTKM5vCpLStj/CCC0BfBW4BS51n +zrvCqq/+fNjYAbOIpzy7CSvXvNMZI1TCdU3oxOyf+g0Pgy4CWxqVXJW0FALHnw8dN3DOOolTnm2n +UqgQyUMHXz/3FeCqfl6sYCc/s7HdZKP6Q0NbrcT2x14lu+4G4lGW+NHhAopOzDtyYPlZTvnb5rAk +qRJHS4FqJj7gezlYrk5jVeLNW3kBeBNiQap+zHlnemCOhw4fM0DXIsr4ppbQmvtKzc5Kt8w2qWAn +P72xHSXI0JNyLIavRJxcLAX+E/MlLllKviwgGLEXq0pLWHLAAQNqAU/+2yZwatQT4ECwj4SOyGEN +7eLavNeFFuDcLFlnw8ewrgcWDjC23ZOf2QTOYUGMECwAXg12J6RblRn4ao9k9lqYePTBTHkUfw/A +VPmWnEuAzxE21FNk05pzqGMzE7oHljQC6OrtJWgKKNdn1XlB8FHEVMQ1JMuesz+3D/AXPLXMK2O+ +OWeoYzN7920ecGuhdkfQnEtOygF/IOzzkV4fYSc9taEdbFQqncL/J4fPxbmZWHCzoauuAx86+BK+ +L0hCqNVusBwY8waIzvTK5cIVInnIztV7a0UJ/zQZsaY6ymgf8A7gtppL2RAOw+jta2f+sQNHQs9c +tJF8T9j3Ki1C0jrRiU9uiJQMZbUBqR6IrwHuJFbz1ZAJqhOf9/JVsBVZ9yELqnGfh48cWM66E55a +BwQpEvTEwXQO6GqSJdOW2GCRfQO6HPg5ZuWw3VO4BKGaWy4x7+h9dvv8T3ymA8qlNIjioSVfAXvC +kxvq6URWp4zoNcAdGCPiLWpSMZXoLvwZxr8TZtYlt6v/KoOyTyp+7KiBo3ie8PQGH2+qBHyzwk3G +ccDVYcJcvmGLjNrfPo4PJfQm3yBnWA4ePmLMbgWRoiBSpWl1KpO0YMc/UQdEje1aA04EfoNPqejP +cPhW5rPxSVF1DmajnDfogceOHT1guk+f+Mw6VMpVuxvWoW4+AJ/b9J4sHaKO3K4LpnLOCCRcby+P +HbfvLgeRKxWT962MeSTKqPtf6iHEXInRgqMRa/oROwgQ5yEeAW5HnJz5PQa5kiPX5DhqQWHASKS/ +zhjHqi2ddDSPoSM/BpeN7cV4Psj9QjC9mGGTJMfX8D10v0KE40iIXNlB2RE0tcB99+16RbvOfcdf +C5u5YEPYqqqeJKodacIIAk8ikJFneCjwO9DkpAulgWCr0Kn8OvPbwyPPCR47amDpTMc+sY6c+WaA +DQqHm4FL8L3Cjuhf7oC+hU/7LVTV0SBcDgdFjAVHj90lkqhc6ouoxHEnmdUOjoIdt2C991hr68dZ +WTkeP2YMxzyxiUDlSue9pJCeCtyJcXjKkKvHzi8ew6dd/NwHd9Kk7KoeIwGPHT1wvODHPb6WkLaW +mI4YX0ozdGbIDnJeqkN3rM1p1Xfyc+D9mK2PFTBWQhYm5h+58xTwGc90MKyv6Lve1fKvlKLCMQp2 +7Pz17dTJJ0puHBeCqDKOeXIjQUm1gGUcdpPCY2tmv6j4/Xc9gfEVIj00kkD01RsBcuLxYwZOKOG4 +BevCVQ2ocINXswjjhtqxeP7sy6DG3mtWx5g2/mhwmZL+qTDzUgaut8gTx0/c4SBq6ytGKtpiNlnE +plDBjn1sfbss2SAmRbkR/pSPgagKpsfWYhakSDrCMQ6ffnBG1mlVJ8S3GF+NcCOox78/0dLFajl8 +5fzePHXEwPH+vuKJDTQ5pfixLWYnaxpwFdhVWcZJfOMbwEMhmJZaQprLgQsgcDD/+Xvh4ot3CIha +e/uSO12WsPXNVLBjHlvfrqhOFOVTS80sG0TJcfRj68LQWaUiwQCNM99k5Y3Qnxwew4w1oK9LfItK +SCV6o5G0hM7hXiotfAy4eOAA6pj562r8z6rcc2wLhQ17+Udgf0uEm2QJlUG+GFPGgmpFbOQ4DFyR +LSMnsvDmf4HZs18SiFqqIBKW8hWbL7A0PCvIjh7lYl9Y2hIb6wXnyKcc/Kqf1sEEiS/hQyrX1nMn +CBheWM/wzvUcdfC6AaWAW3PedzVUgoSi9pYOfCD7IMS7BauSxA0JQoKDgceBRYLD4hwFwlme4YX1 +HPl3H95xJprqVH0oQkwaK9IXDShF+lcz9OSJ+zH/2PGUXNkTVcY5LjYILpAYKfHfilOtRHioo6wk +7CPx7xLLBd8Q7FslandUy40riVNHPrqWV8wfGAQOjx0+hvnHjmf+seNxYcZAhc7HRVIwJaYL3gBM +TK5JJZM0nKrP3BTPIqUBV3UMOo5csPYlAkhV4VNZ69p3RTg2j5y3NlSs41aWJeoBAMoBPH3Mtifp +H7lgDVbKVXtcg7BaDkubwVcFH8g24qI6RfWY6pVnaP03g+VJraOi0Tnnc5uE48mOfeD0XX/MveLR +ddXtasrSGWwa8GnBu/H9Duv6a8KxHDjb4NksB3o04ODM8dSx47f7OGvq7k0SaERKhqqrXrBXzFtb +TUqzDN0uOgGX2z4QRce0+xYzYq8RNTW59gUqjA9xAAASN0lEQVQtIb/iP2e6izLcvYKiwU/l3QN/ +S3sOQuOakCZBjqKKPHf8pJ0KnKMeX025lItZ7ZXVtFrMabLEZ4G/tzBUUk1BzdYYy8D5gjnVd1hk +DSMVwr2B8dxLtFxnPNNBvquXeFBeynD7FeyICIiqgiL5YyiWdgSIouOIR9ZUmx0SUKnUaAI+IV/i +Ui8tNSl1ncEcjM8jHknFTKOsrWZYU0BP50YWnnzwDpvLpEdWMsblsbYc1u1QoHo+sXEYnwg92q2p +lCSR1Qr8WuA/IFkZUdmKDrOAJ4/bcX6jGc90kOvqDo2B+CNIpJcVArm4tlQv6rEzeMZyTaKLJrqo +eX4FxVCy5IFLY/eSVPJq9G+B4DzBw4LfSZyS5aev0Aqqr0xL047NbdqLZiwH9JVxOcWVUP/dYyU+ +J1gk8SnJAwji+mBUQAt+KBgmXyhRzmpZ16Uc3Wqi2LWDH06Hd+xGmehiKKqsqQM77OE1YaJ+ihjI +SHqWgKdP2DmFi4c+uo5cFRURh5Mph7gQ7GZQLqrz1MCVJog28yEVUSssIGHJVA4PM+Op47dvFx/+ +yJqa595i0ZrKlw4HPgRcQ5iwZ0kPUNSI9r+bL3QuCQdjlcM+rCwplxzPnjRxpzyPGXM7CHLdyfBW +VnJwwQ57eE29RP1IMmwNTzsLRJVxwBNraOuN1o3H0jTfiHcP5LJPChIKtgDmC/4TuMWgrMjfomLZ +mWEOXJ/x7GlbB9SMh9eEjfoUKSWKrpZn6xD2L/guj1l7Mnm37QavD1ne4mYOYXRF0IdYePyEnfoc +ZsztwII0iKqKTq1xRMFm/HVNtWQoVXJmcd2tZMbCE3ZRCfVscfis9cgJh6uy41PLabrTogly8dSm +1FFs8BTGl4X9FFSKlthVuQaqeUNGyXIsOrEW9D3oLxvIWdlD2YEFsZhS9DubgCtCA2E/1bNS0ryB +78VTCif6hXrSKeWg1Bew8ORdE4ieMbcDs+50eCFtPhbs0LkhiCIuyTgXSMQ82JUgSoxD/rI6jHNW +S7l9TpNxj1RLobCta+JL8GXR/6Wwxj7rI77hSz7yzF1K1iU4LgPgLXiD4KB+1vqD593+GBFyO1Uj +tOLZEyfulvWeMbcDrHsr3gbvsbZD566JpYJENJKooYbhc6J3F4iqutNfV4XMFhYNKB8J/BaY0NgE +iHmhVuIbuNxoDcuJrQEiq4b2WwSftzo513XS0e4BLhJsNiKUPmH64HMnTtit6+xB1FV1O4gk8Wf1 +6C4EKVf2LrTOtmcUgxYU5KJyQYIFgomCowUrG5FbRf5Nkk8IWyJfpTKWOutQj5pZcFZoEd5GGIJo +9Nnw9ytDQq6zibCTOYAgB5aDYGBwHFSMj4a4ENjBf1mdUqxTnc8qH8gFu10SRZ2W+WHDyYXOk6Aa +WAHEVOBuYEajNKbEBimY10m+okRGYsbnThH8O/Da+oIu9buyGedL3BnzWpjIkaO3uYklxw6c3PL9 +5nYwjK7acWQRZ6NiVlfBDvrz6lQ+Ufw4q3WMH0ggSo6D566p9huLAGOqoTvChiyZXrwMNFUKC/4N +T18cPeJPBD6LL0xMHv/11TDvmf4SVnEWhvxBGM+fNGFArud+cztoUxREiQOpNvFCviKTIkS/1R2t +AXeY1R+Vh3HQ3NX+bPAH+FLEUfgEuf8DTqhZcIqsQyql9R1Ib8Unx30pbMk623wNnqU9xqrzmtvx +ZdgFVMsCkRkLT5o44NdU8WxAUmXRoWlq0/+8uh1VFOtkUVF8lMix9JTxDIYx/c8vevO4SvVmII0D +bgZ7XWPej9jGCVuO1EixrI4Uirx6AXQGsNRClldZwAuvnMBgGfvN7aDVdSb16FTLI5NtvWnezujz +sSvGop5JWNBMsTwM+lzFdb9e8HrBGMGcfs4tUAarWh3lvYBviT4dWApQliiW23hh1HoG3ehHrpkQ +eRfTIzJSGo2GnREH7DjdWBhZjAMfXIULrJJAtRljFmIMno/wEpnqFV+mxE80wb5quRhvQ7oFMykk +2PHSeyIrXmUMxiFFC10z1qWSQHDAg6v8cZbw+CrMT7UYhAKcxLLT9mWwjmkPrfTMaQFhVpiB93x/ +g7Dpr6JeqBAhaZdzaHKIG0EfJqAPBZ5VIy9eeOV+g3aN9n9oOXk1YWk5rQxXe8GmPbCq6mxUltaY +PgQBo0iOF08dz2AeUx5a7Xt11RIcWvDhimuzjq/EgjwMnAO2vlI0sOzUfQf1eux3/wqaglxomKi+ +/RpDhBVs2gMr29WojLqOWK9ILZfLs+KUwQ2myQ+uxsJUlDBs0oL4JPD51KKYrRF6leB57ysJWHrq +xEE794l/WkWz5yHMpJ8i3i9eGX8r2NT7V4bVHinXvMXNu2z5ZMDStsgOPN4GL5puFZMnrfKOS68M +NCE+hCfxKpnpAiebs7xt38E9T4BHHgFmMqV7la95a8ggE20VmZp3wSbf/2K7KZJPVFOMzgTuI1Em +ks4MsPgNBE0sP22fQbu2+/9lLTmV6AOaqnUJygtc0GSuVHK8+Kr9BzeAbhX7T1yFmSLUOVuzKrJB +JFGw/f/0om/LkO0DkXwO8I9FpXVpLGcmLZ5UCSIGrHj14NYRJj+w0lcnUAbKLH/NlEE7l0n3vojl +jMDCenTbpu7QJ+HbYr05Q0sq2P5/fLGdDBBljI8D1wt6s3t7ppSH6k3KiRdPH+S7dxDrPHl5l4NF +k8NSQiYTAKciPkUkzJN8n3kQhTpRSoIJsljCzGotCuoHG1O/LyvATKx6zaShJ7srwPP75ZDLk6uY +6daA107RlGM1AReAfdJruDUidEypcnaDgk3644tPmzTSM8qrta5RFy0A91f9Ocb7gfXUg2lKOIme +kv+KDcETcPrpQ097R4377mPvloOoJHu2FHsTwWhlPKEYXcMIsL8HfRyYknyK2VwnQVHSC0GhyZ1G +G8c409yGN5m+yoWCdYL78XQyWx3OGc1BL81BL/tw0NCD34FjQv5wmvuM5r5emvt6q49MDR5n+Ld9 +8PlUS/BNB6ck31P3Gq68LGgecUoVbPvct+KYnDEG6RywS4DJ20bPH+/6vDUdK3pKyow1p+83hITt +Ac99SzHLhX6ebGdfHRBMD/Xcd2G09TeyJbOfgW4EUC7fteZVE+emvnXivUuPgNxMmcZgNtWkj9VA +lAgYZfu3NyIijXr74U8JWxiYM1afOQSm/ozx963EcLVnQtzYUf3z6Bh8TnecpLS+g7Hytx/I9LjD +zVt3+tQHtq68VFB+/5oDrdT7T3jD8GJEWzaVceYNe+5m4zYwlyWbqiVB1V8FOJM/qcuOtRsLcPER +Q4ipAOfe5dVORoEaU9tlPKVTgU+BzaI/O1uUzVgkNM9kvVZ216963ZRHoL8acMo5dWtu/LhT7kaM +xaN/iiJ9v/oxIgypDbmvw5vyLGAOYeWAcrGVjefsvWci59bl7DMhgD4wc5FWqtlelYqrrror4RyD +fwJOVP/OuvYAW+QCepG7q1guXrfp7OntDQ+S7doRv1v2XQX2nlC9z6WLybOPOoN/lG+h3Rvralv1 +YZDRrMVQINavnwwXMWAoiXfuENx6G3AR48YtI6j0a1OtT0uyCjghhZpNXAJ8VsYhmV6b6Gd81bGT +4UB3rTtzyt9ty91u1xMZ99tlk1y+aUzgSm8x+Jet+ATSPLTiOuAzmAqxxtci84D2mRjCOdhw9pSX +PYT2+f0yn5UpB0G8ZWqs2Y+l9uwYfDrL1Yh9k9LGYh6amhIVsv18r5Rr+rZTd2HzmQcu3ekgqoy9 +7lw2vamFE4VNNemL2TiqKeMxaeN/9gypFV9TVmejyF0q2pbWxIazXl6AGve7ZTXPslyEZMbix1Xk +t2EYan/gEyRI2Ku+oAi1TfQZKRdca3JLAMrOntx09uQntue+d8jZMOzuJfu25XIfiVz1bUj71/uy +jPP8odBaWFrv2E5/1nCCAIdKIwavziSx9z0rcHJhR8TGKktiHQ43+JTgMow8qv9gVRFbRjuy7/p9 +qG+tf92UlS91CjtFwRj72xVfw9zhiBnAtP7ehCpN50Jfk7GVzu3h78smAoxeK9F51oEDHjcjfrOa +5qCvKl0to/duFEUZNbgnYXwGUbW0lOFtkWI8wGsEjxms3XD2lHfuyPnsVC117G+Wz8b0Xpk1+4oS +NVfLTGJWRooZfKP5uvY/Kn6i14kBqXrNnrBxWXOL2Hz6wGrQxwPrGFbopMkgsCCjlCuZyB2zIwzs +9ZI+h3Gyxel36jh3bRPQHR57d2583eT37oxpBTtzzTay8SvFIDhK4kqJZxJSPMmKGsMfPpepB9/W +IIid5XVMXAmaCWjGsL6BZ8WN7u6mJTCi8MlcgrjqkpO4TOIZibvA90SJEHzFMjpi15T7bDEIjuoL +gqOC7tZ/2Fnz2iUrvdevl45RvnywBbmRgWgD+5nQcOpL8Cxjr043nvoTq0SfN79h9yrgY+5emlnJ +t5WOVs14uplr8cWXGe+1zKxVzK4QWl5qck91nn7A6p09v12/XW94pGnM1HFXyoJmyV0Fdsg2XuEL +eDq+QiPwWWxn1pDorEjh9Ts3+DvyvpVYhI0+SFB5NrpXfKehfwD+AWOvLJ2ojoa+ziz4IoCK+mH7 +rKmbdtUj3a0yf+TdSz9pcER4IzOQ96ome6ZE24ZESKWuk/gMUKiS0EWS5Wq0dFRTQH1tmd+9Dii8 +YeoOnU/rb5bQLF/xGqRS1BU3uwnbqtcQMl7Yv5rxTqBFoa6T6cetXCewJyXfO85gdfsbpn5qdzzH +AaM4jLpr8Vsx+yQKhoE7JFXtFNUj43/6X+B9iPXxnheRul/V0vAq73EyFOQoq0jPG7dfAW+9azE5 +a/ISx5VSjV7qS52qF2ganlF/Vtodn5Y9IdvwYoN2YT/seMPUb+7uZzfgtM9RcxafJLOHKoXeipgt +DdIaMN8+/BJgqbZhkrKEROpvWCUUCyPvXtbPcuMU+I82X337yq1+ppo75s0woYsL5077xUB5ZgPP +hLnjkWHDgwnTyVlAufhRMzsf785vCKLIiPma+uGbqgaVJOjsycObt54PPnzOYiykh4l7kOv7tcLT +9lTgRhKsall8bBHjv2jiUQX5a+TY0NnZt4yLGwdF92wQRcawO5ccK2x6gFrwVSdnRJ3+CS6i5IQ2 +EvqaKjtZSnpjkmXino5YKgNG57nxY67tjkUEFjLlBzUfjZcORqwZXrQixiyQmGXoO8B+2Qy2lnWI +zcf4KpIjCNZ2rnYPcsUBPQPtOQ2akHjbXUveHEgnIY4KG6k0ZFOMiJk+zPekFzirshDEP5zR3C5h +OAc+h8fqHz1VoVYrh8nhwznXgY2upy0lGWaFPSTTAwH8rfPcA34w0J/NoMuraJmz+A05x8dktBp2 +EKZ9pbQmk5XOK/i41fE16SUuiNI+ng/hKfla+/kk1iAWIQqGbu4878CbBsszGbTJOcPuXrKvSnwa +eHPItD8W0dwYRtXxReALQoWYyd1vJSrbQypoM3Qt8GnP4JkFtAi1vFnZ0LrwyJtTEl/rmzXtmcH2 +LAZvhtdsBRy7fjhNm1thBK3l7jnACdEuPYlWB1kP9DvANWBbtoqTCoOlMq5p7C3xHeBiox7JIRFN +rPKWYEV30HKcf9HcS2FsJxdbeQhEu2k03bXohMDZaMp2laE3k+FXSqbVRByav5J4D2brs5nvE1ld +VStfEwx+IjgrygRlEe7niqadIA57QAGfN9HTM+vA+wf72r/sck1b71j8WjnNJAfIDpJ0ldVRYlJ9 +1Kzma2qkJwmmmvgVcHS9lUzi0LCfSpoHAeTc872zDrz95bLmL++E5V8vOayp7K4xszxwIVJzPz/5 +gkJfU0KCzEDMAQ7MRGWq/RFg9n9IHQ53Y+n8gx58OS7znpD1Drcub2tqKd0DGmG+kfHeSC2xIyoV +mLLQ16Tz8KGw2wmdnomQObHzyqwEdCBWABSdnc+bDljycl7ePQNEUd3pl4s+GnIIHBJdhpjLMar7 +SHWPqKS/J3zPRkO3Fy846Io9ZU3zexqIit2lnzBcd6Gm5jxchrgmyZMjJZh0s4oG4v9Bxg/K8HVw +Zcp07ElrusdJotj4+bMzcrmmE4Smmyc12J4l/BbwcNmVn+ItBz+6Jy7jng2iqs60aEqQ14cj59nb +ERNStpY/5roQN4DKAC6wm7hg+hN78vINgShjBL9YdL2Mg0CHA/uH5v86TI8J28zjyy9n9umloZUa +AtHWxy+e/2oolQDdw1sOvnxoUdLj/wPaSDrGQq6emwAAAABJRU5ErkJggg== +" + id="image4332" + x="75" + y="78.81356" /></svg> diff --git a/launcher/src/appfwhandler.cpp b/launcher/src/appfwhandler.cpp new file mode 100644 index 0000000..9df6d7d --- /dev/null +++ b/launcher/src/appfwhandler.cpp @@ -0,0 +1,212 @@ +/* + * Copyright (c) 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <unistd.h> +#include <sys/types.h> +#include "appfwhandler.h" +#include "hmi-debug.h" + +AppFwHandler* AppFwHandler::myself = nullptr; + +// called when pws hangsup +static void _on_pws_hangup(void *closure) +{ + if(AppFwHandler::myself) + AppFwHandler::myself->on_pws_hangup(); +} + +static void _on_pws_reply(void *closure, void *request, struct json_object *obj, const char *error, const char *info) +{ + HMI_DEBUG("AppFwHandler", "%s called,error=[%s], info=[%s], obj=[%s]", __FUNCTION__, error, info, json_object_to_json_string(obj)); + if(json_object_is_type(obj, json_type_object)) { + struct json_object *obj1, *obj2, *obj3; + json_object_object_get_ex(obj, "icon", &obj1); + json_object_object_get_ex(obj, "name", &obj2); + json_object_object_get_ex(obj, "id", &obj3); + if(json_object_is_type(obj3, json_type_null)) + return; + QString icon = json_object_get_string(obj1); + QString name = json_object_get_string(obj2); + QString id = json_object_get_string(obj3); + QStringList info; + info << icon << name << id; + emit AppFwHandler::myself->applistupdate(info); + } +} + +static void _on_pws_event_broadcast(void *closure, const char *event_name, struct json_object *data) +{ + HMI_DEBUG("AppFwHandler", "%s called,event=%s, [%s]", __FUNCTION__, event_name, json_object_to_json_string(data)); + QStringList list = QString(event_name).split('/'); + if(list[0] == "afm-main" && list[1] == "application-list-changed") { + struct json_object *obj1, *obj2; + json_object_object_get_ex(data, "operation", &obj1); + json_object_object_get_ex(data, "data", &obj2); + QString oper = json_object_get_string(obj1); + QString id = json_object_get_string(obj2); + + if(oper == "uninstall") { + QStringList info; + // icon, name, id + info << "" << "" << id; + emit AppFwHandler::myself->applistupdate(info); + } + else if (oper == "install") { + // call state + AppFwHandler::myself->detail(id); + } + else { + HMI_DEBUG("AppFwHandler","data error"); + } + } +} + +// the callback interface for pws +static struct afb_proto_ws_client_itf pws_itf = { + .on_reply = _on_pws_reply, + .on_event_create = nullptr, + .on_event_remove = nullptr, + .on_event_subscribe = nullptr, + .on_event_unsubscribe = nullptr, + .on_event_push = nullptr, + .on_event_broadcast = _on_pws_event_broadcast, +}; + +AppFwHandler::AppFwHandler(const char* appname, QObject *parent) : QObject(parent) +{ + myself = this; + int uid = getuid(); + QString _uid; + if(uid == 0) + _uid = QString('0'); + else + _uid = QString(uid); + + m_sessionid = _uid + QString(appname); + m_uri = "unix:/run/user/" + _uid + "/apis/ws/afm-main"; + HMI_NOTICE("AppFwHandler","m_uri=%s, m_sessionid=%s", m_uri.toStdString().c_str(), m_sessionid.toStdString().c_str()); +} + +int AppFwHandler::init(void) +{ + // get default loop + int rc = sd_event_default(&m_evloop); + if(rc < 0) + { + HMI_ERROR("AppFwHandler", "can't create event loop"); + return 1; + } + + // connect to framework + if (!try_connect_pws()) { + HMI_ERROR("connection to %s failed: %m\n", m_uri.toStdString().c_str()); + return 1; + } +// runnables(); + return 0; +} + +int AppFwHandler::runnables(void) +{ + int ret = 1; + if(call(__FUNCTION__, "{\"info\":\"test my guess\"}") < 0) + ret = 0; + return ret; +} + +int AppFwHandler::detail(QString id) +{ + int ret = 1; + HMI_DEBUG("AppFwHandler", "detail id is %s\n", id.toStdString().c_str()); + if(call(__FUNCTION__, id.toStdString().c_str()) < 0) + ret = 0; + return ret; +} + +int AppFwHandler::try_connect_pws(void) +{ + m_pws = afb_ws_client_connect_api(m_evloop, m_uri.toStdString().c_str(), &pws_itf, NULL); + if (m_pws == nullptr) { + HMI_ERROR("AppFwHandler", "connection to %s failed!\n", m_uri.toStdString().c_str()); + return 0; + } + afb_proto_ws_on_hangup(m_pws, _on_pws_hangup); + return 1; +} + +void AppFwHandler::on_pws_hangup(void) +{ + struct afb_proto_ws *apw = m_pws; + m_pws = nullptr; + afb_proto_ws_unref(apw); + attempt_connect_pws(10); +} + +void AppFwHandler::attempt_connect_pws(int count) +{ + if(m_time != nullptr) { + HMI_NOTICE("AppFwHandler", "attempt_connect_pws retrying!\n"); + return; + } + if(count > 0) + m_retry = count; + else + return; + + m_time = new QTimer(this); + connect(m_time, SIGNAL(timeout()), this, SLOT(connect_pws_timer_slot())); + m_time->start(5000); +} + +void AppFwHandler::connect_pws_timer_slot(void) +{ + --m_retry; + int ret = try_connect_pws(); + if(ret) { + m_retry = 0; + disconnect(m_time, 0, 0, 0); + delete m_time; + m_time = nullptr; + } + else { + if(m_retry > 0) + m_time->start(5000); + } +} + +int AppFwHandler::call(const char *verb, const char *object) +{ + static int num = 0; + if(verb == nullptr) { + HMI_NOTICE("AppFwHandler", "parameter is null!\n"); + return 0; + } + num++; + + QString key = QString(num) + ':' + QString(verb); + enum json_tokener_error jerr; + struct json_object *obj = json_tokener_parse_verbose(object, &jerr); + if (jerr != json_tokener_success) + obj = json_object_new_string(object); + + int rc = afb_proto_ws_client_call(m_pws, verb, obj, m_sessionid.toStdString().c_str(), key.toLatin1().data(), NULL); + json_object_put(obj); + if (rc < 0) { + HMI_ERROR("AppFwHandler", "calling %s(%s) failed!\n", verb, object); + } + + return rc; +} diff --git a/launcher/src/appfwhandler.h b/launcher/src/appfwhandler.h new file mode 100644 index 0000000..25a401b --- /dev/null +++ b/launcher/src/appfwhandler.h @@ -0,0 +1,76 @@ +/* + * Copyright (c) 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APPFWHANDLER_H +#define APPFWHANDLER_H + +#include <QObject> +#include <QString> +#include <QTimer> +#include <json-c/json.h> +#include <systemd/sd-event.h> +extern "C" { +#include <afb/afb-proto-ws.h> +#include <afb/afb-ws-client.h> +} + +class AppFwHandler : public QObject +{ + Q_OBJECT +public: + AppFwHandler(const char* appname, QObject *parent = nullptr); + AppFwHandler(AppFwHandler&) = delete; + AppFwHandler &operator=(AppFwHandler&) = delete; + ~AppFwHandler() = default; + + int init(void); + int runnables(void); + int detail(QString id); + void on_pws_hangup(void); + void registerCallback( + /* can't be NULL */ + void (*on_reply_cb)(void *closure, void *request, struct json_object *obj, const char *error, const char *info), + + /* can be NULL */ + void (*on_event_create_cb)(void *closure, const char *event_name, int event_id) = nullptr, + void (*on_event_remove_cb)(void *closure, const char *event_name, int event_id) = nullptr, + void (*on_event_subscribe_cb)(void *closure, void *request, const char *event_name, int event_id) = nullptr, + void (*on_event_unsubscribe_cb)(void *closure, void *request, const char *event_name, int event_id) = nullptr, + void (*on_event_push_cb)(void *closure, const char *event_name, int event_id, struct json_object *data) = nullptr, + void (*on_event_broadcast_cb)(void *closure, const char *event_name, struct json_object *data) = nullptr); + + static AppFwHandler* myself; +signals: + void applistupdate(QStringList info); + +private slots: + void connect_pws_timer_slot(void); + +private: + int try_connect_pws(void); + void attempt_connect_pws(int count); + int call(const char *verb, const char *object); + + QString m_api = "afm-main"; + QString m_uri; + QString m_sessionid; + sd_event *m_evloop = nullptr; + afb_proto_ws *m_pws = nullptr; + QTimer* m_time; + int m_retry = 0; +}; + +#endif // APPFWHANDLER_H diff --git a/launcher/src/applicationmodel.cpp b/launcher/src/applicationmodel.cpp index 090a300..003fe61 100644 --- a/launcher/src/applicationmodel.cpp +++ b/launcher/src/applicationmodel.cpp @@ -33,6 +33,9 @@ class ApplicationModel::Private public: Private(); + void addApp(QString icon, QString name, QString id); + void removeApp(QString id); + QList<AppInfo> data; }; @@ -61,17 +64,46 @@ ApplicationModel::Private::Private() auto const icon = get_icon_name(jso); // Hide HomeScreen icon itself - if (name != "launcher" && - name != "homescreen-2017" && - name != "homescreen" && - !name.contains("OnScreen", Qt::CaseInsensitive)) { - this->data.append(AppInfo(icon, name, id)); - } + if (name != "launcher" && + name != "homescreen-2017" && + name != "homescreen" && + name != "restriction" && + !name.contains("OnScreen", Qt::CaseInsensitive)) { + this->data.append(AppInfo(icon, name, id)); + } HMI_DEBUG("launcher","name: %s icon: %s id: %s.", name.toStdString().c_str(), icon.toStdString().c_str(), id.toStdString().c_str()); } } +void ApplicationModel::Private::addApp(QString icon, QString name, QString id) +{ + HMI_DEBUG("addApp","name: %s icon: %s id: %s.", name.toStdString().c_str(), icon.toStdString().c_str(), id.toStdString().c_str()); + for(int i = 0; i < this->data.size(); ++i) { + if(this->data[i].id() == id) + return; + } + + QString _icon = name.toLower(); + if ( !QFile::exists(QString(":/images/%1_active.svg").arg(_icon)) || + !QFile::exists(QString(":/images/%1_inactive.svg").arg(_icon)) ) + { + _icon = "blank"; + } + this->data.append(AppInfo(_icon, name, id)); +} + +void ApplicationModel::Private::removeApp(QString id) +{ + HMI_DEBUG("removeApp","id: %s.",id.toStdString().c_str()); + for (int i = 0; i < this->data.size(); ++i) { + if (this->data.at(i).id() == id) { + this->data.removeAt(i); + break; + } + } +} + ApplicationModel::ApplicationModel(QObject *parent) : QAbstractListModel(parent) , d(new Private()) @@ -155,3 +187,27 @@ void ApplicationModel::move(int from, int to) HMI_NOTICE("launcher","from : %d, to : %d. false.", from, to); } } + +void ApplicationModel::updateApplist(QStringList info) +{ + QString icon = info.at(0); + QString name = info.at(1); + QString id = info.at(2); + QString appid = id.split('@')[0]; + + if ( appid == "launcher" || + appid == "homescreen-2017" || + appid == "homescreen" || + appid.contains("onscreen", Qt::CaseInsensitive)) { + return; + } + beginResetModel(); + if(icon == "") { // uninstall + d->removeApp(id); + } + else { + // new app + d->addApp(icon, name, id); + } + endResetModel(); +} diff --git a/launcher/src/applicationmodel.h b/launcher/src/applicationmodel.h index 8398b62..750bf75 100644 --- a/launcher/src/applicationmodel.h +++ b/launcher/src/applicationmodel.h @@ -34,6 +34,7 @@ public: Q_INVOKABLE QString id(int index) const; Q_INVOKABLE QString name(int index) const; Q_INVOKABLE void move(int from, int to); + Q_INVOKABLE void updateApplist(QStringList info); private: class Private; diff --git a/launcher/src/main.cpp b/launcher/src/main.cpp index d79e880..8cdb76a 100644 --- a/launcher/src/main.cpp +++ b/launcher/src/main.cpp @@ -31,6 +31,7 @@ #include "afm_user_daemon_proxy.h" #include "qlibhomescreen.h" #include "hmi-debug.h" +#include "appfwhandler.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? @@ -128,6 +129,9 @@ int main(int argc, char *argv[]) layoutHandler->activateSurface(myname); }); + AppFwHandler* appfwhandler = new AppFwHandler(myname.toStdString().c_str()); + appfwhandler->init(); + QUrl bindingAddress; bindingAddress.setScheme(QStringLiteral("ws")); bindingAddress.setHost(QStringLiteral("localhost")); @@ -154,6 +158,7 @@ int main(int argc, char *argv[]) engine.rootContext()->setContextProperty(QStringLiteral("homescreenHandler"), homescreenHandler); engine.rootContext()->setContextProperty(QStringLiteral("launcher"), launcher); engine.rootContext()->setContextProperty(QStringLiteral("screenInfo"), &screenInfo); + engine.rootContext()->setContextProperty(QStringLiteral("appfwhandler"), appfwhandler); engine.load(QUrl(QStringLiteral("qrc:/Launcher.qml"))); QObject *root = engine.rootObjects().first(); diff --git a/package/config.xml b/package/config.xml index 62f99ed..0c7c021 100644 --- a/package/config.xml +++ b/package/config.xml @@ -9,10 +9,14 @@ <feature name="urn:AGL:widget:required-api"> <param name="homescreen" value="ws" /> <param name="windowmanager" value="ws" /> + <param name="afm-main" value="ws" /> </feature> <feature name="urn:AGL:widget:required-permission"> <param name="urn:AGL:permission::public:no-htdocs" value="required" /> <param name="urn:AGL:permission::system:run-by-default" value="required" /> <param name="http://tizen.org/privilege/internal/dbus" value="required" /> + <param name="urn:AGL:permission:afm:system:widget" value="required" /> + <param name="urn:AGL:permission:afm:system:runner" value="required" /> + <param name="urn:AGL:permission:afm:system:runner:state" value="required" /> </feature> </widget> |