author | mickeyl <mickeyl> | 2003-05-07 21:53:35 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-07 21:53:35 (UTC) |
commit | 3d150d3dceb6f66930d487958af95a169462ea84 (patch) (side-by-side diff) | |
tree | f93c5754689afebb5be8e2affa57517a4bb4a825 /noncore/net/wellenreiter/gui | |
parent | 8344bbd32ca4ebfef275746de29cb3109b013cb6 (diff) | |
download | opie-3d150d3dceb6f66930d487958af95a169462ea84.zip opie-3d150d3dceb6f66930d487958af95a169462ea84.tar.gz opie-3d150d3dceb6f66930d487958af95a169462ea84.tar.bz2 |
first half of event system completed
Diffstat (limited to 'noncore/net/wellenreiter/gui') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.cpp | 12 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.h | 2 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 75 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.h | 3 |
4 files changed, 77 insertions, 15 deletions
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp index 05ff5e7..d4b0dfe 100644 --- a/noncore/net/wellenreiter/gui/protolistview.cpp +++ b/noncore/net/wellenreiter/gui/protolistview.cpp @@ -94,18 +94,24 @@ void ProtocolListView::addProtocol( const QString& name ) combo->insertItem( "MessageBox" ); } } bool ProtocolListView::isProtocolChecked( const QString& name ) { QCheckBox* box = (QCheckBox*) child( (const char*) name ); return ( box && box->isOn() ); } -QString ProtocolListView::protocolAction( const QString& name ) const +QString ProtocolListView::protocolAction( const QString& name ) { - //FIXME + //QObject * child ( const char * objName, const char * inheritsClass = 0, + // bool recursiveSearch = TRUE ) + + QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" ); + if ( combo ) + return combo->currentText(); + else + return "<unknown>"; } - diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h index 723e8cd..166b648 100644 --- a/noncore/net/wellenreiter/gui/protolistview.h +++ b/noncore/net/wellenreiter/gui/protolistview.h @@ -23,25 +23,25 @@ class QCheckBox; class QComboBox; class QVBox; class ProtocolListView : public QScrollView { public: ProtocolListView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); virtual ~ProtocolListView(); bool isProtocolChecked( const QString& name ); - QString protocolAction( const QString& name ) const; + QString protocolAction( const QString& name ); protected: virtual void addProtocol( const QString& name ); private: QVBox* vbox; bool actions; }; #endif // PROTOLISTVIEW_H diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 2f3d093..edf7dcf 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -4,72 +4,74 @@ ** This file is part of Opie Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ***********************************************************************/ +// Local + +#include "wellenreiter.h" +#include "scanlist.h" +#include "logwindow.h" +#include "hexwindow.h" +#include "configwindow.h" +#include "statwindow.h" +#include "graphwindow.h" +#include "manufacturers.h" +#include "protolistview.h" + // Opie #ifdef QWS #include <opie/odevice.h> using namespace Opie; #endif #ifdef QWS #include <opie2/oapplication.h> #else #include <qapplication.h> #endif #include <opie2/onetwork.h> #include <opie2/opcap.h> // Qt #include <qcheckbox.h> #include <qcombobox.h> #include <qdatetime.h> #include <qpushbutton.h> #include <qlineedit.h> #include <qmessagebox.h> +#include <qobjectlist.h> #include <qregexp.h> #include <qspinbox.h> #include <qtoolbutton.h> #include <qmainwindow.h> // Standard #include <assert.h> #include <errno.h> #include <unistd.h> #include <string.h> #include <sys/types.h> #include <stdlib.h> -// Local - -#include "wellenreiter.h" -#include "scanlist.h" -#include "logwindow.h" -#include "hexwindow.h" -#include "configwindow.h" -#include "statwindow.h" -#include "graphwindow.h" -#include "manufacturers.h" - Wellenreiter::Wellenreiter( QWidget* parent ) : WellenreiterBase( parent, 0, 0 ), sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 ) { // // construct manufacturer database // QString manufile; #ifdef QWS manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() ); @@ -128,24 +130,48 @@ void Wellenreiter::channelHopped(int c) { QString right; right.fill( '.', iface->channels()-c ); title.append( right ); } title.append( "]" ); //title.append( QString().sprintf( " %02d", c ) ); assert( parent() ); ( (QMainWindow*) parent() )->setCaption( title ); } +void Wellenreiter::handleNotification( OPacket* p ) +{ + QObjectList* l = p->queryList(); + QObjectListIt it( *l ); + QObject* o; + + while ( (o = it.current()) != 0 ) + { + QString name = it.current()->name(); + if ( configwindow->parsePackets->isProtocolChecked( name ) ) + { + QString action = configwindow->parsePackets->protocolAction( name ); + qDebug( "action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); + doAction( action, name, p ); + } + else + { + qDebug( "protocol '%s' not checked.", (const char*) name ); + } + ++it; + } +} + + void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) { QString type; if ( beacon->canIBSS() ) { type = "adhoc"; } else if ( beacon->canESS() ) { type = "managed"; } else @@ -236,28 +262,36 @@ void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data ) netView()->identify( arp->targetMacAddress().toString(), arp->targetIPV4Address().toString() ); } } OIPPacket* ip = (OIPPacket*) p->child( "IP" ); if ( ip ) { qDebug( "Received IP packet." ); } } +QObject* childIfToParse( OPacket* p, const QString& protocol ) +{ + //FIXME: Implement +} + + void Wellenreiter::receivePacket( OPacket* p ) { hexWindow()->log( p->dump( 8 ) ); + handleNotification( p ); + // check if we received a beacon frame OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); if ( beacon && beacon->managementType() == "Beacon" ) { handleBeacon( p, beacon ); return; } //TODO: WEP check here // check for a data frame OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) ); @@ -422,12 +456,31 @@ void Wellenreiter::timerEvent( QTimerEvent* ) OPacket* p = pcap->next(); if ( !p ) // no more packets available { stopClicked(); } else { receivePacket( p ); delete p; } } + +void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p ) +{ + if ( action == "TouchSound" ) + ODevice::inst()->touchSound(); + else if ( action == "AlarmSound" ) + ODevice::inst()->alarmSound(); + else if ( action == "KeySound" ) + ODevice::inst()->keySound(); + else if ( action == "LedOn" ) + ODevice::inst()->setLedState( Led_Mail, Led_On ); + else if ( action == "LedOff" ) + ODevice::inst()->setLedState( Led_Mail, Led_Off ); + else if ( action == "LogMessage" ) + logwindow->log( QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); + else if ( action == "MessageBox" ) + QMessageBox::information ( this, "Notification!", + QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); +} diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index ea8a692..e227a24 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h @@ -57,24 +57,27 @@ class Wellenreiter : public WellenreiterBase { void channelHopped(int); void receivePacket(OPacket*); void startClicked(); void stopClicked(); signals: void startedSniffing(); void stoppedSniffing(); private: void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); void handleData( OPacket* p, OWaveLanDataPacket* data ); + void handleNotification( OPacket* p ); + void doAction( const QString& action, const QString& protocol, OPacket* p ); + QObject* childIfToParse( OPacket* p, const QString& protocol ); private: #ifdef QWS OSystem _system; // Opie Operating System identifier #endif OWirelessNetworkInterface* iface; OPacketCapturer* pcap; ManufacturerDB* manufacturerdb; WellenreiterConfigWindow* configwindow; //void readConfig(); |