mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-22 18:52:30 +01:00
Refactor basewindow code
This commit is contained in:
parent
ffc1ccf54c
commit
1b955eddb3
@ -5,7 +5,10 @@ BaseWindow::BaseWindow(QObject* parent)
|
||||
{
|
||||
}
|
||||
|
||||
BaseWindow::BaseWindow(QString projectFilePath, const QVector<int> activeScreensList, const bool checkWallpaperVisible)
|
||||
BaseWindow::BaseWindow(
|
||||
const QString& projectFilePath,
|
||||
const QVector<int> activeScreensList,
|
||||
const bool checkWallpaperVisible)
|
||||
: QObject(nullptr)
|
||||
, m_checkWallpaperVisible(checkWallpaperVisible)
|
||||
, m_activeScreensList(activeScreensList)
|
||||
@ -21,19 +24,21 @@ BaseWindow::BaseWindow(QString projectFilePath, const QVector<int> activeScreens
|
||||
if (projectFilePath == "test") {
|
||||
setType(BaseWindow::WallpaperType::Qml);
|
||||
setFullContentPath("qrc:/Test.qml");
|
||||
setupLiveReloading();
|
||||
return;
|
||||
}
|
||||
|
||||
QFile projectFile;
|
||||
QFile projectFile { projectFilePath + "/project.json" };
|
||||
QJsonDocument configJsonDocument;
|
||||
QJsonParseError parseError;
|
||||
|
||||
projectFile.setFileName(projectFilePath + "/project.json");
|
||||
projectFile.open(QIODevice::ReadOnly | QIODevice::Text);
|
||||
QString projectConfig = projectFile.readAll();
|
||||
const QString projectConfig = projectFile.readAll();
|
||||
projectFile.close();
|
||||
configJsonDocument = QJsonDocument::fromJson(projectConfig.toUtf8(), &parseError);
|
||||
|
||||
/* project.json example:
|
||||
* https://kelteseth.gitlab.io/ScreenPlayDocs/project/project/
|
||||
*{
|
||||
* "title": "example title",
|
||||
* "description": "",
|
||||
@ -47,41 +52,38 @@ BaseWindow::BaseWindow(QString projectFilePath, const QVector<int> activeScreens
|
||||
*/
|
||||
|
||||
if (!(parseError.error == QJsonParseError::NoError)) {
|
||||
qDebug() << projectConfig << "\n"
|
||||
<< parseError.errorString();
|
||||
qInfo() << projectFile.fileName()
|
||||
<< projectConfig
|
||||
<< parseError.errorString();
|
||||
qFatal("Settings Json Parse Error. Exiting now!");
|
||||
}
|
||||
|
||||
const QJsonObject projectObject = configJsonDocument.object();
|
||||
const QJsonObject project = configJsonDocument.object();
|
||||
|
||||
if (!projectObject.contains("type")) {
|
||||
if (!project.contains("type")) {
|
||||
qFatal("No type was specified inside the json object!");
|
||||
QApplication::exit(-3);
|
||||
}
|
||||
|
||||
setType(parseWallpaperType(projectObject.value("type").toString().toLower()));
|
||||
|
||||
if (!projectObject.contains("file")) {
|
||||
if (!project.contains("file")) {
|
||||
qFatal("No file was specified inside the json object!");
|
||||
QApplication::exit(-4);
|
||||
}
|
||||
|
||||
setType(parseWallpaperType(project.value("type").toString().toLower()));
|
||||
setBasePath(QUrl::fromUserInput(projectFilePath).toLocalFile());
|
||||
|
||||
if (m_type == WallpaperType::Website) {
|
||||
if (!projectObject.contains("url")) {
|
||||
if (!project.contains("url")) {
|
||||
qFatal("No url was specified for a websiteWallpaper!");
|
||||
QApplication::exit(-4);
|
||||
QApplication::exit(-5);
|
||||
}
|
||||
setFullContentPath(projectObject.value("url").toString());
|
||||
qInfo() << fullContentPath();
|
||||
setFullContentPath(project.value("url").toString());
|
||||
} else {
|
||||
setFullContentPath("file:///" + projectFilePath + "/" + projectObject.value("file").toString());
|
||||
setFullContentPath("file:///" + projectFilePath + "/" + project.value("file").toString());
|
||||
}
|
||||
|
||||
auto reloadQMLLambda = [this]() { emit reloadQML(type()); };
|
||||
QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, reloadQMLLambda);
|
||||
QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::fileChanged, this, reloadQMLLambda);
|
||||
m_fileSystemWatcher.addPaths({ projectFilePath, projectFilePath + "/" + projectObject.value("file").toString() });
|
||||
setupLiveReloading();
|
||||
}
|
||||
|
||||
void BaseWindow::messageReceived(QString key, QString value)
|
||||
@ -215,3 +217,12 @@ BaseWindow::WallpaperType BaseWindow::parseWallpaperType(const QString& type)
|
||||
|
||||
return BaseWindow::WallpaperType::Video;
|
||||
}
|
||||
|
||||
void BaseWindow::setupLiveReloading()
|
||||
{
|
||||
auto reloadQMLLambda = [this]() { emit reloadQML(type()); };
|
||||
QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::directoryChanged, this, reloadQMLLambda);
|
||||
QObject::connect(&m_fileSystemWatcher, &QFileSystemWatcher::fileChanged, this, reloadQMLLambda);
|
||||
const QFileInfo file { m_fullContentPath };
|
||||
m_fileSystemWatcher.addPaths({ file.path(), m_fullContentPath });
|
||||
}
|
||||
|
@ -51,7 +51,7 @@ class BaseWindow : public QObject {
|
||||
|
||||
public:
|
||||
BaseWindow(QObject* parent = nullptr);
|
||||
BaseWindow(QString projectFilePath, const QVector<int> activeScreensList, const bool checkWallpaperVisible);
|
||||
BaseWindow(const QString& projectFilePath, const QVector<int> activeScreensList, const bool checkWallpaperVisible);
|
||||
|
||||
Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged)
|
||||
Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged)
|
||||
@ -408,6 +408,8 @@ public slots:
|
||||
private:
|
||||
BaseWindow::WallpaperType parseWallpaperType(const QString& type);
|
||||
|
||||
void setupLiveReloading();
|
||||
|
||||
private:
|
||||
bool m_checkWallpaperVisible { false };
|
||||
bool m_visualsPaused { false };
|
||||
|
@ -58,7 +58,13 @@ class WinWindow : public BaseWindow {
|
||||
Q_PROPERTY(WindowsDesktopProperties* windowsDesktopProperties READ windowsDesktopProperties WRITE setWindowsDesktopProperties NOTIFY windowsDesktopPropertiesChanged)
|
||||
|
||||
public:
|
||||
explicit WinWindow(const QVector<int>& activeScreensList, const QString& projectPath, const QString& id, const QString& volume, const QString& fillmode, const bool checkWallpaperVisible);
|
||||
explicit WinWindow(
|
||||
const QVector<int>& activeScreensList,
|
||||
const QString& projectPath,
|
||||
const QString& id,
|
||||
const QString& volume,
|
||||
const QString& fillmode,
|
||||
const bool checkWallpaperVisible);
|
||||
|
||||
WindowsDesktopProperties* windowsDesktopProperties() const
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user