mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-02-16 20:15:38 +00:00
Added DateTimeComponent support to SystemView.
This commit is contained in:
parent
73e0e59b8c
commit
e92af0548c
|
@ -457,6 +457,14 @@ void SystemView::populate()
|
|||
elements.children.emplace_back(elements.textComponents.back().get());
|
||||
}
|
||||
}
|
||||
else if (element.second.type == "datetime") {
|
||||
elements.dateTimeComponents.emplace_back(
|
||||
std::make_unique<DateTimeComponent>());
|
||||
elements.dateTimeComponents.back()->setDefaultZIndex(40.0f);
|
||||
elements.dateTimeComponents.back()->applyTheme(
|
||||
theme, "system", element.first, ThemeFlags::ALL);
|
||||
elements.children.emplace_back(elements.dateTimeComponents.back().get());
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -857,15 +865,19 @@ void SystemView::updateGameSelectors()
|
|||
gameSelector = mSystemElements[cursor].gameSelectors.front().get();
|
||||
LOG(LogWarning) << "SystemView::updateGameSelectors(): Multiple gameselector "
|
||||
"elements defined but text element does not state which one to "
|
||||
"use, so selecting first entry";
|
||||
"use, selecting first entry";
|
||||
}
|
||||
else {
|
||||
for (auto& selector : mSystemElements[cursor].gameSelectors) {
|
||||
if (selector->getSelectorName() == textSelector)
|
||||
gameSelector = selector.get();
|
||||
}
|
||||
if (gameSelector == nullptr)
|
||||
if (gameSelector == nullptr) {
|
||||
LOG(LogWarning)
|
||||
<< "SystemView::updateGameSelectors(): Invalid gameselector \""
|
||||
<< textSelector << "\" defined for text element, selecting first entry";
|
||||
gameSelector = mSystemElements[cursor].gameSelectors.front().get();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
@ -904,6 +916,48 @@ void SystemView::updateGameSelectors()
|
|||
text->setValue("");
|
||||
}
|
||||
}
|
||||
|
||||
for (auto& dateTime : mSystemElements[cursor].dateTimeComponents) {
|
||||
if (dateTime->getThemeMetadata() == "")
|
||||
continue;
|
||||
GameSelectorComponent* gameSelector {nullptr};
|
||||
if (multipleSelectors) {
|
||||
const std::string& dateTimeSelector {dateTime->getThemeGameSelector()};
|
||||
if (dateTimeSelector == "") {
|
||||
gameSelector = mSystemElements[cursor].gameSelectors.front().get();
|
||||
LOG(LogWarning) << "SystemView::updateGameSelectors(): Multiple gameselector "
|
||||
"elements defined but datetime element does not state which one "
|
||||
"to use, selecting first entry";
|
||||
}
|
||||
else {
|
||||
for (auto& selector : mSystemElements[cursor].gameSelectors) {
|
||||
if (selector->getSelectorName() == dateTimeSelector)
|
||||
gameSelector = selector.get();
|
||||
}
|
||||
if (gameSelector == nullptr) {
|
||||
LOG(LogWarning) << "SystemView::updateGameSelectors(): Invalid gameselector \""
|
||||
<< dateTimeSelector
|
||||
<< "\" defined for datetime element, selecting first entry";
|
||||
gameSelector = mSystemElements[cursor].gameSelectors.front().get();
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
gameSelector = mSystemElements[cursor].gameSelectors.front().get();
|
||||
}
|
||||
gameSelector->refreshGames();
|
||||
std::vector<FileData*> games {gameSelector->getGames()};
|
||||
if (!games.empty()) {
|
||||
const std::string metadata {dateTime->getThemeMetadata()};
|
||||
if (metadata == "releasedate")
|
||||
dateTime->setValue(games.front()->metadata.get("releasedate"));
|
||||
if (metadata == "lastplayed")
|
||||
dateTime->setValue(games.front()->metadata.get("lastplayed"));
|
||||
}
|
||||
else {
|
||||
dateTime->setValue("19700101T000000");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void SystemView::legacyApplyTheme(const std::shared_ptr<ThemeData>& theme)
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "Sound.h"
|
||||
#include "SystemData.h"
|
||||
#include "components/CarouselComponent.h"
|
||||
#include "components/DateTimeComponent.h"
|
||||
#include "components/GameSelectorComponent.h"
|
||||
#include "components/LottieComponent.h"
|
||||
#include "components/TextComponent.h"
|
||||
|
@ -34,6 +35,7 @@ struct SystemViewElements {
|
|||
|
||||
std::vector<std::unique_ptr<TextComponent>> gameCountComponents;
|
||||
std::vector<std::unique_ptr<TextComponent>> textComponents;
|
||||
std::vector<std::unique_ptr<DateTimeComponent>> dateTimeComponents;
|
||||
std::vector<std::unique_ptr<ImageComponent>> imageComponents;
|
||||
std::vector<std::unique_ptr<VideoFFmpegComponent>> videoComponents;
|
||||
std::vector<std::unique_ptr<LottieComponent>> lottieAnimComponents;
|
||||
|
|
|
@ -188,6 +188,7 @@ std::map<std::string, std::map<std::string, ThemeData::ElementPropertyType>>
|
|||
{"rotation", FLOAT},
|
||||
{"rotationOrigin", NORMALIZED_PAIR},
|
||||
{"metadata", STRING},
|
||||
{"gameselector", STRING},
|
||||
{"fontPath", PATH},
|
||||
{"fontSize", FLOAT},
|
||||
{"horizontalAlignment", STRING},
|
||||
|
|
Loading…
Reference in a new issue