mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-07 03:22:33 +01:00
Move everything out of the main class for better unit tests
This commit is contained in:
parent
cbc4243008
commit
1ad4366b02
@ -19,6 +19,7 @@ DISTFILES += \
|
||||
RESOURCES += Resources.qrc
|
||||
|
||||
SOURCES += main.cpp \
|
||||
app.cpp \
|
||||
src/createimportvideo.cpp \
|
||||
src/installedlistmodel.cpp \
|
||||
src/monitorlistmodel.cpp \
|
||||
@ -39,6 +40,7 @@ TRANSLATIONS = translations/ScreenPlay_en.ts \
|
||||
translations/ScreenPlay_de.ts
|
||||
|
||||
HEADERS += \
|
||||
app.h \
|
||||
src/globalvariables.h \
|
||||
src/createimportvideo.h \
|
||||
src/installedlistmodel.h \
|
||||
|
65
ScreenPlay/app.cpp
Normal file
65
ScreenPlay/app.cpp
Normal file
@ -0,0 +1,65 @@
|
||||
#include "app.h"
|
||||
|
||||
App::App(int& argc, char** argv)
|
||||
: QObject(nullptr)
|
||||
, app { std::make_unique<QGuiApplication>(argc, argv) }
|
||||
, mainWindowEngine{std::make_unique<QQmlApplicationEngine>()}
|
||||
{
|
||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QGuiApplication::setOrganizationName("ScreenPlay");
|
||||
QGuiApplication::setOrganizationDomain("screen-play.app");
|
||||
QGuiApplication::setApplicationName("ScreenPlay");
|
||||
QGuiApplication::setApplicationVersion("0.3.0");
|
||||
QGuiApplication::setQuitOnLastWindowClosed(false);
|
||||
QGuiApplication::setWindowIcon(QIcon(":/assets/icons/favicon.ico"));
|
||||
|
||||
// Qt < 6.0 needs this init QtWebEngine
|
||||
QtWebEngine::initialize();
|
||||
|
||||
auto globalVariables = make_shared<GlobalVariables>();
|
||||
auto installedListModel = make_shared<InstalledListModel>(globalVariables);
|
||||
auto installedListFilter = make_shared<InstalledListFilter>(installedListModel);
|
||||
auto monitorListModel = make_shared<MonitorListModel>();
|
||||
auto profileListModel = make_shared<ProfileListModel>(globalVariables);
|
||||
auto sdkConnector = make_shared<SDKConnector>();
|
||||
auto settings = make_shared<Settings>(globalVariables);
|
||||
QObject::connect(settings.get(), &Settings::resetInstalledListmodel, installedListModel.get(), &InstalledListModel::reset);
|
||||
|
||||
Create create(globalVariables);
|
||||
Util util {
|
||||
mainWindowEngine->networkAccessManager()
|
||||
};
|
||||
ScreenPlayManager screenPlay {
|
||||
globalVariables,
|
||||
monitorListModel,
|
||||
sdkConnector
|
||||
};
|
||||
|
||||
// This needs to change in the future because setContextProperty gets depricated in Qt 6
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("globalVariables"), globalVariables.get());
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("screenPlay"), &screenPlay);
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("screenPlayCreate"), &create);
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("utility"), &util);
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("installedListFilter"), installedListFilter.get());
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("monitorListModel"), monitorListModel.get());
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("installedListModel"), installedListModel.get());
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("profileListModel"), profileListModel.get());
|
||||
mainWindowEngine->rootContext()->setContextProperty(QStringLiteral("screenPlaySettings"), settings.get());
|
||||
mainWindowEngine->load(QUrl(QStringLiteral("qrc:/main.qml")));
|
||||
|
||||
// Instead of setting "renderType: Text.NativeRendering" every time
|
||||
// we can set it here once :)
|
||||
QQuickWindow::setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
|
||||
|
||||
// Set visible if the -silent parameter was not set
|
||||
QStringList argumentList = app->arguments();
|
||||
if (!argumentList.contains("-silent")) {
|
||||
settings->setMainWindowVisible(true);
|
||||
}
|
||||
installedListModel->init();
|
||||
}
|
||||
|
||||
int App::run()
|
||||
{
|
||||
return app->exec();
|
||||
}
|
70
ScreenPlay/app.h
Normal file
70
ScreenPlay/app.h
Normal file
@ -0,0 +1,70 @@
|
||||
#pragma once
|
||||
|
||||
#include <QDir>
|
||||
#include <QGuiApplication>
|
||||
#include <QIcon>
|
||||
#include <QObject>
|
||||
#include <QQmlApplicationEngine>
|
||||
#include <QQmlContext>
|
||||
#include <QQmlEngine>
|
||||
#include <QStringList>
|
||||
#include <QUrl>
|
||||
#include <QtWebEngine>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "src/create.h"
|
||||
#include "src/globalvariables.h"
|
||||
#include "src/installedlistfilter.h"
|
||||
#include "src/installedlistmodel.h"
|
||||
#include "src/monitorlistmodel.h"
|
||||
#include "src/profilelistmodel.h"
|
||||
#include "src/screenplaymanager.h"
|
||||
#include "src/sdkconnector.h"
|
||||
#include "src/settings.h"
|
||||
#include "src/util.h"
|
||||
|
||||
using std::make_shared,
|
||||
std::shared_ptr,
|
||||
ScreenPlay::Util,
|
||||
ScreenPlay::InstalledListModel,
|
||||
ScreenPlay::ScreenPlayManager,
|
||||
ScreenPlay::InstalledListFilter,
|
||||
ScreenPlay::MonitorListModel,
|
||||
ScreenPlay::ProfileListModel,
|
||||
ScreenPlay::SDKConnector,
|
||||
ScreenPlay::Settings,
|
||||
ScreenPlay::Create;
|
||||
|
||||
class App : public QObject {
|
||||
Q_OBJECT
|
||||
|
||||
Q_PROPERTY(shared_ptr<GlobalVariables> globalVariables READ globalVariables WRITE setGlobalVariables NOTIFY globalVariablesChanged)
|
||||
public:
|
||||
explicit App(int &argc, char **argv);
|
||||
|
||||
shared_ptr<GlobalVariables> globalVariables() const
|
||||
{
|
||||
return m_globalVariables;
|
||||
}
|
||||
|
||||
signals:
|
||||
|
||||
void globalVariablesChanged(shared_ptr<GlobalVariables> globalVariables);
|
||||
|
||||
public slots:
|
||||
int run();
|
||||
void setGlobalVariables(shared_ptr<GlobalVariables> globalVariables)
|
||||
{
|
||||
if (m_globalVariables == globalVariables)
|
||||
return;
|
||||
|
||||
m_globalVariables = globalVariables;
|
||||
emit globalVariablesChanged(m_globalVariables);
|
||||
}
|
||||
|
||||
private:
|
||||
std::unique_ptr<QGuiApplication> app;
|
||||
std::unique_ptr<QQmlApplicationEngine> mainWindowEngine;
|
||||
shared_ptr<GlobalVariables> m_globalVariables;
|
||||
};
|
@ -1,97 +1,7 @@
|
||||
#include <QDir>
|
||||
#include <QGuiApplication>
|
||||
#include <QIcon>
|
||||
#include <QObject>
|
||||
#include <QQmlApplicationEngine>
|
||||
#include <QQmlContext>
|
||||
#include <QQmlEngine>
|
||||
#include <QStringList>
|
||||
#include <QUrl>
|
||||
#include <QtWebEngine>
|
||||
|
||||
#include <memory>
|
||||
|
||||
#include "src/create.h"
|
||||
#include "src/globalvariables.h"
|
||||
#include "src/installedlistfilter.h"
|
||||
#include "src/installedlistmodel.h"
|
||||
#include "src/monitorlistmodel.h"
|
||||
#include "src/profilelistmodel.h"
|
||||
#include "src/screenplaymanager.h"
|
||||
#include "src/sdkconnector.h"
|
||||
#include "src/settings.h"
|
||||
#include "src/util.h"
|
||||
|
||||
using std::make_shared,
|
||||
ScreenPlay::Util,
|
||||
ScreenPlay::InstalledListModel,
|
||||
ScreenPlay::ScreenPlayManager,
|
||||
ScreenPlay::InstalledListFilter,
|
||||
ScreenPlay::MonitorListModel,
|
||||
ScreenPlay::ProfileListModel,
|
||||
ScreenPlay::SDKConnector,
|
||||
ScreenPlay::Settings,
|
||||
ScreenPlay::Create;
|
||||
#include "app.h"
|
||||
|
||||
int main(int argc, char* argv[])
|
||||
{
|
||||
|
||||
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
QGuiApplication::setOrganizationName("ScreenPlay");
|
||||
QGuiApplication::setOrganizationDomain("screen-play.app");
|
||||
QGuiApplication::setApplicationName("ScreenPlay");
|
||||
QGuiApplication::setApplicationVersion("0.3.0");
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QGuiApplication::setQuitOnLastWindowClosed(false);
|
||||
QGuiApplication::setWindowIcon(QIcon(":/assets/icons/favicon.ico"));
|
||||
|
||||
// Qt < 6.0 needs this init QtWebEngine
|
||||
QtWebEngine::initialize();
|
||||
QQmlApplicationEngine mainWindowEngine;
|
||||
|
||||
auto globalVariables = make_shared<GlobalVariables>();
|
||||
auto installedListModel = make_shared<InstalledListModel>(globalVariables);
|
||||
auto installedListFilter = make_shared<InstalledListFilter>(installedListModel);
|
||||
auto monitorListModel = make_shared<MonitorListModel>();
|
||||
auto profileListModel = make_shared<ProfileListModel>(globalVariables);
|
||||
auto sdkConnector = make_shared<SDKConnector>();
|
||||
auto settings = make_shared<Settings>(globalVariables);
|
||||
QObject::connect(settings.get(), &Settings::resetInstalledListmodel, installedListModel.get(), &InstalledListModel::reset);
|
||||
|
||||
Create create(globalVariables);
|
||||
Util util {
|
||||
mainWindowEngine.networkAccessManager()
|
||||
};
|
||||
ScreenPlayManager screenPlay {
|
||||
globalVariables,
|
||||
monitorListModel,
|
||||
sdkConnector
|
||||
};
|
||||
|
||||
// This needs to change in the future because setContextProperty gets depricated in Qt 6
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("globalVariables"), globalVariables.get());
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("screenPlay"), &screenPlay);
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("screenPlayCreate"), &create);
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("utility"), &util);
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("installedListFilter"), installedListFilter.get());
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("monitorListModel"), monitorListModel.get());
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("installedListModel"), installedListModel.get());
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("profileListModel"), profileListModel.get());
|
||||
mainWindowEngine.rootContext()->setContextProperty(QStringLiteral("screenPlaySettings"), settings.get());
|
||||
mainWindowEngine.load(QUrl(QStringLiteral("qrc:/main.qml")));
|
||||
|
||||
// Instead of setting "renderType: Text.NativeRendering" every time
|
||||
// we can set it here once :)
|
||||
QQuickWindow::setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
|
||||
|
||||
// Set visible if the -silent parameter was not set
|
||||
QStringList argumentList = app.arguments();
|
||||
if (!argumentList.contains("-silent")) {
|
||||
settings->setMainWindowVisible(true);
|
||||
}
|
||||
installedListModel->init();
|
||||
|
||||
return app.exec();
|
||||
App app(argc,argv);
|
||||
return app.run();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user