From 23210868768a38de5dad16dc640c6d0e81e08554 Mon Sep 17 00:00:00 2001 From: Evil Eye Date: Sun, 24 Aug 2025 16:01:17 +0200 Subject: [PATCH] Replace StringUtils::format in components/misc --- apps/launcher/graphicspage.cpp | 2 +- apps/openmw/mwgui/settingswindow.cpp | 60 ++++++++++++---------------- components/misc/display.cpp | 7 ++-- components/misc/display.hpp | 2 +- 4 files changed, 30 insertions(+), 41 deletions(-) diff --git a/apps/launcher/graphicspage.cpp b/apps/launcher/graphicspage.cpp index 38b0446efc..b25d6e3dae 100644 --- a/apps/launcher/graphicspage.cpp +++ b/apps/launcher/graphicspage.cpp @@ -201,7 +201,7 @@ QStringList Launcher::GraphicsPage::getAvailableResolutions(int screen) return result; } - auto str = Misc::getResolutionText(mode.w, mode.h, "%i × %i (%i:%i)"); + auto str = Misc::getResolutionText(mode.w, mode.h); result.append(QString(str.c_str())); } diff --git a/apps/openmw/mwgui/settingswindow.cpp b/apps/openmw/mwgui/settingswindow.cpp index 70a067899a..1d638f56e9 100644 --- a/apps/openmw/mwgui/settingswindow.cpp +++ b/apps/openmw/mwgui/settingswindow.cpp @@ -85,17 +85,6 @@ namespace return MyGUI::LanguageManager::getInstance().replaceTags(result); } - void parseResolution(int& x, int& y, const std::string& str) - { - std::vector split; - Misc::StringUtils::split(str, split, "@(x"); - assert(split.size() >= 2); - Misc::StringUtils::trim(split[0]); - Misc::StringUtils::trim(split[1]); - x = MyGUI::utility::parseInt(split[0]); - y = MyGUI::utility::parseInt(split[1]); - } - bool sortResolutions(std::pair left, std::pair right) { if (left.first == right.first) @@ -368,10 +357,10 @@ namespace MWGui std::sort(resolutions.begin(), resolutions.end(), sortResolutions); for (std::pair& resolution : resolutions) { - std::string str = Misc::getResolutionText(resolution.first, resolution.second, "%i x %i (%i:%i)"); + std::string str = Misc::getResolutionText(resolution.first, resolution.second); if (mResolutionList->findItemIndexWith(str) == MyGUI::ITEM_NONE) - mResolutionList->addItem(str); + mResolutionList->addItem(str, resolution); } highlightCurrentResolution(); @@ -493,14 +482,14 @@ namespace MWGui void SettingsWindow::onResolutionAccept() { - const std::string& resStr = mResolutionList->getItemNameAt(mResolutionList->getIndexSelected()); - int resX, resY; - parseResolution(resX, resY, resStr); + auto resultion = mResolutionList->getItemDataAt>(mResolutionList->getIndexSelected()); + if (resultion) + { + Settings::video().mResolutionX.set(resultion->first); + Settings::video().mResolutionY.set(resultion->second); - Settings::video().mResolutionX.set(resX); - Settings::video().mResolutionY.set(resY); - - apply(); + apply(); + } } void SettingsWindow::onResolutionCancel() @@ -517,10 +506,8 @@ namespace MWGui for (size_t i = 0; i < mResolutionList->getItemCount(); ++i) { - int resX, resY; - parseResolution(resX, resY, mResolutionList->getItemNameAt(i)); - - if (resX == currentX && resY == currentY) + auto resultion = mResolutionList->getItemDataAt>(i); + if (resultion && resultion->first == currentX && resultion->second == currentY) { mResolutionList->setIndexSelected(i); break; @@ -886,28 +873,31 @@ namespace MWGui // check if this resolution is supported in fullscreen if (mResolutionList->getIndexSelected() != MyGUI::ITEM_NONE) { - const std::string& resStr = mResolutionList->getItemNameAt(mResolutionList->getIndexSelected()); - int resX, resY; - parseResolution(resX, resY, resStr); - Settings::video().mResolutionX.set(resX); - Settings::video().mResolutionY.set(resY); + auto resultion + = mResolutionList->getItemDataAt>(mResolutionList->getIndexSelected()); + if (resultion) + { + Settings::video().mResolutionX.set(resultion->first); + Settings::video().mResolutionY.set(resultion->second); + } } bool supported = false; int fallbackX = 0, fallbackY = 0; for (size_t i = 0; i < mResolutionList->getItemCount(); ++i) { - const std::string& resStr = mResolutionList->getItemNameAt(i); - int resX, resY; - parseResolution(resX, resY, resStr); + auto resultion = mResolutionList->getItemDataAt>(i); + if (!resultion) + continue; if (i == 0) { - fallbackX = resX; - fallbackY = resY; + fallbackX = resultion->first; + fallbackY = resultion->second; } - if (resX == Settings::video().mResolutionX && resY == Settings::video().mResolutionY) + if (resultion->first == Settings::video().mResolutionX + && resultion->second == Settings::video().mResolutionY) supported = true; } diff --git a/components/misc/display.cpp b/components/misc/display.cpp index ee78b2a0c9..2a7c5a4688 100644 --- a/components/misc/display.cpp +++ b/components/misc/display.cpp @@ -1,13 +1,12 @@ #include "display.hpp" +#include #include #include -#include - namespace Misc { - std::string getResolutionText(int x, int y, const std::string& format) + std::string getResolutionText(int x, int y) { int gcd = std::gcd(x, y); if (gcd == 0) @@ -77,6 +76,6 @@ namespace Misc if (flipped) std::swap(xaspect, yaspect); - return Misc::StringUtils::format(format, x, y, xaspect, yaspect); + return std::format("{} × {} ({}:{})", x, y, xaspect, yaspect); } } diff --git a/components/misc/display.hpp b/components/misc/display.hpp index 82037661c8..6f60a48cda 100644 --- a/components/misc/display.hpp +++ b/components/misc/display.hpp @@ -5,7 +5,7 @@ namespace Misc { - std::string getResolutionText(int x, int y, const std::string& format); + std::string getResolutionText(int x, int y); } #endif