mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2025-01-31 04:25:40 +00:00
Removed some obsolete code from DateTimeEditComponent
This commit is contained in:
parent
ad2dd1832f
commit
13fadd1658
|
@ -16,14 +16,12 @@
|
|||
#include "utils/LocalizationUtil.h"
|
||||
#include "utils/StringUtil.h"
|
||||
|
||||
DateTimeEditComponent::DateTimeEditComponent(bool alignRight, DisplayMode dispMode)
|
||||
DateTimeEditComponent::DateTimeEditComponent(bool alignRight)
|
||||
: mRenderer {Renderer::getInstance()}
|
||||
, mEditing {false}
|
||||
, mEditIndex {0}
|
||||
, mDisplayMode {dispMode}
|
||||
, mKeyRepeatDir {0}
|
||||
, mKeyRepeatTimer {0}
|
||||
, mRelativeUpdateAccumulator {0}
|
||||
, mColor {mMenuColorPrimary}
|
||||
, mFont {Font::get(FONT_SIZE_SMALL, FONT_PATH_LIGHT)}
|
||||
, mAlignRight {alignRight}
|
||||
|
@ -43,15 +41,15 @@ void DateTimeEditComponent::setValue(const std::string& val)
|
|||
{
|
||||
mTime = val;
|
||||
mOriginalValue = val;
|
||||
if (mAlignRight)
|
||||
mAutoSize = true;
|
||||
updateTextCache();
|
||||
}
|
||||
|
||||
bool DateTimeEditComponent::input(InputConfig* config, Input input)
|
||||
{
|
||||
if (config->isMappedTo("a", input) && input.value) {
|
||||
if (mDisplayMode != DISP_RELATIVE_TO_NOW) // Don't allow editing for relative times.
|
||||
mEditing = !mEditing;
|
||||
|
||||
mEditing = !mEditing;
|
||||
mKeyRepeatDir = 0;
|
||||
|
||||
// Change the color of the text to reflect the changes.
|
||||
|
@ -67,6 +65,7 @@ bool DateTimeEditComponent::input(InputConfig* config, Input input)
|
|||
// Initialize to the arbitrary value 1999-01-01 if unset.
|
||||
if (mTime == 0) {
|
||||
mTime = Utils::Time::stringToTime("19990101T000000");
|
||||
mAutoSize = true;
|
||||
updateTextCache();
|
||||
}
|
||||
}
|
||||
|
@ -76,7 +75,6 @@ bool DateTimeEditComponent::input(InputConfig* config, Input input)
|
|||
}
|
||||
|
||||
if (mEditing) {
|
||||
|
||||
if ((config->isMappedLike("lefttrigger", input) ||
|
||||
config->isMappedLike("righttrigger", input))) {
|
||||
mKeyRepeatDir = 0;
|
||||
|
@ -95,6 +93,7 @@ bool DateTimeEditComponent::input(InputConfig* config, Input input)
|
|||
mEditing = false;
|
||||
mTime = mTimeBeforeEdit;
|
||||
mKeyRepeatDir = 0;
|
||||
mAutoSize = true;
|
||||
updateTextCache();
|
||||
updateHelpPrompts();
|
||||
return true;
|
||||
|
@ -154,14 +153,6 @@ void DateTimeEditComponent::update(int deltaTime)
|
|||
}
|
||||
}
|
||||
|
||||
if (mDisplayMode == DISP_RELATIVE_TO_NOW) {
|
||||
mRelativeUpdateAccumulator += deltaTime;
|
||||
if (mRelativeUpdateAccumulator > 1000) {
|
||||
mRelativeUpdateAccumulator = 0;
|
||||
updateTextCache();
|
||||
}
|
||||
}
|
||||
|
||||
GuiComponent::update(deltaTime);
|
||||
}
|
||||
|
||||
|
@ -171,18 +162,11 @@ void DateTimeEditComponent::render(const glm::mat4& parentTrans)
|
|||
|
||||
if (mTextCache) {
|
||||
std::shared_ptr<Font> font {getFont()};
|
||||
float referenceSize {0.0f};
|
||||
|
||||
if (mAlignRight)
|
||||
referenceSize = std::round(mParent->getSize().x * 0.1045f);
|
||||
|
||||
// Vertically center.
|
||||
// Center vertically.
|
||||
glm::vec3 off {0.0f, (mSize.y - mTextCache->metrics.size.y) / 2.0f, 0.0f};
|
||||
|
||||
if (mAlignRight)
|
||||
off.x += referenceSize - mTextCache->metrics.size.x;
|
||||
trans = glm::translate(trans, glm::round(off));
|
||||
|
||||
mRenderer->setMatrix(trans);
|
||||
|
||||
if (Settings::getInstance()->getBool("DebugText")) {
|
||||
|
@ -207,12 +191,6 @@ void DateTimeEditComponent::render(const glm::mat4& parentTrans)
|
|||
}
|
||||
}
|
||||
|
||||
void DateTimeEditComponent::setDisplayMode(DisplayMode mode)
|
||||
{
|
||||
mDisplayMode = mode;
|
||||
updateTextCache();
|
||||
}
|
||||
|
||||
void DateTimeEditComponent::setColor(unsigned int color)
|
||||
{
|
||||
mColor = color;
|
||||
|
@ -255,51 +233,13 @@ std::shared_ptr<Font> DateTimeEditComponent::getFont() const
|
|||
return Font::get(FONT_SIZE_MEDIUM);
|
||||
}
|
||||
|
||||
std::string DateTimeEditComponent::getDisplayString(DisplayMode mode) const
|
||||
std::string DateTimeEditComponent::getDisplayString() const
|
||||
{
|
||||
// ISO 8601 date format.
|
||||
std::string fmt;
|
||||
switch (mode) {
|
||||
case DISP_DATE: {
|
||||
if (mTime.getTime() == 0)
|
||||
return "unknown";
|
||||
fmt = "%Y-%m-%d";
|
||||
break;
|
||||
}
|
||||
case DISP_DATE_TIME: {
|
||||
if (mTime.getTime() == 0)
|
||||
return "unknown";
|
||||
fmt = "%Y-%m-%d %H:%M:%S";
|
||||
break;
|
||||
}
|
||||
case DISP_RELATIVE_TO_NOW: {
|
||||
// Relative time.
|
||||
if (mTime.getTime() == 0)
|
||||
return "never";
|
||||
|
||||
Utils::Time::DateTime now {Utils::Time::now()};
|
||||
Utils::Time::Duration dur {now.getTime() - mTime.getTime()};
|
||||
|
||||
std::string buf;
|
||||
|
||||
if (dur.getDays() > 0)
|
||||
buf = std::to_string(dur.getDays()) + // Line break.
|
||||
" day" + (dur.getDays() > 1 ? "s" : "") + " ago";
|
||||
else if (dur.getHours() > 0)
|
||||
buf = std::to_string(dur.getHours()) + // Line break.
|
||||
" hour" + (dur.getHours() > 1 ? "s" : "") + " ago";
|
||||
else if (dur.getMinutes() > 0)
|
||||
buf = std::to_string(dur.getMinutes()) + // Line break.
|
||||
" minute" + (dur.getMinutes() > 1 ? "s" : "") + " ago";
|
||||
else
|
||||
buf = std::to_string(dur.getSeconds()) + // Line break.
|
||||
" second" + (dur.getSeconds() > 1 || dur.getSeconds() == 0 ? "s" : "") +
|
||||
" ago";
|
||||
|
||||
return buf;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (mTime.getTime() == 0)
|
||||
return _("unknown");
|
||||
fmt = "%Y-%m-%d";
|
||||
|
||||
return Utils::Time::timeToString(mTime, fmt);
|
||||
}
|
||||
|
@ -351,13 +291,12 @@ void DateTimeEditComponent::changeDate()
|
|||
else
|
||||
mTime = new_tm;
|
||||
|
||||
mAutoSize = true;
|
||||
updateTextCache();
|
||||
}
|
||||
|
||||
void DateTimeEditComponent::updateTextCache()
|
||||
{
|
||||
DisplayMode mode {getCurrentDisplayMode()};
|
||||
|
||||
std::string dispString;
|
||||
|
||||
// Hack to set date string to blank instead of 'unknown'.
|
||||
|
@ -366,14 +305,16 @@ void DateTimeEditComponent::updateTextCache()
|
|||
dispString = "";
|
||||
}
|
||||
else {
|
||||
dispString =
|
||||
mUppercase ? Utils::String::toUpper(getDisplayString(mode)) : getDisplayString(mode);
|
||||
dispString = mUppercase ? Utils::String::toUpper(getDisplayString()) : getDisplayString();
|
||||
}
|
||||
std::shared_ptr<Font> font = getFont();
|
||||
std::shared_ptr<Font> font {getFont()};
|
||||
// Used to initialize all glyphs, which is needed to populate mMaxGlyphHeight.
|
||||
font->loadGlyphs(dispString + "\n");
|
||||
mTextCache = std::unique_ptr<TextCache>(font->buildTextCache(dispString, 0, 0, mColor));
|
||||
|
||||
if (mAlignRight)
|
||||
mSize = mTextCache->metrics.size;
|
||||
|
||||
if (mAutoSize) {
|
||||
mSize = mTextCache->metrics.size;
|
||||
mAutoSize = false;
|
||||
|
@ -382,14 +323,12 @@ void DateTimeEditComponent::updateTextCache()
|
|||
getParent()->onSizeChanged();
|
||||
}
|
||||
|
||||
if (dispString == "unknown " || dispString == "")
|
||||
mCursorBoxes.clear();
|
||||
|
||||
if (dispString.empty() || dispString == _("unknown"))
|
||||
return;
|
||||
|
||||
// Set up cursor positions.
|
||||
mCursorBoxes.clear();
|
||||
|
||||
if (dispString.empty() || mode == DISP_RELATIVE_TO_NOW)
|
||||
return;
|
||||
|
||||
// Year.
|
||||
glm::vec2 start {0.0f, 0.0f};
|
||||
|
@ -408,7 +347,4 @@ void DateTimeEditComponent::updateTextCache()
|
|||
end = font->sizeText(dispString.substr(0, 10));
|
||||
diff = end - start;
|
||||
mCursorBoxes.push_back(glm::vec4 {start[0], start[1], diff[0], diff[1]});
|
||||
|
||||
// The logic for handling time for 'mode = DISP_DATE_TIME' is missing, but
|
||||
// nobody will use it anyway so it's not worthwhile implementing.
|
||||
}
|
||||
|
|
|
@ -11,21 +11,13 @@
|
|||
|
||||
#include "GuiComponent.h"
|
||||
#include "renderers/Renderer.h"
|
||||
#include "resources/Font.h"
|
||||
#include "utils/TimeUtil.h"
|
||||
|
||||
class TextCache;
|
||||
|
||||
// Used to enter or display a specific point in time.
|
||||
class DateTimeEditComponent : public GuiComponent
|
||||
{
|
||||
public:
|
||||
enum DisplayMode {
|
||||
DISP_DATE,
|
||||
DISP_DATE_TIME,
|
||||
DISP_RELATIVE_TO_NOW
|
||||
};
|
||||
|
||||
DateTimeEditComponent(bool alignRight = false, DisplayMode dispMode = DISP_DATE);
|
||||
DateTimeEditComponent(bool alignRight = false);
|
||||
|
||||
void onSizeChanged() override;
|
||||
|
||||
|
@ -37,32 +29,20 @@ public:
|
|||
void update(int deltaTime) override;
|
||||
void render(const glm::mat4& parentTrans) override;
|
||||
|
||||
// Set how the point in time will be displayed:
|
||||
// * DISP_DATE - only display the date.
|
||||
// * DISP_DATE_TIME - display both the date and the time on that date.
|
||||
// * DISP_RELATIVE_TO_NOW - intelligently display the point in time relative to
|
||||
// right now (e.g. "5 secs ago", "3 minutes ago", "1 day ago".
|
||||
// Automatically updates as time marches on.
|
||||
// The initial value is DISP_DATE.
|
||||
void setDisplayMode(DisplayMode mode);
|
||||
|
||||
// Text color.
|
||||
void setColor(unsigned int color) override;
|
||||
// Font to use. Default is Font::get(FONT_SIZE_MEDIUM).
|
||||
|
||||
void setOriginalColor(unsigned int color) override { mColorOriginalValue = color; }
|
||||
void setChangedColor(unsigned int color) override { mColorChangedValue = color; }
|
||||
|
||||
void setFont(std::shared_ptr<Font> font);
|
||||
// Force text to be uppercase when in DISP_RELATIVE_TO_NOW mode.
|
||||
void setUppercase(bool uppercase);
|
||||
|
||||
std::vector<HelpPrompt> getHelpPrompts() override;
|
||||
|
||||
private:
|
||||
std::shared_ptr<Font> getFont() const override;
|
||||
std::string getDisplayString(DisplayMode mode) const;
|
||||
DisplayMode getCurrentDisplayMode() const { return mDisplayMode; }
|
||||
std::string getDisplayString() const;
|
||||
|
||||
void changeDate();
|
||||
void updateTextCache();
|
||||
|
@ -73,11 +53,9 @@ private:
|
|||
|
||||
bool mEditing;
|
||||
int mEditIndex;
|
||||
DisplayMode mDisplayMode;
|
||||
|
||||
int mKeyRepeatDir;
|
||||
int mKeyRepeatTimer;
|
||||
int mRelativeUpdateAccumulator;
|
||||
|
||||
std::unique_ptr<TextCache> mTextCache;
|
||||
std::vector<glm::vec4> mCursorBoxes;
|
||||
|
|
Loading…
Reference in a new issue