diff --git a/.ci/setup-windows.sh b/.ci/setup-windows.sh index 05d4aec5f2..adbb2d61af 100755 --- a/.ci/setup-windows.sh +++ b/.ci/setup-windows.sh @@ -10,8 +10,9 @@ PR_NUMBER="$SYSTEM_PULLREQUEST_PULLREQUESTID" QT_HOST="http://mirrors.ocf.berkeley.edu/qt/" #QT_HOST="http://qt.mirror.constant.com/" QT_URL_VER=$(echo "$QT_VER" | sed "s/\.//g") -QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt5_${QT_URL_VER}/qt.qt5.${QT_URL_VER}.win64_msvc2017_64/${QT_VER}-0-${QT_DATE}" -QT_SUFFIX="-Windows-Windows_10-MSVC2017-Windows-Windows_10-X86_64.7z" +QT_VER_MSVC_UP=$(echo ${QT_VER_MSVC} | tr '[:lower:]' '[:upper:]') +QT_PREFIX="online/qtsdkrepository/windows_x86/desktop/qt${QT_VER_MAIN}_${QT_URL_VER}/qt.qt${QT_VER_MAIN}.${QT_URL_VER}.win64_${QT_VER_MSVC}_64/${QT_VER}-0-${QT_DATE}" +QT_SUFFIX="-Windows-Windows_10-${QT_VER_MSVC_UP}-Windows-Windows_10-X86_64.7z" QT_BASE_URL="${QT_HOST}${QT_PREFIX}qtbase${QT_SUFFIX}" QT_WINE_URL="${QT_HOST}${QT_PREFIX}qtwinextras${QT_SUFFIX}" QT_DECL_URL="${QT_HOST}${QT_PREFIX}qtdeclarative${QT_SUFFIX}" diff --git a/BUILDING.md b/BUILDING.md index 742b051ffe..391c7b888e 100644 --- a/BUILDING.md +++ b/BUILDING.md @@ -9,11 +9,11 @@ Other instructions may be found [here](https://wiki.rpcs3.net/index.php?title=Bu * [CMake 3.14.1+](https://www.cmake.org/download/) (add to PATH) * [Python 3.3+](https://www.python.org/downloads/) (add to PATH) -* [Qt 5.14.2](https://www.qt.io/download-qt-installer) +* [Qt 5.15.2](https://www.qt.io/download-qt-installer) * [Visual Studio 2019](https://visualstudio.microsoft.com/thank-you-downloading-visual-studio/?sku=Community) * [Vulkan SDK 1.1.126+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/windows/getting_started.html)) -**Either add the** `QTDIR` **environment variable, e.g.** `\5.14.2\msvc2017_64\` **, or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2019)** +**Either add the** `QTDIR` **environment variable, e.g.** `\5.15.2\msvc2019_64\` **, or use the [Visual Studio Qt Plugin](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2019)** ### Linux @@ -21,7 +21,7 @@ These are the essentials tools to build RPCS3 on Linux. Some of them can be inst * Clang 9+ or GCC 9+ * [CMake 3.14.1+](https://www.cmake.org/download/) -* [Qt 5.14.2](https://www.qt.io/download-qt-installer) +* [Qt 5.15.2](https://www.qt.io/download-qt-installer) * [Vulkan SDK 1.1.126+](https://vulkan.lunarg.com/sdk/home) (See "Install the SDK" [here](https://vulkan.lunarg.com/doc/sdk/latest/linux/getting_started.html)) * [SDL2](https://www.libsdl.org/download-2.0.php) (for the FAudio backend) @@ -41,10 +41,10 @@ Ubuntu is usually horrendously out of date, and some packages need to be downloa Ubuntu usually does not have a new enough Qt package to suit rpcs3's needs. There is a PPA available to work around this. Run the following: ``` . /etc/os-release -sudo add-apt-repository ppa:beineri/opt-qt-5.14.2-$UBUNTU_CODENAME +sudo add-apt-repository ppa:beineri/opt-qt-5.15.2-$UBUNTU_CODENAME sudo apt-get update -sudo apt-get install qt514-meta-minimal qt514svg -. /opt/qt514/bin/qt514-env.sh >/dev/null 2>&1 +sudo apt-get install qt515-meta-minimal qt515svg +. /opt/qt515/bin/qt515-env.sh >/dev/null 2>&1 ``` ##### GCC 9.x installation @@ -103,7 +103,7 @@ git submodule update --init #### Configuring the Qt plugin (if used) 1) Go to the Qt5 menu and edit Qt5 options. -2) Add the path to your Qt installation with compiler e.g. `\5.14.2\msvc2017_64`. +2) Add the path to your Qt installation with compiler e.g. `\5.15.2\msvc2019_64`. 3) While selecting the rpcs3qt project, go to Qt5->Project Setting and select the version you added. #### Building the projects diff --git a/azure-pipelines.yml b/azure-pipelines.yml index bd2fce8182..a984ff8159 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -33,13 +33,13 @@ jobs: displayName: ccache - bash: | - docker pull --quiet rpcs3/rpcs3-travis-xenial:1.6 + docker pull --quiet rpcs3/rpcs3-travis-xenial:1.7 docker run \ -v $(pwd):/rpcs3 \ --env-file .ci/docker.env \ -v $CCACHE_DIR:/root/.ccache \ -v $BUILD_ARTIFACTSTAGINGDIRECTORY:/root/artifacts \ - rpcs3/rpcs3-travis-xenial:1.6 \ + rpcs3/rpcs3-travis-xenial:1.7 \ /rpcs3/.ci/build-linux.sh displayName: Docker setup and build @@ -56,9 +56,11 @@ jobs: - job: Windows_Build variables: COMPILER: msvc - QT_VER: '5.14.2' - QT_DATE: '202003291224' - QTDIR: C:\Qt\$(QT_VER)\msvc2017_64 + QT_VER_MAIN: '5' + QT_VER: '5.15.2' + QT_VER_MSVC: 'msvc2019' + QT_DATE: '202011130602' + QTDIR: C:\Qt\$(QT_VER)\$(QT_VER_MSVC)_64 VULKAN_VER: '1.2.154.1' VULKAN_SDK_SHA: 'b64471f3a720e649c1fae6535ea83b8c642655ebed1485bfdf15bf4d88f746d9' VULKAN_SDK: C:\VulkanSDK\$(VULKAN_VER) diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 20772f78a1..9590799a13 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -301,7 +301,7 @@ void pad_settings_dialog::InitButtons() m_padButtons->addButton(ui->b_refresh, button_ids::id_refresh); m_padButtons->addButton(ui->b_addProfile, button_ids::id_add_profile); - connect(m_padButtons, static_cast(&QButtonGroup::buttonClicked), this, &pad_settings_dialog::OnPadButtonClicked); + connect(m_padButtons, &QButtonGroup::idClicked, this, &pad_settings_dialog::OnPadButtonClicked); connect(&m_timer, &QTimer::timeout, [this]() { @@ -1260,7 +1260,7 @@ void pad_settings_dialog::ChangeInputType() { if (is_ldd_pad) { - ui->chooseDevice->addItem(tr("Custom Controller")); + ui->chooseDevice->setPlaceholderText(tr("Custom Controller")); break; } [[fallthrough]]; @@ -1277,9 +1277,6 @@ void pad_settings_dialog::ChangeInputType() // Handle empty device list bool config_enabled = force_enable || (m_handler->m_type != pad_handler::null && ui->chooseDevice->count() > 0); - ui->chooseDevice->setEnabled(config_enabled); - ui->chooseClass->setEnabled(config_enabled); - ui->chooseProduct->setEnabled(config_enabled); if (config_enabled) { @@ -1306,7 +1303,7 @@ void pad_settings_dialog::ChangeInputType() if (profiles.isEmpty()) { - QString def_name = "Default Profile"; + const QString def_name = "Default Profile"; if (CreateConfigFile(profile_dir, def_name)) { ui->chooseProfile->addItem(def_name); @@ -1327,21 +1324,24 @@ void pad_settings_dialog::ChangeInputType() } else { - ui->chooseProfile->addItem(tr("No Profiles")); + ui->chooseProfile->setPlaceholderText(tr("No Profiles")); if (ui->chooseDevice->count() == 0) { - ui->chooseDevice->addItem(tr("No Device Detected"), -1); + ui->chooseDevice->setPlaceholderText(tr("No Device Detected")); } } - // enable configuration and profile list if possible + // Enable configuration and profile list if possible SwitchButtons(config_enabled && m_handler->m_type == pad_handler::keyboard); - ui->b_addProfile->setEnabled(config_enabled); - ui->chooseProfile->setEnabled(config_enabled); ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(!is_ldd_pad); - ui->chooseHandler->setEnabled(!is_ldd_pad); + ui->b_addProfile->setEnabled(config_enabled); + ui->chooseProfile->setEnabled(config_enabled && ui->chooseProfile->count() > 0); + ui->chooseDevice->setEnabled(config_enabled && ui->chooseDevice->count() > 0); + ui->chooseClass->setEnabled(config_enabled && ui->chooseClass->count() > 0); + ui->chooseProduct->setEnabled(config_enabled && ui->chooseProduct->count() > 0); + ui->chooseHandler->setEnabled(!is_ldd_pad && ui->chooseHandler->count() > 0); } void pad_settings_dialog::ChangeProfile() diff --git a/rpcs3/rpcs3qt/settings_dialog.cpp b/rpcs3/rpcs3qt/settings_dialog.cpp index 05d599d45c..3fef24f671 100644 --- a/rpcs3/rpcs3qt/settings_dialog.cpp +++ b/rpcs3/rpcs3qt/settings_dialog.cpp @@ -231,7 +231,7 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std else { ui->enableTSX->setEnabled(false); - ui->enableTSX->addItem(tr("Not supported", "Enable TSX")); + ui->enableTSX->setPlaceholderText(tr("Not supported", "Enable TSX")); SubscribeTooltip(ui->enableTSX, tr("Unfortunately your CPU model does not support this instruction set.", "Enable TSX")); m_emu_settings->SetSetting(emu_settings_type::EnableTSX, fmt::format("%s", tsx_usage::disabled)); @@ -555,14 +555,15 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std // Fill combobox with placeholder if no adapters needed if (!renderer.has_adapters) { - ui->graphicsAdapterBox->addItem(tr("Not needed for %1 renderer", "Graphics adapter").arg(text)); + ui->graphicsAdapterBox->clear(); + ui->graphicsAdapterBox->setPlaceholderText(tr("Not needed for %0 renderer", "Graphics adapter").arg(text)); return; } + // Fill combobox - for (const auto& adapter : renderer.adapters) - { - ui->graphicsAdapterBox->addItem(adapter); - } + ui->graphicsAdapterBox->clear(); + ui->graphicsAdapterBox->addItems(renderer.adapters); + // Reset Adapter to old config int idx = ui->graphicsAdapterBox->findText(renderer.old_adapter); if (idx < 0) @@ -1057,18 +1058,11 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std ui->searchBox->setPlaceholderText(tr("Search libraries", "Library search box")); - auto on_lib_button_clicked = [this](int ind) + auto on_lib_button_clicked = [this](int id) { - if (ind != static_cast(lib_loading_type::liblv2only)) - { - ui->searchBox->setEnabled(true); - ui->lleList->setEnabled(true); - } - else - { - ui->searchBox->setEnabled(false); - ui->lleList->setEnabled(false); - } + const bool enableLibs = id != static_cast(lib_loading_type::liblv2only); + ui->searchBox->setEnabled(enableLibs); + ui->lleList->setEnabled(enableLibs); }; auto on_search_box_text_changed = [this](QString text) @@ -1101,7 +1095,7 @@ settings_dialog::settings_dialog(std::shared_ptr gui_settings, std }; // Events - connect(lib_mode_bg, static_cast(&QButtonGroup::buttonClicked), on_lib_button_clicked); + connect(lib_mode_bg, &QButtonGroup::idClicked, on_lib_button_clicked); connect(ui->searchBox, &QLineEdit::textChanged, on_search_box_text_changed); // enable multiselection (there must be a better way) @@ -1798,11 +1792,7 @@ void settings_dialog::SnapSlider(QSlider *slider, int interval) void settings_dialog::AddGuiConfigs() { ui->combo_configs->clear(); - - for (const QString& entry : m_gui_settings->GetConfigEntries()) - { - ui->combo_configs->addItem(entry); - } + ui->combo_configs->addItems(m_gui_settings->GetConfigEntries()); m_current_gui_config = m_gui_settings->GetValue(gui::m_currentConfig).toString();