mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-04-10 19:15:13 +00:00
Merge branch '63-add-badges-decals-e-g-for-favorites-completed-games-non-working-games-collections-and-folders' into 575-theme-add-a-modern-clean-switch-like-theme-as-an-official-theme-in-es-de-to-choose-from
This commit is contained in:
commit
06ce723dad
|
@ -13,32 +13,37 @@
|
||||||
#include "ThemeData.h"
|
#include "ThemeData.h"
|
||||||
#include "resources/TextureResource.h"
|
#include "resources/TextureResource.h"
|
||||||
|
|
||||||
BadgesComponent::BadgesComponent(Window* window)
|
// Available slot definitions.
|
||||||
: FlexboxComponent(window)
|
const std::vector<std::string> BadgesComponent::mSlots = {SLOT_FAVORITE, SLOT_COMPLETED, SLOT_KIDS, SLOT_BROKEN};
|
||||||
{
|
std::map<std::string, std::string> BadgesComponent::mBadgeIcons = std::map<std::string, std::string>();
|
||||||
// Define the slots.
|
std::map<std::string, ImageComponent> BadgesComponent::mImageComponents = std::map<std::string, ImageComponent>();
|
||||||
mSlots = {SLOT_FAVORITE, SLOT_COMPLETED, SLOT_KIDS, SLOT_BROKEN};
|
|
||||||
|
BadgesComponent::BadgesComponent(Window *window)
|
||||||
|
: FlexboxComponent(window) {
|
||||||
|
if (mBadgeIcons.empty()) {
|
||||||
|
mBadgeIcons[SLOT_FAVORITE] = ":/graphics/badge_favorite.svg";
|
||||||
|
mBadgeIcons[SLOT_COMPLETED] = ":/graphics/badge_completed.svg";
|
||||||
|
mBadgeIcons[SLOT_KIDS] = ":/graphics/badge_kidgame.svg";
|
||||||
|
mBadgeIcons[SLOT_BROKEN] = ":/graphics/badge_broken.svg";
|
||||||
|
}
|
||||||
|
|
||||||
mBadgeIcons = std::map<std::string, std::string>();
|
|
||||||
mBadgeIcons[SLOT_FAVORITE] = ":/graphics/badge_favorite.svg";
|
|
||||||
mBadgeIcons[SLOT_COMPLETED] = ":/graphics/badge_completed.svg";
|
|
||||||
mBadgeIcons[SLOT_KIDS] = ":/graphics/badge_kidgame.svg";
|
|
||||||
mBadgeIcons[SLOT_BROKEN] = ":/graphics/badge_broken.svg";
|
|
||||||
|
|
||||||
// Create the child ImageComponent for every badge.
|
// Create the child ImageComponent for every badge.
|
||||||
mImageComponents = std::map<std::string, ImageComponent>();
|
if (mImageComponents.empty()) {
|
||||||
ImageComponent mImageFavorite = ImageComponent(window);
|
ImageComponent mImageFavorite = ImageComponent(window);
|
||||||
mImageFavorite.setImage(mBadgeIcons[SLOT_FAVORITE], false, false);
|
mImageFavorite.setImage(mBadgeIcons[SLOT_FAVORITE], false, true);
|
||||||
mImageComponents.insert({SLOT_FAVORITE, mImageFavorite});
|
mImageComponents.insert({SLOT_FAVORITE, mImageFavorite});
|
||||||
ImageComponent mImageCompleted = ImageComponent(window);
|
ImageComponent mImageCompleted = ImageComponent(window);
|
||||||
mImageCompleted.setImage(mBadgeIcons[SLOT_COMPLETED], false, false);
|
mImageCompleted.setImage(mBadgeIcons[SLOT_COMPLETED], false, true);
|
||||||
mImageComponents.insert({SLOT_COMPLETED, mImageCompleted});
|
mImageComponents.insert({SLOT_COMPLETED, mImageCompleted});
|
||||||
ImageComponent mImageKids = ImageComponent(window);
|
ImageComponent mImageKids = ImageComponent(window);
|
||||||
mImageKids.setImage(mBadgeIcons[SLOT_KIDS], false, false);
|
mImageKids.setImage(mBadgeIcons[SLOT_KIDS], false, true);
|
||||||
mImageComponents.insert({SLOT_KIDS, mImageKids});
|
mImageComponents.insert({SLOT_KIDS, mImageKids});
|
||||||
ImageComponent mImageBroken = ImageComponent(window);
|
ImageComponent mImageBroken = ImageComponent(window);
|
||||||
mImageBroken.setImage(mBadgeIcons[SLOT_BROKEN], false, false);
|
mImageBroken.setImage(mBadgeIcons[SLOT_BROKEN], false, true);
|
||||||
mImageComponents.insert({SLOT_BROKEN, mImageBroken});
|
mImageComponents.insert({SLOT_BROKEN, mImageBroken});
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void BadgesComponent::setValue(const std::string& value)
|
void BadgesComponent::setValue(const std::string& value)
|
||||||
|
@ -82,9 +87,9 @@ void BadgesComponent::applyTheme(const std::shared_ptr<ThemeData>& theme,
|
||||||
|
|
||||||
bool imgChanged = false;
|
bool imgChanged = false;
|
||||||
for (auto& slot : mSlots) {
|
for (auto& slot : mSlots) {
|
||||||
if (properties & PATH && elem->has(slot)) {
|
if (properties & PATH && elem->has(slot) && mBadgeIcons[slot] != elem->get<std::string>(slot)) {
|
||||||
mBadgeIcons[slot] = elem->get<std::string>(slot);
|
mBadgeIcons[slot] = elem->get<std::string>(slot);
|
||||||
mImageComponents.find(slot)->second.setImage(mBadgeIcons[slot]);
|
mImageComponents.find(slot)->second.setImage(mBadgeIcons[slot], false, true);
|
||||||
imgChanged = true;
|
imgChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,19 +30,19 @@ public:
|
||||||
|
|
||||||
std::string getValue() const override;
|
std::string getValue() const override;
|
||||||
// Should be a list of strings.
|
// Should be a list of strings.
|
||||||
void setValue(const std::string& value) override;
|
void setValue(const std::string &value) override;
|
||||||
|
|
||||||
virtual void applyTheme(const std::shared_ptr<ThemeData>& theme,
|
virtual void applyTheme(const std::shared_ptr<ThemeData> &theme,
|
||||||
const std::string& view,
|
const std::string &view,
|
||||||
const std::string& element,
|
const std::string &element,
|
||||||
unsigned int properties) override;
|
unsigned int properties) override;
|
||||||
|
|
||||||
virtual std::vector<HelpPrompt> getHelpPrompts() override;
|
virtual std::vector<HelpPrompt> getHelpPrompts() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::string> mSlots;
|
static const std::vector<std::string> mSlots;
|
||||||
std::map<std::string, std::string> mBadgeIcons;
|
static std::map<std::string, std::string> mBadgeIcons;
|
||||||
std::map<std::string, ImageComponent> mImageComponents;
|
static std::map<std::string, ImageComponent> mImageComponents;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ES_APP_COMPONENTS_BADGES_COMPONENT_H
|
#endif // ES_APP_COMPONENTS_BADGES_COMPONENT_H
|
||||||
|
|
Loading…
Reference in a new issue