Improve Time Played formatting (#7971)

esm4-texture
Alexei Kotov 8 months ago
parent 4a3dbb5a80
commit 6bf0d17aa2

@ -234,6 +234,7 @@
Feature #7936: Scalable icons in Qt applications Feature #7936: Scalable icons in Qt applications
Feature #7953: Allow to change SVG icons colors depending on color scheme Feature #7953: Allow to change SVG icons colors depending on color scheme
Feature #7964: Add Lua read access to MW Dialogue records Feature #7964: Add Lua read access to MW Dialogue records
Feature #7971: Make save's Time Played value display hours instead of days
Task #5896: Do not use deprecated MyGUI properties Task #5896: Do not use deprecated MyGUI properties
Task #6085: Replace boost::filesystem with std::filesystem Task #6085: Replace boost::filesystem with std::filesystem
Task #6149: Dehardcode Lua API_REVISION Task #6149: Dehardcode Lua API_REVISION

@ -13,18 +13,14 @@
#include <osgDB/ReadFile> #include <osgDB/ReadFile>
#include <components/debug/debuglog.hpp> #include <components/debug/debuglog.hpp>
#include <components/esm3/loadclas.hpp>
#include <components/myguiplatform/myguitexture.hpp>
#include <components/misc/strings/lower.hpp>
#include <components/settings/values.hpp>
#include <components/files/conversion.hpp> #include <components/files/conversion.hpp>
#include <components/files/memorystream.hpp> #include <components/files/memorystream.hpp>
#include <components/l10n/manager.hpp>
#include <components/misc/strings/lower.hpp>
#include <components/misc/timeconvert.hpp> #include <components/misc/timeconvert.hpp>
#include <components/myguiplatform/myguitexture.hpp>
#include <components/esm3/loadclas.hpp> #include <components/settings/values.hpp>
#include "../mwbase/environment.hpp" #include "../mwbase/environment.hpp"
#include "../mwbase/statemanager.hpp" #include "../mwbase/statemanager.hpp"
@ -367,18 +363,23 @@ namespace MWGui
std::string formatTimeplayed(const double timeInSeconds) std::string formatTimeplayed(const double timeInSeconds)
{ {
int timePlayed = (int)floor(timeInSeconds); auto l10n = MWBase::Environment::get().getL10nManager()->getContext("Interface");
int days = timePlayed / 60 / 60 / 24; int duration = static_cast<int>(timeInSeconds);
int hours = (timePlayed / 60 / 60) % 24; if (duration <= 0)
int minutes = (timePlayed / 60) % 60; return l10n->formatMessage("DurationSecond", { "seconds" }, { 0 });
int seconds = timePlayed % 60;
std::string result;
std::stringstream stream; int hours = duration / 3600;
stream << std::setfill('0') << std::setw(2) << days << ":"; int minutes = (duration / 60) % 60;
stream << std::setfill('0') << std::setw(2) << hours << ":"; int seconds = duration % 60;
stream << std::setfill('0') << std::setw(2) << minutes << ":"; if (hours)
stream << std::setfill('0') << std::setw(2) << seconds; result += l10n->formatMessage("DurationHour", { "hours" }, { hours });
return stream.str(); if (minutes)
result += l10n->formatMessage("DurationMinute", { "minutes" }, { minutes });
if (seconds)
result += l10n->formatMessage("DurationSecond", { "seconds" }, { seconds });
return result;
} }
void SaveGameDialog::onSlotSelected(MyGUI::ListBox* sender, size_t pos) void SaveGameDialog::onSlotSelected(MyGUI::ListBox* sender, size_t pos)

Loading…
Cancel
Save