From 35628cc5d836ca9529c81c26a43527318c1d1faa Mon Sep 17 00:00:00 2001 From: jwinterm Date: Fri, 19 Jun 2026 08:30:28 -0400 Subject: [PATCH] =?UTF-8?q?wowlet:=20mining=20tab=20uptime=20=E2=80=94=20a?= =?UTF-8?q?nchor=20start-time=20on=20mining=20transition,=20emit=20HH:MM:S?= =?UTF-8?q?S=20via=20uptimeChanged=20(was=20never=20emitted=20=E2=86=92=20?= =?UTF-8?q?stuck=20at=20'-')?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/widgets/MiningWidget.cpp | 15 +++++++++++++++ src/widgets/MiningWidget.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/src/widgets/MiningWidget.cpp b/src/widgets/MiningWidget.cpp index 08af0816..17f6af18 100644 --- a/src/widgets/MiningWidget.cpp +++ b/src/widgets/MiningWidget.cpp @@ -9,6 +9,14 @@ #include #include #include +#include + +static QString formatUptime(qint64 secs) { + return QString("%1:%2:%3") + .arg(secs / 3600, 2, 10, QChar('0')) + .arg((secs % 3600) / 60, 2, 10, QChar('0')) + .arg(secs % 60, 2, 10, QChar('0')); +} MiningWidget::MiningWidget(Wallet *wallet, QWidget *parent) : QWidget(parent) @@ -49,11 +57,18 @@ void MiningWidget::poll() { bool mining = m_wallet->isMining(); m_backend->setState(mining ? 3 : 0); + if (mining && !m_mining) + m_miningStartSecs = QDateTime::currentSecsSinceEpoch(); // mining just started — anchor uptime + m_mining = mining; + if (mining) { double hr = m_wallet->miningHashRate(); QString hrStr = hr >= 1000 ? QString("%1 kH/s").arg(hr / 1000.0, 0, 'f', 2) : QString("%1 H/s").arg(hr, 0, 'f', 0); emit m_backend->hashrate(hrStr); + emit m_backend->uptimeChanged(formatUptime(QDateTime::currentSecsSinceEpoch() - m_miningStartSecs)); + } else { + emit m_backend->uptimeChanged("-"); } quint64 from = m_wallet->blockChainHeight(); diff --git a/src/widgets/MiningWidget.h b/src/widgets/MiningWidget.h index f08de31d..6c90141b 100644 --- a/src/widgets/MiningWidget.h +++ b/src/widgets/MiningWidget.h @@ -48,6 +48,8 @@ private: QQuickWidget *m_quickWidget; MiningBackend *m_backend; QTimer *m_timer; + bool m_mining = false; // last-seen mining state, to detect start transitions + qint64 m_miningStartSecs = 0; // when the current mining run started (for uptime) }; #endif //WOWLET_MININGWIDGET_H