From fca9e51844c3fd48aabab16cbca44e515b0fc6ba Mon Sep 17 00:00:00 2001 From: Leon Styhre Date: Sun, 21 Aug 2022 18:15:06 +0200 Subject: [PATCH] Added support for the letterCase property when using the carousel in the gamelist view. --- .../components/primary/CarouselComponent.h | 44 +++++++++++++++---- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/es-core/src/components/primary/CarouselComponent.h b/es-core/src/components/primary/CarouselComponent.h index 7bc8217d7..84f0ddb1d 100644 --- a/es-core/src/components/primary/CarouselComponent.h +++ b/es-core/src/components/primary/CarouselComponent.h @@ -113,6 +113,9 @@ private: int mPreviousScrollVelocity; bool mTriggerJump; bool mGamelistView; + bool mUppercase; + bool mLowercase; + bool mCapitalize; CarouselType mType; std::string mItemType; @@ -154,6 +157,9 @@ CarouselComponent::CarouselComponent() , mPreviousScrollVelocity {0} , mTriggerJump {false} , mGamelistView {std::is_same_v ? true : false} + , mUppercase {false} + , mLowercase {false} + , mCapitalize {false} , mType {CarouselType::HORIZONTAL} , mLegacyMode {false} , mFont {Font::get(FONT_SIZE_LARGE)} @@ -237,7 +243,19 @@ void CarouselComponent::addEntry(Entry& entry, const std::shared_ptr(entry.name, mFont, 0x000000FF, ALIGN_CENTER); + std::string nameEntry; + if (!mGamelistView) + nameEntry = entry.name; + else if (mUppercase) + nameEntry = Utils::String::toUpper(entry.name); + else if (mLowercase) + nameEntry = Utils::String::toLower(entry.name); + else if (mCapitalize) + nameEntry = Utils::String::toCapitalized(entry.name); + else + nameEntry = entry.name; + + auto text = std::make_shared(nameEntry, mFont, 0x000000FF, ALIGN_CENTER); text->setSize(mItemSize * mItemScale); if (legacyMode) { text->applyTheme(theme, "system", "text_logoText", @@ -732,6 +750,9 @@ void CarouselComponent::applyTheme(const std::shared_ptr& theme, mCarouselColorEnd = 0xFFFFFFD8; mZIndex = mDefaultZIndex; mText = ""; + mUppercase = false; + mLowercase = false; + mCapitalize = false; if (!elem) return; @@ -988,28 +1009,35 @@ void CarouselComponent::applyTheme(const std::shared_ptr& theme, mLineSpacing = glm::clamp(elem->get("lineSpacing"), 0.5f, 3.0f); std::string letterCase; + bool hasText {!mGamelistView && elem->has("text")}; - if (elem->has("letterCase")) + if (elem->has("letterCase")) { letterCase = elem->get("letterCase"); - if (elem->has("text")) { if (letterCase == "uppercase") { - mText = Utils::String::toUpper(elem->get("text")); + mUppercase = true; + if (hasText) + mText = Utils::String::toUpper(elem->get("text")); } else if (letterCase == "lowercase") { - mText = Utils::String::toLower(elem->get("text")); + mLowercase = true; + if (hasText) + mText = Utils::String::toLower(elem->get("text")); } else if (letterCase == "capitalize") { - mText = Utils::String::toCapitalized(elem->get("text")); + mCapitalize = true; + if (hasText) + mText = Utils::String::toCapitalized(elem->get("text")); } - else if (letterCase == "none") { + else if (hasText && letterCase == "none") { mText = elem->get("text"); } else { LOG(LogWarning) << "CarouselComponent: Invalid theme configuration, property " " defined as \"" << letterCase << "\""; - mText = elem->get("text"); + if (hasText) + mText = elem->get("text"); } }