From 109ed5f2a1cdfeb3680c9ec057a1083fcf8fab95 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sun, 02 May 2004 20:08:30 +0000 Subject: PacketViewer improvements: - expose buffer size through API - improve packet viewer logic - display time/date of capture + capture length --- (limited to 'noncore/net/wellenreiter/gui/packetview.cpp') diff --git a/noncore/net/wellenreiter/gui/packetview.cpp b/noncore/net/wellenreiter/gui/packetview.cpp index 4df01da..f0f16ff 100644 --- a/noncore/net/wellenreiter/gui/packetview.cpp +++ b/noncore/net/wellenreiter/gui/packetview.cpp @@ -19,6 +19,7 @@ #include #include #include +#include /* QT */ #include @@ -38,10 +39,8 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) :QFrame( parent, name, f ) { _number = new QSpinBox( this ); - _number->setPrefix( "Packet # " ); + _number->setPrefix( "Pkt# " ); _label = new QLabel( this ); - _label->setText( "eth0 2004/03/08 - 00:00:21" ); - _list = new OListView( this ); _list->addColumn( "#" ); _list->addColumn( "Packet Type" ); @@ -49,42 +48,70 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) _list->setColumnAlignment( 1, Qt::AlignLeft ); _list->setAllColumnsShowFocus( true ); _list->setFont( QFont( "Fixed", 8 ) ); - + _hex = new QTextView( this ); + _hex->setMargin( 0 ); _hex->setFont( QFont( "Fixed", 8 ) ); QVBoxLayout* vb = new QVBoxLayout( this, 2, 2 ); QHBoxLayout* hb = new QHBoxLayout( vb, 2 ); - hb->addWidget( _label ); - hb->addWidget( _number ); - vb->addWidget( _list ); - vb->addWidget( _hex ); + hb->addWidget( _label, 5 ); + hb->addWidget( _number, 2 ); + vb->addWidget( _list, 3 ); + vb->addWidget( _hex, 4 ); // allow a bit (4/3) more space _packets.setAutoDelete( true ); - + connect( _number, SIGNAL( valueChanged( int ) ), this, SLOT( showPacket( int ) ) ); + connect( parent, SIGNAL( currentChanged( QWidget *) ), this, SLOT( activated( QWidget* ) ) ); + + clear(); + } -void PacketView::add( const OPacket* p ) +void PacketView::add( const OPacket* p, int size ) { - _packets.append( p ); - // Add Circular Buffer and check for number of elements here + odebug << "PacketView::add() size = " << size << oendl; + if ( size == -1 ) // unlimited buffer + { + _packets.append( p ); + } + else + // limited buffer, limit = size + if ( _packets.count() < size ) + { + _packets.append( p ); + } + + _number->setMinValue( 1 ); + _number->setMaxValue( _packets.count() ); + _number->setValue( _packets.count() ); } void PacketView::showPacket( int number ) { _list->clear(); _hex->setText(""); - const OPacket* p = _packets.at( number ); - + const OPacket* p = _packets.at( number-1 ); + if ( p ) { _doSubPackets( const_cast( p->children() ), 0 ); _doHexPacket( p ); + QDateTime dt; dt.setTime_t( p->timeval().tv_sec ); + _label->setText( dt.toString() + QString().sprintf( " Len=%d", p->len() ) ); } else { - odebug << "D'oh! No packet!" << oendl; + odebug << "D'oh! No packet!" << oendl; + } +} + +void PacketView::activated( QWidget* w ) +{ + if ( ( this == w ) && _packets.count() ) + { + _number->setValue( 1 ); } } @@ -98,11 +125,14 @@ void PacketView::_doSubPackets( QObjectList* l, int counter ) _doSubPackets( const_cast( o->children() ), counter ); o = l->next(); } -} +} void PacketView::_doHexPacket( const OPacket* p ) -{ - _hex->setText( p->dump( 16 ) ); +{ + if ( oApp->desktop()->width() > 320 ) + _hex->setText( p->dump( 16 ) ); + else + _hex->setText( p->dump( 8 ) ); } const QString PacketView::getLog() const @@ -116,6 +146,6 @@ void PacketView::clear() _number->setMaxValue( 0 ); _label->setText( "---" ); _list->clear(); - _hex->setText( " -- no Packet available -- " ); + _hex->setText( "
-- no Packet available --
" ); } -- cgit v0.9.0.2