/***************************************************************************
*   Copyright (C) 2004 by Hugo Parente Lima                               *
*   hugo_pl@users.sourceforge.net                                         *
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
*   This program is distributed in the hope that it will be useful,       *
*   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
*   GNU General Public License for more details.                          *
*                                                                         *
*   You should have received a copy of the GNU General Public License     *
*   along with this program; if not, write to the                         *
*   Free Software Foundation, Inc.,                                       *
*   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.         *
***************************************************************************/
#include "statistics.h"
#include "chart.h"
#include "knetstatsview.h"

#include <tdelocale.h>
#include <tdeapplication.h>
#include <kactivelabel.h>
#include <tqtimer.h>
#include <tqlayout.h>



Statistics::Statistics( KNetStatsView* parent, const char *name )
: StatisticsBase( parent, name ), mInterface(parent->interface()), mParent(parent) {
	setCaption( i18n( "Details of %1" ).arg( mInterface ) );

	TQBoxLayout* l = new TQHBoxLayout( mChart );
	l->setAutoAdd( true );
	Chart* chart = new Chart(mChart, parent->speedHistoryTx(), parent->speedHistoryRx(), parent->historyBufferSize(), parent->historyPointer(), parent->maxSpeed());
	mMAC->setText(mParent->readInterfaceStringValue("address", 18));
	mIP->setAlignment(TQt::AlignRight);
	mMAC->setAlignment(TQt::AlignRight);
	mNetmask->setAlignment(TQt::AlignRight);
	update();

	mTimer = new TQTimer( this );
	connect( mTimer, TQ_SIGNAL( timeout() ), this, TQ_SLOT( update() ) );
	connect( mTimer, TQ_SIGNAL( timeout() ), chart, TQ_SLOT( update() ) );
}

void Statistics::update() {
	mMaxSpeed->setText(byteFormat( *mParent->maxSpeed() )+"/s");
	mBRx->setText( byteFormat( mParent->totalBytesRx() ) );
	mBTx->setText( byteFormat( mParent->totalBytesTx() ) );
	mByteSpeedRx->setText( byteFormat( mParent->byteSpeedRx() )+"/s" );
	mByteSpeedTx->setText( byteFormat( mParent->byteSpeedTx() )+"/s" );

	mPRx->setText( TQString::number( mParent->totalPktRx() ) );
	mPTx->setText( TQString::number( mParent->totalPktTx() ) );
	mPktSpeedRx->setText( TQString::number( mParent->pktSpeedRx(), 'f', 1 )+"pkts/s" );
	mPktSpeedTx->setText( TQString::number( mParent->pktSpeedTx(), 'f', 1 )+"pkts/s" );
}

void Statistics::show() {
	// Update details...
	mMTU->setText(mParent->readInterfaceStringValue("mtu", 6));
	mIP->setText( mParent->getIp() );
	mNetmask->setText( mParent->getNetmask() );

	mTimer->start( mParent->updateInterval() );
	StatisticsBase::show();
}

void Statistics::accept() {
	mTimer->stop();
	StatisticsBase::accept();
}


#include "statistics.moc"
