-rw-r--r-- | noncore/net/wellenreiter/gui/configwindow.cpp | 170 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/configwindow.h | 61 |
2 files changed, 231 insertions, 0 deletions
diff --git a/noncore/net/wellenreiter/gui/configwindow.cpp b/noncore/net/wellenreiter/gui/configwindow.cpp new file mode 100644 index 0000000..2305403 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/configwindow.cpp @@ -0,0 +1,170 @@ +/********************************************************************** +** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. +** +** 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 "configwindow.h" +#include "mainwindow.h" + +/* QT */ +#include <qapplication.h> +#include <qcheckbox.h> +#include <qcombobox.h> +#include <qfile.h> +#include <qlineedit.h> +#include <qlayout.h> +#include <qmap.h> +#include <qpushbutton.h> +#include <qtoolbutton.h> +#include <qspinbox.h> +#include <qtextstream.h> + +/* OPIE */ +#include <opie2/onetwork.h> + +WellenreiterConfigWindow* WellenreiterConfigWindow::_instance = 0; + +WellenreiterConfigWindow::WellenreiterConfigWindow( QWidget * parent, const char * name, WFlags f ) + :WellenreiterConfigBase( parent, name, true, f ) +{ + _devicetype[ "cisco" ] = DEVTYPE_CISCO; + _devicetype[ "wlan-ng" ] = DEVTYPE_WLAN_NG; + _devicetype[ "hostap" ] = DEVTYPE_HOSTAP; + _devicetype[ "orinoco" ] = DEVTYPE_ORINOCO; + _devicetype[ "<manual>" ] = DEVTYPE_MANUAL; + _devicetype[ "<file>" ] = DEVTYPE_FILE; + + // gather possible interface names from ONetwork + ONetwork* net = ONetwork::instance(); + ONetwork::InterfaceIterator it = net->iterator(); + while ( it.current() ) + { + if ( it.current()->isWireless() ) + interfaceName->insertItem( it.current()->name() ); + ++it; + } + + // try to guess device type + QFile m( "/proc/modules" ); + if ( m.open( IO_ReadOnly ) ) + { + int devicetype(0); + QString line; + QTextStream modules( &m ); + while( !modules.atEnd() && !devicetype ) + { + modules >> line; + if ( line.contains( "cisco" ) ) devicetype = DEVTYPE_CISCO; + else if ( line.contains( "hostap" ) ) devicetype = DEVTYPE_HOSTAP; + else if ( line.contains( "prism" ) ) devicetype = DEVTYPE_WLAN_NG; + else if ( line.contains( "orinoco" ) ) devicetype = DEVTYPE_ORINOCO; + } + if ( devicetype ) + { + deviceType->setCurrentItem( devicetype ); + _guess = devicetype; + qDebug( "Wellenreiter: guessed device type to be #%d", devicetype ); + } + } + + #ifdef Q_WS_X11 // We're on X11: adding an Ok-Button for the Dialog here + QPushButton* okButton = new QPushButton( "ok", this ); + okButton->show(); + Layout5_2->addWidget( okButton, 0, 3 ); //FIXME: rename this in configbase.ui + connect( okButton, SIGNAL( clicked() ), this, SLOT( accept() ) ); + #endif + + WellenreiterConfigWindow::_instance = this; + + connect( deviceType, SIGNAL( activated(int) ), this, SLOT( changedDeviceType(int) ) ); + connect( getCaptureFileName, SIGNAL( clicked() ), this, SLOT( getCaptureFileNameClicked() ) ); + + // make the checkbox 'channelAll' control all other channels + connect( channelAll, SIGNAL( stateChanged(int) ), this, SLOT( channelAllClicked(int) ) ); +}; + + +int WellenreiterConfigWindow::driverType() const +{ + QString name = deviceType->currentText(); + if ( _devicetype.contains( name ) ) + { + return _devicetype[name]; + } + else + { + return 0; + } +}; + + +int WellenreiterConfigWindow::hoppingInterval() const +{ + return hopInterval->cleanText().toInt(); +} + + +bool WellenreiterConfigWindow::usePrismHeader() +{ + return prismHeader->isOn(); +} + + +void WellenreiterConfigWindow::changedDeviceType(int t) +{ + if ( t != DEVTYPE_FILE ) return; + QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(false); + if ( !name.isEmpty() && QFile::exists( name ) ) + { + interfaceName->insertItem( name ); + interfaceName->setCurrentItem( interfaceName->count()-1 ); + } + else + { + deviceType->setCurrentItem( _guess ); + } + +} + + +void WellenreiterConfigWindow::getCaptureFileNameClicked() +{ + QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true); + qDebug( "name = %s", (const char*) name ); + if ( !name.isEmpty() ) + { + captureFileName->setText( name ); + } +} + + +void WellenreiterConfigWindow::channelAllClicked(int state) +{ + bool b = state; + channel1->setChecked( b ); + channel2->setChecked( b ); + channel3->setChecked( b ); + channel4->setChecked( b ); + channel5->setChecked( b ); + channel6->setChecked( b ); + channel7->setChecked( b ); + channel8->setChecked( b ); + channel9->setChecked( b ); + channel10->setChecked( b ); + channel11->setChecked( b ); + channel12->setChecked( b ); + channel13->setChecked( b ); + channel14->setChecked( b ); +} + diff --git a/noncore/net/wellenreiter/gui/configwindow.h b/noncore/net/wellenreiter/gui/configwindow.h new file mode 100644 index 0000000..057bed6 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/configwindow.h @@ -0,0 +1,61 @@ +/********************************************************************** +** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. +** +** 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. +** +**********************************************************************/ + +#ifndef WELLENREITERCONFIGWINDOW_H +#define WELLENREITERCONFIGWINDOW_H + +#include "configbase.h" +#include <qmap.h> +#include <qcombobox.h> +#include <qstring.h> + +const int DEVTYPE_SELECT = 0; +const int DEVTYPE_CISCO = 1; +const int DEVTYPE_WLAN_NG = 2; +const int DEVTYPE_HOSTAP = 3; +const int DEVTYPE_ORINOCO = 4; +const int DEVTYPE_MANUAL = 5; +const int DEVTYPE_FILE = 6; + +class WellenreiterConfigWindow; + +class WellenreiterConfigWindow : public WellenreiterConfigBase +{ + Q_OBJECT + + public: + WellenreiterConfigWindow( QWidget * parent = 0, const char * name = "WellenreiterConfigWindow", WFlags f = 0 ); + int driverType() const; + int hoppingInterval() const; + const QString soundOnNetwork() const { return "";/*netSound->currentText();*/ }; + const QString soundOnBeacon() const { return "";/*beaconSound->currentText();*/ }; + static WellenreiterConfigWindow* instance() { return _instance; }; + + bool usePrismHeader(); + + public slots: + void changedDeviceType(int); + void getCaptureFileNameClicked(); + + void channelAllClicked(int); + + protected: + QMap<QString, int> _devicetype; + static WellenreiterConfigWindow* _instance; + int _guess; + +}; + +#endif |