diff options
| author | LillyJadeKatrin <lilly.kitty.1988@gmail.com> | 2023-11-15 10:56:15 -0500 |
|---|---|---|
| committer | LillyJadeKatrin <lilly.kitty.1988@gmail.com> | 2023-12-02 16:41:15 -0500 |
| commit | 71f3039f9682df901d2554370293b2aaee1a1c27 (patch) | |
| tree | abf3953c8f939856a1bc81b167f6087cd83bfc4b /Source/Core | |
| parent | 138e68ef9f7a7cb2bc8640c876ffc800a4d05baf (diff) | |
Added Hardcore Warning Widget
This widget will be used in several places to notify the player that a feature has been disabled because hardcore mode is on. It includes a button to open the Achievement Settings so that Hardcore Mode may be turned off. Also included is the framework required to open AchievementsWindow specifically on the Settings tab.
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp | 5 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/Achievements/AchievementsWindow.h | 1 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/Config/HardcoreWarningWidget.cpp | 62 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/Config/HardcoreWarningWidget.h | 30 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/DolphinQt.vcxproj | 6 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/MainWindow.cpp | 6 | ||||
| -rw-r--r-- | Source/Core/DolphinQt/MainWindow.h | 1 |
8 files changed, 110 insertions, 3 deletions
diff --git a/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp b/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp index 8d01663c87..4a278c3649 100644 --- a/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp +++ b/Source/Core/DolphinQt/Achievements/AchievementsWindow.cpp @@ -81,4 +81,9 @@ void AchievementsWindow::UpdateData() update(); } +void AchievementsWindow::ForceSettingsTab() +{ + m_tab_widget->setCurrentIndex(0); +} + #endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/DolphinQt/Achievements/AchievementsWindow.h b/Source/Core/DolphinQt/Achievements/AchievementsWindow.h index 6fd7165e1f..381a0aafb5 100644 --- a/Source/Core/DolphinQt/Achievements/AchievementsWindow.h +++ b/Source/Core/DolphinQt/Achievements/AchievementsWindow.h @@ -22,6 +22,7 @@ class AchievementsWindow : public QDialog public: explicit AchievementsWindow(QWidget* parent); void UpdateData(); + void ForceSettingsTab(); private: void CreateMainLayout(); diff --git a/Source/Core/DolphinQt/CMakeLists.txt b/Source/Core/DolphinQt/CMakeLists.txt index 391b1f1afb..a7eac856d0 100644 --- a/Source/Core/DolphinQt/CMakeLists.txt +++ b/Source/Core/DolphinQt/CMakeLists.txt @@ -102,6 +102,8 @@ add_executable(dolphin-emu Config/GraphicsModListWidget.h Config/GraphicsModWarningWidget.cpp Config/GraphicsModWarningWidget.h + Config/HardcoreWarningWidget.cpp + Config/HardcoreWarningWidget.h Config/InfoWidget.cpp Config/InfoWidget.h Config/LogConfigWidget.cpp diff --git a/Source/Core/DolphinQt/Config/HardcoreWarningWidget.cpp b/Source/Core/DolphinQt/Config/HardcoreWarningWidget.cpp new file mode 100644 index 0000000000..c2db01d077 --- /dev/null +++ b/Source/Core/DolphinQt/Config/HardcoreWarningWidget.cpp @@ -0,0 +1,62 @@ +// Copyright 2023 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#ifdef USE_RETRO_ACHIEVEMENTS +#include "DolphinQt/Config/HardcoreWarningWidget.h" + +#include <QHBoxLayout> +#include <QLabel> +#include <QPixmap> +#include <QPushButton> +#include <QStyle> + +#include "Core/Config/AchievementSettings.h" +#include "Core/ConfigManager.h" +#include "Core/Core.h" + +#include "DolphinQt/Settings.h" + +HardcoreWarningWidget::HardcoreWarningWidget(QWidget* parent) : QWidget(parent) +{ + CreateWidgets(); + ConnectWidgets(); + + connect(&Settings::Instance(), &Settings::EmulationStateChanged, this, [this] { Update(); }); + + Update(); +} + +void HardcoreWarningWidget::CreateWidgets() +{ + const auto size = 1.5 * QFontMetrics(font()).height(); + + QPixmap warning_icon = style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap(size, size); + + auto* icon = new QLabel; + icon->setPixmap(warning_icon); + + m_text = new QLabel(tr("This feature is disabled in hardcore mode.")); + m_settings_button = new QPushButton(tr("Achievement Settings")); + + auto* layout = new QHBoxLayout; + + layout->addWidget(icon); + layout->addWidget(m_text, 1); + layout->addWidget(m_settings_button); + + layout->setContentsMargins(0, 0, 0, 0); + + setLayout(layout); +} + +void HardcoreWarningWidget::ConnectWidgets() +{ + connect(m_settings_button, &QPushButton::clicked, this, + &HardcoreWarningWidget::OpenAchievementSettings); +} + +void HardcoreWarningWidget::Update() +{ + setHidden(!Config::Get(Config::RA_HARDCORE_ENABLED)); +} +#endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/DolphinQt/Config/HardcoreWarningWidget.h b/Source/Core/DolphinQt/Config/HardcoreWarningWidget.h new file mode 100644 index 0000000000..c4a20eba96 --- /dev/null +++ b/Source/Core/DolphinQt/Config/HardcoreWarningWidget.h @@ -0,0 +1,30 @@ +// Copyright 2023 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#ifdef USE_RETRO_ACHIEVEMENTS +#include <QWidget> + +class QLabel; +class QPushButton; + +class HardcoreWarningWidget : public QWidget +{ + Q_OBJECT +public: + explicit HardcoreWarningWidget(QWidget* parent); + +signals: + void OpenAchievementSettings(); + +private: + void CreateWidgets(); + void ConnectWidgets(); + + void Update(); + + QLabel* m_text; + QPushButton* m_settings_button; +}; +#endif // USE_RETRO_ACHIEVEMENTS diff --git a/Source/Core/DolphinQt/DolphinQt.vcxproj b/Source/Core/DolphinQt/DolphinQt.vcxproj index 36e4b44d31..9ad07befec 100644 --- a/Source/Core/DolphinQt/DolphinQt.vcxproj +++ b/Source/Core/DolphinQt/DolphinQt.vcxproj @@ -31,10 +31,8 @@ <AdditionalIncludeDirectories>$(ProjectDir)Settings;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)TAS;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>$(ProjectDir)VideoInterface;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> - <!--Qt 6.3.0 headers use std::aligned_storage instead of alignas--> <PreprocessorDefinitions>_SILENCE_CXX23_ALIGNED_STORAGE_DEPRECATION_WARNING;%(PreprocessorDefinitions)</PreprocessorDefinitions> - <!--Jump through some hoops to generate a pch file local to this project--> <AdditionalIncludeDirectories>$(SourceDir)PCH;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <PrecompiledHeader>Use</PrecompiledHeader> @@ -87,6 +85,7 @@ <ClCompile Include="Config\Graphics\PostProcessingConfigWindow.cpp" /> <ClCompile Include="Config\GraphicsModListWidget.cpp" /> <ClCompile Include="Config\GraphicsModWarningWidget.cpp" /> + <ClCompile Include="Config\HardcoreWarningWidget.cpp" /> <ClCompile Include="Config\InfoWidget.cpp" /> <ClCompile Include="Config\LogConfigWidget.cpp" /> <ClCompile Include="Config\LogWidget.cpp" /> @@ -239,7 +238,7 @@ <ClInclude Include="Config\Mapping\MappingIndicator.h" /> <ClInclude Include="Config\Mapping\MappingNumeric.h" /> <ClInclude Include="Config\NewPatchDialog.h" /> - <ClInclude Include="Config\PatchesWidget.h" /> + <QtMoc Include="Config\PatchesWidget.h" /> <ClInclude Include="Debugger\RegisterColumn.h" /> <ClInclude Include="GBAHost.h" /> <ClInclude Include="QtUtils\ActionHelper.h" /> @@ -298,6 +297,7 @@ <QtMoc Include="Config\Graphics\PostProcessingConfigWindow.h" /> <QtMoc Include="Config\GraphicsModListWidget.h" /> <QtMoc Include="Config\GraphicsModWarningWidget.h" /> + <QtMoc Include="Config\HardcoreWarningWidget.h" /> <QtMoc Include="Config\InfoWidget.h" /> <QtMoc Include="Config\LogConfigWidget.h" /> <QtMoc Include="Config\LogWidget.h" /> diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index d9eda82bb1..6cf6ac57bd 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -1971,6 +1971,12 @@ void MainWindow::ShowAchievementsWindow() m_achievements_window->raise(); m_achievements_window->activateWindow(); } + +void MainWindow::ShowAchievementSettings() +{ + ShowAchievementsWindow(); + m_achievements_window->ForceSettingsTab(); +} #endif // USE_RETRO_ACHIEVEMENTS void MainWindow::ShowMemcardManager() diff --git a/Source/Core/DolphinQt/MainWindow.h b/Source/Core/DolphinQt/MainWindow.h index ce6beb1578..1f53d5e1ff 100644 --- a/Source/Core/DolphinQt/MainWindow.h +++ b/Source/Core/DolphinQt/MainWindow.h @@ -175,6 +175,7 @@ private: #ifdef USE_RETRO_ACHIEVEMENTS void ShowAchievementsWindow(); + void ShowAchievementSettings(); #endif // USE_RETRO_ACHIEVEMENTS void NetPlayInit(); |
