diff options
Diffstat (limited to 'plugins/screenManager')
-rw-r--r-- | plugins/screenManager/plugin.cpp | 57 | ||||
-rw-r--r-- | plugins/screenManager/qmldir | 2 | ||||
-rw-r--r-- | plugins/screenManager/screenManager.pro | 30 | ||||
-rw-r--r-- | plugins/screenManager/screenmanager.cpp | 55 | ||||
-rw-r--r-- | plugins/screenManager/screenmanager.h | 54 |
5 files changed, 198 insertions, 0 deletions
diff --git a/plugins/screenManager/plugin.cpp b/plugins/screenManager/plugin.cpp new file mode 100644 index 0000000..7b98066 --- /dev/null +++ b/plugins/screenManager/plugin.cpp @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** 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 <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/plugins/screenManager/qmldir b/plugins/screenManager/qmldir new file mode 100644 index 0000000..5472c91 --- /dev/null +++ b/plugins/screenManager/qmldir @@ -0,0 +1,2 @@ +module com.pelagicore.ScreenManager +plugin screenmanagerplugin diff --git a/plugins/screenManager/screenManager.pro b/plugins/screenManager/screenManager.pro new file mode 100644 index 0000000..2681be6 --- /dev/null +++ b/plugins/screenManager/screenManager.pro @@ -0,0 +1,30 @@ +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 + +!equals(_PRO_FILE_PWD_, $$OUT_PWD) { + copy_qmldir.target = $$OUT_PWD/qmldir + copy_qmldir.depends = $$_PRO_FILE_PWD_/qmldir + copy_qmldir.commands = $(COPY_FILE) \"$$replace(copy_qmldir.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_qmldir.target, /, $$QMAKE_DIR_SEP)\" + QMAKE_EXTRA_TARGETS += copy_qmldir + PRE_TARGETDEPS += $$copy_qmldir.target +} + +qmldir.files = qmldir +installPath = $$[QT_INSTALL_QML]/$$replace(uri, \\., /) +qmldir.path = $$installPath +target.path = $$installPath +INSTALLS += target qmldir 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(); +} diff --git a/plugins/screenManager/screenmanager.h b/plugins/screenManager/screenmanager.h new file mode 100644 index 0000000..83094dc --- /dev/null +++ b/plugins/screenManager/screenmanager.h @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** 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 +** +****************************************************************************/ + +#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 |