100 lines
3.1 KiB
C++
100 lines
3.1 KiB
C++
/*
|
|
* This file Copyright (C) Mnemosyne LLC
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2
|
|
* as published by the Free Software Foundation.
|
|
*
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
*
|
|
* $Id$
|
|
*/
|
|
|
|
#include <QDialogButtonBox>
|
|
#include <QLabel>
|
|
#include <QTimer>
|
|
#include <QVBoxLayout>
|
|
|
|
#include "formatter.h"
|
|
#include "hig.h"
|
|
#include "session.h"
|
|
#include "stats-dialog.h"
|
|
|
|
enum
|
|
{
|
|
REFRESH_INTERVAL_MSEC = (15*1000)
|
|
};
|
|
|
|
StatsDialog :: StatsDialog (Session & session, QWidget * parent):
|
|
QDialog (parent, Qt::Dialog),
|
|
mySession (session),
|
|
myTimer (new QTimer (this))
|
|
{
|
|
myTimer->setSingleShot (false);
|
|
connect (myTimer, SIGNAL (timeout ()), this, SLOT (onTimer ()));
|
|
setWindowTitle (tr ("Statistics"));
|
|
|
|
HIG * hig = new HIG ();
|
|
hig->addSectionTitle (tr ("Current Session"));
|
|
hig->addRow (tr ("Uploaded:"), myCurrentUp = new QLabel ());
|
|
hig->addRow (tr ("Downloaded:"), myCurrentDown = new QLabel ());
|
|
hig->addRow (tr ("Ratio:"), myCurrentRatio = new QLabel ());
|
|
hig->addRow (tr ("Duration:"), myCurrentDuration = new QLabel ());
|
|
hig->addSectionDivider ();
|
|
hig->addSectionTitle (tr ("Total"));
|
|
hig->addRow (myStartCount = new QLabel (tr ("Started %n time (s)", 0, 1)), 0);
|
|
hig->addRow (tr ("Uploaded:"), myTotalUp = new QLabel ());
|
|
hig->addRow (tr ("Downloaded:"), myTotalDown = new QLabel ());
|
|
hig->addRow (tr ("Ratio:"), myTotalRatio = new QLabel ());
|
|
hig->addRow (tr ("Duration:"), myTotalDuration = new QLabel ());
|
|
hig->finish ();
|
|
|
|
QLayout * layout = new QVBoxLayout (this);
|
|
layout->addWidget (hig);
|
|
QDialogButtonBox * buttons = new QDialogButtonBox (QDialogButtonBox::Close, Qt::Horizontal, this);
|
|
connect (buttons, SIGNAL (rejected ()), this, SLOT (hide ())); // "close" triggers rejected
|
|
layout->addWidget (buttons);
|
|
|
|
connect (&mySession, SIGNAL (statsUpdated ()), this, SLOT (updateStats ()));
|
|
updateStats ();
|
|
mySession.refreshSessionStats ();
|
|
}
|
|
|
|
StatsDialog :: ~StatsDialog ()
|
|
{
|
|
}
|
|
|
|
void
|
|
StatsDialog :: setVisible (bool visible)
|
|
{
|
|
myTimer->stop ();
|
|
if (visible)
|
|
myTimer->start (REFRESH_INTERVAL_MSEC);
|
|
QDialog::setVisible (visible);
|
|
}
|
|
|
|
void
|
|
StatsDialog :: onTimer ()
|
|
{
|
|
mySession.refreshSessionStats ();
|
|
}
|
|
|
|
void
|
|
StatsDialog :: updateStats ()
|
|
{
|
|
const struct tr_session_stats& current (mySession.getStats ());
|
|
const struct tr_session_stats& total (mySession.getCumulativeStats ());
|
|
|
|
myCurrentUp->setText (Formatter::sizeToString (current.uploadedBytes));
|
|
myCurrentDown->setText (Formatter::sizeToString (current.downloadedBytes));
|
|
myCurrentRatio->setText (Formatter::ratioToString (current.ratio));
|
|
myCurrentDuration->setText (Formatter::timeToString (current.secondsActive));
|
|
|
|
myTotalUp->setText (Formatter::sizeToString (total.uploadedBytes));
|
|
myTotalDown->setText (Formatter::sizeToString (total.downloadedBytes));
|
|
myTotalRatio->setText (Formatter::ratioToString (total.ratio));
|
|
myTotalDuration->setText (Formatter::timeToString (total.secondsActive));
|
|
|
|
myStartCount->setText (tr ("Started %n time (s)", 0, total.sessionCount));
|
|
}
|