ES-DE/es-core/src/components/DateTimeComponent.h

58 lines
1.7 KiB
C++

// SPDX-License-Identifier: MIT
//
// EmulationStation Desktop Edition
// 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(Window* window);
DateTimeComponent(Window* window,
const std::string& text,
const std::shared_ptr<Font>& font,
unsigned int color = 0x000000FF,
Alignment align = ALIGN_LEFT,
Vector3f pos = Vector3f::Zero(),
Vector2f size = Vector2f::Zero(),
unsigned int bgcolor = 0x00000000);
void render(const Transform4x4f& parentTrans) override;
void setValue(const std::string& val) override;
std::string getValue() const override;
void setFormat(const std::string& format);
void setDisplayRelative(bool displayRelative);
virtual void applyTheme(const std::shared_ptr<ThemeData>& theme,
const std::string& view,
const std::string& element,
unsigned int properties) override;
protected:
void onTextChanged() override;
private:
std::string getDisplayString() const;
Utils::Time::DateTime mTime;
std::string mFormat;
bool mDisplayRelative;
};
#endif // ES_CORE_COMPONENTS_DATE_TIME_COMPONENT_H