diff options
-rw-r--r-- | src/actions/actions.cpp | 54 | ||||
-rw-r--r-- | src/utils/stringutils.cpp | 62 | ||||
-rw-r--r-- | src/utils/stringutils.h | 2 |
3 files changed, 66 insertions, 52 deletions
diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index ee5a2481e..329202612 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -1162,59 +1162,9 @@ impHandler0(uptime) } else { - std::string str; - int timeDiff = cur_time - start_time; - - const int weeks = timeDiff / 60 / 60 / 24 / 7; - if (weeks > 0) - { - // TRANSLATORS: uptime command - str = strprintf(ngettext(N_("%d week"), N_("%d weeks"), - weeks), weeks); - timeDiff -= weeks * 60 * 60 * 24 * 7; - } - - const int days = timeDiff / 60 / 60 / 24; - if (days > 0) - { - if (!str.empty()) - str.append(", "); - // TRANSLATORS: uptime command - str.append(strprintf(ngettext(N_("%d day"), N_("%d days"), - days), days)); - timeDiff -= days * 60 * 60 * 24; - } - const int hours = timeDiff / 60 / 60; - if (hours > 0) - { - if (!str.empty()) - str.append(", "); - // TRANSLATORS: uptime command - str.append(strprintf(ngettext(N_("%d hour"), N_("%d hours"), - hours), hours)); - timeDiff -= hours * 60 * 60; - } - const int min = timeDiff / 60; - if (min > 0) - { - if (!str.empty()) - str.append(", "); - // TRANSLATORS: uptime command - str.append(strprintf(ngettext(N_("%d minute"), N_("%d minutes"), - min), min)); - timeDiff -= min * 60; - } - - if (timeDiff > 0) - { - if (!str.empty()) - str.append(", "); - // TRANSLATORS: uptime command - str.append(strprintf(ngettext(N_("%d second"), N_("%d seconds"), - timeDiff), timeDiff)); - } // TRANSLATORS: uptime command - debugChatTab->chatLog(strprintf(_("Client uptime: %s"), str.c_str()), + debugChatTab->chatLog(strprintf(_("Client uptime: %s"), + timeDiffToString(cur_time - start_time).c_str()), ChatMsgType::BY_SERVER); } return true; diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 3e067fe5c..864f509fc 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -29,6 +29,8 @@ #include <sys/time.h> #endif +#include "utils/gettext.h" + #include "debug.h" static size_t UTF8_MAX_SIZE = 10; @@ -877,3 +879,63 @@ std::string timeToStr(const int time) else return "unknown"; } + +std::string timeDiffToString(int timeDiff) +{ + std::string str; + + const int weeks = timeDiff / 60 / 60 / 24 / 7; + if (weeks > 0) + { + // TRANSLATORS: uptime command + str = strprintf(ngettext(N_("%d week"), N_("%d weeks"), + weeks), weeks); + timeDiff -= weeks * 60 * 60 * 24 * 7; + } + + const int days = timeDiff / 60 / 60 / 24; + if (days > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d day"), N_("%d days"), + days), days)); + timeDiff -= days * 60 * 60 * 24; + } + const int hours = timeDiff / 60 / 60; + if (hours > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d hour"), N_("%d hours"), + hours), hours)); + timeDiff -= hours * 60 * 60; + } + const int min = timeDiff / 60; + if (min > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d minute"), N_("%d minutes"), + min), min)); + timeDiff -= min * 60; + } + + if (timeDiff > 0) + { + if (!str.empty()) + str.append(", "); + // TRANSLATORS: uptime command + str.append(strprintf(ngettext(N_("%d second"), N_("%d seconds"), + timeDiff), timeDiff)); + } + if (str.empty()) + { + str.append(strprintf(ngettext(N_("%d second"), N_("%d seconds"), + 0), 0)); + } + return str; +} diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 67144ea65..73e4b7697 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -252,4 +252,6 @@ std::string removeToken(std::string &str, const std::string &token); std::string timeToStr(const int time); +std::string timeDiffToString(int timeDiff); + #endif // UTILS_STRINGUTILS_H |