diff options
Diffstat (limited to 'CenterConsole/plugins/screenManager')
-rw-r--r-- | CenterConsole/plugins/screenManager/plugin.cpp | 57 | ||||
-rw-r--r-- | CenterConsole/plugins/screenManager/qmldir | 2 | ||||
-rw-r--r-- | CenterConsole/plugins/screenManager/screenManager.pro | 23 | ||||
-rw-r--r-- | CenterConsole/plugins/screenManager/screenmanager.cpp | 61 | ||||
-rw-r--r-- | CenterConsole/plugins/screenManager/screenmanager.h | 54 |
5 files changed, 197 insertions, 0 deletions
diff --git a/CenterConsole/plugins/screenManager/plugin.cpp b/CenterConsole/plugins/screenManager/plugin.cpp new file mode 100644 index 0000000..f4639a2 --- /dev/null +++ b/CenterConsole/plugins/screenManager/plugin.cpp @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt 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 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** 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 +** +****************************************************************************/ + +#include <QtQml/qqmlextensionplugin.h> +#include <qqml.h> +#include "screenmanager.h" + +static QObject *screenManagerSingletonFactory(QQmlEngine *engine, QJSEngine *scriptEngine) +{ + Q_UNUSED(scriptEngine) + Q_UNUSED(engine) + + return new ScreenManager(); +} + +class HoundPlugin : public QQmlExtensionPlugin +{ + Q_OBJECT + Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QQmlExtensionInterface/1.0") +public: + virtual void registerTypes(const char *uri) + { + Q_ASSERT(QLatin1String(uri) == QLatin1String("com.pelagicore.ScreenManager")); + Q_UNUSED(uri); + + qmlRegisterSingletonType<ScreenManager>(uri, 1, 0, "ScreenManager", screenManagerSingletonFactory); + } +}; + +#include "plugin.moc" diff --git a/CenterConsole/plugins/screenManager/qmldir b/CenterConsole/plugins/screenManager/qmldir new file mode 100644 index 0000000..5472c91 --- /dev/null +++ b/CenterConsole/plugins/screenManager/qmldir @@ -0,0 +1,2 @@ +module com.pelagicore.ScreenManager +plugin screenmanagerplugin diff --git a/CenterConsole/plugins/screenManager/screenManager.pro b/CenterConsole/plugins/screenManager/screenManager.pro new file mode 100644 index 0000000..44a0a0c --- /dev/null +++ b/CenterConsole/plugins/screenManager/screenManager.pro @@ -0,0 +1,23 @@ +include (../../../deployment.pri) +TEMPLATE = lib +TARGET = screenmanagerplugin +QT += qml quick +CONFIG += qt plugin c++11 + +TARGET = $$qtLibraryTarget($$TARGET) +uri = com.pelagicore.ScreenManager + +SOURCES += \ + plugin.cpp \ + screenmanager.cpp \ + +HEADERS += \ + screenmanager.h \ + +OTHER_FILES = qmldir + +qmldir.files = qmldir + +qmldir.path = $$TARGET_PATH/qml/$$replace(uri, \\., /) +target.path = $$TARGET_PATH/qml/$$replace(uri, \\., /) +INSTALLS += target qmldir diff --git a/CenterConsole/plugins/screenManager/screenmanager.cpp b/CenterConsole/plugins/screenManager/screenmanager.cpp new file mode 100644 index 0000000..06bc4dc --- /dev/null +++ b/CenterConsole/plugins/screenManager/screenmanager.cpp @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt 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 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** 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 +** +****************************************************************************/ + +#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(); +} + +int ScreenManager::screenCount() const +{ + return QGuiApplication::screens().count(); +} + diff --git a/CenterConsole/plugins/screenManager/screenmanager.h b/CenterConsole/plugins/screenManager/screenmanager.h new file mode 100644 index 0000000..b12f860 --- /dev/null +++ b/CenterConsole/plugins/screenManager/screenmanager.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Pelagicore AG +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Neptune IVI UI. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt 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 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** 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 +** +****************************************************************************/ + +#ifndef SCREENMANAGER_H +#define SCREENMANAGER_H + +#include <QtCore/QObject> +#include <QWindow> + +class ScreenManager : public QObject +{ + Q_OBJECT + + Q_PROPERTY(QList<QScreen*> availableScreens READ availableScreens NOTIFY availableScreensChanged) + +public: + explicit ScreenManager(QObject *parent = 0); + + Q_INVOKABLE int screenCount() const; + Q_INVOKABLE void setScreen(QWindow * window, int screen); + QList<QScreen*> availableScreens() const; + +signals: + void availableScreensChanged(); +}; + +#endif // SCREENMANAGER_H |