From d99cec2b3beabcbe198ab536f1d60d036bf2ffe3 Mon Sep 17 00:00:00 2001 From: kelteseth Date: Wed, 21 Mar 2018 18:59:43 +0100 Subject: [PATCH] Add widget base path, qml and exe widget comparison --- ScreenPlay.pro | 3 ++- ScreenPlay/main.cpp | 13 ++++++++-- ScreenPlay/src/projectfile.cpp | 2 +- ScreenPlay/src/screenplay.h | 43 +++++++++++++++++++++++++++++----- ScreenPlay/src/settings.cpp | 10 ++++++++ ScreenPlay/src/settings.h | 4 ++++ 6 files changed, 65 insertions(+), 10 deletions(-) diff --git a/ScreenPlay.pro b/ScreenPlay.pro index 493e9a45..e0b00c2e 100644 --- a/ScreenPlay.pro +++ b/ScreenPlay.pro @@ -3,6 +3,7 @@ SUBDIRS = \ ScreenPlay/ScreenPlay.pro \ ScreenPlaySDK/Screenplaysdk.pro \ ScreenPlayWindow/ScreenPlayWindow.pro \ - ScreenPlayWidget/ + ScreenPlayWidget/ScreenPlayWidget.pro ScreenPlayWindow.depends = ScreenPlaySDK +ScreenPlayWidget.depends = ScreenPlaySDK diff --git a/ScreenPlay/main.cpp b/ScreenPlay/main.cpp index 65a2712a..17a53486 100644 --- a/ScreenPlay/main.cpp +++ b/ScreenPlay/main.cpp @@ -43,8 +43,8 @@ int main(int argc, char* argv[]) { - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); - QApplication::setAttribute(Qt::AA_UseOpenGLES); + QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); + QGuiApplication::setAttribute(Qt::AA_UseOpenGLES); QGuiApplication app(argc, argv); app.setQuitOnLastWindowClosed(false); @@ -105,7 +105,10 @@ int main(int argc, char* argv[]) #ifdef QT_DEBUG if (SPWorkingDir.cdUp()) { settings.setScreenPlayWindowPath(QUrl(SPWorkingDir.path() + "/ScreenPlayWindow/debug/ScreenPlayWindow.exe")); + settings.setScreenPlayWidgetPath(QUrl(SPWorkingDir.path() + "/ScreenPlayWidget/debug/ScreenPlayWidget.exe")); } + + // We need to detect the right base path so we can copy later the example projects SPBaseDir.cdUp(); SPBaseDir.cdUp(); SPBaseDir.cd("ScreenPlay"); @@ -126,9 +129,15 @@ int main(int argc, char* argv[]) // If started by QtCreator SPWorkingDir.cd("release"); settings.setScreenPlayWindowPath(QUrl(SPWorkingDir.path() + "/ScreenPlayWindow.exe")); + SPWorkingDir.cdUp(); + SPWorkingDir.cdUp(); + SPWorkingDir.cd("ScreenPlayWidget"); + SPWorkingDir.cd("release"); + settings.setScreenPlayWidgetPath(QUrl(SPWorkingDir.path() + "/ScreenPlayWidget.exe")); } else { // If started by Steam settings.setScreenPlayWindowPath(QUrl("ScreenPlayWindow.exe")); + settings.setScreenPlayWindowPath(QUrl("ScreenPlayWidget.exe")); } #endif diff --git a/ScreenPlay/src/projectfile.cpp b/ScreenPlay/src/projectfile.cpp index 3a6bef20..5eaa3c37 100644 --- a/ScreenPlay/src/projectfile.cpp +++ b/ScreenPlay/src/projectfile.cpp @@ -20,7 +20,7 @@ ProjectFile::ProjectFile(QJsonObject obj, QString folderName, QUrl absolutePath) tmp = tmp.toLower(); if (tmp == "video") { m_type = "video"; - } else if (tmp == "widget") { + } else if (tmp == "qmlwidget" || tmp == "standalonewidget") { m_type = "widget"; } else if (tmp == "qmlscene") { m_type = "qmlScene"; diff --git a/ScreenPlay/src/screenplay.h b/ScreenPlay/src/screenplay.h index dbc8060e..ee5403ab 100644 --- a/ScreenPlay/src/screenplay.h +++ b/ScreenPlay/src/screenplay.h @@ -1,13 +1,13 @@ #pragma once #include +#include #include #include #include #include #include #include -#include #include "installedlistmodel.h" #include "monitorlistmodel.h" @@ -53,7 +53,6 @@ public slots: private: QVector> m_screenPlayWallpaperList; QVector> m_screenPlayWidgetList; - }; class ScreenPlayWallpaper : public QObject { @@ -86,7 +85,7 @@ public: QStringList proArgs; proArgs.append(QString::number(m_screenNumber.at(0))); proArgs.append(m_projectPath); - m_appID = parent->generateID(); + m_appID = parent->generateID(); proArgs.append(m_appID); proArgs.append(parent->m_settings->decoder()); proArgs.append(QString::number(volume)); @@ -155,7 +154,6 @@ public slots: emit previewImageChanged(m_previewImage); } - void setAppID(QString appID) { if (m_appID == appID) @@ -182,13 +180,29 @@ class ScreenPlayWidget : public QObject { Q_PROPERTY(QString fullPath READ fullPath WRITE setFullPath NOTIFY fullPathChanged) Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged) Q_PROPERTY(QPoint position READ position WRITE setPosition NOTIFY positionChanged) + Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged) public: - explicit ScreenPlayWidget(QString projectPath, QString previewImage, QString fullPath, ScreenPlay* parent) + ScreenPlayWidget(QString projectPath, QString previewImage, QString fullPath, ScreenPlay* parent) { + m_projectPath = projectPath; + m_fullPath = fullPath; + m_previewImage = previewImage; m_process = new QProcess(this); - m_process->setProgram(fullPath); + QStringList proArgs; + proArgs.append(m_projectPath); + m_appID = parent->generateID(); + proArgs.append(m_appID); + m_process->setArguments(proArgs); + + + if (fullPath.endsWith(".exe")) { + m_process->setProgram(fullPath); + } else if (fullPath.endsWith(".qml")) { + m_process->setProgram(parent->m_settings->getScreenPlayWidgetPath().toString()); + } + qDebug() << m_process->program(); m_process->start(); } @@ -212,6 +226,11 @@ public: return m_fullPath; } + QString appID() const + { + return m_appID; + } + signals: void projectPathChanged(QString projectPath); @@ -222,6 +241,8 @@ signals: void fullPathChanged(QString fullPath); + void appIDChanged(QString appID); + public slots: void setProjectPath(QString projectPath) @@ -260,10 +281,20 @@ public slots: emit fullPathChanged(m_fullPath); } + void setAppID(QString appID) + { + if (m_appID == appID) + return; + + m_appID = appID; + emit appIDChanged(m_appID); + } + private: QString m_projectPath; QString m_previewImage; QPoint m_position; QProcess* m_process; QString m_fullPath; + QString m_appID; }; diff --git a/ScreenPlay/src/settings.cpp b/ScreenPlay/src/settings.cpp index 26e1a91e..423b8e79 100644 --- a/ScreenPlay/src/settings.cpp +++ b/ScreenPlay/src/settings.cpp @@ -222,6 +222,16 @@ void Settings::createDefaultConfig() defaultSettings.close(); } +QUrl Settings::getScreenPlayWidgetPath() const +{ + return m_screenPlayWidgetPath; +} + +void Settings::setScreenPlayWidgetPath(const QUrl &screenPlayWidgetPath) +{ + m_screenPlayWidgetPath = screenPlayWidgetPath; +} + QUrl Settings::getScreenPlayBasePath() const { return m_screenPlayBasePath; diff --git a/ScreenPlay/src/settings.h b/ScreenPlay/src/settings.h index d6d96210..89f767e3 100644 --- a/ScreenPlay/src/settings.h +++ b/ScreenPlay/src/settings.h @@ -121,6 +121,9 @@ public: QUrl getScreenPlayBasePath() const; void setScreenPlayBasePath(QUrl screenPlayBasePath); + QUrl getScreenPlayWidgetPath() const; + void setScreenPlayWidgetPath(const QUrl &screenPlayWidgetPath); + signals: void autostartChanged(bool autostart); void highPriorityStartChanged(bool highPriorityStart); @@ -299,6 +302,7 @@ private: QUrl m_localStoragePath; QUrl m_localSettingsPath; QUrl m_screenPlayWindowPath; + QUrl m_screenPlayWidgetPath; QUrl m_screenPlayBasePath; bool m_hasWorkshopBannerSeen = false;