From 2f6d87caf307fcad9fa9506eacd948a3fd6d9eb1 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Fri, 19 Aug 2016 17:45:33 +0200 Subject: Added an autodetection for showing the Instrument Cluster Instead of changing the main file manually, the Main file is more smart now and tries to detect whether showing the InstrumentCluster is possible. Using am-config.yaml the Cluster can still be disabled if it's not wanted, e.g. for development on the Desktop Change-Id: If2ff186cf1317fc309050e1f4b3a479e25342249 Reviewed-by: Nedim Hadzic --- Main.qml | 49 +++++++++++++++++++++++++ MainWithCluster.qml | 65 --------------------------------- am-config.yaml | 1 + plugins/screenManager/screenmanager.cpp | 5 +++ 4 files changed, 55 insertions(+), 65 deletions(-) delete mode 100644 MainWithCluster.qml diff --git a/Main.qml b/Main.qml index 713856e..1428b7d 100644 --- a/Main.qml +++ b/Main.qml @@ -31,6 +31,9 @@ import QtQuick 2.5 import QtQuick.Window 2.2 +import QtApplicationManager 1.0 +import com.pelagicore.ScreenManager 1.0 +import "sysui/Cluster" import "sysui" import controls 1.0 import utils 1.0 @@ -38,6 +41,9 @@ import utils 1.0 Rectangle { id: root + property bool showClusterIfPossible: ApplicationManager.additionalConfiguration.showCluster + property var cluster + color: "black" width: Style.screenWidth height: Style.screenHeight @@ -71,4 +77,47 @@ Rectangle { anchors.fill: display } } + + Component { + id: clusterComponent + Window { + id: cluster + title: "Neptune Cluster Display" + height: 720 + width: 1920 + visible: false + + color: "black" + + Cluster {} + + Component.onCompleted: { + WindowManager.registerCompositorView(cluster) + Style.withCluster = true + ScreenManager.setScreen(cluster, 1) + cluster.show() + } + } + } + + Window.onActiveChanged: { + if (Window.active && !WindowManager.runningOnDesktop) + cluster.requestActivate() + } + + Component.onCompleted: { + var canDisplayCluster = Screen.desktopAvailableWidth > Screen.width || WindowManager.runningOnDesktop || ScreenManager.screenCount() > 1 + + if (!showClusterIfPossible) { + console.log("Showing Instrument Cluster was disabled"); + return + } + + if (canDisplayCluster) { + console.log("Showing Instrument Cluster"); + cluster = clusterComponent.createObject(root); + } else { + console.log("Showing the Instrument Cluster is not possible on this platform"); + } + } } diff --git a/MainWithCluster.qml b/MainWithCluster.qml deleted file mode 100644 index 057141d..0000000 --- a/MainWithCluster.qml +++ /dev/null @@ -1,65 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 Pelagicore AG -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Neptune IVI UI. -** -** $QT_BEGIN_LICENSE:GPL-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 General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 or (at your option) 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.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-3.0.html. -** -** $QT_END_LICENSE$ -** -** SPDX-License-Identifier: GPL-3.0 -** -****************************************************************************/ - -import QtQuick 2.1 -import QtQuick.Window 2.1 -import QtApplicationManager 1.0 -import com.pelagicore.ScreenManager 1.0 -import utils 1.0 -import "sysui/Cluster" - -Main { - id: root - - Window { - id: cluster - title: "Neptune Cluster Display" - height: 720 - width: 1920 - visible: false - - color: "black" - - Cluster {} - - Component.onCompleted: { - WindowManager.registerCompositorView(cluster) - Style.withCluster = true - ScreenManager.setScreen(cluster, 1) - cluster.show() - } - } - - Window.onActiveChanged: { - if (Window.active && !WindowManager.runningOnDesktop) - cluster.requestActivate() - } -} diff --git a/am-config.yaml b/am-config.yaml index 6b64e9d..ae7c07b 100644 --- a/am-config.yaml +++ b/am-config.yaml @@ -21,6 +21,7 @@ ui: additionalConfiguration: appStoreServerUrl: 'http://chaos.pelagicore.net:8080' styleConfig: "auto" + showCluster: yes windowIcon: "imports/shared/assets/icons/active/apps@96.png" # development setup: no security diff --git a/plugins/screenManager/screenmanager.cpp b/plugins/screenManager/screenmanager.cpp index 42b04e3..72a6bba 100644 --- a/plugins/screenManager/screenmanager.cpp +++ b/plugins/screenManager/screenmanager.cpp @@ -41,6 +41,11 @@ ScreenManager::ScreenManager(QObject *parent) connect(qApp, &QGuiApplication::screenAdded, this, &ScreenManager::availableScreensChanged); } +int ScreenManager::screenCount() const +{ + return QGuiApplication::screens().count(); +} + void ScreenManager::setScreen(QWindow *window, int screen) { if (screen >= 0 && screen < QGuiApplication::screens().count()) { -- cgit v1.2.3