#include #include #include #include #include #include #include #include #include #include // #include #include #include // #include // #include // #include #include #include #include #include #include #include #include // #include #include #include #include #include #include #include #include #include #include #include #include #include // #include // #include "cpp/mpv/mpvitem.h" // #include "cpp/mpv/mpvproperties.h" // #include "cpp/serviceitemmodel.h" // #include "cpp/slidemodel.h" // #include "cpp/songsqlmodel.h" // #include "cpp/videosqlmodel.h" // #include "cpp/imagesqlmodel.h" // #include "cpp/presentationsqlmodel.h" // #include "cpp/filemanager.h" // #include "cpp/slidehelper.h" // RUST // #include "cxx-qt-gen/service_thing.cxxqt.h" #include "cxx-qt-gen/file_helper.cxxqt.h" #include "cxx-qt-gen/slide_object.cxxqt.h" #include "cxx-qt-gen/slide_model.cxxqt.h" #include "cxx-qt-gen/service_item_model.cxxqt.h" #include "cxx-qt-gen/settings.cxxqt.h" #include "cxx-qt-gen/ytdl.cxxqt.h" #include "cxx-qt-gen/presentation_model.cxxqt.h" #include "cxx-qt-gen/song_model.cxxqt.h" #include "cxx-qt-gen/video_model.cxxqt.h" #include "cxx-qt-gen/image_model.cxxqt.h" #include "cxx-qt-gen/utils.cxxqt.h" #include "cxx-qt-gen/song_editor.cxxqt.h" #include "cxx-qt-gen/obs.cxxqt.h" static QWindow *windowFromEngine(QQmlApplicationEngine *engine) { const auto rootObjects = engine->rootObjects(); auto *window = qobject_cast(rootObjects.first()); Q_ASSERT(window); return window; } int main(int argc, char *argv[]) { // qDebug() << QSurfaceFormat::defaultFormat(); QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setWindowIcon(QIcon::fromTheme(QStringLiteral("video-display"))); QtWebEngineQuick::initialize(); QGuiApplication app(argc, argv); KLocalizedString::setApplicationDomain("lumina"); KAboutData about; about.setComponentName(QStringLiteral("lumina")); about.setDisplayName(i18n("lumina")); about.setVersion(QByteArray("0.1")); about.setShortDescription(i18n("A churchpresentation app build with KDE tech.")); about.setLicense(KAboutLicense::GPL_V3); // overwrite default-generated values of organizationDomain & desktopFileName about.setOrganizationDomain("tfcconnection.org"); about.setDesktopFileName(QStringLiteral("org.tfcconneciton.lumina")); QQuickWindow::setGraphicsApi(QSGRendererInterface::OpenGL); // set the application metadata KAboutData::setApplicationData(about); QCoreApplication::setOrganizationName(QStringLiteral("lumina")); QCoreApplication::setOrganizationDomain(QStringLiteral("tfcconnection.org")); QCoreApplication::setApplicationName(QStringLiteral("lumina")); qSetMessagePattern(QString::fromUtf8("%{category}: %{time h:m:s ap} %{type} %{function}: %{message}\n %{file}")); #ifdef Q_OS_WINDOWS QIcon::setFallbackThemeName(QStringLiteral("breeze")); QQuickStyle::setStyle(QStringLiteral("org.kde.breeze")); // QApplication::setStyle(QStringLiteral("breeze")); #else QIcon::setFallbackThemeName(QStringLiteral("breeze")); QQuickStyle::setStyle(QStringLiteral("org.kde.desktop")); QQuickStyle::setFallbackStyle(QStringLiteral("Default")); #endif // qDebug() << QQuickStyle::availableStyles(); qDebug() << QIcon::themeName(); qDebug() << QApplication::platformName(); //Need to instantiate our slide // QScopedPointer utils(new Utils); QScopedPointer slideModel(new SlideModel); // QScopedPointer slideMod(new SlideModelCpp); // QScopedPointer filemanager(new File); // QScopedPointer preswin(new QQuickView); QScopedPointer serviceItemModel(new ServiceItemModel); // QScopedPointer serviceItemC(new ServiceItemModelCpp); QScopedPointer slideobject(new SlideObject); QScopedPointer obsModel(new ObsModel); obsModel.get()->getObs(); obsModel.get()->updateScenes(); Settings *settings = new Settings; settings->setup(); QQuickView *PresWindow = new QQuickView; qDebug() << PresWindow; qDebug() << PresWindow->isVisible(); QObject::connect(serviceItemModel.get(), &ServiceItemModel::itemAdded, slideModel.get(), &SlideModel::addItemFromService); QObject::connect(serviceItemModel.get(), &ServiceItemModel::itemInserted, slideModel.get(), &SlideModel::insertItemFromService); QObject::connect(serviceItemModel.get(), &ServiceItemModel::itemMoved, slideModel.get(), &SlideModel::moveItemFromService); QObject::connect(serviceItemModel.get(), &ServiceItemModel::itemRemoved, slideModel.get(), &SlideModel::removeItemFromService); QObject::connect(serviceItemModel.get(), &ServiceItemModel::cleared, slideModel.get(), &SlideModel::clear); QObject::connect(slideobject.get(), SIGNAL(slideChanged(int)), slideModel.get(), SLOT(activate(int))); Utils *utils = new Utils; utils->setup(); // qDebug() << utils.get(); if (!serviceItemModel.get()->load(settings->getLastSaveFile())) { qDebug() << "Last saved file is missing or there isn't a last saved file."; serviceItemModel.get()->addItem(QString::fromUtf8("Black"), QString::fromUtf8("image"), QString::fromUtf8("qrc:/assets/black.jpg"), QString::fromUtf8("image"), QStringList() << QStringLiteral(""), QString::fromUtf8(""), QString::fromUtf8(""), 0, 1, false, 0, 0, 0); } // apparently mpv needs this class set // let's register mpv as well std::setlocale(LC_NUMERIC, "C"); // qmlRegisterType("mpv", 1, 0, "MpvItem"); // qmlRegisterSingletonInstance("org.presenter", 1, 0, "MpvProperties", MpvProperties::self()); qDebug() << "IDKFd"; qDebug() << serviceItemModel.get()->rowCount(QModelIndex()); //register our models // qmlRegisterType("org.presenter", 1, 0, "SongProxyModel"); // qmlRegisterType("org.presenter", 1, 0, "VideoProxyModel"); // qmlRegisterType("org.presenter", 1, 0, "ImageProxyModel"); // qmlRegisterType("org.presenter", 1, 0, "PresentationProxyModel"); qmlRegisterType("org.presenter", 1, 0, "SongModel"); qmlRegisterType("org.presenter", 1, 0, "SongEditor"); qmlRegisterType("org.presenter", 1, 0, "VideoModel"); qmlRegisterType("org.presenter", 1, 0, "ImageModel"); qmlRegisterType("org.presenter", 1, 0, "PresentationModel"); // qmlRegisterType("org.presenter", 1, 0, "SongSqlModel"); // qmlRegisterType("org.presenter", 1, 0, "VideoSqlModel"); // qmlRegisterType("org.presenter", 1, 0, "ImageSqlModel"); // qmlRegisterType("org.presenter", 1, 0, "PresentationSqlModel"); qmlRegisterType("org.presenter", 1, 0, "FileHelper"); qmlRegisterType("org.presenter", 1, 0, "Ytdl"); qmlRegisterType("org.presenter", 1, 0, "ServiceThing"); // qmlRegisterType("org.presenter", 1, 0, "SlideHelper"); // qmlRegisterType("mpv", 1, 0, "MpvItem"); // qmlRegisterSingletonInstance("mpv", 1, 0, "MpvProperties", MpvProperties::self()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "ServiceItemModel", serviceItemModel.get()); // qmlRegisterSingletonInstance("org.presenter", 1, 0, // "ServiceItemC", serviceItemC.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideModel", slideModel.get()); // qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideMod", slideMod.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "Utils", utils); qmlRegisterSingletonInstance("org.presenter", 1, 0, "SlideObject", slideobject.get()); // qmlRegisterSingletonInstance("org.presenter", 1, 0, "FileManager", filemanager.get()); qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", PresWindow); qmlRegisterSingletonInstance("org.presenter", 1, 0, "RSettings", settings); qmlRegisterSingletonInstance("org.presenter", 1, 0, "ObsModel", obsModel.get()); // qmlRegisterSingletonInstance("org.presenter", 1, 0, "PresWindow", preswin.get()); // This is the same slideobject, however to enusre that the PresWindow can have it // we need to set it as a separate context so that it can change it's slides too. // This is because SlideObject singleton is started before the window is shown // thus it doesn't exist in this window's context. So we set it here. PresWindow->rootContext()->setContextProperty(QStringLiteral("SlideObj"), slideobject.get()); PresWindow->setTitle(QStringLiteral("presentation-window")); // connectToDatabase(); qDebug() << "Starting engine"; QQmlApplicationEngine engine; qDebug() << app.allWindows(); engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); engine.load(QUrl(QStringLiteral("qrc:qml/main.qml"))); qDebug() << "Engine loaded"; // engine.load(QUrl(QStringLiteral("qrc:qml/presenter/PresentationWindow.qml"))); qDebug() << app.topLevelWindows(); qDebug() << app.allWindows(); // QQuickView *view = new QQuickView; // view->setSource(QUrl(QStringLiteral("qrc:qml/main.qml"))); // view->show(); #ifdef STATIC_KIRIGAMI KirigamiPlugin::getInstance().registerTypes(); #endif if (engine.rootObjects().isEmpty()) { return -1; } QWindow *window = windowFromEngine(&engine); window->setIcon(QIcon::fromTheme(QStringLiteral("system-config-display"))); // KWindowSystem::setMainWindow(window); // KWindowSystem::activateWindow(window); // qDebug() << "00000000000000000000000000000000"; // qDebug() << KWindowSystem::isPlatformWayland(); // qDebug() << KWindowSystem::windows(); // qDebug() << "00000000000000000000000000000000"; return app.exec(); }