aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2016-08-19 17:45:33 +0200
committerDominik Holland <dominik.holland@pelagicore.com>2016-08-30 09:33:16 +0000
commit2f6d87caf307fcad9fa9506eacd948a3fd6d9eb1 (patch)
tree0c31d2fd7f5c97e3f74b3eb01f27a09b99e8b4f2
parentada06fff404f4aea8e830afe3250dd4b49dee1b3 (diff)
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 <nedim.hadzic@pelagicore.com>
-rw-r--r--Main.qml49
-rw-r--r--MainWithCluster.qml65
-rw-r--r--am-config.yaml1
-rw-r--r--plugins/screenManager/screenmanager.cpp5
4 files changed, 55 insertions, 65 deletions
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()) {