diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2016-03-31 10:19:55 +0200 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2016-03-31 11:21:33 +0000 |
commit | 9b05221285ce2369e1e87e88c86970b943797294 (patch) | |
tree | 63a431b9ebc759e1cefe1e9fb1ae64c610ab08bd /plugins/screenManager/screenmanager.cpp | |
parent | d53ea69bc4cbc9c4ae1f0c26db36b5a81d27516b (diff) |
Added a ScreenManager plugin and use it in ClusterAndHUD.qml
Currently there is no QML api for selecting which screen a window
should use, this is a small helper which makes it possible to do that
from QML.
The ClusterAndHUD.qml now moves the cluster to the second Screen. This
only works if the QPA handles the screens separately, which means in a
modern desktop environment the screen will be set for the window, but
it won't move there.
As before the ClusterAndHUD.qml can only be started on system with a
WindowManager running or a system with 2 screens
Change-Id: Ia854dd420d72c8349c90b19971c88a27adab7bdf
Reviewed-by: Nedim Hadzic <nedim.hadzic@pelagicore.com>
Diffstat (limited to 'plugins/screenManager/screenmanager.cpp')
-rw-r--r-- | plugins/screenManager/screenmanager.cpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/plugins/screenManager/screenmanager.cpp b/plugins/screenManager/screenmanager.cpp new file mode 100644 index 0000000..b993bf8 --- /dev/null +++ b/plugins/screenManager/screenmanager.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 Pelagicore AG +** Contact: http://www.qt.io/ or http://www.pelagicore.com/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL3-PELAGICORE$ +** Commercial License Usage +** Licensees holding valid commercial Pelagicore Neptune IVI UI +** 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 +** Pelagicore. For licensing terms and conditions, contact us at: +** http://www.pelagicore.com. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3 requirements will be +** met: http://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +** SPDX-License-Identifier: GPL-3.0 +** +****************************************************************************/ + +#include "screenmanager.h" +#include <QGuiApplication> +#include <QScreen> +#include <QDebug> + +ScreenManager::ScreenManager(QObject *parent) + : QObject(parent) +{ + connect(qApp, &QGuiApplication::screenAdded, this, &ScreenManager::availableScreensChanged); + connect(qApp, &QGuiApplication::screenAdded, this, &ScreenManager::availableScreensChanged); +} + +void ScreenManager::setScreen(QWindow *window, int screen) +{ + if (screen >= 0 && screen < QGuiApplication::screens().count()) { + window->setScreen(QGuiApplication::screens().at(screen)); + } else { + qWarning() << "invalid Screen"; + } +} + +QList<QScreen *> ScreenManager::availableScreens() const +{ + return QGuiApplication::screens(); +} |