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/system-ui | |
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/system-ui')
5 files changed, 417 insertions, 0 deletions
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 + } + } + } +} |