/* * 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: stats-dialog.cc 11092 2010-08-01 20:36:13Z charles $ */ #include #include #include #include #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 ) ); }