| |
| |
|
|
| #include <QSettings> |
| #include "common/fs/fs.h" |
| #include "common/fs/path_util.h" |
| #include "yuzu/uisettings.h" |
|
|
| #ifndef CANNOT_EXPLICITLY_INSTANTIATE |
| namespace Settings { |
| template class Setting<bool>; |
| template class Setting<std::string>; |
| template class Setting<u16, true>; |
| template class Setting<u32>; |
| template class Setting<u8, true>; |
| template class Setting<u8>; |
| template class Setting<unsigned long long>; |
| } |
| #endif |
|
|
| namespace FS = Common::FS; |
|
|
| namespace UISettings { |
|
|
| const Themes themes{{ |
| {"Default", "default"}, |
| {"Default Colorful", "colorful"}, |
| {"Dark", "qdarkstyle"}, |
| {"Dark Colorful", "colorful_dark"}, |
| {"Midnight Blue", "qdarkstyle_midnight_blue"}, |
| {"Midnight Blue Colorful", "colorful_midnight_blue"}, |
| }}; |
|
|
| bool IsDarkTheme() { |
| const auto& theme = UISettings::values.theme; |
| return theme == std::string("qdarkstyle") || theme == std::string("qdarkstyle_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::R16_9: |
| case Settings::AspectRatio::Stretch: |
| |
| break; |
| } |
| return height * 16 / 9; |
| } |
|
|
| void SaveWindowState() { |
| const auto window_state_config_loc = |
| FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "window_state.ini"); |
|
|
| void(FS::CreateParentDir(window_state_config_loc)); |
| QSettings config(QString::fromStdString(window_state_config_loc), QSettings::IniFormat); |
|
|
| config.setValue(QStringLiteral("geometry"), values.geometry); |
| config.setValue(QStringLiteral("state"), values.state); |
| config.setValue(QStringLiteral("geometryRenderWindow"), values.renderwindow_geometry); |
| config.setValue(QStringLiteral("gameListHeaderState"), values.gamelist_header_state); |
| config.setValue(QStringLiteral("microProfileDialogGeometry"), values.microprofile_geometry); |
|
|
| config.sync(); |
| } |
|
|
| void RestoreWindowState(std::unique_ptr<QtConfig>& qtConfig) { |
| const auto window_state_config_loc = |
| FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "window_state.ini"); |
|
|
| |
| if (!FS::Exists(window_state_config_loc) && qtConfig->Exists("UI", "UILayout\\geometry")) { |
| const auto config_loc = |
| FS::PathToUTF8String(FS::GetYuzuPath(FS::YuzuPath::ConfigDir) / "qt-config.ini"); |
| 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); |
|
|
| 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(); |
| } |
|
|
| } |
|
|