// SPDX-License-Identifier: MIT // // ES-DE Frontend // DateTimeComponent.h // // Provides the date and time, in absolute (actual date) or relative // (delta from current date and time) form. // Used by the gamelist views. // #ifndef ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H #define ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H #include "TextComponent.h" #include "utils/TimeUtil.h" class ThemeData; // Used to display date and time. class DateTimeComponent : public TextComponent { public: DateTimeComponent(); DateTimeComponent(const std::string& text, const std::shared_ptr& font, unsigned int color = 0x000000FF, Alignment horizontalAlignment = ALIGN_LEFT, glm::vec3 pos = {0.0f, 0.0f, 0.0f}, glm::vec2 size = {0.0f, 0.0f}, unsigned int bgcolor = 0x00000000); void render(const glm::mat4& parentTrans) override; void setValue(const std::string& val) override; std::string getValue() const override; void setFormat(const std::string& format); void setDisplayRelative(bool displayRelative); void applyTheme(const std::shared_ptr& theme, const std::string& view, const std::string& element, unsigned int properties) override; protected: void onTextChanged() override; private: std::string getDisplayString() const; Renderer* mRenderer; std::string mDefaultValue; Utils::Time::DateTime mTime; std::string mFormat; bool mDisplayRelative; }; #endif // ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H