diff --git a/src/gui/statsdialog.cpp b/src/gui/statsdialog.cpp index 7a5dcb531..e54a1339f 100644 --- a/src/gui/statsdialog.cpp +++ b/src/gui/statsdialog.cpp @@ -1,6 +1,6 @@ /* - * Bittorrent Client using Qt4 and libtorrent. - * Copyright (C) 2013 Nick Tiskov + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2013 Nick Tiskov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,84 +24,86 @@ * modify file(s), you may extend this exception to your version of the file(s), * but you are not obligated to do so. If you do not wish to do so, delete this * exception statement from your version. - * - * Contact : daymansmail@gmail.com */ #include "statsdialog.h" -#include "ui_statsdialog.h" -#include "base/utils/misc.h" -#include "base/utils/string.h" +#include "base/bittorrent/cachestatus.h" #include "base/bittorrent/session.h" #include "base/bittorrent/sessionstatus.h" -#include "base/bittorrent/cachestatus.h" #include "base/bittorrent/torrenthandle.h" +#include "base/utils/misc.h" +#include "base/utils/string.h" +#include "ui_statsdialog.h" StatsDialog::StatsDialog(QWidget *parent) : QDialog(parent) - , ui(new Ui::StatsDialog) + , m_ui(new Ui::StatsDialog) { - ui->setupUi(this); - setAttribute(Qt::WA_DeleteOnClose); - connect(ui->buttonBox, SIGNAL(accepted()), SLOT(close())); - updateUI(); - t = new QTimer(this); - t->setInterval(1500); - connect(t, SIGNAL(timeout()), SLOT(updateUI())); - t->start(); + m_ui->setupUi(this); + setAttribute(Qt::WA_DeleteOnClose); + connect(m_ui->buttonBox, &QDialogButtonBox::accepted, this, &StatsDialog::close); - show(); + update(); + m_timer = new QTimer(this); + m_timer->setInterval(1500); + connect(m_timer, &QTimer::timeout, this, &StatsDialog::update); + m_timer->start(); + + show(); } -StatsDialog::~StatsDialog() { - t->stop(); - delete t; - delete ui; +StatsDialog::~StatsDialog() +{ + m_timer->stop(); + delete m_timer; + delete m_ui; } -void StatsDialog::updateUI() { - BitTorrent::SessionStatus ss = BitTorrent::Session::instance()->status(); - BitTorrent::CacheStatus cs = BitTorrent::Session::instance()->cacheStatus(); +void StatsDialog::update() +{ + BitTorrent::SessionStatus ss = BitTorrent::Session::instance()->status(); + BitTorrent::CacheStatus cs = BitTorrent::Session::instance()->cacheStatus(); - // Alltime DL/UL - quint64 atd = BitTorrent::Session::instance()->getAlltimeDL(); - quint64 atu = BitTorrent::Session::instance()->getAlltimeUL(); - ui->labelAlltimeDL->setText(Utils::Misc::friendlyUnit(atd)); - ui->labelAlltimeUL->setText(Utils::Misc::friendlyUnit(atu)); - // Total waste (this session) - ui->labelWaste->setText(Utils::Misc::friendlyUnit(ss.totalWasted())); - // Global ratio - ui->labelGlobalRatio->setText( - ( atd > 0 && atu > 0 ) ? - Utils::String::fromDouble((qreal)atu / (qreal)atd, 2) : - "-" - ); - // Cache hits - qreal readRatio = cs.readRatio(); - ui->labelCacheHits->setText((readRatio >= 0) ? Utils::String::fromDouble(100 * readRatio, 2) : "-"); - // Buffers size - ui->labelTotalBuf->setText(Utils::Misc::friendlyUnit(cs.totalUsedBuffers() * 16 * 1024)); - // Disk overload (100%) equivalent - // From lt manual: disk_write_queue and disk_read_queue are the number of peers currently waiting on a disk write or disk read - // to complete before it receives or sends any more data on the socket. It's a metric of how disk bound you are. + // Alltime DL/UL + quint64 atd = BitTorrent::Session::instance()->getAlltimeDL(); + quint64 atu = BitTorrent::Session::instance()->getAlltimeUL(); + m_ui->labelAlltimeDL->setText(Utils::Misc::friendlyUnit(atd)); + m_ui->labelAlltimeUL->setText(Utils::Misc::friendlyUnit(atu)); + // Total waste (this session) + m_ui->labelWaste->setText(Utils::Misc::friendlyUnit(ss.totalWasted())); + // Global ratio + m_ui->labelGlobalRatio->setText( + ((atd > 0) && (atu > 0)) + ? Utils::String::fromDouble((qreal)atu / (qreal)atd, 2) + : "-"); + // Cache hits + qreal readRatio = cs.readRatio(); + m_ui->labelCacheHits->setText((readRatio >= 0) ? Utils::String::fromDouble(100 * readRatio, 2) : "-"); + // Buffers size + m_ui->labelTotalBuf->setText(Utils::Misc::friendlyUnit(cs.totalUsedBuffers() * 16 * 1024)); + // Disk overload (100%) equivalent + // From lt manual: disk_write_queue and disk_read_queue are the number of peers currently waiting on a disk write or disk read + // to complete before it receives or sends any more data on the socket. It's a metric of how disk bound you are. - // num_peers is not reliable (adds up peers, which didn't even overcome tcp handshake) - quint32 peers = 0; - foreach (BitTorrent::TorrentHandle *const torrent, BitTorrent::Session::instance()->torrents()) - peers += torrent->peersCount(); + // num_peers is not reliable (adds up peers, which didn't even overcome tcp handshake) + quint32 peers = 0; + foreach (BitTorrent::TorrentHandle *const torrent, BitTorrent::Session::instance()->torrents()) + peers += torrent->peersCount(); - ui->labelWriteStarve->setText(QString("%1%").arg(((ss.diskWriteQueue() > 0) && (peers > 0)) - ? Utils::String::fromDouble((100. * ss.diskWriteQueue()) / peers, 2) - : "0")); - ui->labelReadStarve->setText(QString("%1%").arg(((ss.diskReadQueue() > 0) && (peers > 0)) - ? Utils::String::fromDouble((100. * ss.diskReadQueue()) / peers, 2) - : "0")); - // Disk queues - ui->labelQueuedJobs->setText(QString::number(cs.jobQueueLength())); - ui->labelJobsTime->setText(tr("%1 ms", "18 milliseconds").arg(cs.averageJobTime())); - ui->labelQueuedBytes->setText(Utils::Misc::friendlyUnit(cs.queuedBytes())); + m_ui->labelWriteStarve->setText(QString("%1%") + .arg(((ss.diskWriteQueue() > 0) && (peers > 0)) + ? Utils::String::fromDouble((100. * ss.diskWriteQueue()) / peers, 2) + : "0")); + m_ui->labelReadStarve->setText(QString("%1%") + .arg(((ss.diskReadQueue() > 0) && (peers > 0)) + ? Utils::String::fromDouble((100. * ss.diskReadQueue()) / peers, 2) + : "0")); + // Disk queues + m_ui->labelQueuedJobs->setText(QString::number(cs.jobQueueLength())); + m_ui->labelJobsTime->setText(tr("%1 ms", "18 milliseconds").arg(cs.averageJobTime())); + m_ui->labelQueuedBytes->setText(Utils::Misc::friendlyUnit(cs.queuedBytes())); - // Total connected peers - ui->labelPeers->setText(QString::number(ss.peersCount())); + // Total connected peers + m_ui->labelPeers->setText(QString::number(ss.peersCount())); } diff --git a/src/gui/statsdialog.h b/src/gui/statsdialog.h index 46c41d8a8..9f2602c5c 100644 --- a/src/gui/statsdialog.h +++ b/src/gui/statsdialog.h @@ -1,6 +1,6 @@ /* - * Bittorrent Client using Qt4 and libtorrent. - * Copyright (C) 2013 Nick Tiskov + * Bittorrent Client using Qt and libtorrent. + * Copyright (C) 2013 Nick Tiskov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License @@ -24,8 +24,6 @@ * modify file(s), you may extend this exception to your version of the file(s), * but you are not obligated to do so. If you do not wish to do so, delete this * exception statement from your version. - * - * Contact : daymansmail@gmail.com */ #ifndef STATSDIALOG_H @@ -34,23 +32,25 @@ #include #include -namespace Ui { - class StatsDialog; +namespace Ui +{ + class StatsDialog; } -class StatsDialog : public QDialog { - Q_OBJECT +class StatsDialog: public QDialog +{ + Q_OBJECT public: explicit StatsDialog(QWidget *parent); - ~StatsDialog(); + ~StatsDialog() override; private slots: - void updateUI(); + void update(); private: - Ui::StatsDialog *ui; - QTimer* t; + Ui::StatsDialog *m_ui; + QTimer *m_timer; }; #endif // STATSDIALOG_H