diff options
author | Andrei Karas <akaras@inbox.ru> | 2014-08-26 21:29:18 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2014-08-26 21:29:18 +0300 |
commit | 17a96c972cd483fa556a79c4cd60e5d7490177a4 (patch) | |
tree | fc745dec71523b49428838582a5aa40712538140 /src/actions | |
parent | c06c787acceec22845f023b2f849858d36af6585 (diff) | |
download | manaplus-17a96c972cd483fa556a79c4cd60e5d7490177a4.tar.gz manaplus-17a96c972cd483fa556a79c4cd60e5d7490177a4.tar.bz2 manaplus-17a96c972cd483fa556a79c4cd60e5d7490177a4.tar.xz manaplus-17a96c972cd483fa556a79c4cd60e5d7490177a4.zip |
Move chat command /uptime into actions.
Diffstat (limited to 'src/actions')
-rw-r--r-- | src/actions/actions.cpp | 71 | ||||
-rw-r--r-- | src/actions/actions.h | 1 |
2 files changed, 72 insertions, 0 deletions
diff --git a/src/actions/actions.cpp b/src/actions/actions.cpp index 65f6e366c..fd71b5bf5 100644 --- a/src/actions/actions.cpp +++ b/src/actions/actions.cpp @@ -85,6 +85,7 @@ #include "resources/map/map.h" #include "utils/gettext.h" +#include "utils/timer.h" #ifdef ANDROID #ifndef USE_SDL2 @@ -97,6 +98,7 @@ extern ShortcutWindow *spellShortcutWindow; extern std::string tradePartnerName; extern QuitDialog *quitDialog; +extern int start_time; namespace Actions { @@ -718,4 +720,73 @@ impHandler0(dirs) return true; } +impHandler0(uptime) +{ + if (!debugChatTab) + return false; + + if (cur_time < start_time) + { + // TRANSLATORS: uptime command + debugChatTab->chatLog(strprintf(_("Client uptime: %s"), "unknown")); + } + 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())); + } + return true; +} + } // namespace Actions diff --git a/src/actions/actions.h b/src/actions/actions.h index f80c4f8e6..9258a289b 100644 --- a/src/actions/actions.h +++ b/src/actions/actions.h @@ -67,6 +67,7 @@ namespace Actions decHandler(disconnect); decHandler(undress); decHandler(dirs); + decHandler(uptime); } // namespace Actions #undef decHandler |