aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Atack <jon@atack.com>2022-02-13 19:44:05 +0100
committerrandymcmillan <randy.lee.mcmillan@gmail.com>2022-03-16 04:54:52 -0400
commit127de22c5fb396e1670d2a911faf7a9adc9241e2 (patch)
treefd85c94e87d4dc72b6a9d71b1fdc4e82aed5258d
parent310ba924949b0052105a7937ac69d65a3864692b (diff)
downloadbitcoin-127de22c5fb396e1670d2a911faf7a9adc9241e2.tar.xz
gui: add FormatPeerAge() utility helper
Co-authored-by: randymcmillan <randy.lee.mcmillan@gmail.com>
-rw-r--r--src/qt/guiutil.cpp12
-rw-r--r--src/qt/guiutil.h3
2 files changed, 15 insertions, 0 deletions
diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp
index 3108c93d7c..130f424e43 100644
--- a/src/qt/guiutil.cpp
+++ b/src/qt/guiutil.cpp
@@ -79,6 +79,8 @@
void ForceActivation();
#endif
+using namespace std::chrono_literals;
+
namespace GUIUtil {
QString dateTimeStr(const QDateTime &date)
@@ -727,6 +729,16 @@ QString formatDurationStr(std::chrono::seconds dur)
return str_list.join(" ");
}
+QString FormatPeerAge(std::chrono::seconds time_connected)
+{
+ const auto time_now{GetTime<std::chrono::seconds>()};
+ const auto age{time_now - time_connected};
+ if (age >= 24h) return QObject::tr("%1 d").arg(age / 24h);
+ if (age >= 1h) return QObject::tr("%1 h").arg(age / 1h);
+ if (age >= 1min) return QObject::tr("%1 m").arg(age / 1min);
+ return QObject::tr("%1 s").arg(age / 1s);
+}
+
QString formatServicesStr(quint64 mask)
{
QStringList strList;
diff --git a/src/qt/guiutil.h b/src/qt/guiutil.h
index 0224b18b4e..76e5207d81 100644
--- a/src/qt/guiutil.h
+++ b/src/qt/guiutil.h
@@ -223,6 +223,9 @@ namespace GUIUtil
/** Convert seconds into a QString with days, hours, mins, secs */
QString formatDurationStr(std::chrono::seconds dur);
+ /** Convert peer connection time to a QString denominated in the most relevant unit. */
+ QString FormatPeerAge(std::chrono::seconds time_connected);
+
/** Format CNodeStats.nServices bitmask into a user-readable string */
QString formatServicesStr(quint64 mask);