Add support for hours display to timeToString (#3270)
* Add hours support to timeToString * Update timeToString declaration
This commit is contained in:
parent
670a40cb05
commit
c4768b72ae
@ -504,7 +504,7 @@ namespace StringUtils
|
||||
* \param time Time in seconds.
|
||||
* \param precision The number of seconds decimals - 3 to display ms, default 2
|
||||
*/
|
||||
std::string timeToString(float time, unsigned int precision, bool display_minutes_if_zero)
|
||||
std::string timeToString(float time, unsigned int precision, bool display_minutes_if_zero, bool display_hours)
|
||||
{
|
||||
//Time more detailed than ms are mostly meaningless
|
||||
if (precision > 3)
|
||||
@ -546,12 +546,15 @@ namespace StringUtils
|
||||
else
|
||||
final_append = "";
|
||||
// concatenate the strings with +
|
||||
if (display_minutes_if_zero)
|
||||
if (display_hours)
|
||||
return (std::string("00:00:00") + final_append);
|
||||
else if (display_minutes_if_zero)
|
||||
return (std::string("00:00") + final_append);
|
||||
else
|
||||
return (std::string("00") + final_append);
|
||||
}
|
||||
else if(int_time >= 100*60*precision_power) // up to 99:59.999
|
||||
else if((int_time >= 60*60*precision_power && !display_hours) ||
|
||||
int_time >= 100*60*60*precision_power)
|
||||
{
|
||||
std::string final_append;
|
||||
if (precision == 3)
|
||||
@ -563,7 +566,10 @@ namespace StringUtils
|
||||
else
|
||||
final_append = "";
|
||||
// concatenate the strings with +
|
||||
return (std::string("99:59") + final_append);
|
||||
if (display_hours)
|
||||
return (std::string("99:59:59") + final_append);
|
||||
else
|
||||
return (std::string("59:59") + final_append);
|
||||
}
|
||||
|
||||
// Principle of the computation in pseudo-code
|
||||
@ -575,11 +581,15 @@ namespace StringUtils
|
||||
int_time = int_time/precision_power;
|
||||
int sec = int_time % 60;
|
||||
int_time = int_time/60;
|
||||
if (int_time >= 100) int_time = 99;
|
||||
int min = int_time;
|
||||
int min = int_time % 60;
|
||||
int_time = int_time/60;
|
||||
int hours = int_time;
|
||||
|
||||
// Convert the times to string and add the missing zeroes if any
|
||||
|
||||
std::string s_hours = toString(hours);
|
||||
if (hours < 10)
|
||||
s_hours = std::string("0") + s_hours;
|
||||
std::string s_min = toString(min);
|
||||
if (min < 10)
|
||||
s_min = std::string("0") + s_min;
|
||||
@ -602,14 +612,15 @@ namespace StringUtils
|
||||
if(negative_time)
|
||||
s_neg = "-";
|
||||
|
||||
std::string s_min_and_sec = s_sec;
|
||||
if (display_minutes_if_zero || min > 0)
|
||||
s_min_and_sec = s_min + std::string(":") + s_sec;
|
||||
|
||||
std::string s_hours_min_and_sec = s_sec;
|
||||
if (display_minutes_if_zero || min > 0 || display_hours)
|
||||
s_hours_min_and_sec = s_min + std::string(":") + s_sec;
|
||||
if (display_hours)
|
||||
s_hours_min_and_sec = s_hours + std::string(":") + s_hours_min_and_sec;
|
||||
if (precision == 0)
|
||||
return (s_neg + s_min_and_sec);
|
||||
return (s_neg + s_hours_min_and_sec);
|
||||
else
|
||||
return (s_neg + s_min_and_sec + std::string(".") + s_subsec);
|
||||
return (s_neg + s_hours_min_and_sec + std::string(".") + s_subsec);
|
||||
} // timeToString
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
@ -46,7 +46,8 @@ namespace StringUtils
|
||||
|
||||
bool notEmpty(const irr::core::stringw& input);
|
||||
std::string ticksTimeToString(int time);
|
||||
std::string timeToString(float time, unsigned int precision=2, bool display_minutes_if_zero = true);
|
||||
std::string timeToString(float time, unsigned int precision=2,
|
||||
bool display_minutes_if_zero = true, bool display_hours = false);
|
||||
irr::core::stringw loadingDots(float interval = 0.5f, int max_dots = 3);
|
||||
irr::core::stringw loadingDots(const wchar_t *s);
|
||||
std::string toUpperCase(const std::string&);
|
||||
|
Loading…
Reference in New Issue
Block a user