#include "stringer.h" #include "config.h" namespace { QString heavySpan("%1"); QString lightSpan("%1"); QString lightestSpan("%1"); enum RemainingTimeFormat { RemainingTime, FinishTime }; RemainingTimeFormat remainingTime() { Define::config_item item = Config::getInstance()->getConfigValue(Define::config_resttime_format); switch (item.d32) { case Define::rest_time_target: return FinishTime; case Define::rest_time_rest: default: return RemainingTime; } } enum TemperatureFormat { Celsius, Fahrenheit }; TemperatureFormat temperatureFormat() { Define::config_item item = Config::getInstance()->getConfigValue(Define::config_temptype); switch (item.d32) { case Define::temp_type_f: return Fahrenheit; case Define::temp_type_c: default: return Celsius; } } int toFahrenheit(int celsius) { return celsius * 1.8 + 32; } enum RealTimeFormat { Hour12, Hour24 }; RealTimeFormat realTimeFormat() { Define::config_item item = Config::getInstance()->getConfigValue(Define::config_time_type); switch (item.d32) { case Define::time_type_12h: return Hour12; case Define::time_type_24h: default: return Hour24; } } } QString Stringer::remainingTime(int msecs) { switch (::remainingTime()) { case RemainingTime: msecs /= 1000; if (msecs >= 3600) return QCoreApplication::tr("%1시간 %2분").arg(msecs / 3600).arg((msecs % 3600) / 60, 2, 10, QLatin1Char('0')); if (msecs >= 60) return QCoreApplication::tr("%1분 %2초").arg(msecs / 60).arg(msecs % 60, 2, 10, QLatin1Char('0')); return QCoreApplication::tr("%1초").arg(msecs); case FinishTime: QDateTime dateTime = QDateTime::currentDateTime().addMSecs(msecs); switch (realTimeFormat()) { case Hour12: return dateTime.toString("A hh:mm:ss"); case Hour24: return dateTime.toString("HH:mm:ss"); } } return QString(); } QString Stringer::remainingTime(int msecs, QString style) { switch (::remainingTime()) { case RemainingTime: msecs /= 1000; if (msecs >= 3600) { QString hour = heavySpan.arg(msecs / 3600) + lightSpan.arg(QCoreApplication::tr("시간")); QString min = heavySpan.arg((msecs % 3600) / 60, 2, 10, QLatin1Char('0')) + lightSpan.arg(QCoreApplication::tr("분")); return style + QString("%1 %2").arg(hour).arg(min); } if (msecs >= 60) { QString min = heavySpan.arg(msecs / 60) + lightSpan.arg(QCoreApplication::tr("분")); QString sec = heavySpan.arg(msecs % 60, 2, 10, QLatin1Char('0')) + lightSpan.arg(QCoreApplication::tr("초")); return style + QString("%1 %2").arg(min).arg(sec); } return style + heavySpan.arg(msecs) + lightSpan.arg(QCoreApplication::tr("초")); case FinishTime: QDateTime dateTime = QDateTime::currentDateTime().addMSecs(msecs); switch (realTimeFormat()) { case Hour12: return heavySpan.arg(dateTime.toString("A hh:mm:ss")); case Hour24: return heavySpan.arg(dateTime.toString("HH:mm:ss")); } } return QString(); } QString Stringer::remainingTime(qint64 msecs) { switch (::remainingTime()) { case RemainingTime: msecs /= 1000; if (msecs >= 3600) return QCoreApplication::tr("%1시간 %2분").arg(msecs / 3600).arg((msecs % 3600) / 60, 2, 10, QLatin1Char('0')); if (msecs >= 60) return QCoreApplication::tr("%1분 %2초").arg(msecs / 60).arg(msecs % 60, 2, 10, QLatin1Char('0')); return QCoreApplication::tr("%1초").arg(msecs); case FinishTime: QDateTime dateTime = QDateTime::currentDateTime().addMSecs(msecs); switch (realTimeFormat()) { case Hour12: return dateTime.toString("A hh:mm:ss"); case Hour24: return dateTime.toString("HH:mm:ss"); } } return QString(); } QString Stringer::temperature(int celsius) { switch (temperatureFormat()) { case Fahrenheit: return QString("%1℉").arg(toFahrenheit(celsius)); case Celsius: default: return QString("%1℃").arg(celsius); } } QString Stringer::temperature(int celsius, QString style) { switch (temperatureFormat()) { case Fahrenheit: return style + heavySpan.arg(toFahrenheit(celsius)) + lightSpan.arg("℉"); case Celsius: default: return style + heavySpan.arg(celsius) + lightSpan.arg("℃"); } } QString Stringer::temperature(int current, int target) { switch (temperatureFormat()) { case Fahrenheit: return QString("%1℉ / %2℉").arg(toFahrenheit(current)).arg(toFahrenheit(target)); case Celsius: default: return QString("%1℃ / %2℃").arg(current).arg(target); } } QString Stringer::temperature(int current, int target, QString style) { switch (temperatureFormat()) { case Fahrenheit: return style + heavySpan.arg(toFahrenheit(current)) + lightSpan.arg(QString("℉ / %1").arg(toFahrenheit(target))) + lightestSpan.arg("℉"); case Celsius: default: return style + heavySpan.arg(current) + lightSpan.arg(QString("℃ / %1").arg(target)) + lightestSpan.arg("℃"); } } QString Stringer::unusedTemperature() { switch (temperatureFormat()) { case Fahrenheit: return QString("℉"); case Celsius: default: return QString("℃"); } } QString Stringer::unusedTemperature(QString style) { switch (temperatureFormat()) { case Fahrenheit: return style + lightSpan.arg("℉"); case Celsius: default: return style + lightSpan.arg("℃"); } } QString Stringer::dateTime(const QDateTime &dateTime, DateTimeType type) { Define::config_item item = Config::getInstance()->getConfigValue(Define::config_time_type); switch(item.d32) { case Define::time_type_12h: if (type == OneLine) return dateTime.toString("yy-MM-dd a hh:mm"); else return dateTime.toString("yy-MM-dd\na hh:mm"); case Define::time_type_24h: default: if (type == OneLine) return dateTime.toString("yy-MM-dd HH:mm"); else return dateTime.toString("yy-MM-dd\nHH:mm"); } } QString Stringer::time(int msecs) { return timeSecs(qCeil(msecs / 1000.0)); } QString Stringer::timeSecs(int secs) { int h = secs / (60*60); int m = (secs/60) % 60; int s = secs % 60; return QString("%1:%2:%3") .arg(h, 2, 10, QLatin1Char('0')) .arg(m, 2, 10, QLatin1Char('0')) .arg(s, 2, 10, QLatin1Char('0')); }