Removed some obsolete code from DateTimeEditComponent

This commit is contained in:
Leon Styhre 2024-07-17 16:49:51 +02:00
parent ad2dd1832f
commit 13fadd1658
2 changed files with 23 additions and 109 deletions

View file

@ -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.
}

View file

@ -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;