diff --git a/CMakeLists.txt b/CMakeLists.txt index 2b1192f..05395ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -190,17 +190,19 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) # Instruct CMake to run moc automatically when needed. set(CMAKE_AUTOMOC ON) # Instruct CMake to run uic automatically when needed. -SET(CMAKE_AUTOUIC ON) +set(CMAKE_AUTOUIC ON) # Instruct CMake to run rcc automatically when needed. -SET(CMAKE_AUTORCC ON) +set(CMAKE_AUTORCC ON) # Check Qt -FIND_PACKAGE( Qt6Core REQUIRED ) -FIND_PACKAGE( Qt6Widgets REQUIRED ) -FIND_PACKAGE( Qt6Network REQUIRED ) -FIND_PACKAGE( Qt6Test REQUIRED ) -FIND_PACKAGE( Qt6PrintSupport REQUIRED ) -FIND_PACKAGE( Qt6DBus REQUIRED ) +find_package( Qt6Core REQUIRED ) +find_package( Qt6Qml REQUIRED ) +find_package( Qt6QuickControls2 REQUIRED ) +find_package( Qt6Widgets REQUIRED ) +find_package( Qt6Network REQUIRED ) +find_package( Qt6Test REQUIRED ) +find_package( Qt6PrintSupport REQUIRED ) +find_package( Qt6DBus REQUIRED ) # Embedded VNC display IF( NOT WITHOUT_EMBEDDED_DISPLAY ) @@ -237,9 +239,11 @@ ADD_EXECUTABLE( aqemu ${aqemu_qrc} ) -target_include_directories(aqemu PUBLIC src/ ) +target_include_directories(aqemu PUBLIC src/ src/docopt/ ) TARGET_LINK_LIBRARIES( aqemu + Qt6::Qml + Qt6::QuickControls2 Qt6::Widgets Qt6::Network Qt6::Test diff --git a/src/main.cpp b/src/main.cpp index b0c4bf3..74e2f7d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,7 +25,10 @@ #include #include #include +#include #include +#include +#include #include #include #include @@ -216,13 +219,40 @@ int AQEMU_Main::main_window() if (ret != 0) return ret; - // Show main window + // Show main window +#ifdef QML_USE + QGuiApplication::setOrganizationName("AQEMU"); + QGuiApplication::setOrganizationDomain("https://github.com/AQEMU/aqemu"); + QGuiApplication::setApplicationName("AQEMU"); + //QQuickStyle::setStyle(QStringLiteral("Default")); + + app->setWindowIcon(QIcon(":/aqemu.png")); + + // Startup + QQmlApplicationEngine engine; + QQuickStyle::setStyle("Basic"); + engine.addImportPath("qrc:/modules"); + engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml/"); + + const QUrl url("qrc:/main.qml"); + QObject::connect( + &engine, &QQmlApplicationEngine::objectCreated, &app, + [url](QObject* obj, const QUrl& objUrl) { + if (obj == nullptr && url == objUrl) + QCoreApplication::exit(-1); + }, + Qt::QueuedConnection); + engine.load(url); + + return QGuiApplication::exec(); +#else window = std::make_unique(); window->show(); application->setWindowIcon(QIcon(":/aqemu.png")); return application->exec(); +#endif } void AQEMU_Main::load_language() diff --git a/src/main.h b/src/main.h index 92b7a5d..dba587a 100644 --- a/src/main.h +++ b/src/main.h @@ -61,7 +61,9 @@ class AQEMU_Main : public QObject std::unique_ptr settings; std::unique_ptr application; + // TODO: select in config QML or Widgets std::unique_ptr window; + std::unique_ptr app; }; #endif