diff options
author | Daniel d'Andrada <daniel.dandrada@luxoft.com> | 2018-12-03 11:25:34 +0100 |
---|---|---|
committer | Robert Griebl <robert.griebl@pelagicore.com> | 2018-12-07 15:04:24 +0000 |
commit | 05a3bb55ce78d785a77bc8c8aaab2fd82b0bc0b5 (patch) | |
tree | ea33f8f0b2288af890d666ad74509b8fba33b181 /examples/applicationmanager/process-status | |
parent | adb57812ee1cf89f3311f8a27ef97abf5d424bde (diff) |
Introduce MonitorModel & friends
A better, more flexible, API for monitor-lib.
Fixes: AUTOSUITE-692
Fixes: AUTOSUITE-250
Fixes: AUTOSUITE-686
Change-Id: Ib672e6a19beca4e83a51bcdca530c50be1bf00b7
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
Diffstat (limited to 'examples/applicationmanager/process-status')
18 files changed, 779 insertions, 0 deletions
diff --git a/examples/applicationmanager/process-status/am-config.yaml b/examples/applicationmanager/process-status/am-config.yaml new file mode 100644 index 00000000..5db21e36 --- /dev/null +++ b/examples/applicationmanager/process-status/am-config.yaml @@ -0,0 +1,8 @@ +formatVersion: 1 +formatType: am-configuration +--- +applications: + builtinAppsManifestDir: "${CONFIG_PWD}/apps" + +ui: + mainQml: "${CONFIG_PWD}/system-ui/main.qml" diff --git a/examples/applicationmanager/process-status/apps/process-status.cpu-hog/icon.png b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/icon.png Binary files differnew file mode 100644 index 00000000..04ca44dd --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/icon.png diff --git a/examples/applicationmanager/process-status/apps/process-status.cpu-hog/info.yaml b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/info.yaml new file mode 100644 index 00000000..89807bd3 --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/info.yaml @@ -0,0 +1,9 @@ +formatVersion: 1 +formatType: am-application +--- +id: 'process-status.cpu-hog' +icon: 'icon.png' +code: 'main.qml' +runtime: 'qml' +name: + en: 'CPU Hog' diff --git a/examples/applicationmanager/process-status/apps/process-status.cpu-hog/main.qml b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/main.qml new file mode 100644 index 00000000..f38964cc --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.cpu-hog/main.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** 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.Application 1.0 + +ApplicationManagerWindow { + color: "red" + + Text { + anchors.fill: parent + text: "This application consumes a lot of CPU time." + font.pixelSize: 15 + color: "white" + } + + Rectangle { + id: rectangle + width: Math.min(parent.width, parent.height) / 2 + height: width + anchors.centerIn: parent + color: "grey" + Timer { + interval: 10 + repeat: true + running: true + onTriggered: { + rectangle.rotation += 1; + doBusyWork(); + } + function doBusyWork() { + var i = 1; + var n = 1; + for (i = 1; i < 100000; i++) { + n = n + n * n / 1.5; + } + } + } + } +} diff --git a/examples/applicationmanager/process-status/apps/process-status.mem-hog/icon.png b/examples/applicationmanager/process-status/apps/process-status.mem-hog/icon.png Binary files differnew file mode 100644 index 00000000..b149340c --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.mem-hog/icon.png diff --git a/examples/applicationmanager/process-status/apps/process-status.mem-hog/info.yaml b/examples/applicationmanager/process-status/apps/process-status.mem-hog/info.yaml new file mode 100644 index 00000000..a437b108 --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.mem-hog/info.yaml @@ -0,0 +1,9 @@ +formatVersion: 1 +formatType: am-application +--- +id: 'process-status.mem-hog' +icon: 'icon.png' +code: 'main.qml' +runtime: 'qml' +name: + en: 'Memory Hog' diff --git a/examples/applicationmanager/process-status/apps/process-status.mem-hog/main.qml b/examples/applicationmanager/process-status/apps/process-status.mem-hog/main.qml new file mode 100644 index 00000000..ba62b988 --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.mem-hog/main.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** 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.Application 1.0 + +ApplicationManagerWindow { + id: root + color: "green" + + Text { + anchors.fill: parent + text: "This application consumes a lot of memory." + font.pixelSize: 15 + color: "white" + } + + Rectangle { + id: rectangle + width: Math.min(parent.width, parent.height) / 2 + height: width + anchors.centerIn: parent + color: "grey" + Timer { + interval: 10 + repeat: true + running: true + onTriggered: { + rectangle.rotation += 1; + root.contentItem.grabToImage(function(result) { + foo.push(result); + }); + } + property var foo: [] + } + } +} diff --git a/examples/applicationmanager/process-status/apps/process-status.slim/icon.png b/examples/applicationmanager/process-status/apps/process-status.slim/icon.png Binary files differnew file mode 100644 index 00000000..be6ffc57 --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.slim/icon.png diff --git a/examples/applicationmanager/process-status/apps/process-status.slim/info.yaml b/examples/applicationmanager/process-status/apps/process-status.slim/info.yaml new file mode 100644 index 00000000..3c148ed4 --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.slim/info.yaml @@ -0,0 +1,9 @@ +formatVersion: 1 +formatType: am-application +--- +id: 'process-status.slim' +icon: 'icon.png' +code: 'main.qml' +runtime: 'qml' +name: + en: 'Slim' diff --git a/examples/applicationmanager/process-status/apps/process-status.slim/main.qml b/examples/applicationmanager/process-status/apps/process-status.slim/main.qml new file mode 100644 index 00000000..5967789b --- /dev/null +++ b/examples/applicationmanager/process-status/apps/process-status.slim/main.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** 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.11 +import QtApplicationManager.Application 1.0 + +ApplicationManagerWindow { + color: "blue" + + Text { + anchors.fill: parent + text: "This a slim application that just animates." + font.pixelSize: 15 + color: "white" + } + + Rectangle { + id: rectangle + width: Math.min(parent.width, parent.height) / 2 + height: width + anchors.centerIn: parent + color: "grey" + RotationAnimation { + target: rectangle + from: 0 + to: 360 + duration: 1000 + running: true + loops: Animation.Infinite + } + + } +} diff --git a/examples/applicationmanager/process-status/doc/images/process-status-example.png b/examples/applicationmanager/process-status/doc/images/process-status-example.png Binary files differnew file mode 100644 index 00000000..6c7df5e4 --- /dev/null +++ b/examples/applicationmanager/process-status/doc/images/process-status-example.png diff --git a/examples/applicationmanager/process-status/doc/src/process-status-example.qdoc b/examples/applicationmanager/process-status/doc/src/process-status-example.qdoc new file mode 100644 index 00000000..0cad1578 --- /dev/null +++ b/examples/applicationmanager/process-status/doc/src/process-status-example.qdoc @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the documentation of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:FDL-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. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + +\example applicationmanager/process-status +\title Displaying Information About Application Processes +\image process-status-example.png +\brief How to use ProcessStatus to display application process information. +\ingroup applicationmanager-examples + +This example shows you how to use the \l ProcessStatus component to display information +about an application's process. + +This example is based on the simpler \l {"Hello World!" System-UI Example} {Hello World} one. You might +want to start from there if you haven't seen it already. + +On the left side the built-in applications are listed in a column, where each application has a row containing +its icon and name next to a tabbed view that shows information about the application's process (in case the +application is actually running). + +On the right side of the System-UI the windows of the running applications are stacked in a column, in order of +appearance (oldest window at the top and youngest at the bottom). + +There are three applications available, a red one called "CPU Hog" which consumes a lot of CPU, a green one +called "Memory Hog" that continually increases its memory consumption (so don't leave it running for too long +as it will eat up all available RAM eventually) and a blue one called "Slim", which behaves normally. + +*/ diff --git a/examples/applicationmanager/process-status/process-status.pro b/examples/applicationmanager/process-status/process-status.pro new file mode 100644 index 00000000..e2a794d0 --- /dev/null +++ b/examples/applicationmanager/process-status/process-status.pro @@ -0,0 +1,17 @@ +TEMPLATE = app +CONFIG += am-systemui + +target.path = $$[QT_INSTALL_EXAMPLES]/applicationmanager/process-status +INSTALLS += target + +AM_COPY_DIRECTORIES += apps system-ui +AM_COPY_FILES += am-config.yaml + +prefix_build:tpath = $$target.path +else:tpath = $$_PRO_FILE_PWD_ + +AM_DEFAULT_ARGS = -c $$tpath/am-config.yaml --start-session-dbus --verbose -r + +example_sources.path = $$target.path +example_sources.files = $$AM_COPY_FILES $$AM_COPY_DIRECTORIES +INSTALLS += example_sources diff --git a/examples/applicationmanager/process-status/system-ui/ApplicationDisplay.qml b/examples/applicationmanager/process-status/system-ui/ApplicationDisplay.qml new file mode 100644 index 00000000..652cffd4 --- /dev/null +++ b/examples/applicationmanager/process-status/system-ui/ApplicationDisplay.qml @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:LGPL-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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: LGPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.4 +import QtApplicationManager.SystemUI 1.0 +import QtQuick.Controls 2.4 +import QtQuick.Layouts 1.11 + +Frame { + id: root + property string name + property var application + + width: 450 + + RowLayout { + width: parent.width + + Column { + id: iconAndText + + Image { + source: root.application.icon + MouseArea { + anchors.fill: parent + onClicked: root.application.runState === Am.Running ? application.stop() : application.start() + } + } + Label { + font.pixelSize: 18 + text: root.name + } + + } + + Frame { + opacity: root.application.runState === Am.Running ? 1 : 0 + Layout.fillWidth: true + + ColumnLayout { + width: parent.width + TabBar { + id: tabBar + Layout.fillWidth: true + TabButton { + text: "Stats" + font.pixelSize: 15 + } + TabButton { + text: "CPU Graph" + font.pixelSize: 15 + } + } + + StackLayout { + Layout.fillWidth: true + currentIndex: tabBar.currentIndex + Stats { + application: root.application + } + CpuGraph { + application: root.application + } + } + } + } + + } +} diff --git a/examples/applicationmanager/process-status/system-ui/CpuGraph.qml b/examples/applicationmanager/process-status/system-ui/CpuGraph.qml new file mode 100644 index 00000000..109e902b --- /dev/null +++ b/examples/applicationmanager/process-status/system-ui/CpuGraph.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:LGPL-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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: LGPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.11 +import QtQuick.Controls 2.4 +import QtApplicationManager 1.0 +import QtApplicationManager.SystemUI 1.0 + +/* + This file shows how to use ProcessStatus inside a MonitorModel to draw a graph + */ +Pane { + id: root + + property var application + + ListView { + id: listView + anchors.fill: parent + orientation: ListView.Horizontal + spacing: (root.width / model.count) * 0.2 + clip: true + interactive: false + + model: MonitorModel { + id: monitorModel + running: root.visible && root.application.runState === Am.Running + ProcessStatus { + applicationId: root.application.id + } + } + + delegate: Rectangle { + width: (root.width / monitorModel.count) * 0.8 + height: model.cpuLoad * root.height + y: root.height - height + color: root.palette.highlight + } + } + + Label { + anchors.top: parent.top + text: "100%" + font.pixelSize: 15 + } + + Label { + anchors.verticalCenter: parent.verticalCenter + text: "50%" + font.pixelSize: 15 + } + + Label { + anchors.bottom: parent.bottom + text: "0%" + font.pixelSize: 15 + } +} diff --git a/examples/applicationmanager/process-status/system-ui/MemoryText.qml b/examples/applicationmanager/process-status/system-ui/MemoryText.qml new file mode 100644 index 00000000..fc745d55 --- /dev/null +++ b/examples/applicationmanager/process-status/system-ui/MemoryText.qml @@ -0,0 +1,50 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:LGPL-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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: LGPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Controls 2.4 + +Label { + property var value + property string name + text: name + ": " + (value / 1e6).toFixed(0) + " MB" + font.pixelSize: 15 +} diff --git a/examples/applicationmanager/process-status/system-ui/Stats.qml b/examples/applicationmanager/process-status/system-ui/Stats.qml new file mode 100644 index 00000000..69e4d3ea --- /dev/null +++ b/examples/applicationmanager/process-status/system-ui/Stats.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:LGPL-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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: LGPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Controls 2.4 +import QtApplicationManager.SystemUI 1.0 + +/* + This file shows how to use ProcessStatus alongside a Timer (instead of putting it inside a MonitorModel) + when all that is needed is the latest information on a given application process. + */ +Grid { + spacing: 10 + columns: 2 + rows: 5 + + property var application + + property var status: ProcessStatus { + id: processStatus + applicationId: root.application.id + } + property var timer: Timer { + id: updateTimer + interval: 500 + repeat: true + running: root.visible && root.application.runState === Am.Running + onTriggered: processStatus.update() + } + + + Label { text: "processId: " + processStatus.processId; font.pixelSize: 15 } + Label { + property string loadPercent: Number(processStatus.cpuLoad * 100).toLocaleString(Qt.locale("en_US"), 'f', 1) + text: "cpuLoad: " + loadPercent + "%" + font.pixelSize: 15 + } + MemoryText { name: "PSS.total"; value: processStatus.memoryPss.total } + MemoryText { name: "PSS.text"; value: processStatus.memoryPss.text } + MemoryText { name: "PSS.heap"; value: processStatus.memoryPss.heap } + MemoryText { name: "RSS.total"; value: processStatus.memoryRss.total } + MemoryText { name: "RSS.text"; value: processStatus.memoryRss.text } + MemoryText { name: "RSS.heap"; value: processStatus.memoryRss.heap } + MemoryText { name: "Virtual.total"; value: processStatus.memoryVirtual.total } +} diff --git a/examples/applicationmanager/process-status/system-ui/main.qml b/examples/applicationmanager/process-status/system-ui/main.qml new file mode 100644 index 00000000..5bc7cf68 --- /dev/null +++ b/examples/applicationmanager/process-status/system-ui/main.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2018 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Pelagicore Application Manager. +** +** $QT_BEGIN_LICENSE:LGPL-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. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: LGPL-3.0 +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Controls 2.4 +import QtApplicationManager.SystemUI 1.0 + +Pane { + width: 900 + height: appsColumn.y + appsColumn.height + + // Show name, icon and ProcessStatus data for each application + Column { + id: appsColumn + anchors.left: parent.left + anchors.top: parent.top + anchors.margins: 2 + spacing: 10 + Repeater { + model: ApplicationManager + ApplicationDisplay { + name: model.name + application: model.application + } + } + } + + // Show windows of running applications + Column { + id: windowsColumn + anchors.left: appsColumn.right + anchors.right: parent.right + anchors.margins: 10 + Repeater { + model: WindowManager + WindowItem { + width: windowsColumn.width + height: 200 + window: model.window + } + } + } +} |