From 43be19e2c53014ef83a53a2045c0e41265d574d6 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sun, 28 Mar 2004 17:33:25 +0000 Subject: more work on the new packet viewer --- (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 e0e626c..3d3aa18 100644 --- a/noncore/net/wellenreiter/gui/packetview.cpp +++ b/noncore/net/wellenreiter/gui/packetview.cpp @@ -17,15 +17,23 @@ /* OPIE */ #include +#include +#include /* QT */ -#include -#include +#include #include #include #include +#include +#include +#include +#include using namespace Opie::Net; +using namespace Opie::Core; +using namespace Opie::Ui; + PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) :QFrame( parent, name, f ) { @@ -33,8 +41,17 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) _number->setPrefix( "Packet # " ); _label = new QLabel( this ); _label->setText( "eth0 2004/03/08 - 00:00:21" ); - _list = new QLabel( this ); + + _list = new OListView( this ); + _list->addColumn( "#" ); + _list->addColumn( "Packet Type" ); + _list->setColumnAlignment( 0, Qt::AlignCenter ); + _list->setColumnAlignment( 1, Qt::AlignLeft ); + _list->setAllColumnsShowFocus( true ); + _list->setFont( QFont( "Fixed", 8 ) ); + _hex = new QTextView( this ); + _hex->setFont( QFont( "Fixed", 8 ) ); QVBoxLayout* vb = new QVBoxLayout( this, 2, 2 ); QHBoxLayout* hb = new QHBoxLayout( vb, 2 ); @@ -44,14 +61,49 @@ PacketView::PacketView( QWidget * parent, const char * name, WFlags f ) vb->addWidget( _hex ); _packets.setAutoDelete( true ); + + connect( _number, SIGNAL( valueChanged( int ) ), this, SLOT( showPacket( int ) ) ); +} - _list->setText( "[ 802.11 [ LLC [ IP [ UDP [ DHCP ] ] ] ] ]" ); -}; - -void PacketView::add( OPacket* p ) +void PacketView::add( const OPacket* p ) { _packets.append( p ); -}; + // Add Circular Buffer and check for number of elements here +} + +void PacketView::showPacket( int number ) +{ + _list->clear(); + _hex->setText(""); + const OPacket* p = _packets.at( number ); + + if ( p ) + { + _doSubPackets( const_cast( p->children() ), 0 ); + _doHexPacket( p ); + } + else + { + qDebug( "D'oh! No packet!" ); + } +} + +void PacketView::_doSubPackets( QObjectList* l, int counter ) +{ + if (!l) return; + QObject* o = l->first(); + while ( o ) + { + new OListViewItem( _list, QString::number( counter++ ), o->name() ); + _doSubPackets( const_cast( o->children() ), counter ); + o = l->next(); + } +} + +void PacketView::_doHexPacket( const OPacket* p ) +{ + _hex->setText( p->dump( 16 ) ); +} const QString PacketView::getLog() const { @@ -63,7 +115,7 @@ void PacketView::clear() _number->setMinValue( 0 ); _number->setMaxValue( 0 ); _label->setText( "---" ); - _list->setText( " -- no Packet available -- " ); + _list->clear(); _hex->setText( " -- no Packet available -- " ); } -- cgit v0.9.0.2