Edit uisettings.cpp

This commit is contained in:
collecting
2025-10-04 00:39:13 +00:00
parent 2585959358
commit db1d69ece4

View File

@@ -1,5 +1,5 @@
// SPDX-FileCopyrightText: 2016 Citra Emulator Project // SPDX-FileCopyrightText: 2016 Citra Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 citron Emulator Project // SPDX-FileCopyrightText: 2025 citron Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later // SPDX-License-Identifier: GPL-2.0-or-later
#include <QSettings> #include <QSettings>
@@ -9,13 +9,13 @@
#ifndef CANNOT_EXPLICITLY_INSTANTIATE #ifndef CANNOT_EXPLICITLY_INSTANTIATE
namespace Settings { namespace Settings {
template class Setting<bool>; template class Setting<bool>;
template class Setting<std::string>; template class Setting<std::string>;
template class Setting<u16, true>; template class Setting<u16, true>;
template class Setting<u32>; template class Setting<u32>;
template class Setting<u8, true>; template class Setting<u8, true>;
template class Setting<u8>; template class Setting<u8>;
template class Setting<unsigned long long>; template class Setting<unsigned long long>;
} // namespace Settings } // namespace Settings
#endif #endif
@@ -23,93 +23,93 @@ namespace FS = Common::FS;
namespace UISettings { namespace UISettings {
const Themes themes{{ const Themes themes{{
{"Default", "default"}, {"Default", "default"},
{"Default Colorful", "colorful"}, {"Default Colorful", "colorful"},
{"Dark", "qdarkstyle"}, {"Dark", "qdarkstyle"},
{"Dark Colorful", "colorful_dark"}, {"Dark Colorful", "colorful_dark"},
{"Midnight Blue", "qdarkstyle_midnight_blue"}, {"Midnight Blue", "qdarkstyle_midnight_blue"},
{"Midnight Blue Colorful", "colorful_midnight_blue"}, {"Midnight Blue Colorful", "colorful_midnight_blue"},
}}; }};
bool IsDarkTheme() { bool IsDarkTheme() {
const auto& theme = UISettings::values.theme; const auto& theme = UISettings::values.theme;
return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") || return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_midnight_blue") ||
theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue"); theme == std::string("colorful_dark") || theme == std::string("colorful_midnight_blue");
}
Values values = {};
u32 CalculateWidth(u32 height, Settings::AspectRatio ratio) {
switch (ratio) {
case Settings::AspectRatio::R4_3:
return height * 4 / 3;
case Settings::AspectRatio::R21_9:
return height * 21 / 9;
case Settings::AspectRatio::R16_10:
return height * 16 / 10;
case Settings::AspectRatio::R32_9:
return height * 32 / 9;
case Settings::AspectRatio::R16_9:
case Settings::AspectRatio::Stretch:
// TODO: Move this function wherever appropriate to implement Stretched aspect
break;
} }
return height * 16 / 9;
}
void SaveWindowState() { Values values = {};
const auto window_state_config_loc =
u32 CalculateWidth(u32 height, Settings::AspectRatio ratio) {
switch (ratio) {
case Settings::AspectRatio::R4_3:
return height * 4 / 3;
case Settings::AspectRatio::R21_9:
return height * 21 / 9;
case Settings::AspectRatio::R16_10:
return height * 16 / 10;
case Settings::AspectRatio::R32_9:
return height * 32 / 9;
case Settings::AspectRatio::R16_9:
case Settings::AspectRatio::Stretch:
// TODO: Move this function wherever appropriate to implement Stretched aspect
break;
}
return height * 16 / 9;
}
void SaveWindowState() {
const auto window_state_config_loc =
FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini");
void(FS::CreateParentDir(window_state_config_loc)); void(FS::CreateParentDir(window_state_config_loc));
QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat); QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat);
config.setValue(QStringLiteral("geometry"), values.geometry); config.setValue(QStringLiteral("geometry"), values.geometry);
config.setValue(QStringLiteral("state"), values.state); config.setValue(QStringLiteral("state"), values.state);
config.setValue(QStringLiteral("geometryRenderWindow"), values.renderwindow_geometry); config.setValue(QStringLiteral("geometryRenderWindow"), values.renderwindow_geometry);
config.setValue(QStringLiteral("gameListHeaderState"), values.gamelist_header_state); config.setValue(QStringLiteral("gameListHeaderState"), values.gamelist_header_state);
config.setValue(QStringLiteral("microProfileDialogGeometry"), values.microprofile_geometry); config.setValue(QStringLiteral("microProfileDialogGeometry"), values.microprofile_geometry);
config.sync(); config.sync();
} }
void RestoreWindowState(std::unique_ptr<QtConfig>& qtConfig) { void RestoreWindowState(std::unique_ptr<QtConfig>& qtConfig) {
const auto window_state_config_loc = const auto window_state_config_loc =
FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "window_state.ini");
// Migrate window state from old location // Migrate window state from old location
if (!FS::Exists(window_state_config_loc) && qtConfig->Exists("UI", "UILayout\\geometry")) { if (!FS::Exists(window_state_config_loc) && qtConfig->Exists("UI", "UILayout\\geometry")) {
const auto config_loc = const auto config_loc =
FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "qt-config.ini"); FS::PathToUTF8String(FS::GetCitronPath(FS::CitronPath::ConfigDir) / "qt-config.ini");
QSettings config(QString::fromStdString(config_loc), QSettings::IniFormat); QSettings config(QString::fromStdString(config_loc), QSettings::IniFormat);
config.beginGroup(QStringLiteral("UI"));
config.beginGroup(QStringLiteral("UILayout"));
values.geometry = config.value(QStringLiteral("geometry")).toByteArray();
values.state = config.value(QStringLiteral("state")).toByteArray();
values.renderwindow_geometry =
config.value(QStringLiteral("geometryRenderWindow")).toByteArray();
values.gamelist_header_state =
config.value(QStringLiteral("gameListHeaderState")).toByteArray();
values.microprofile_geometry =
config.value(QStringLiteral("microProfileDialogGeometry")).toByteArray();
config.endGroup();
config.endGroup();
return;
}
void(FS::CreateParentDir(window_state_config_loc));
const QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat);
config.beginGroup(QStringLiteral("UI"));
config.beginGroup(QStringLiteral("UILayout"));
values.geometry = config.value(QStringLiteral("geometry")).toByteArray(); values.geometry = config.value(QStringLiteral("geometry")).toByteArray();
values.state = config.value(QStringLiteral("state")).toByteArray(); values.state = config.value(QStringLiteral("state")).toByteArray();
values.renderwindow_geometry = values.renderwindow_geometry =
config.value(QStringLiteral("geometryRenderWindow")).toByteArray(); config.value(QStringLiteral("geometryRenderWindow")).toByteArray();
values.gamelist_header_state = values.gamelist_header_state =
config.value(QStringLiteral("gameListHeaderState")).toByteArray(); config.value(QStringLiteral("gameListHeaderState")).toByteArray();
values.microprofile_geometry = values.microprofile_geometry =
config.value(QStringLiteral("microProfileDialogGeometry")).toByteArray(); config.value(QStringLiteral("microProfileDialogGeometry")).toByteArray();
config.endGroup();
config.endGroup();
return;
} }
void(FS::CreateParentDir(window_state_config_loc));
const QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat);
values.geometry = config.value(QStringLiteral("geometry")).toByteArray();
values.state = config.value(QStringLiteral("state")).toByteArray();
values.renderwindow_geometry =
config.value(QStringLiteral("geometryRenderWindow")).toByteArray();
values.gamelist_header_state =
config.value(QStringLiteral("gameListHeaderState")).toByteArray();
values.microprofile_geometry =
config.value(QStringLiteral("microProfileDialogGeometry")).toByteArray();
}
} // namespace UISettings } // namespace UISettings