1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-09-02 16:49:47 +02:00

Add connection type to sdkconnector. This means we no can distinguish between wallpaper and widgets.

Add remove all wallpaper button. No we can close all wallpapers and widgets seperate.
Add static function to write an QJsonObject into a file. Truncate is optional.
This commit is contained in:
Elias Steurer 2019-09-14 19:33:58 +02:00
parent 99751491c8
commit 272a86a61f
13 changed files with 254 additions and 154 deletions

View File

@ -137,11 +137,11 @@ Item {
}
Button {
id: btnRemoveAllWallpaper
text: qsTr("Remove all wallpaper and Widgets")
text: qsTr("Remove all Wallpapers")
Material.background: Material.Orange
Material.foreground: "white"
onClicked: {
screenPlay.closeAllConnections()
screenPlay.removeAllWallpapers()
monitors.state = "inactive"
}
}

View File

@ -11,8 +11,7 @@ ScreenPlayManager::ScreenPlayManager(const shared_ptr<GlobalVariables>& globalVa
, m_monitorListModel { mlm }
, m_sdkconnector { sdkc }
{
loadActiveProfiles();
QObject::connect(m_monitorListModel.get(), &MonitorListModel::monitorListChanged, this, &ScreenPlayManager::monitorListChanged);
loadWallpaperProfiles();
}
void ScreenPlayManager::createWallpaper(
@ -23,7 +22,6 @@ void ScreenPlayManager::createWallpaper(
const QString& fillMode,
const QString& type)
{
increaseActiveWallpaperCounter();
QString path = absoluteStoragePath;
if (absoluteStoragePath.contains("file:///"))
@ -45,13 +43,21 @@ void ScreenPlayManager::createWallpaper(
m_screenPlayWallpapers.append(wallpaper);
m_monitorListModel->setWallpaperActiveMonitor(wallpaper, monitorIndex);
QJsonArray monitors;
for (const int index : monitorIndex) {
monitors.append(index);
}
QJsonObject settings;
settings.insert("monitors", QJsonArray {});
settings.insert("monitors", monitors);
settings.insert("type", type);
settings.insert("volume", volume);
settings.insert("volume", static_cast<double>(volume));
settings.insert("isLooping", true);
settings.insert("fillMode", fillMode);
settings.insert("previeImage", previewImage);
settings.insert("absolutePath", absoluteStoragePath);
saveConfigWallpaper("default", monitorIndex, settings);
saveWallpaperProfile("default", settings);
increaseActiveWallpaperCounter();
}
void ScreenPlayManager::createWidget(const QUrl& absoluteStoragePath, const QString& previewImage)
@ -70,17 +76,52 @@ void ScreenPlayManager::createWidget(const QUrl& absoluteStoragePath, const QStr
this));
}
void ScreenPlayManager::closeAllConnections()
void ScreenPlayManager::removeAllWallpapers()
{
if (!m_screenPlayWidgets.empty() || !m_screenPlayWallpapers.empty()) {
m_sdkconnector->closeAllConnections();
setActiveWallpaperCounter(0);
setActiveWidgetsCounter(0);
m_sdkconnector->closeAllWallpapers();
m_screenPlayWallpapers.clear();
m_screenPlayWidgets.clear();
m_monitorListModel->clearActiveWallpaper();
QString absoluteProfilesFilePath = m_globalVariables->localSettingsPath().toLocalFile() + "/profiles.json";
auto configOptional = Util::openJsonFileToObject(absoluteProfilesFilePath);
if (!configOptional.has_value()) {
qWarning() << "Could not load active profiles.";
return;
}
QJsonObject configObj = configOptional.value();
// TODO right now we limit ourself to one default profile
QJsonArray activeProfilesTmp = configObj.value("profiles").toArray();
if (activeProfilesTmp.size() != 1) {
qWarning() << "We currently only support one profile!";
return;
}
for (const QJsonValueRef wallpaper : activeProfilesTmp) {
wallpaper.toObject().remove("wallpaper");
wallpaper.toObject().insert("wallpaper", QJsonArray());
}
configObj.remove("profiles");
configObj.insert("profiles", activeProfilesTmp);
qDebug() << configObj;
Util::writeJsonObjectToFile(absoluteProfilesFilePath, configObj);
setActiveWallpaperCounter(0);
}
}
void ScreenPlayManager::removeWallpaperAt(int at)
{
if (auto appID = m_monitorListModel->getAppIDByMonitorIndex(at)) {
m_sdkconnector->closeWallpaper(appID.value());
m_monitorListModel->closeWallpaper(appID.value());
decreaseActiveWallpaperCounter();
}
return;
}
void ScreenPlayManager::requestProjectSettingsListModelAt(const int index)
@ -98,8 +139,16 @@ void ScreenPlayManager::requestProjectSettingsListModelAt(const int index)
void ScreenPlayManager::setWallpaperValue(const int index, const QString& key, const QString& value)
{
if (auto appID = m_monitorListModel->getAppIDByMonitorIndex(index)) {
m_sdkconnector->setWallpaperValue(appID.value(), key, value);
auto appID = m_monitorListModel->getAppIDByMonitorIndex(index);
if (appID.has_value()) {
return;
}
m_sdkconnector->setWallpaperValue(appID.value(), key, value);
for (auto& wallpaper : m_screenPlayWallpapers) {
if (wallpaper->appID() == appID.value()){
}
}
}
@ -110,31 +159,13 @@ void ScreenPlayManager::setAllWallpaperValue(const QString& key, const QString&
}
}
void ScreenPlayManager::removeWallpaperAt(int at)
bool ScreenPlayManager::saveWallpaperProfile(const QString& profileName, const QJsonObject& newProfileObject)
{
if (auto appID = m_monitorListModel->getAppIDByMonitorIndex(at)) {
m_sdkconnector->closeWallpaper(appID.value());
m_monitorListModel->closeWallpaper(appID.value());
decreaseActiveWallpaperCounter();
}
}
// Remove when implementing profiles
Q_UNUSED(profileName)
void ScreenPlayManager::monitorListChanged()
{
for (const auto& wallpaperUnique_ptr : m_screenPlayWallpapers) {
if (wallpaperUnique_ptr->screenNumber().length() > 1) {
for (const int moitor : wallpaperUnique_ptr->screenNumber()) {
emit m_monitorListModel->setNewActiveMonitor(
moitor,
wallpaperUnique_ptr->previewImage());
}
}
}
}
bool ScreenPlayManager::saveConfigWallpaper(const QString& profileName, const QVector<int>& monitors, const QJsonObject& content)
{
auto configObj = Util::openJsonFileToObject(m_globalVariables->localSettingsPath().toLocalFile() + "/profiles.json");
QString absoluteProfilesFilePath = m_globalVariables->localSettingsPath().toLocalFile() + "/profiles.json";
auto configObj = Util::openJsonFileToObject(absoluteProfilesFilePath);
if (!configObj.has_value()) {
qWarning() << "Could not load active profiles.";
@ -149,40 +180,33 @@ bool ScreenPlayManager::saveConfigWallpaper(const QString& profileName, const QV
return false;
}
int i { 0 };
for (const QJsonValueRef wallpaper : activeProfilesTmp) {
auto wallpaperList = wallpaper.toObject().value("wallpaper").toArray();
for (const QJsonValueRef wallpaper : wallpaperList) {
QJsonObject wallpaperObj = wallpaper.toObject();
QJsonObject currentProfileObject = wallpaper.toObject();
if (wallpaperObj.empty())
if (currentProfileObject.empty())
return false;
QJsonArray monitorsArray = wallpaperObj.value("monitors").toArray();
// A wallpaper can span across multiple monitors
// But first we need to convert the QJsonArray to an QVector<int>
QVector<int> monitorsParsed;
for (const QJsonValueRef item : monitorsArray) {
int tmp = item.toInt(-1);
if (tmp == -1) {
continue;
}
monitorsParsed.append(tmp);
}
// We need to find the right wallpaper with the same monitors.
if (monitorsParsed != monitors) {
if (currentProfileObject.value("monitors").toArray() != newProfileObject.value("monitors").toArray())
continue;
}
wallpaperList.removeAt(i);
wallpaperList.append(newProfileObject);
Util::writeJsonObjectToFile(absoluteProfilesFilePath, configObj.value());
return true;
}
++i;
}
return true;
return false;
}
void ScreenPlayManager::loadActiveProfiles()
void ScreenPlayManager::loadWallpaperProfiles()
{
auto configObj = Util::openJsonFileToObject(m_globalVariables->localSettingsPath().toLocalFile() + "/profiles.json");
@ -251,7 +275,6 @@ void ScreenPlayManager::loadActiveProfiles()
QString previewImage = wallpaperObj.value("previewImage").toString();
QString file = wallpaperObj.value("file").toString();
QString type = wallpaperObj.value("type").toString();
QString name = wallpaperObj.value("name").toString();
createWallpaper(monitors, absolutePath, previewImage, volume, fillMode, type);
monitors.clear();

View File

@ -100,13 +100,13 @@ public slots:
void createWidget(const QUrl& absoluteStoragePath, const QString& previewImage);
void closeAllConnections();
void removeAllWallpapers();
void removeWallpaperAt(const int at = 0);
void requestProjectSettingsListModelAt(const int index);
void setWallpaperValue(const int index, const QString& key, const QString& value);
void setAllWallpaperValue(const QString& key, const QString& value);
void monitorListChanged();
void setActiveWallpaperCounter(int activeWallpaperCounter)
{
@ -127,8 +127,9 @@ public slots:
}
private:
void loadActiveProfiles();
bool saveConfigWallpaper(const QString& profileName, const QVector<int>& monitors, const QJsonObject& content);
void loadWallpaperProfiles();
bool saveWallpaperProfile(const QString& profileName, const QJsonObject& content);
private:
const shared_ptr<GlobalVariables>& m_globalVariables;

View File

@ -10,20 +10,20 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(
const QVector<int>& screenNumber,
const shared_ptr<GlobalVariables>& globalVariables,
const QString& appID,
const QString& projectPath,
const QString& absolutePath,
const QString& previewImage,
const float volume,
const QString& fillMode,
const QString& type,
QObject* parent)
: QObject(parent)
, m_projectSettingsListModel { make_shared<ProjectSettingsListModel>(projectPath + "/project.json") }
, m_projectSettingsListModel { make_shared<ProjectSettingsListModel>(absolutePath + "/project.json") }
, m_globalVariables { globalVariables }
, m_screenNumber { screenNumber }
, m_projectPath { projectPath }
, m_previewImage { QString { projectPath + "/" + previewImage } }
, m_previewImage { QString { absolutePath + "/" + previewImage } }
, m_type { type }
, m_appID { appID }
, m_absolutePath { absolutePath }
{
QObject::connect(&m_process, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),
@ -53,10 +53,11 @@ ScreenPlayWallpaper::ScreenPlayWallpaper(
const QStringList proArgs {
tmpScreenNumber,
m_projectPath,
m_absolutePath,
QString { "appID=" + m_appID },
QString::number(static_cast<double>(volume)),
fillMode
fillMode,
type
};
qDebug() << "Creating ScreenPlayWallpaper " << proArgs;

View File

@ -1,43 +1,44 @@
#pragma once
#include <QJsonObject>
#include <QObject>
#include <QProcess>
#include <memory>
#include "projectsettingslistmodel.h"
#include "globalvariables.h"
#include "projectsettingslistmodel.h"
namespace ScreenPlay {
using std::shared_ptr,
std::make_shared;
class ScreenPlayWallpaper : public QObject {
class ScreenPlayWallpaper : public QObject {
Q_OBJECT
Q_PROPERTY(QVector<int> screenNumber READ screenNumber WRITE setScreenNumber NOTIFY screenNumberChanged)
Q_PROPERTY(QString file READ file WRITE setFile NOTIFY fileChanged)
Q_PROPERTY(QString fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
Q_PROPERTY(QString projectPath READ projectPath WRITE setProjectPath NOTIFY projectPathChanged)
Q_PROPERTY(QString absolutePath READ absolutePath WRITE setAbsolutePath NOTIFY absolutePathChanged)
Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged)
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(QJsonObject profileJsonObject READ profileJsonObject WRITE setProfileJsonObject NOTIFY profileJsonObjectChanged)
public:
explicit ScreenPlayWallpaper(const QVector<int>& screenNumber,
explicit ScreenPlayWallpaper(
const QVector<int>& screenNumber,
const shared_ptr<GlobalVariables>& globalVariables,
const QString& appID,
const QString& projectPath,
const QString& absolutePath,
const QString& previewImage,
const float volume,
const QString& fillMode,
const QString& type,
QObject* parent = nullptr);
~ScreenPlayWallpaper() {}
const shared_ptr<ProjectSettingsListModel>& projectSettingsListModel() const
@ -50,11 +51,6 @@ public:
return m_screenNumber;
}
QString projectPath() const
{
return m_projectPath;
}
QString previewImage() const
{
return m_previewImage;
@ -80,16 +76,26 @@ public:
return m_fillMode;
}
QString absolutePath() const
{
return m_absolutePath;
}
QJsonObject profileJsonObject() const
{
return m_profileJsonObject;
}
signals:
void screenNumberChanged(QVector<int> screenNumber);
void projectPathChanged(QString projectPath);
void previewImageChanged(QString previewImage);
void appIDChanged(QString appID);
void typeChanged(QString type);
void fileChanged(QString file);
void fillModeChanged(QString fillMode);
void absolutePathChanged(QString absolutePath);
void profileJsonObjectChanged(QJsonObject profileJsonObject);
public slots:
void setScreenNumber(QVector<int> screenNumber)
@ -101,15 +107,6 @@ public slots:
emit screenNumberChanged(m_screenNumber);
}
void setProjectPath(QString projectPath)
{
if (m_projectPath == projectPath)
return;
m_projectPath = projectPath;
emit projectPathChanged(m_projectPath);
}
void setPreviewImage(QString previewImage)
{
if (m_previewImage == previewImage)
@ -155,6 +152,24 @@ public slots:
emit fillModeChanged(m_fillMode);
}
void setAbsolutePath(QString absolutePath)
{
if (m_absolutePath == absolutePath)
return;
m_absolutePath = absolutePath;
emit absolutePathChanged(m_absolutePath);
}
void setProfileJsonObject(QJsonObject profileJsonObject)
{
if (m_profileJsonObject == profileJsonObject)
return;
m_profileJsonObject = profileJsonObject;
emit profileJsonObjectChanged(m_profileJsonObject);
}
private:
QProcess m_process;
@ -163,11 +178,12 @@ private:
QVector<int> m_screenNumber;
QString m_projectPath;
QString m_previewImage;
QString m_type;
QString m_appID;
QString m_file;
QString m_fillMode;
QString m_absolutePath;
QJsonObject m_profileJsonObject;
};
}

View File

@ -1,7 +1,5 @@
#include "sdkconnector.h"
#include <QJsonDocument>
#include <QJsonObject>
namespace ScreenPlay {
SDKConnector::SDKConnector(QObject* parent)
: QObject(parent)
@ -10,7 +8,7 @@ SDKConnector::SDKConnector(QObject* parent)
connect(m_server.get(), &QLocalServer::newConnection, this, &SDKConnector::newConnection);
if (!m_server->listen("ScreenPlay")) {
qErrnoWarning("Could not open Local Socket with the name ScreenPlay. Usually this means another ScreenPlay instance is running!");
qCritical("Could not open Local Socket with the name ScreenPlay. Usually this means another ScreenPlay instance is running!");
}
}
@ -25,10 +23,18 @@ void SDKConnector::newConnection()
void SDKConnector::closeAllConnections()
{
for (int i = 0; i < m_clients.size(); ++i) {
m_clients.at(i)->close();
m_clients.clear();
m_clients.squeeze();
for (auto& client : m_clients) {
client->close();
}
m_clients.clear();
}
void SDKConnector::closeAllWallpapers()
{
for (auto& client : m_clients) {
if(client->type() == "videoWallpaper"){
client->close();
}
}
}
@ -37,7 +43,6 @@ void SDKConnector::closeWallpapersAt(int at)
for (const shared_ptr<SDKConnection>& refSDKConnection : m_clients) {
refSDKConnection->close();
if (!refSDKConnection->monitor().empty()) {
// problem here !!
if (refSDKConnection->monitor().at(0) == at) {
refSDKConnection->close();
qDebug() << "Wall Closed...!";

View File

@ -1,5 +1,7 @@
#pragma once
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonValue>
#include <QLocalServer>
#include <QLocalSocket>
@ -32,6 +34,7 @@ public slots:
void readyRead();
void newConnection();
void closeAllConnections();
void closeAllWallpapers();
void closeWallpapersAt(int at);
void closeWallpaper(const QString& appID);
@ -46,6 +49,7 @@ private:
class SDKConnection : public QObject {
Q_OBJECT
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(QVector<int> monitor READ monitor WRITE setMonitor NOTIFY monitorChanged)
public:
@ -79,11 +83,18 @@ public:
return m_monitor;
}
QString type() const
{
return m_type;
}
signals:
void requestCloseAt(int at);
void appIDChanged(QString appID);
void monitorChanged(QVector<int> monitor);
void typeChanged(QString type);
public slots:
void readyRead()
{
@ -92,11 +103,13 @@ public slots:
// The first message allways contains the appID
if (msg.startsWith("appID=")) {
QStringList args = msg.split(",");
//Only use the first 32 chars for the appID
m_appID = msg.remove("appID=").mid(0, 32);
msg.remove(m_appID);
qDebug() << "###### Wallpaper width APPID created:"
<< "\n######" << m_appID;
QString appID = args.at(0);
m_appID = appID.remove("appID=");
m_type = args.at(1);
qDebug() << "###### Wallpaper created:"
<< "\t AppID:" << m_appID << "\t type: " << m_type;
} else {
qDebug() << "### Message from: " << m_appID << "\n###" << msg;
}
@ -131,9 +144,19 @@ public slots:
emit monitorChanged(m_monitor);
}
void setType(QString type)
{
if (m_type == type)
return;
m_type = type;
emit typeChanged(m_type);
}
private:
QLocalSocket* m_socket;
QString m_appID;
QVector<int> m_monitor;
QString m_type;
};
}

View File

@ -148,13 +148,7 @@ void Settings::writeSingleSettingConfig(QString name, QVariant value)
obj.value().insert(name, value.toJsonValue());
QFile configTmp;
configTmp.setFileName(filename);
configTmp.open(QIODevice::ReadWrite | QIODevice::Truncate);
QTextStream out(&configTmp);
out << QJsonDocument(obj.value()).toJson();
configTmp.close();
Util::writeJsonObjectToFile(filename,obj.value());
}
void Settings::setqSetting(const QString& key, const QString& value)

View File

@ -112,6 +112,28 @@ std::optional<QVersionNumber> Util::getVersionNumberFromString(const QString& st
return QVersionNumber(major, minor, patch);
}
bool Util::writeJsonObjectToFile(const QString& absoluteFilePath, const QJsonObject& object, bool truncate)
{
QFile configTmp;
configTmp.setFileName(absoluteFilePath);
QIODevice::OpenMode openMode;
if (truncate) {
openMode = QIODevice::ReadWrite | QIODevice::Truncate;
} else {
openMode = QIODevice::ReadWrite | QIODevice::Append;
}
if (!configTmp.open(openMode)) {
return false;
}
QTextStream out(&configTmp);
out << QJsonDocument(object).toJson();
configTmp.close();
return true;
}
void Util::setNavigation(QString nav)
{
emit requestNavigation(nav);
@ -332,5 +354,4 @@ bool Util::saveExtractedByteArray(libzippp::ZipEntry& entry, std::string& absolu
return true;
}
}

View File

@ -1,19 +1,21 @@
#pragma once
#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>
#include <QDir>
#include <QGuiApplication>
#include <QJsonDocument>
#include <QJsonObject>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QObject>
#include <QProcess>
#include <QScopeGuard>
#include <QString>
#include <QtConcurrent/QtConcurrent>
#include <QDateTime>
#include <QNetworkReply>
#include <QProcess>
#include <QTextStream>
#include <QVersionNumber>
#include <QtConcurrent/QtConcurrent>
#include <qqml.h>
#include <fstream>
@ -24,20 +26,16 @@
namespace ScreenPlay {
class Util : public QObject {
Q_OBJECT
Q_PROPERTY(bool ffmpegAvailable READ ffmpegAvailable NOTIFY ffmpegAvailableChanged)
Q_PROPERTY(bool ffmpegAvailable READ ffmpegAvailable NOTIFY ffmpegAvailableChanged)
Q_PROPERTY(AquireFFMPEGStatus aquireFFMPEGStatus READ aquireFFMPEGStatus NOTIFY aquireFFMPEGStatusChanged)
Q_PROPERTY(QString debugMessages READ debugMessages NOTIFY debugMessagesChanged)
Q_PROPERTY(QString debugMessages READ debugMessages NOTIFY debugMessagesChanged)
public:
explicit Util(QNetworkAccessManager* networkAccessManager, QObject* parent = nullptr);
enum class AquireFFMPEGStatus {
Init,
Download,
@ -83,8 +81,8 @@ signals:
public slots:
static std::optional<QJsonObject> openJsonFileToObject(const QString& path);
static std::optional<QString> openJsonFileToString(const QString& path);
static std::optional<QVersionNumber> getVersionNumberFromString(const QString& str);
static bool writeJsonObjectToFile(const QString& absoluteFilePath, const QJsonObject& object, bool truncate = true);
static QString generateRandomString(quint32 length = 32);
@ -123,7 +121,7 @@ public slots:
void appendDebugMessages(QString debugMessages)
{
if(m_debugMessages.size() > 1000000) {
if (m_debugMessages.size() > 1000000) {
m_debugMessages = "###### DEBUG CLEARED ######";
}
@ -143,5 +141,5 @@ private:
};
// Used for redirect content from static logToGui to setDebugMessages
static Util* utilPointer {nullptr};
static Util* utilPointer { nullptr };
}

View File

@ -5,6 +5,22 @@ static ScreenPlaySDK* global_sdkPtr = nullptr;
ScreenPlaySDK::ScreenPlaySDK(QQuickItem* parent)
: QQuickItem(parent)
{
init();
}
ScreenPlaySDK::ScreenPlaySDK(
const QString& appID,
const QString& type,
QQuickItem* parent)
: QQuickItem(parent)
, m_type { type }
, m_appID { appID }
{
init();
}
void ScreenPlaySDK::init()
{
// Redirect all messages from this to ScreenPlay
global_sdkPtr = this;
@ -26,6 +42,10 @@ ScreenPlaySDK::~ScreenPlaySDK()
void ScreenPlaySDK::connected()
{
QByteArray welcomeMessage = QString(m_appID + "," + m_type).toUtf8();
m_socket.write(welcomeMessage);
m_socket.waitForBytesWritten();
setIsConnected(true);
emit sdkConnected();
}

View File

@ -20,15 +20,16 @@ class ScreenPlaySDK : public QQuickItem {
public:
ScreenPlaySDK(QQuickItem* parent = nullptr);
ScreenPlaySDK( const QString& appID, const QString& type,QQuickItem* parent = nullptr);
~ScreenPlaySDK();
Q_PROPERTY(QString contentType READ contentType WRITE setContentType NOTIFY contentTypeChanged)
Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(bool isConnected READ isConnected WRITE setIsConnected NOTIFY isConnectedChanged)
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
QString contentType() const
QString type() const
{
return m_contentType;
return m_type;
}
bool isConnected() const
@ -49,19 +50,13 @@ public slots:
void error(QLocalSocket::LocalSocketError socketError);
void redirectMessage(QByteArray& msg);
void setContentType(QString contentType)
void setType(QString type)
{
if (m_contentType == contentType)
if (m_type == type)
return;
m_contentType = contentType;
if (isConnected()) {
m_socket.write(QByteArray(m_contentType.toLatin1()));
m_socket.flush();
m_socket.waitForBytesWritten();
}
emit contentTypeChanged(m_contentType);
m_type = type;
emit typeChanged(m_type);
}
void setIsConnected(bool isConnected)
@ -80,9 +75,6 @@ public slots:
m_appID = appID;
emit appIDChanged(m_appID);
m_socket.write(QByteArray(appID.toUtf8()));
m_socket.waitForBytesWritten();
}
static void redirectMessageOutputToMainWindow(QtMsgType type, const QMessageLogContext& context, const QString& msg);
@ -94,16 +86,19 @@ signals:
void sdkConnected();
void sdkDisconnected();
void contentTypeChanged(QString contentType);
void typeChanged(QString type);
void isConnectedChanged(bool isConnected);
void appIDChanged(QString appID);
void newRedirectMessage(QByteArray& msg);
private:
void init();
private:
QLocalSocket m_socket;
QString m_contentType = "undefined";
QString m_type = "undefined";
bool m_isConnected = false;
QString m_appID;

View File

@ -35,11 +35,14 @@ int main(int argc, char* argv[])
// It means we want to test a single wallpaper
QStringList argumentList = app.arguments();
if (argumentList.length() == 1) {
QVector<int> list;
list.append(0);
//Set the monitor number to test
#if defined(Q_OS_WIN)
WinWindow window(list, "test", "appid", "1", "fill");
WinWindow window1({ 0 }, "test", "appid", "1", "fill");
WinWindow window2({ 1 }, "test", "appid", "1", "fill");
WinWindow window3({ 2 }, "test", "appid", "1", "fill");
//WinWindow window(list, "D:/672870/827874818", "appid", "1", "fill");
#endif
#if defined(Q_OS_LINUX)
@ -52,13 +55,13 @@ int main(int argc, char* argv[])
return app.exec();
}
// 5 parameter + 1 OS working directory default paramter
if (argumentList.length() != 6) {
// 6 parameter + 1 OS working directory default paramter
if (argumentList.length() != 7) {
return -3;
}
ScreenPlaySDK sdk;
sdk.setAppID(argumentList.at(3));
// AppID, Type
ScreenPlaySDK sdk(argumentList.at(3),argumentList.at(6));
QString monitorNumbers = argumentList.at(1);
QStringList activeScreensList = monitorNumbers.split(",");
@ -85,7 +88,7 @@ int main(int argc, char* argv[])
}
}
// Args: which monitor, (2) path to project, (3)wallpaper secret to identify the connected socket, (4) volume, (5) fillmode
// Args: which monitor, (2) path to project, (3)wallpaper secret to identify the connected socket, (4) volume, (5) fillmode, (6) type
// See screenplay.h @ScreenPlayWallpaper constructor how the args get created
qDebug() << argumentList;