diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 44aa3dd3..976314f9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -143,7 +143,7 @@ jobs: arch: amd64 - name: Configure CMake - run: cmake --fresh -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + run: cmake --fresh -G Ninja -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DENABLE_QT_GUI=ON -DENABLE_UPDATER=ON -DCMAKE_C_COMPILER=clang-cl -DCMAKE_CXX_COMPILER=clang-cl -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel @@ -265,7 +265,7 @@ jobs: variant: sccache - name: Configure CMake - run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_OSX_ARCHITECTURES=x86_64 -DENABLE_QT_GUI=ON -DENABLE_UPDATER=ON -DCMAKE_C_COMPILER_LAUNCHER=sccache -DCMAKE_CXX_COMPILER_LAUNCHER=sccache - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel $(sysctl -n hw.ncpu) @@ -368,7 +368,7 @@ jobs: key: ${{ env.cache-name }}-${{ hashFiles('**/CMakeLists.txt', 'cmake/**') }} - name: Configure CMake - run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_QT_GUI=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache + run: cmake --fresh -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DENABLE_QT_GUI=ON -DENABLE_UPDATER=ON -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache - name: Build run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}} --parallel3 diff --git a/CMakeLists.txt b/CMakeLists.txt index d9479e85..036f7430 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ endif() option(ENABLE_QT_GUI "Enable the Qt GUI. If not selected then the emulator uses a minimal SDL-based UI instead" OFF) option(ENABLE_DISCORD_RPC "Enable the Discord RPC integration" ON) +option(ENABLE_UPDATER "Enables the options to updater" ON) # First, determine whether to use CMAKE_OSX_ARCHITECTURES or CMAKE_SYSTEM_PROCESSOR. if (APPLE AND CMAKE_OSX_ARCHITECTURES) @@ -732,6 +733,12 @@ set(EMULATOR src/emulator.cpp if(ENABLE_QT_GUI) qt_add_resources(RESOURCE_FILES src/shadps4.qrc) +if (ENABLE_UPDATER) + set(UPDATER src/qt_gui/check_update.cpp + src/qt_gui/check_update.h + ) +endif() + set(QT_GUI src/qt_gui/about_dialog.cpp src/qt_gui/about_dialog.h src/qt_gui/about_dialog.ui @@ -739,8 +746,6 @@ set(QT_GUI src/qt_gui/about_dialog.cpp src/qt_gui/background_music_player.h src/qt_gui/cheats_patches.cpp src/qt_gui/cheats_patches.h - src/qt_gui/check_update.cpp - src/qt_gui/check_update.h src/qt_gui/main_window_ui.h src/qt_gui/main_window.cpp src/qt_gui/main_window.h @@ -771,6 +776,7 @@ set(QT_GUI src/qt_gui/about_dialog.cpp ${EMULATOR} ${RESOURCE_FILES} ${TRANSLATIONS} + ${UPDATER} ) endif() @@ -843,8 +849,11 @@ else() endif() if (ENABLE_QT_GUI) - target_link_libraries(shadps4 PRIVATE Qt6::Widgets Qt6::Concurrent Qt6::Network Qt6::Multimedia) - add_definitions(-DENABLE_QT_GUI) + target_link_libraries(shadps4 PRIVATE Qt6::Widgets Qt6::Concurrent Qt6::Network Qt6::Multimedia) + add_definitions(-DENABLE_QT_GUI) + if (ENABLE_UPDATER) + add_definitions(-DENABLE_UPDATER) + endif() endif() if (WIN32) diff --git a/src/qt_gui/main_window.cpp b/src/qt_gui/main_window.cpp index 8e56a6e9..959b055c 100644 --- a/src/qt_gui/main_window.cpp +++ b/src/qt_gui/main_window.cpp @@ -7,7 +7,9 @@ #include "about_dialog.h" #include "cheats_patches.h" +#ifdef ENABLE_UPDATER #include "check_update.h" +#endif #include "common/io_file.h" #include "common/path_util.h" #include "common/scm_rev.h" @@ -59,8 +61,10 @@ bool MainWindow::Init() { this->show(); // load game list LoadGameLists(); +#ifdef ENABLE_UPDATER // Check for update CheckUpdateMain(true); +#endif auto end = std::chrono::steady_clock::now(); auto duration = std::chrono::duration_cast(end - start); @@ -183,6 +187,7 @@ void MainWindow::LoadGameLists() { } } +#ifdef ENABLE_UPDATER void MainWindow::CheckUpdateMain(bool checkSave) { if (checkSave) { if (!Config::autoUpdate()) { @@ -192,6 +197,7 @@ void MainWindow::CheckUpdateMain(bool checkSave) { auto checkUpdate = new CheckUpdate(false); checkUpdate->exec(); } +#endif void MainWindow::GetPhysicalDevices() { Vulkan::Instance instance(false, false); @@ -254,10 +260,12 @@ void MainWindow::CreateConnects() { settingsDialog->exec(); }); +#ifdef ENABLE_UPDATER connect(ui->updaterAct, &QAction::triggered, this, [this]() { auto checkUpdate = new CheckUpdate(true); checkUpdate->exec(); }); +#endif connect(ui->aboutAct, &QAction::triggered, this, [this]() { auto aboutDialog = new AboutDialog(this); @@ -933,7 +941,9 @@ void MainWindow::SetUiIcons(bool isWhite) { ui->bootInstallPkgAct->setIcon(RecolorIcon(ui->bootInstallPkgAct->icon(), isWhite)); ui->bootGameAct->setIcon(RecolorIcon(ui->bootGameAct->icon(), isWhite)); ui->exitAct->setIcon(RecolorIcon(ui->exitAct->icon(), isWhite)); +#ifdef ENABLE_UPDATER ui->updaterAct->setIcon(RecolorIcon(ui->updaterAct->icon(), isWhite)); +#endif ui->downloadCheatsPatchesAct->setIcon( RecolorIcon(ui->downloadCheatsPatchesAct->icon(), isWhite)); ui->dumpGameListAct->setIcon(RecolorIcon(ui->dumpGameListAct->icon(), isWhite)); diff --git a/src/qt_gui/main_window.h b/src/qt_gui/main_window.h index 6264978a..7dc85f0a 100644 --- a/src/qt_gui/main_window.h +++ b/src/qt_gui/main_window.h @@ -56,7 +56,9 @@ private: void CreateDockWindows(); void GetPhysicalDevices(); void LoadGameLists(); +#ifdef ENABLE_UPDATER void CheckUpdateMain(bool checkSave); +#endif void CreateConnects(); void SetLastUsedTheme(); void SetLastIconSizeBullet(); diff --git a/src/qt_gui/main_window_ui.h b/src/qt_gui/main_window_ui.h index 373b2924..a51e37d1 100644 --- a/src/qt_gui/main_window_ui.h +++ b/src/qt_gui/main_window_ui.h @@ -26,7 +26,9 @@ public: QAction* downloadCheatsPatchesAct; QAction* dumpGameListAct; QAction* pkgViewerAct; +#ifdef ENABLE_UPDATER QAction* updaterAct; +#endif QAction* aboutAct; QAction* configureAct; QAction* setThemeDark; @@ -130,9 +132,11 @@ public: pkgViewerAct = new QAction(MainWindow); pkgViewerAct->setObjectName("pkgViewer"); pkgViewerAct->setIcon(QIcon(":images/file_icon.png")); +#ifdef ENABLE_UPDATER updaterAct = new QAction(MainWindow); updaterAct->setObjectName("updaterAct"); updaterAct->setIcon(QIcon(":images/update_icon.png")); +#endif aboutAct = new QAction(MainWindow); aboutAct->setObjectName("aboutAct"); aboutAct->setIcon(QIcon(":images/about_icon.png")); @@ -291,7 +295,9 @@ public: menuUtils->addAction(downloadCheatsPatchesAct); menuUtils->addAction(dumpGameListAct); menuUtils->addAction(pkgViewerAct); +#ifdef ENABLE_UPDATER menuHelp->addAction(updaterAct); +#endif menuHelp->addAction(aboutAct); retranslateUi(MainWindow); @@ -306,8 +312,10 @@ public: bootInstallPkgAct->setText( QCoreApplication::translate("MainWindow", "Install Packages (PKG)", nullptr)); bootGameAct->setText(QCoreApplication::translate("MainWindow", "Boot Game", nullptr)); +#ifdef ENABLE_UPDATER updaterAct->setText( QCoreApplication::translate("MainWindow", "Check for Updates", nullptr)); +#endif aboutAct->setText(QCoreApplication::translate("MainWindow", "About shadPS4", nullptr)); configureAct->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr)); #if QT_CONFIG(tooltip) diff --git a/src/qt_gui/settings_dialog.cpp b/src/qt_gui/settings_dialog.cpp index 84dc5011..da2e3bd1 100644 --- a/src/qt_gui/settings_dialog.cpp +++ b/src/qt_gui/settings_dialog.cpp @@ -6,7 +6,9 @@ #include #include +#ifdef ENABLE_UPDATER #include "check_update.h" +#endif #include "common/logging/backend.h" #include "common/logging/filter.h" #include "main_window.h" @@ -143,6 +145,7 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge connect(ui->logFilterLineEdit, &QLineEdit::textChanged, this, [](const QString& text) { Config::setLogFilter(text.toStdString()); }); +#ifdef ENABLE_UPDATER connect(ui->updateCheckBox, &QCheckBox::stateChanged, this, [](int state) { Config::setAutoUpdate(state == Qt::Checked); }); @@ -153,6 +156,10 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge auto checkUpdate = new CheckUpdate(true); checkUpdate->exec(); }); +#else + ui->updaterGroupBox->setVisible(false); + ui->GUIgroupBox->setMaximumSize(265, 16777215); +#endif connect(ui->playBGMCheckBox, &QCheckBox::stateChanged, this, [](int val) { Config::setPlayBGM(val); @@ -278,7 +285,9 @@ SettingsDialog::SettingsDialog(std::span physical_devices, QWidge ui->userName->installEventFilter(this); ui->logTypeGroupBox->installEventFilter(this); ui->logFilter->installEventFilter(this); +#ifdef ENABLE_UPDATER ui->updaterGroupBox->installEventFilter(this); +#endif ui->GUIgroupBox->installEventFilter(this); // Input @@ -340,6 +349,7 @@ void SettingsDialog::LoadValuesFromConfig() { ui->vkSyncValidationCheckBox->setChecked(Config::vkValidationSyncEnabled()); ui->rdocCheckBox->setChecked(Config::isRdocEnabled()); +#ifdef ENABLE_UPDATER ui->updateCheckBox->setChecked(Config::autoUpdate()); std::string updateChannel = Config::getUpdateChannel(); if (updateChannel != "Release" && updateChannel != "Nightly") { @@ -350,6 +360,7 @@ void SettingsDialog::LoadValuesFromConfig() { } } ui->updateComboBox->setCurrentText(QString::fromStdString(updateChannel)); +#endif for (const auto& dir : Config::getGameInstallDirs()) { QString path_string; @@ -451,8 +462,10 @@ void SettingsDialog::updateNoteTextEdit(const QString& elementName) { text = tr("logTypeGroupBox"); } else if (elementName == "logFilter") { text = tr("logFilter"); +#ifdef ENABLE_UPDATER } else if (elementName == "updaterGroupBox") { text = tr("updaterGroupBox"); +#endif } else if (elementName == "GUIgroupBox") { text = tr("GUIgroupBox"); }