diff options
author | Daniel d'Andrada <daniel.dandrada@luxoft.com> | 2018-07-10 14:40:25 +0200 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2018-07-11 11:57:12 +0000 |
commit | ba2a7ede9e1689c03099cd0ef619bc18cda29ef4 (patch) | |
tree | 043a0d1581988a56b5fd9956814defa774f3a031 /examples/applicationmanager/multi-views/system-ui | |
parent | c414cb25d0cc2f7ce33e21e15ff52bc14d6421ad (diff) |
Fix installation of the examples
- Only the project files and wrapper scripts were being installed
- They were being put directly into Qt's example dir. They should be grouped
into a applicationmanager subdirectory there, similarly to what other
modules do.
Task-number: AUTOSUITE-591
Change-Id: I1da6b28a8fe2e9210ad109309d30dfc1ad0d1e99
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Diffstat (limited to 'examples/applicationmanager/multi-views/system-ui')
-rw-r--r-- | examples/applicationmanager/multi-views/system-ui/Readme.qml | 71 | ||||
-rw-r--r-- | examples/applicationmanager/multi-views/system-ui/main.qml | 227 |
2 files changed, 298 insertions, 0 deletions
diff --git a/examples/applicationmanager/multi-views/system-ui/Readme.qml b/examples/applicationmanager/multi-views/system-ui/Readme.qml new file mode 100644 index 00000000..000e5fdf --- /dev/null +++ b/examples/applicationmanager/multi-views/system-ui/Readme.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:BSD-QTAS$ +** Commercial License Usage +** Licensees holding valid commercial Qt Automotive Suite licenses may use +** this file in accordance with the commercial license agreement provided +** with the Software or, alternatively, in accordance with the terms +** contained in a written agreement between you and The Qt Company. For +** licensing terms and conditions see https://www.qt.io/terms-conditions. +** For further information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.4 + +Item { + anchors.fill: parent + + Column { + width: heading.implicitWidth + height: heading.implicitHeight + 80 + anchors.centerIn: parent + spacing: 10 + + Text { + id: heading + color: "cornflowerblue" + font { pixelSize: 20; weight: Font.Bold } + text: "Multiple WindowItems displaying the same WindowObject" + } + } +} diff --git a/examples/applicationmanager/multi-views/system-ui/main.qml b/examples/applicationmanager/multi-views/system-ui/main.qml new file mode 100644 index 00000000..64d5ce4f --- /dev/null +++ b/examples/applicationmanager/multi-views/system-ui/main.qml @@ -0,0 +1,227 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:BSD-QTAS$ +** Commercial License Usage +** Licensees holding valid commercial Qt Automotive Suite licenses may use +** this file in accordance with the commercial license agreement provided +** with the Software or, alternatively, in accordance with the terms +** contained in a written agreement between you and The Qt Company. For +** licensing terms and conditions see https://www.qt.io/terms-conditions. +** For further information use the contact form at https://www.qt.io/contact-us. +** +** BSD License Usage +** Alternatively, you may use this file under the terms of the BSD license +** as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of The Qt Company Ltd nor the names of its +** contributors may be used to endorse or promote products derived +** from this software without specific prior written permission. +** +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: BSD-3-Clause +** +****************************************************************************/ + +import QtQuick 2.4 +import QtApplicationManager 1.0 + +Rectangle { + width: 1024 + height: 640 + color: "linen" + + Readme {} + + Text { + anchors.bottom: parent.bottom + text: (ApplicationManager.singleProcess ? "Single" : "Multi") + "-Process Mode" + } + + // Application launcher panel + Column { + id: launcher + Repeater { + id: menuItems + model: ApplicationManager + + Image { + source: icon + + Text { + anchors.fill: parent + fontSizeMode: Text.Fit; minimumPixelSize: 10; font.pixelSize: height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: model.isRunning ? "Stop" : "Start" + } + + MouseArea { + anchors.fill: parent + onClicked: { + if (model.isRunning) + application.stop(); + else + application.start(); + } + } + } + } + } + + // System-UI chrome for applications + Repeater { + model: ListModel { id: topLevelWindowsModel } + + delegate: Rectangle { + id: winChrome + + width: 400; height: 320 + z: model.index + color: "tan" + + property bool manuallyClosed: false + + Text { + anchors.horizontalCenter: parent.horizontalCenter + text: (windowItem.primary ? "Primary: " : "Secondary: ") + model.window.application.name("en") + } + + MouseArea { + anchors.fill: parent + drag.target: parent + onPressed: topLevelWindowsModel.move(model.index, topLevelWindowsModel.count-1, 1); + } + + Rectangle { + width: 25; height: 25 + color: "chocolate" + Text { + anchors.fill: parent + fontSizeMode: Text.Fit; minimumPixelSize: 10; font.pixelSize: 25 + horizontalAlignment: Text.AlignHCenter + text: "-" + } + + MouseArea { + anchors.fill: parent + onClicked: { + winChrome.manuallyClosed = true; + } + } + } + + Text { + width: 25; height: 25 + anchors.right: addWindowItemButton.left + fontSizeMode: Text.Fit; minimumPixelSize: 10; font.pixelSize: 25 + + text: "P" + visible: !windowItem.primary + + MouseArea { + anchors.fill: parent + onClicked: windowItem.makePrimary() + } + } + Text { + id: addWindowItemButton + width: 25; height: 25 + anchors.right: parent.right + fontSizeMode: Text.Fit; minimumPixelSize: 10; font.pixelSize: 25 + + text: "+" + + MouseArea { + anchors.fill: parent + onClicked: { + topLevelWindowsModel.append({"window":model.window}); + } + } + } + + WindowItem { + id: windowItem + anchors.fill: parent + anchors.margins: 3 + anchors.topMargin: 25 + window: model.window + } + + Component.onCompleted: { + winChrome.x = 300 + model.index * 50; + winChrome.y = 10 + model.index * 30; + } + + states: [ + State { + name: "open" + when: model.window && model.window.contentState === WindowObject.SurfaceWithContent && !manuallyClosed + PropertyChanges { + target: winChrome + opacity: 1 + scale: 1 + visible: true + } + } + ] + + opacity: 0.25 + scale: 0.50 + visible: false + + transitions: [ + Transition { + to: "open" + NumberAnimation { target: winChrome; properties: "opacity,scale"; duration: 500; easing.type: Easing.OutQuad} + }, + Transition { + from: "open" + SequentialAnimation { + PropertyAction { target: winChrome; property: "visible"; value: true } // we wanna see the window during the closing animation + NumberAnimation { target: winChrome; properties: "opacity,scale"; duration: 500; easing.type: Easing.InQuad} + ScriptAction { script: { + if (model.window.contentState === WindowObject.NoSurface || winChrome.manuallyClosed) + topLevelWindowsModel.remove(model.index, 1); + } } + } + } + ] + } + } + + // Handler for WindowManager signals + Connections { + target: WindowManager + onWindowAdded: { + topLevelWindowsModel.append({"window":window}); + } + } +} |