mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 23:55:38 +00:00
Fixed an issue where the theme sets were not always sorted correctly.
This commit is contained in:
parent
21f21c20f5
commit
16955e5318
|
@ -1355,7 +1355,7 @@ std::vector<std::string> CollectionSystemsManager::getSystemsFromTheme()
|
||||||
if (themeSets.empty())
|
if (themeSets.empty())
|
||||||
return systems; // No theme sets available.
|
return systems; // No theme sets available.
|
||||||
|
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator set =
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator set =
|
||||||
themeSets.find(Settings::getInstance()->getString("ThemeSet"));
|
themeSets.find(Settings::getInstance()->getString("ThemeSet"));
|
||||||
if (set == themeSets.cend()) {
|
if (set == themeSets.cend()) {
|
||||||
// Currently selected theme set is missing, so just pick the first available set.
|
// Currently selected theme set is missing, so just pick the first available set.
|
||||||
|
|
|
@ -98,8 +98,10 @@ void GuiMenu::openUIOptions()
|
||||||
|
|
||||||
// Theme options section.
|
// Theme options section.
|
||||||
|
|
||||||
std::map<std::string, ThemeData::ThemeSet> themeSets {ThemeData::getThemeSets()};
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator> themeSets {
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator selectedSet;
|
ThemeData::getThemeSets()};
|
||||||
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator
|
||||||
|
selectedSet;
|
||||||
|
|
||||||
auto theme_set =
|
auto theme_set =
|
||||||
std::make_shared<OptionListComponent<std::string>>(getHelpStyle(), "THEME SET", false);
|
std::make_shared<OptionListComponent<std::string>>(getHelpStyle(), "THEME SET", false);
|
||||||
|
@ -153,8 +155,8 @@ void GuiMenu::openUIOptions()
|
||||||
|
|
||||||
auto themeVariantsFunc = [=](const std::string& selectedTheme,
|
auto themeVariantsFunc = [=](const std::string& selectedTheme,
|
||||||
const std::string& selectedVariant) {
|
const std::string& selectedVariant) {
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator currentSet {
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator
|
||||||
themeSets.find(selectedTheme)};
|
currentSet {themeSets.find(selectedTheme)};
|
||||||
if (currentSet == themeSets.cend())
|
if (currentSet == themeSets.cend())
|
||||||
return;
|
return;
|
||||||
// We need to recreate the OptionListComponent entries.
|
// We need to recreate the OptionListComponent entries.
|
||||||
|
@ -209,8 +211,8 @@ void GuiMenu::openUIOptions()
|
||||||
|
|
||||||
auto themeAspectRatiosFunc = [=](const std::string& selectedTheme,
|
auto themeAspectRatiosFunc = [=](const std::string& selectedTheme,
|
||||||
const std::string& selectedAspectRatio) {
|
const std::string& selectedAspectRatio) {
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator currentSet {
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator
|
||||||
themeSets.find(selectedTheme)};
|
currentSet {themeSets.find(selectedTheme)};
|
||||||
if (currentSet == themeSets.cend())
|
if (currentSet == themeSets.cend())
|
||||||
return;
|
return;
|
||||||
// We need to recreate the OptionListComponent entries.
|
// We need to recreate the OptionListComponent entries.
|
||||||
|
|
|
@ -91,8 +91,8 @@ void GamelistView::onTransition()
|
||||||
void GamelistView::onThemeChanged(const std::shared_ptr<ThemeData>& theme)
|
void GamelistView::onThemeChanged(const std::shared_ptr<ThemeData>& theme)
|
||||||
{
|
{
|
||||||
auto themeSets = ThemeData::getThemeSets();
|
auto themeSets = ThemeData::getThemeSets();
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator selectedSet {
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator
|
||||||
themeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
selectedSet {themeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
||||||
|
|
||||||
assert(selectedSet != themeSets.cend());
|
assert(selectedSet != themeSets.cend());
|
||||||
mLegacyMode = selectedSet->second.capabilities.legacyTheme;
|
mLegacyMode = selectedSet->second.capabilities.legacyTheme;
|
||||||
|
|
|
@ -361,8 +361,8 @@ void SystemView::populate()
|
||||||
LOG(LogDebug) << "SystemView::populate(): Populating carousel";
|
LOG(LogDebug) << "SystemView::populate(): Populating carousel";
|
||||||
|
|
||||||
auto themeSets = ThemeData::getThemeSets();
|
auto themeSets = ThemeData::getThemeSets();
|
||||||
std::map<std::string, ThemeData::ThemeSet>::const_iterator selectedSet {
|
std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>::const_iterator
|
||||||
themeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
selectedSet {themeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
||||||
|
|
||||||
assert(selectedSet != themeSets.cend());
|
assert(selectedSet != themeSets.cend());
|
||||||
mLegacyMode = selectedSet->second.capabilities.legacyTheme;
|
mLegacyMode = selectedSet->second.capabilities.legacyTheme;
|
||||||
|
|
|
@ -500,7 +500,8 @@ const ThemeData::ThemeElement* ThemeData::getElement(const std::string& view,
|
||||||
return &elemIt->second;
|
return &elemIt->second;
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::map<std::string, ThemeData::ThemeSet>& ThemeData::getThemeSets()
|
const std::map<std::string, ThemeData::ThemeSet, ThemeData::StringComparator>&
|
||||||
|
ThemeData::getThemeSets()
|
||||||
{
|
{
|
||||||
if (!mThemeSets.empty())
|
if (!mThemeSets.empty())
|
||||||
return mThemeSets;
|
return mThemeSets;
|
||||||
|
@ -564,7 +565,7 @@ const std::string ThemeData::getThemeFromCurrentSet(const std::string& system)
|
||||||
// No theme sets available.
|
// No theme sets available.
|
||||||
return "";
|
return "";
|
||||||
|
|
||||||
std::map<std::string, ThemeSet>::const_iterator set {
|
std::map<std::string, ThemeSet, StringComparator>::const_iterator set {
|
||||||
mThemeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
mThemeSets.find(Settings::getInstance()->getString("ThemeSet"))};
|
||||||
if (set == mThemeSets.cend()) {
|
if (set == mThemeSets.cend()) {
|
||||||
// Currently configured theme set is missing, attempt to load the default theme set
|
// Currently configured theme set is missing, attempt to load the default theme set
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include "utils/FileSystemUtil.h"
|
#include "utils/FileSystemUtil.h"
|
||||||
#include "utils/MathUtil.h"
|
#include "utils/MathUtil.h"
|
||||||
|
#include "utils/StringUtil.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <any>
|
#include <any>
|
||||||
|
@ -200,6 +201,13 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct StringComparator {
|
||||||
|
bool operator()(const std::string& a, const std::string& b) const
|
||||||
|
{
|
||||||
|
return Utils::String::toUpper(a) < Utils::String::toUpper(b);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
void loadFile(const std::map<std::string, std::string>& sysDataMap, const std::string& path);
|
void loadFile(const std::map<std::string, std::string>& sysDataMap, const std::string& path);
|
||||||
bool hasView(const std::string& view);
|
bool hasView(const std::string& view);
|
||||||
ThemeView& getViewElements(std::string view) { return mViews[view]; }
|
ThemeView& getViewElements(std::string view) { return mViews[view]; }
|
||||||
|
@ -211,7 +219,7 @@ public:
|
||||||
const std::string& element,
|
const std::string& element,
|
||||||
const std::string& expectedType) const;
|
const std::string& expectedType) const;
|
||||||
|
|
||||||
const static std::map<std::string, ThemeSet>& getThemeSets();
|
const static std::map<std::string, ThemeSet, StringComparator>& getThemeSets();
|
||||||
const static std::string getThemeFromCurrentSet(const std::string& system);
|
const static std::string getThemeFromCurrentSet(const std::string& system);
|
||||||
const static std::string getAspectRatioLabel(const std::string& aspectRatio);
|
const static std::string getAspectRatioLabel(const std::string& aspectRatio);
|
||||||
|
|
||||||
|
@ -256,8 +264,8 @@ private:
|
||||||
static std::map<std::string, std::map<std::string, std::string>> sPropertyAttributeMap;
|
static std::map<std::string, std::map<std::string, std::string>> sPropertyAttributeMap;
|
||||||
static std::map<std::string, std::map<std::string, ElementPropertyType>> sElementMap;
|
static std::map<std::string, std::map<std::string, ElementPropertyType>> sElementMap;
|
||||||
|
|
||||||
static inline std::map<std::string, ThemeSet> mThemeSets;
|
static inline std::map<std::string, ThemeSet, StringComparator> mThemeSets;
|
||||||
std::map<std::string, ThemeData::ThemeSet>::iterator mCurrentThemeSet;
|
std::map<std::string, ThemeSet, StringComparator>::iterator mCurrentThemeSet;
|
||||||
|
|
||||||
std::map<std::string, ThemeView> mViews;
|
std::map<std::string, ThemeView> mViews;
|
||||||
std::deque<std::string> mPaths;
|
std::deque<std::string> mPaths;
|
||||||
|
|
Loading…
Reference in a new issue