mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-25 15:45:38 +00:00
Added theme support for controlling the TextListComponent indicators.
This commit is contained in:
parent
486d3b0fcb
commit
254e271392
|
@ -571,48 +571,56 @@ void GamelistBase::populateList(const std::vector<FileData*>& files, FileData* f
|
|||
|
||||
if (mTextList != nullptr) {
|
||||
TextListComponent<FileData*>::Entry textListEntry;
|
||||
std::string indicators {mTextList->getIndicators()};
|
||||
|
||||
if (!mFirstGameEntry && (*it)->getType() == GAME)
|
||||
mFirstGameEntry = (*it);
|
||||
// Add a leading tick mark icon to the game name if it's part of the custom
|
||||
// collection currently being edited.
|
||||
if (isEditing && (*it)->getType() == GAME) {
|
||||
if (CollectionSystemsManager::getInstance()->inCustomCollection(
|
||||
editingCollection, (*it))) {
|
||||
if (Settings::getInstance()->getBool("SpecialCharsASCII"))
|
||||
inCollectionPrefix = "! ";
|
||||
else
|
||||
inCollectionPrefix = ViewController::TICKMARK_CHAR + " ";
|
||||
}
|
||||
else {
|
||||
inCollectionPrefix = "";
|
||||
}
|
||||
}
|
||||
|
||||
if ((*it)->getFavorite() && favoriteStar &&
|
||||
mRoot->getSystem()->getName() != "favorites") {
|
||||
if (Settings::getInstance()->getBool("SpecialCharsASCII"))
|
||||
name = inCollectionPrefix + "* " + (*it)->getName();
|
||||
else
|
||||
name = inCollectionPrefix + ViewController::FAVORITE_CHAR + " " +
|
||||
(*it)->getName();
|
||||
}
|
||||
else if ((*it)->getType() == FOLDER &&
|
||||
mRoot->getSystem()->getName() != "collections") {
|
||||
if (Settings::getInstance()->getBool("SpecialCharsASCII")) {
|
||||
if ((*it)->metadata.get("folderlink") != "")
|
||||
name = "> " + (*it)->getName();
|
||||
else
|
||||
name = "# " + (*it)->getName();
|
||||
}
|
||||
else {
|
||||
if ((*it)->metadata.get("folderlink") != "")
|
||||
name = ViewController::FOLDERLINK_CHAR + " " + (*it)->getName();
|
||||
else
|
||||
name = ViewController::FOLDER_CHAR + " " + (*it)->getName();
|
||||
}
|
||||
if (indicators == "none") {
|
||||
name = (*it)->getName();
|
||||
}
|
||||
else {
|
||||
name = inCollectionPrefix + (*it)->getName();
|
||||
// Add a leading tick mark icon to the game name if it's part of the custom
|
||||
// collection currently being edited.
|
||||
if (isEditing && (*it)->getType() == GAME) {
|
||||
if (CollectionSystemsManager::getInstance()->inCustomCollection(
|
||||
editingCollection, (*it))) {
|
||||
if (indicators == "ascii")
|
||||
inCollectionPrefix = "! ";
|
||||
else
|
||||
inCollectionPrefix = ViewController::TICKMARK_CHAR + " ";
|
||||
}
|
||||
else {
|
||||
inCollectionPrefix = "";
|
||||
}
|
||||
}
|
||||
|
||||
if ((*it)->getFavorite() && favoriteStar &&
|
||||
mRoot->getSystem()->getName() != "favorites") {
|
||||
if (indicators == "ascii")
|
||||
name = inCollectionPrefix + "* " + (*it)->getName();
|
||||
else
|
||||
name = inCollectionPrefix + ViewController::FAVORITE_CHAR + " " +
|
||||
(*it)->getName();
|
||||
}
|
||||
else if ((*it)->getType() == FOLDER &&
|
||||
mRoot->getSystem()->getName() != "collections") {
|
||||
if (indicators == "ascii") {
|
||||
if ((*it)->metadata.get("folderlink") != "")
|
||||
name = "> " + (*it)->getName();
|
||||
else
|
||||
name = "# " + (*it)->getName();
|
||||
}
|
||||
else {
|
||||
if ((*it)->metadata.get("folderlink") != "")
|
||||
name = ViewController::FOLDERLINK_CHAR + " " + (*it)->getName();
|
||||
else
|
||||
name = ViewController::FOLDER_CHAR + " " + (*it)->getName();
|
||||
}
|
||||
}
|
||||
else {
|
||||
name = inCollectionPrefix + (*it)->getName();
|
||||
}
|
||||
}
|
||||
color = (*it)->getType() == FOLDER;
|
||||
textListEntry.name = name;
|
||||
|
|
|
@ -289,6 +289,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>>
|
|||
{"letterCase", STRING},
|
||||
{"forceUppercase", BOOLEAN}, // For backward compatibility with legacy themes.
|
||||
{"lineSpacing", FLOAT},
|
||||
{"indicators", STRING},
|
||||
{"zIndex", FLOAT}}},
|
||||
{"gameselector",
|
||||
{{"selection", STRING},
|
||||
|
|
|
@ -118,6 +118,7 @@ public:
|
|||
void setSelectedColor(unsigned int color) { mSelectedColor = color; }
|
||||
void setColor(unsigned int id, unsigned int color) { mColors[id] = color; }
|
||||
void setLineSpacing(float lineSpacing) { mLineSpacing = lineSpacing; }
|
||||
const std::string& getIndicators() const { return mIndicators; }
|
||||
|
||||
protected:
|
||||
void onScroll() override
|
||||
|
@ -161,6 +162,7 @@ private:
|
|||
ImageComponent mSelectorImage;
|
||||
|
||||
std::shared_ptr<Font> mFont;
|
||||
std::string mIndicators;
|
||||
bool mUppercase;
|
||||
bool mLowercase;
|
||||
bool mCapitalize;
|
||||
|
@ -190,6 +192,7 @@ TextListComponent<T>::TextListComponent()
|
|||
, mAlignment {PrimaryAlignment::ALIGN_CENTER}
|
||||
, mHorizontalMargin {0.0f}
|
||||
, mFont {Font::get(FONT_SIZE_MEDIUM)}
|
||||
, mIndicators {"symbols"}
|
||||
, mUppercase {false}
|
||||
, mLowercase {false}
|
||||
, mCapitalize {false}
|
||||
|
@ -587,8 +590,8 @@ void TextListComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
if (elem->has("selectorHeight"))
|
||||
setSelectorHeight(elem->get<float>("selectorHeight") * Renderer::getScreenHeight());
|
||||
if (elem->has("selectorOffsetY")) {
|
||||
float scale = this->mParent ? this->mParent->getSize().y :
|
||||
static_cast<float>(Renderer::getScreenHeight());
|
||||
float scale {this->mParent ? this->mParent->getSize().y :
|
||||
static_cast<float>(Renderer::getScreenHeight())};
|
||||
setSelectorOffsetY(elem->get<float>("selectorOffsetY") * scale);
|
||||
}
|
||||
else {
|
||||
|
@ -596,8 +599,21 @@ void TextListComponent<T>::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
|||
}
|
||||
}
|
||||
|
||||
if (elem->has("indicators")) {
|
||||
std::string indicators {elem->get<std::string>("indicators")};
|
||||
if (indicators == "symbols" || indicators == "ascii" || indicators == "none") {
|
||||
mIndicators = indicators;
|
||||
}
|
||||
else {
|
||||
mIndicators = "symbols";
|
||||
LOG(LogWarning) << "TextListComponent: Invalid theme configuration, property "
|
||||
"<indicators> defined as \""
|
||||
<< indicators << "\"";
|
||||
}
|
||||
}
|
||||
|
||||
if (elem->has("selectorImagePath")) {
|
||||
std::string path = elem->get<std::string>("selectorImagePath");
|
||||
std::string path {elem->get<std::string>("selectorImagePath")};
|
||||
bool tile = elem->has("selectorImageTile") && elem->get<bool>("selectorImageTile");
|
||||
mSelectorImage.setImage(path, tile);
|
||||
mSelectorImage.setSize(mSize.x, mSelectorHeight);
|
||||
|
|
Loading…
Reference in a new issue