summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-03-05 21:39:40 (UTC)
committer mickeyl <mickeyl>2004-03-05 21:39:40 (UTC)
commita12943ccab6b39dda5cf8561efb10eeec856f13e (patch) (side-by-side diff)
treeb22cd5c74bd4daad201eea5e485ea9856471d1f2
parent8851dc992ab535bde6cb417cafc44658953f495d (diff)
downloadopie-a12943ccab6b39dda5cf8561efb10eeec856f13e.zip
opie-a12943ccab6b39dda5cf8561efb10eeec856f13e.tar.gz
opie-a12943ccab6b39dda5cf8561efb10eeec856f13e.tar.bz2
change copyright notice
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/ChangeLog4
-rw-r--r--noncore/net/wellenreiter/TODO2
-rw-r--r--noncore/net/wellenreiter/gui/configbase.ui94
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/configwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/gps.cpp2
-rw-r--r--noncore/net/wellenreiter/gui/gps.h2
-rw-r--r--noncore/net/wellenreiter/gui/graphwindow.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/graphwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/gui.pro2
-rw-r--r--noncore/net/wellenreiter/gui/hexwindow.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/hexwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/logwindow.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/logwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/main.cpp2
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.cpp32
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.h7
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/protolistview.h4
-rw-r--r--noncore/net/wellenreiter/gui/resource.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/resource.h4
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp5
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h4
-rw-r--r--noncore/net/wellenreiter/gui/statwindow.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/statwindow.h4
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp8
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiterbase.cpp4
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiterbase.h4
28 files changed, 175 insertions, 53 deletions
diff --git a/noncore/net/wellenreiter/ChangeLog b/noncore/net/wellenreiter/ChangeLog
index 6c2e52b..fdc8aa7 100644
--- a/noncore/net/wellenreiter/ChangeLog
+++ b/noncore/net/wellenreiter/ChangeLog
@@ -1,76 +1,78 @@
2004-??-?? Michael Lauer <mickey@Vanille.de>
+ * Added sanity check isPresent(interface) before starting the engine.
+ * Added a View submenu. Added actions to expand and collapse all items.
* Switched to a (hopefully) more reliable method reading from gpsd.
* Added parsing of named ProbeRequests. Display only-probed-yet SSIDs in a different network color.
* Rewrote the simple actions on new {Network, Client, Station}. Besides playing a sound or
blinking a LED, a user customizable script can now be executed, if something has been
detected. This opens up many possibilities, i.e. a qcop to qpegps or exec'ing flite (speech).
* Added decloaking of cloaked ESSIDs (length != 0, but essid[0] == \0).
* Hided the 'Parse' Tab in the configuration window. Not functional now and may come later
* Added parsing of control frames. Display stations sending them SSID "<unknown>" for now.
* Added command line option "-nocheck" to skip non-root and dhcp tests.
- * Improved the speed reading the manufacturer list.
+ * Improved the speed of and user feedback during reading the manufacturer list.
* GPS coordinates are now presented in the DMS (as opposed to decimal) format.
2003-12-18 Michael Lauer <mickey@Vanille.de>
* Released as Version 1.0.2 (Development Snapshot)
* Added automatic uploading of capture files to "The Capture Dump" site at
http://www.Vanille.de/projects/capturedump.spy
* Initial reading of the manufacturer database happens now in background
* Removed deprecated setMonitorMode() API ==> Use setMode( "monitor" ) now.
The monitor mode now tries to use the standard IW_MODE_MONITOR first. If that
doesn't work, it falls back to using the proprietary iwpriv commands
2003-11-30 Michael Lauer <mickey@Vanille.de>
* Released as Version 1.0.1 (Development Snapshot)
* Fixed ARP decoding for wired networks.
Interestingly, 802.11 encapsulates these in IP packets, while wired ethernet just tags the type_of_protocol.
* Added reading GPS data from a gps daemon.
* Started preparations for utilizing Wellenreiter II in wired networks.
* Implemented persistant configuration interface and retriggerable auto detection.
* Added QCOP interface for talking to opie-networksettings.
* Added parsing of DHCP packets and detecting DHCP servers.
* Overhauled the configuration window and started with the customizable event system.
* Added disabling the screensaver.
* Added automatic opening and scrolling to the network tree if a new station appears.
2003-05-10 Michael Lauer <mickey@Vanille.de>
* Released as Version 1.0 (Stable)
* Added restarting the dhcp client if having killed it before.
* Decouple dump files from live capture to shift control over 'what' is dumped to applications.
2003-05-05 Michael Lauer <mickey@Vanille.de>
* Released as Version 1.0-RC1 (Release Candidate)
* Fixed rare segfaults while sniffing and operating the GUI simultaenously.
* Parse more data packets and detect more participating stations.
* Added live graph window showing the signal strength on all channels.
* Added parsing ARP packets and identifying IP addresses of participating stations.
* Added parsing with optionally enabled PRISM headers (signal strength).
2003-04-12 Michael Lauer <mickey@Vanille.de>
* Released as Version 1.0 (Beta)
* GUI enhancements in the Menubar and the Toolbar.
* Improved keyboard handling.
* Added sanity checks for running Wellenreiter II as non-root or with dhcp clients in the background.
* Add writing and replaying of libpcap compatible capture files.
2003-04-08 Michael Lauer <mickey@Vanille.de>
* Released as Version 0.2 (Alpha)
* Closed memory leak in packet capturer.
* Fixed client stations appearing under essid as access points.
* Fixed false WEP reporting in some cases.
* Started with inspecting data packages.
* Add detecting associated client stations in infrastructural networks (if they transmit data).
* Worked around buggy hostap drivers writing past fixed-length-structures on arm.
* Added dynamic checking of available private ioctls.
* Added a saveable hex window for packet dissection.
2003-03-30 Michael Lauer <mickey@Vanille.de>
* Released as Version 0.1 (Alpha)
diff --git a/noncore/net/wellenreiter/TODO b/noncore/net/wellenreiter/TODO
index 01e731f..f3fd205 100644
--- a/noncore/net/wellenreiter/TODO
+++ b/noncore/net/wellenreiter/TODO
@@ -1,62 +1,60 @@
/************************************************************************
/* W e l l e n r e i t e r I I
/* ===============================
/*
/* Version: 1.0.2
/************************************************************************
----------------------------------------------------
Ideas as of Wellenreiter II / December 2003
----------------------------------------------------
--------
ENGINE
--------
- enable multiple packet sources
- infrared
- bluetooth
- usb?
- define packet structure in a metalanguage and generate
the actual parsing code (hmmm)
- pester the ethereal folks to settle for an application independant
packet dissection framework... (unlikely)
- adaptive hopping scheme !
- gather interface capabilities
- enable sniffing in wired networks
- fix autodetection (interface name)
---------
UI
---------
- display interface capabilities (or rewrite networksettings?)
- distinguish wireless bridges (WDS traffic)
-- expand/collapse all
-
- add configuration for scrollback buffer in hex window and log window
- revamp hex window, make it more sophisticated than just a QMultiLineEdit
- tree view
- beep over headphone / customizable
- count/display number of wireless networks / APs since last start/stop
---------
FILES
---------
- write kismet-like .network format and format to be importable into AutoRoute
- implement beacon stripping (the first beacon is enough to detect a
new network - further beacons just blow up the capture file)
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui
index 469effe..113e783 100644
--- a/noncore/net/wellenreiter/gui/configbase.ui
+++ b/noncore/net/wellenreiter/gui/configbase.ui
@@ -1,112 +1,116 @@
<!DOCTYPE UI><UI>
<class>WellenreiterConfigBase</class>
<widget>
<class>QDialog</class>
<property stdset="1">
<name>name</name>
<cstring>WellenreiterConfigBase</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>250</width>
+ <width>246</width>
<height>371</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>Wellenreiter II COnfiguration Dialog</string>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>2</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget row="0" column="0" >
<class>QTabWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string></string>
+ </property>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>Interface</string>
</attribute>
<vbox>
<property stdset="1">
<name>margin</name>
<number>6</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout7</cstring>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget row="1" column="1" >
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>&lt;select&gt;</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>cisco</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>wlan-ng</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>hostap</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>orinoco</string>
@@ -166,276 +170,296 @@
<cstring>interfaceName</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>editable</name>
<bool>false</bool>
</property>
<property>
<name>whatsThis</name>
<string>Choose the interface used for sniffing.</string>
</property>
</widget>
<widget row="0" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1_2</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>text</name>
<string>Name:</string>
</property>
</widget>
</grid>
</widget>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout5</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QPushButton</class>
<property stdset="1">
<name>name</name>
<cstring>autodetect</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Perform Autodetection</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Retrigger the autodetection algorithm</string>
+ </property>
</widget>
</hbox>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>prismHeader</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Use additional PRISM header</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Use additional PRISM headers, if available.</string>
+ </property>
</widget>
<spacer>
<property>
<name>name</name>
<cstring>Spacer4</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Vertical</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout6</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>hopChannels</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Hop Channels</string>
</property>
<property stdset="1">
<name>checked</name>
<bool>true</bool>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this, if you want to start a channel hopper.</string>
+ </property>
</widget>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>every</string>
</property>
</widget>
<widget>
<class>QSpinBox</class>
<property stdset="1">
<name>name</name>
<cstring>hopInterval</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>suffix</name>
<string> ms</string>
</property>
<property stdset="1">
<name>maxValue</name>
<number>2000</number>
</property>
<property stdset="1">
<name>minValue</name>
<number>100</number>
</property>
<property stdset="1">
<name>lineStep</name>
<number>100</number>
</property>
<property stdset="1">
<name>value</name>
<number>1000</number>
</property>
<property>
<name>whatsThis</name>
<string>Choose the channel hop interval.</string>
</property>
</widget>
</hbox>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>adaptiveHopping</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>text</name>
<string>Use Adaptive(TM) Hop Scheme</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>An adaptive hopping interval dynamically changes the channel hopping parameters to listen longer on channels where traffic comes in.</string>
+ </property>
</widget>
<widget>
<class>QGroupBox</class>
<property stdset="1">
<name>name</name>
<cstring>GroupBox1</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>title</name>
<string>Scan on channel</string>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check the channels which should be included in the channel hopping scheme. Note that due to the 802.11 channel overlay scheme you may receive data on neighbour channels of channels, even if they're not checked here.</string>
+ </property>
<grid>
<property stdset="1">
<name>margin</name>
<number>4</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>2</number>
</property>
<widget row="1" column="1" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>channel6</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>6</string>
</property>
</widget>
<widget row="1" column="3" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>channel8</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>8</string>
</property>
</widget>
<widget row="0" column="2" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>channel2</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>2</string>
</property>
</widget>
<widget row="1" column="4" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>channel9</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>9</string>
</property>
</widget>
<widget row="0" column="1" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>channel1</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>1</string>
</property>
</widget>
@@ -543,268 +567,292 @@
<property stdset="1">
<name>name</name>
<cstring>channel14</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>14</string>
</property>
</widget>
</grid>
</widget>
</vbox>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>Capture</string>
</attribute>
<grid>
<property stdset="1">
<name>margin</name>
<number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget row="2" column="0" rowspan="1" colspan="3" >
<class>ProtocolListView</class>
<property stdset="1">
<name>name</name>
<cstring>capturePackets</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>7</vsizetype>
</sizepolicy>
</property>
</widget>
<widget row="1" column="0" rowspan="1" colspan="3" >
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>captureFileName</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>text</name>
<string>/tmp/capture</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Configure the name of the capture file.</string>
+ </property>
</widget>
<widget row="0" column="2" >
<class>QToolButton</class>
<property stdset="1">
<name>name</name>
<cstring>getCaptureFileName</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>text</name>
<string>Browse</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Click to open a file requester to choose a capture file name.</string>
+ </property>
</widget>
<spacer row="0" column="1" >
<property>
<name>name</name>
<cstring>Spacer2</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Horizontal</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget row="0" column="0" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>writeCaptureFile</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>text</name>
<string>Write Capture Files To</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this to write an ethereal compatible capture file.</string>
+ </property>
</widget>
</grid>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>Parse</string>
</attribute>
<grid>
<property stdset="1">
<name>margin</name>
<number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget row="0" column="0" >
<class>ProtocolListView</class>
<property stdset="1">
<name>name</name>
<cstring>parsePackets</cstring>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>7</vsizetype>
</sizepolicy>
</property>
</widget>
</grid>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>UI</string>
</attribute>
<vbox>
<property stdset="1">
<name>margin</name>
<number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>3</number>
</property>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>lookupVendor</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Lookup MAC vendor names</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this to lookup MAC vendor names.</string>
+ </property>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>openTree</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Open Tree On New Station</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this to automatically make a tree visible when a new station is detected.</string>
+ </property>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>disablePM</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Disable Power Management</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this to disable power management while scanning.</string>
+ </property>
</widget>
<spacer>
<property>
<name>name</name>
<cstring>Spacer3</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Vertical</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
<widget>
<class>QGroupBox</class>
<property stdset="1">
<name>name</name>
<cstring>GroupBox4_2</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>title</name>
<string>Action on detecting a new</string>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>3</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>0</number>
</property>
<widget row="0" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout6</cstring>
</property>
<property>
<name>layoutMargin</name>
</property>
<property>
<name>layoutSpacing</name>
</property>
<grid>
@@ -820,264 +868,288 @@
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel3</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Wired Station:</string>
</property>
</widget>
<widget row="0" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1_3</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Network:</string>
</property>
</widget>
<widget row="2" column="1" >
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>&lt;Ignore&gt;</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Alarm</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Click</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Blink LED</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Run Script</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>newClientAction</cstring>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Choose an action to perform when a new wireless station is detected.</string>
+ </property>
</widget>
<widget row="3" column="0" rowspan="1" colspan="2" >
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>newClientScript</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>The command line to execute when a script action is performed.</string>
+ </property>
</widget>
<widget row="2" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel2</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Wireless Station:</string>
</property>
</widget>
<widget row="4" column="1" >
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>&lt;Ignore&gt;</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Alarm</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Click</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Blink LED</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Run Script</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>newStationAction</cstring>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Choose the action to perform when a new wired station is detected.</string>
+ </property>
</widget>
<widget row="0" column="1" >
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>&lt;Ignore&gt;</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Alarm</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Play Click</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Blink LED</string>
</property>
</item>
<item>
<property>
<name>text</name>
<string>Run Script</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>newNetworkAction</cstring>
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>editable</name>
<bool>false</bool>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Choose an action to perform when a new network is detected.</string>
+ </property>
</widget>
<widget row="1" column="0" rowspan="1" colspan="2" >
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>newNetworkScript</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>The command line to execute when a script action is performed.</string>
+ </property>
</widget>
<widget row="5" column="0" rowspan="1" colspan="2" >
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>newStationScript</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>true</bool>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Choose an action to perform when a new wireless station is detected.</string>
+ </property>
</widget>
</grid>
</widget>
</grid>
</widget>
</vbox>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>Intrusion</string>
</attribute>
<grid>
<property stdset="1">
<name>margin</name>
<number>6</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget row="1" column="0" >
<class>QGroupBox</class>
<property stdset="1">
<name>name</name>
<cstring>GroupBox3</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>title</name>
<string>Link Level</string>
</property>
<grid>
<property stdset="1">
<name>margin</name>
<number>11</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget row="0" column="0" >
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1_5</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Fake Mac:</string>
</property>
</widget>
<widget row="1" column="0" rowspan="1" colspan="2" >
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
@@ -1220,241 +1292,261 @@
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<hsizetype>7</hsizetype>
<vsizetype>0</vsizetype>
</sizepolicy>
</property>
<property stdset="1">
<name>editable</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>currentItem</name>
<number>0</number>
</property>
</widget>
</grid>
</widget>
</grid>
</widget>
<widget>
<class>QWidget</class>
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<attribute>
<name>title</name>
<string>GPS</string>
</attribute>
<grid>
<property stdset="1">
<name>margin</name>
<number>5</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>4</number>
</property>
<widget row="0" column="0" >
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout6</cstring>
</property>
<vbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>enableGPS</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Enable GPS logging w/ gpsd</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check this to log GPS coordinates.</string>
+ </property>
</widget>
<widget>
<class>QLayoutWidget</class>
<property stdset="1">
<name>name</name>
<cstring>Layout1</cstring>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
<number>0</number>
</property>
<property stdset="1">
<name>spacing</name>
<number>6</number>
</property>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel1_4</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Host</string>
</property>
</widget>
<widget>
<class>QComboBox</class>
<item>
<property>
<name>text</name>
<string>localhost</string>
</property>
</item>
<property stdset="1">
<name>name</name>
<cstring>gpsdHost</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>editable</name>
<bool>true</bool>
</property>
<property stdset="1">
<name>currentItem</name>
<number>0</number>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Hostadress where the gps daemon listens on.</string>
+ </property>
</widget>
<widget>
<class>QLabel</class>
<property stdset="1">
<name>name</name>
<cstring>TextLabel2_2</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>:</string>
</property>
</widget>
<widget>
<class>QSpinBox</class>
<property stdset="1">
<name>name</name>
<cstring>gpsdPort</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>maxValue</name>
<number>65535</number>
</property>
<property stdset="1">
<name>minValue</name>
<number>1024</number>
</property>
<property stdset="1">
<name>value</name>
<number>2947</number>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Port number where the gps daemon listens on.</string>
+ </property>
</widget>
</hbox>
</widget>
<widget>
<class>QCheckBox</class>
<property stdset="1">
<name>name</name>
<cstring>startGPS</cstring>
</property>
<property stdset="1">
<name>text</name>
<string>Start gpsd on localhost</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Check to start the GPS daemon on localhost.</string>
+ </property>
</widget>
<widget>
<class>QLineEdit</class>
<property stdset="1">
<name>name</name>
<cstring>commandGPS</cstring>
</property>
<property stdset="1">
<name>enabled</name>
<bool>false</bool>
</property>
<property stdset="1">
<name>text</name>
<string>gpsd -p /dev/ttyS3 -s 4800</string>
</property>
+ <property>
+ <name>whatsThis</name>
+ <string>Command line to start the gps daemon.</string>
+ </property>
</widget>
<spacer>
<property>
<name>name</name>
<cstring>Spacer4_2</cstring>
</property>
<property stdset="1">
<name>orientation</name>
<enum>Vertical</enum>
</property>
<property stdset="1">
<name>sizeType</name>
<enum>Expanding</enum>
</property>
<property>
<name>sizeHint</name>
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
</grid>
</widget>
</widget>
</grid>
</widget>
<customwidgets>
<customwidget>
<class>ProtocolListView</class>
<header location="local">protolistview.h</header>
<sizehint>
<width>100</width>
<height>100</height>
</sizehint>
<container>0</container>
<sizepolicy>
<hordata>3</hordata>
<verdata>3</verdata>
</sizepolicy>
<pixmap>image0</pixmap>
</customwidget>
</customwidgets>
<images>
<image>
<name>image0</name>
<data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
</image>
</images>
<connections>
<connection>
<sender>hopChannels</sender>
<signal>toggled(bool)</signal>
<receiver>hopInterval</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
<sender>hopChannels</sender>
<signal>toggled(bool)</signal>
<receiver>TextLabel1</receiver>
<slot>setEnabled(bool)</slot>
</connection>
diff --git a/noncore/net/wellenreiter/gui/configwindow.cpp b/noncore/net/wellenreiter/gui/configwindow.cpp
index 48fe89c..95b03d0 100644
--- a/noncore/net/wellenreiter/gui/configwindow.cpp
+++ b/noncore/net/wellenreiter/gui/configwindow.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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"
/* OPIE */
#include <opie2/onetwork.h>
#ifdef QWS
#include <opie2/oapplication.h>
#include <opie2/oconfig.h>
#include <opie2/odevice.h>
using namespace Opie;
#endif
/* 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 <qtabwidget.h>
#include <qtoolbutton.h>
#include <qspinbox.h>
#include <qtextstream.h>
/* POSIX */
#include <assert.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;
}
load();
diff --git a/noncore/net/wellenreiter/gui/configwindow.h b/noncore/net/wellenreiter/gui/configwindow.h
index d31d1e8..0a5b3bd 100644
--- a/noncore/net/wellenreiter/gui/configwindow.h
+++ b/noncore/net/wellenreiter/gui/configwindow.h
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 "gps.h"
/* QT */
#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 );
~WellenreiterConfigWindow();
int driverType() const;
const QString soundOnNetwork() const { return "";/*netSound->currentText();*/ };
const QString soundOnBeacon() const { return "";/*beaconSound->currentText();*/ };
static WellenreiterConfigWindow* instance() { return _instance; };
int hoppingInterval() const;
bool usePrismHeader() const;
bool isChannelChecked( int ) const;
bool useGPS() const;
const QString gpsHost() const;
int gpsPort() const;
void save();
void load();
public slots:
void changedDeviceType(int);
void changedNetworkAction(int t);
void changedClientAction(int t);
void changedStationAction(int t);
void getCaptureFileNameClicked();
void performAutodetection();
void channelAllClicked(int);
diff --git a/noncore/net/wellenreiter/gui/gps.cpp b/noncore/net/wellenreiter/gui/gps.cpp
index b845aa1..a47b4ec 100644
--- a/noncore/net/wellenreiter/gui/gps.cpp
+++ b/noncore/net/wellenreiter/gui/gps.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
** Copyright (C) 2003 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "gps.h"
/* QT */
#include <qtextstream.h>
/* STD */
#include <stdlib.h>
#include <unistd.h>
GPS::GPS( QObject* parent, const char * name )
:QObject( parent, name )
{
qDebug( "GPS::GPS()" );
_socket = new QSocket( this, "gpsd commsock" );
}
GPS::~GPS()
{
qDebug( "GPS::~GPS()" );
}
bool GPS::open( const QString& host, int port )
{
_socket->connectToHost( host, port );
}
GpsLocation GPS::position() const
{
char buf[256];
double lat = -111.0;
double lon = -111.0;
int result = _socket->writeBlock( "p\r\n", 3 );
_socket->flush();
if ( result )
{
int numAvail = _socket->bytesAvailable();
qDebug( "GPS write succeeded, %d bytes available for reading...", numAvail );
if ( numAvail )
{
int numRead = _socket->readBlock( &buf[0], sizeof buf );
int numScan = ::sscanf( &buf[0], "GPSD,P=%lg %lg", &lat, &lon);
if ( numRead < 7 || numScan != 2 )
{
qDebug( "GPS read %d bytes succeeded, invalid response: '%s'", numRead, &buf[0] );
return GpsLocation( -111, -111 );
}
else
{
diff --git a/noncore/net/wellenreiter/gui/gps.h b/noncore/net/wellenreiter/gui/gps.h
index cfe1cdb..5629fec 100644
--- a/noncore/net/wellenreiter/gui/gps.h
+++ b/noncore/net/wellenreiter/gui/gps.h
@@ -1,51 +1,51 @@
/**********************************************************************
** Copyright (C) 2003 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 GPS_H
#define GPS_H
#include <qobject.h>
#include <qsocket.h>
class GpsLocation
{
public:
GpsLocation( const float& lat, const float& lon ) : _latitude(lat), _longitude(lon) {};
~GpsLocation() {};
float latitude() const { return _latitude; };
float longitude() const { return _longitude; };
QString dmsPosition() const;
private:
float _latitude;
float _longitude;
};
class GPS : public QObject
{
Q_OBJECT
public:
GPS( QObject* parent = 0, const char * name = "GPS" );
~GPS();
bool open( const QString& host = "localhost", int port = 2947 );
GpsLocation position() const;
private:
QSocket* _socket;
};
#endif // GPS_H
diff --git a/noncore/net/wellenreiter/gui/graphwindow.cpp b/noncore/net/wellenreiter/gui/graphwindow.cpp
index b116b91..b4174d3 100644
--- a/noncore/net/wellenreiter/gui/graphwindow.cpp
+++ b/noncore/net/wellenreiter/gui/graphwindow.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "graphwindow.h"
#include <qpainter.h>
#include <qpixmap.h>
#include <qtimer.h>
MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const char* name, WFlags f)
:QWidget( parent, name,f ), _channels( channels )
{
_values = new int[_channels];
_dirty = new bool[_channels];
for ( int i = 0; i < channels; ++i )
{ _values[i] = 0;
_dirty[i] = true;
}
// we draw everything on our own
setBackgroundMode( QWidget::NoBackground );
}
void MFrequencySpectrum::drawTopLine( QPainter* p, int x, int y, int width, const QColor& c )
{
p->setPen( c.light() );
p->drawLine( x, y, x+width-1, y );
}
void MFrequencySpectrum::drawBottomLine( QPainter* p, int x, int y, int width, const QColor& c )
{
p->setPen( c.dark() );
p->drawLine( x, y, x+width-1, y );
}
void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c )
{
p->setPen( c.light() );
p->drawPoint( x++, y );
p->setPen( c );
p->drawLine( x, y, x+width-2, y );
p->setPen( c.dark() );
p->drawPoint( x+width-1, y );
}
void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight )
{
int h1 = 133; int h2 = 0;
int s1 = 200; int s2 = 255;
int v1 = 140; int v2 = 255;
/*int h1 = 196; int h2 = 194;
diff --git a/noncore/net/wellenreiter/gui/graphwindow.h b/noncore/net/wellenreiter/gui/graphwindow.h
index 1e00ae7..fafcab1 100644
--- a/noncore/net/wellenreiter/gui/graphwindow.h
+++ b/noncore/net/wellenreiter/gui/graphwindow.h
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 GRAPHWINDOW_H
#define GRAPHWINDOW_H
#include <qwidget.h>
#include <qvbox.h>
class MFrequencySpectrum : public QWidget
{
public:
MFrequencySpectrum( int channels, QWidget* parent = 0, const char* name = "MFrequencySpectrum", WFlags f = 0 );
int value( int channel ) const { return _values[channel]; };
void setValue( int channel, int value )
{
if ( value > _values[channel] )
{
_values[channel] = value;
_dirty[channel] = true;
}
};
void decrease( int channel, int amount )
{
if ( _values[channel] >= amount )
{
_values[channel] -= amount;
_dirty[channel] = true;
}
};
protected:
virtual void paintEvent( QPaintEvent* );
virtual void mousePressEvent( QMouseEvent* );
void drawLine( QPainter* p, int x, int y, int width, const QColor& c );
void drawTopLine( QPainter* p, int x, int y, int width, const QColor& c );
void drawBottomLine( QPainter* p, int x, int y, int width, const QColor& c );
void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight );
private:
int _channels;
int* _values;
bool* _dirty;
};
class Legende : public QFrame
{
public:
Legende( int channels, QWidget* parent = 0, const char* name = "Legende", WFlags f = 0 );
protected:
virtual void drawContents( QPainter* );
private:
diff --git a/noncore/net/wellenreiter/gui/gui.pro b/noncore/net/wellenreiter/gui/gui.pro
index 7957d4c..cfb9873 100644
--- a/noncore/net/wellenreiter/gui/gui.pro
+++ b/noncore/net/wellenreiter/gui/gui.pro
@@ -1,47 +1,49 @@
DESTDIR = $(OPIEDIR)/bin
TEMPLATE = app
CONFIG = qt warn_on debug
HEADERS = wellenreiterbase.h \
mainwindow.h \
wellenreiter.h \
scanlist.h \
logwindow.h \
hexwindow.h \
statwindow.h \
configwindow.h \
graphwindow.h \
+ packetview.h \
protolistview.h \
gps.h
SOURCES = main.cpp \
mainwindow.cpp \
wellenreiterbase.cpp \
wellenreiter.cpp \
scanlist.cpp \
logwindow.cpp \
hexwindow.cpp \
statwindow.cpp \
configwindow.cpp \
graphwindow.cpp \
+ packetview.cpp \
protolistview.cpp \
gps.cpp
INCLUDEPATH += $(OPIEDIR)/include
DEPENDPATH += $(OPIEDIR)/include
INTERFACES = configbase.ui
TARGET = wellenreiter
!contains( platform, x11 ) {
message( qws )
include ( $(OPIEDIR)/include.pro )
LIBS += -lqpe -lopiecore2 -lopieui2 -lopienet2
}
contains( platform, x11 ) {
LIBS += -L$(OPIEDIR)/output/lib -Wl,-rpath,$(OPIEDIR)/output/lib -Wl,-rpath,/usr/local/lib -lwellenreiter
SOURCES += resource.cpp
HEADERS += resource.h
DESTDIR = $(OPIEDIR)/output/bin
}
diff --git a/noncore/net/wellenreiter/gui/hexwindow.cpp b/noncore/net/wellenreiter/gui/hexwindow.cpp
index 2f011ca..cbf3217 100644
--- a/noncore/net/wellenreiter/gui/hexwindow.cpp
+++ b/noncore/net/wellenreiter/gui/hexwindow.cpp
@@ -1,44 +1,44 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "hexwindow.h"
#include <qmultilineedit.h>
MHexWindow::MHexWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
ledit = new QMultiLineEdit( this );
ledit->setFont( QFont( "fixed", 10 ) );
ledit->setReadOnly( true );
};
void MHexWindow::log( const QString& text )
{
int col;
int row;
ledit->getCursorPosition( &col, &row );
ledit->insertAt( text, col, row );
};
const QString MHexWindow::getLog() const
{
return ledit->text();
}
void MHexWindow::clear()
{
ledit->clear();
}
diff --git a/noncore/net/wellenreiter/gui/hexwindow.h b/noncore/net/wellenreiter/gui/hexwindow.h
index 3d4ec0f..71c6f25 100644
--- a/noncore/net/wellenreiter/gui/hexwindow.h
+++ b/noncore/net/wellenreiter/gui/hexwindow.h
@@ -1,40 +1,40 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 HEXWINDOW_H
#define HEXWINDOW_H
#include <qvbox.h>
class QString;
class QMultiLineEdit;
class MHexWindow: public QVBox
{
public:
MHexWindow( QWidget * parent = 0, const char * name = "MHexWindow", WFlags f = 0 );
void log( const QString& text );
const QString getLog() const;
void clear();
protected:
QMultiLineEdit* ledit;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/logwindow.cpp b/noncore/net/wellenreiter/gui/logwindow.cpp
index 6078fa2..1c72cf4 100644
--- a/noncore/net/wellenreiter/gui/logwindow.cpp
+++ b/noncore/net/wellenreiter/gui/logwindow.cpp
@@ -1,54 +1,54 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "logwindow.h"
#include <qmultilineedit.h>
#include <qdatetime.h>
MLogWindow* MLogWindow::_instance;
MLogWindow::MLogWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
ledit = new QMultiLineEdit( this );
ledit->setReadOnly( true );
MLogWindow::_instance = this;
}
void MLogWindow::log( QString text )
{
QTime time = QTime::currentTime();
QString line;
line.sprintf( "[%s] %s\n", (const char*) time.toString(), (const char*) text );
int col;
int row;
ledit->getCursorPosition( &col, &row );
ledit->insertAt( line, col, row );
qDebug( line );
}
void MLogWindow::clear()
{
ledit->clear();
}
const QString MLogWindow::getLog() const
{
return ledit->text();
}
diff --git a/noncore/net/wellenreiter/gui/logwindow.h b/noncore/net/wellenreiter/gui/logwindow.h
index da8c274..7877003 100644
--- a/noncore/net/wellenreiter/gui/logwindow.h
+++ b/noncore/net/wellenreiter/gui/logwindow.h
@@ -1,45 +1,45 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 LOGWINDOW_H
#define LOGWINDOW_H
#include <qvbox.h>
class QString;
class QMultiLineEdit;
class MLogWindow: public QVBox
{
public:
MLogWindow( QWidget * parent = 0, const char * name = "MLogWindow", WFlags f = 0 );
void log( QString text );
const QString getLog() const;
void clear();
static MLogWindow* logwindow() { return MLogWindow::_instance; };
protected:
QMultiLineEdit* ledit;
private:
static MLogWindow* _instance;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/main.cpp b/noncore/net/wellenreiter/gui/main.cpp
index 8ef62e9..be7a528 100644
--- a/noncore/net/wellenreiter/gui/main.cpp
+++ b/noncore/net/wellenreiter/gui/main.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "mainwindow.h"
#ifdef QWS
#include <opie2/oapplication.h>
#include <opie2/oprocess.h>
#else
#include <qapplication.h>
#endif
#include <qmessagebox.h>
#include <qstringlist.h>
#include <errno.h>
#include <signal.h>
#include <string.h>
#include <unistd.h>
int main( int argc, char **argv )
{
#ifdef QWS
OApplication a( argc, argv, "Wellenreiter II" );
#else
QApplication a( argc, argv );
#endif
WellenreiterMainWindow* w = new WellenreiterMainWindow();
#ifdef QWS
a.showMainWidget( w );
#else
a.setMainWidget( w );
w->setCaption( "Wellenreiter II" );
w->show();
#endif
a.processEvents(); // show the window before doing the safety checks
int result = -1;
static int killed = false;
bool check = true;
for ( int i = 1; i < argc; ++i )
{
if ( !strcmp( "-nocheck", argv[i] ) )
{
qDebug( "-nocheck found" );
check = false;
break;
}
}
if ( check )
{
// root check
if ( getuid() )
{
qWarning( QObject::tr( "Wellenreiter: trying to run as non-root!" ) );
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp
index 95a8294..6f57a7f 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.cpp
+++ b/noncore/net/wellenreiter/gui/mainwindow.cpp
@@ -1,207 +1,215 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "configwindow.h"
#include "gps.h"
#include "logwindow.h"
#include "hexwindow.h"
#include "mainwindow.h"
#include "wellenreiter.h"
#include "scanlist.h"
#include <qcombobox.h>
#include <qdatastream.h>
#include <qfile.h>
#include <qfileinfo.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qiconset.h>
#include <qmenubar.h>
#include <qmessagebox.h>
#include <qpopupmenu.h>
#include <qpushbutton.h>
#include <qstatusbar.h>
#include <qspinbox.h>
#include <qtextstream.h>
#include <qtoolbutton.h>
+#include <qwhatsthis.h>
#ifdef QWS
#include <qpe/resource.h>
#include <opie2/ofiledialog.h>
using namespace Opie;
#else
#include "resource.h"
#include <qapplication.h>
#include <qfiledialog.h>
#endif
#include <unistd.h>
WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * name, WFlags f )
:QMainWindow( parent, name, f )
{
cw = new WellenreiterConfigWindow( this );
mw = new Wellenreiter( this );
mw->setConfigWindow( cw );
setCentralWidget( mw );
// setup application icon
- #ifndef QWS
setIcon( Resource::loadPixmap( "wellenreiter/appicon-trans" ) );
+ #ifndef QWS
setIconText( "Wellenreiter/X11" );
#endif
// setup tool buttons
startButton = new QToolButton( 0 );
+ QWhatsThis::add( startButton, tr( "Click here to start scanning." ) );
#ifdef QWS
startButton->setAutoRaise( true );
#endif
startButton->setIconSet( Resource::loadIconSet( "wellenreiter/SearchIcon" ) );
startButton->setEnabled( false );
connect( startButton, SIGNAL( clicked() ), mw, SLOT( startClicked() ) );
stopButton = new QToolButton( 0 );
+ QWhatsThis::add( stopButton, tr( "Click here to stop scanning." ) );
#ifdef QWS
stopButton->setAutoRaise( true );
#endif
stopButton->setIconSet( Resource::loadIconSet( "wellenreiter/CancelIcon" ) );
stopButton->setEnabled( false );
connect( stopButton, SIGNAL( clicked() ), mw, SLOT( stopClicked() ) );
QToolButton* d = new QToolButton( 0 );
+ QWhatsThis::add( d, tr( "Click here to open the configure dialog." ) ),
#ifdef QWS
d->setAutoRaise( true );
#endif
d->setIconSet( Resource::loadIconSet( "wellenreiter/SettingsIcon" ) );
connect( d, SIGNAL( clicked() ), this, SLOT( showConfigure() ) );
uploadButton = new QToolButton( 0 );
+ QWhatsThis::add( uploadButton, tr( "Click here to upload a capture session." ) );
#ifdef QWS
uploadButton->setAutoRaise( true );
#endif
uploadButton->setIconSet( Resource::loadIconSet( "up" ) );
uploadButton->setEnabled( false );
//uploadButton->setEnabled( true ); // DEBUGGING
connect( uploadButton, SIGNAL( clicked() ), this, SLOT( uploadSession() ) );
// setup menu bar
int id;
QMenuBar* mb = menuBar();
QPopupMenu* fileSave = new QPopupMenu( mb );
fileSave->insertItem( tr( "&Session..." ), this, SLOT( fileSaveSession() ) );
fileSave->insertItem( tr( "&Text Log..." ), this, SLOT( fileSaveLog() ) );
fileSave->insertItem( tr( "&Hex Log..." ), this, SLOT( fileSaveHex() ) );
QPopupMenu* fileLoad = new QPopupMenu( mb );
fileLoad->insertItem( tr( "&Session..." ), this, SLOT( fileLoadSession() ) );
//fileLoad->insertItem( "&Log", this, SLOT( fileLoadLog() ) );
QPopupMenu* file = new QPopupMenu( mb );
file->insertItem( tr( "&New" ), this, SLOT( fileNew() ) );
id = file->insertItem( tr( "&Load" ), fileLoad );
file->insertItem( tr( "&Save" ), fileSave );
file->insertSeparator();
uploadID = file->insertItem( tr( "&Upload Session" ), this, SLOT( uploadSession() ) );
file->insertSeparator();
file->insertItem( tr( "&Exit" ), qApp, SLOT( quit() ) );
- QPopupMenu* view = new QPopupMenu( mb );
- view->insertItem( tr( "&Configure..." ) );
-
QPopupMenu* sniffer = new QPopupMenu( mb );
sniffer->insertItem( tr( "&Configure..." ), this, SLOT( showConfigure() ) );
sniffer->insertSeparator();
startID = sniffer->insertItem( tr( "&Start" ), mw, SLOT( startClicked() ) );
sniffer->setItemEnabled( startID, false );
stopID = sniffer->insertItem( tr( "Sto&p" ), mw, SLOT( stopClicked() ) );
sniffer->setItemEnabled( stopID, false );
+ QPopupMenu* view = new QPopupMenu( mb );
+ view->insertItem( tr( "&Expand All" ), this, SLOT( viewExpandAll() ) );
+ view->insertItem( tr( "&Collapse All" ), this, SLOT( viewCollapseAll() ) );
+
QPopupMenu* demo = new QPopupMenu( mb );
demo->insertItem( tr( "&Add something" ), this, SLOT( demoAddStations() ) );
//demo->insertItem( tr( "&Read from GPSd" ), this, SLOT( demoReadFromGps() ) );
id = mb->insertItem( tr( "&File" ), file );
- //id = mb->insertItem( tr( "&View" ), view );
+
+ id = mb->insertItem( tr( "&View" ), view );
//mb->setItemEnabled( id, false );
+
id = mb->insertItem( tr( "&Sniffer" ), sniffer );
id = mb->insertItem( tr( "&Demo" ), demo );
mb->setItemEnabled( id, true );
mb->setItemEnabled( uploadID, false );
#ifdef QWS
mb->insertItem( startButton );
mb->insertItem( stopButton );
mb->insertItem( uploadButton );
mb->insertItem( d );
#else // Qt3 changed the insertion order. It's now totally random :(
mb->insertItem( d );
mb->insertItem( uploadButton );
mb->insertItem( stopButton );
mb->insertItem( startButton );
#endif
updateToolButtonState();
// setup status bar (for now only on X11)
#ifndef QWS
statusBar()->message( tr( "Ready." ) );
#endif
connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) );
connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) );
};
void WellenreiterMainWindow::showConfigure()
{
qDebug( "show configure..." );
cw->setCaption( tr( "Configure" ) );
int result = QPEApplication::execDialog( cw );
if ( result ) updateToolButtonState();
}
void WellenreiterMainWindow::updateToolButtonState()
{
const QString& interface = cw->interfaceName->currentText();
const int cardtype = cw->driverType();
if ( ( interface != "<select>" ) && ( cardtype != 0 ) )
{
startButton->setEnabled( true );
menuBar()->setItemEnabled( startID, true );
}
else
{
startButton->setEnabled( false );
menuBar()->setItemEnabled( startID, false );
}
}
void WellenreiterMainWindow::changedSniffingState()
{
startButton->setEnabled( !mw->sniffing );
menuBar()->setItemEnabled( startID, !mw->sniffing );
@@ -492,64 +500,74 @@ void WellenreiterMainWindow::uploadSession()
"Content-Disposition: form-data; name=\"Location\"\r\n"
"\r\n"
"%2\r\n"
"-----------------------------97267758015830030481215568065\r\n"
"Content-Disposition: form-data; name=\"Comments\"\r\n"
"\r\n"
"%3\r\n"
"-----------------------------97267758015830030481215568065\r\n"
"Content-Disposition: form-data; name=\"upfile\"; filename=\"%4\"\r\n"
"Content-Type: application/octet-stream\r\n"
"\r\n";
preambel = ""
"\r\n-----------------------------97267758015830030481215568065--\r\n";
content = content.arg( from->text().isEmpty() ? QString( "Anonymous Wellenreiter II User" ) : from->text() );
content = content.arg( location->text().isEmpty() ? QString( "Anonymous Wellenreiter II Location" ) : location->text() );
content = content.arg( comments->text().isEmpty() ? QString( "Anonymous Wellenreiter II Comments" ) : comments->text() );
content = content.arg( mw->captureFileName() );
header = header.arg( QString::number( content.length() + f.size() + preambel.length() ) );
// write header
const char* ascii = header.latin1();
uint ascii_len = ::strlen( ascii );
::write ( sock, ascii, ascii_len );
// write fixed content
ascii = content.latin1();
ascii_len = ::strlen( ascii );
::write ( sock, ascii, ascii_len );
// write variable content
char ch;
while ( !f.atEnd() )
{
f.readBlock( &ch, 1 );
::write ( sock, &ch, 1 );
}
// write preambel
ascii = preambel.latin1();
ascii_len = ::strlen( ascii );
::write ( sock, ascii, ascii_len );
// done!
ok = true;
}
}
::close ( sock );
}
if ( ok )
QMessageBox::information( 0, tr( "Success" ),
QString ( "<p>%1</p>" ).arg( tr( "Capture Dump was uploaded to %1" ) ).arg( CAP_hostname ) );
else
QMessageBox::warning( 0, tr( "Error" ),
QString ( "<p>%1</p>" ).arg ( tr( "Connection to %1 failed" ) ).arg( CAP_hostname ) );
}
+
+void WellenreiterMainWindow::viewExpandAll()
+{
+ mw->netView()->expand();
+}
+
+void WellenreiterMainWindow::viewCollapseAll()
+{
+ mw->netView()->collapse();
+}
diff --git a/noncore/net/wellenreiter/gui/mainwindow.h b/noncore/net/wellenreiter/gui/mainwindow.h
index a5cb7a5..9593241 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.h
+++ b/noncore/net/wellenreiter/gui/mainwindow.h
@@ -1,63 +1,66 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 MAINWINDOW_H
#define MAINWINDOW_H
#include <qmainwindow.h>
class Wellenreiter;
class WellenreiterConfigWindow;
class QIconSet;
class QToolButton;
class WellenreiterMainWindow: public QMainWindow
{
Q_OBJECT
public:
WellenreiterMainWindow( QWidget * parent = 0, const char * name = "mainwindow", WFlags f = 0 );
~WellenreiterMainWindow();
QString getFileName( bool save );
protected:
Wellenreiter* mw;
WellenreiterConfigWindow* cw;
QToolButton* startButton;
QToolButton* stopButton;
QToolButton* uploadButton;
int startID;
int stopID;
int uploadID;
protected:
virtual void closeEvent( QCloseEvent* );
void updateToolButtonState();
public slots:
void showConfigure();
void demoAddStations();
void demoReadFromGps();
void fileSaveLog();
void fileSaveHex();
void fileSaveSession();
void fileLoadSession();
void fileNew();
void uploadSession();
void changedSniffingState();
+
+ void viewExpandAll();
+ void viewCollapseAll();
};
#endif
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp
index ed22bdd..635e174 100644
--- a/noncore/net/wellenreiter/gui/protolistview.cpp
+++ b/noncore/net/wellenreiter/gui/protolistview.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 "protolistview.h"
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qvbox.h>
#include <qlabel.h>
ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f )
:QScrollView( parent, name, f )
{
parse = ( QString( "parsePackets" ) == QString( name ) );
setMargins( 3, 3, 0, 0 );
viewport()->setBackgroundColor( QCheckBox(0).palette().color( QPalette::Active, QColorGroup::Background ) );
vbox = new QVBox( viewport() );
vbox->setSpacing( 1 );
addChild( vbox );
QHBox* hbox = new QHBox( vbox );
hbox->setSpacing( 40 );
new QLabel( tr( "Protocol Family" ), hbox );
new QLabel( tr( "Perform Action" ), hbox );
QFrame* frame = new QFrame( vbox );
frame->setFrameStyle( QFrame::HLine + QFrame::Sunken );
//TODO: hardcoded for now...a protocol database would be nice!?
//addProtocol( "Ethernet" );
addProtocol( "Prism" );
//addProtocol( "802.11" );
addProtocol( "802.11 Management" );
addProtocol( "802.11 SSID" );
addProtocol( "802.11 Rates" );
addProtocol( "802.11 CF" );
addProtocol( "802.11 FH" );
addProtocol( "802.11 DS" );
addProtocol( "802.11 Tim" );
addProtocol( "802.11 IBSS" );
addProtocol( "802.11 Challenge" );
addProtocol( "802.11 Data" );
addProtocol( "802.11 LLC" );
addProtocol( "802.11 Data" );
addProtocol( "IP" );
addProtocol( "ARP" );
addProtocol( "UDP" );
addProtocol( "TCP" );
}
ProtocolListView::~ProtocolListView()
{
diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h
index 8b460cb..11f4375 100644
--- a/noncore/net/wellenreiter/gui/protolistview.h
+++ b/noncore/net/wellenreiter/gui/protolistview.h
@@ -1,45 +1,45 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 PROTOLISTVIEW_H
#define PROTOLISTVIEW_H
#include <qscrollview.h>
#include <qdict.h>
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 );
protected:
virtual void addProtocol( const QString& name );
private:
QVBox* vbox;
bool parse;
};
#endif // PROTOLISTVIEW_H
diff --git a/noncore/net/wellenreiter/gui/resource.cpp b/noncore/net/wellenreiter/gui/resource.cpp
index 5e5ddc6..d98ef0b 100644
--- a/noncore/net/wellenreiter/gui/resource.cpp
+++ b/noncore/net/wellenreiter/gui/resource.cpp
@@ -1,49 +1,49 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "resource.h"
#define PIXMAPPATH "/usr/local/share"
#include <qiconset.h>
namespace Resource
{
QPixmap loadPixmap( const QString& pix )
{
QString filename;
filename.sprintf( "%s/%s.png", (const char*) PIXMAPPATH, (const char*) pix );
QPixmap pixmap( filename );
if ( pixmap.isNull() )
{
qDebug( "Wellenreiter::Resource: can't find pixmap " + filename );
}
return pixmap;
};
QIconSet loadIconSet( const QString& pix )
{
QString filename;
filename.sprintf( "%s/%s.png", (const char*) PIXMAPPATH, (const char*) pix );
QPixmap pixmap( filename );
if ( pixmap.isNull() )
{
qDebug( "Wellenreiter::Resource: can't find pixmap " + filename );
}
return QIconSet( pixmap );
};
};
diff --git a/noncore/net/wellenreiter/gui/resource.h b/noncore/net/wellenreiter/gui/resource.h
index 8788c6e..85490b3 100644
--- a/noncore/net/wellenreiter/gui/resource.h
+++ b/noncore/net/wellenreiter/gui/resource.h
@@ -1,30 +1,30 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 RESOURCE_H
#define RESOURCE_H
#include <qstring.h>
class QPixmap;
class QIconSet;
namespace Resource
{
QPixmap loadPixmap( const QString& );
QIconSet loadIconSet( const QString& );
}
#endif // RESOURCE_H
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp
index c75f9b1..6005818 100644
--- a/noncore/net/wellenreiter/gui/scanlist.cpp
+++ b/noncore/net/wellenreiter/gui/scanlist.cpp
@@ -1,116 +1,115 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "scanlist.h"
#include "configwindow.h"
#include "logwindow.h"
#include <assert.h>
#include <qcursor.h>
#include <qdatetime.h>
#include <qpopupmenu.h>
#include <qcheckbox.h>
#ifdef QWS
#include <qpe/qpeapplication.h>
#endif
#ifdef QWS
#include <qpe/resource.h>
#else
#include "resource.h"
#endif
const int col_type = 0;
const int col_essid = 0;
const int col_sig = 1;
const int col_ap = 2;
const int col_channel = 3;
const int col_wep = 4;
const int col_traffic = 5;
const int col_ip = 6;
const int col_manuf = 7;
const int col_firstseen = 8;
const int col_lastseen = 9;
const int col_location = 10;
MScanListView::MScanListView( QWidget* parent, const char* name )
:OListView( parent, name )
{
-
setFrameShape( QListView::StyledPanel );
setFrameShadow( QListView::Sunken );
addColumn( tr( "Net/Station" ) );
setColumnAlignment( col_essid, AlignLeft || AlignVCenter );
addColumn( tr( "#" ) );
setColumnAlignment( col_sig, AlignCenter );
addColumn( tr( "MAC" ) );
setColumnAlignment( col_ap, AlignCenter );
addColumn( tr( "Chn" ) );
setColumnAlignment( col_channel, AlignCenter );
addColumn( tr( "W" ) );
setColumnAlignment( col_wep, AlignCenter );
addColumn( tr( "T" ) );
setColumnAlignment( col_traffic, AlignCenter );
addColumn( tr( "IP" ) );
setColumnAlignment( col_ip, AlignCenter );
addColumn( tr( "Manufacturer" ) );
setColumnAlignment( col_manuf, AlignCenter );
addColumn( tr( "First Seen" ) );
setColumnAlignment( col_firstseen, AlignCenter );
addColumn( tr( "Last Seen" ) );
setColumnAlignment( col_lastseen, AlignCenter );
addColumn( tr( "Location" ) );
setColumnAlignment( col_location, AlignCenter );
setRootIsDecorated( true );
setAllColumnsShowFocus( true );
connect( this, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ),
this, SLOT( contextMenuRequested(QListViewItem*,const QPoint&,int) ) );
#ifdef QWS
QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
#endif
};
MScanListView::~MScanListView()
{
};
OListViewItem* MScanListView::childFactory()
{
return new MScanListItem( this );
}
void MScanListView::serializeTo( QDataStream& s) const
{
qDebug( "serializing MScanListView" );
OListView::serializeTo( s );
}
void MScanListView::serializeFrom( QDataStream& s)
{
qDebug( "serializing MScanListView" );
OListView::serializeFrom( s );
}
void MScanListView::addNewItem( const QString& type,
diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h
index cbacdee..ab870c2 100644
--- a/noncore/net/wellenreiter/gui/scanlist.h
+++ b/noncore/net/wellenreiter/gui/scanlist.h
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 SCANLIST_H
#define SCANLIST_H
#include "gps.h"
/* OPIE */
#include <opie2/olistview.h>
#include <opie2/onetutils.h>
/* QT */
#include <qtextstream.h>
class QString;
class MScanListItem;
class MScanListView: public OListView
{
Q_OBJECT
public:
MScanListView( QWidget* parent = 0, const char* name = 0 );
virtual ~MScanListView();
virtual OListViewItem* childFactory();
virtual void serializeTo( QDataStream& s ) const;
virtual void serializeFrom( QDataStream& s );
public slots:
void addNewItem( const QString& type, const QString&, const OMacAddress&, bool, int, int, const GpsLocation&, bool = false );
void addService( const QString& name, const OMacAddress& macaddr, const QString& ip );
void fromDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
void toDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
void WDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& viaFrom, const OMacAddress& viaTo );
void IBSStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via );
void identify( const OMacAddress&, const QString& ipaddr );
void contextMenuRequested( QListViewItem* item, const QPoint&, int );
signals:
void rightButtonClicked(QListViewItem*,const QPoint&,int);
void joinNetwork( const QString&, const QString&, int, const QString& );
protected:
void addIfNotExisting( MScanListItem* parent, const OMacAddress& addr, const QString& type = "station" );
};
//****************************** MScanListItem ****************************************************************
class MScanListItem: public OListViewItem
{
diff --git a/noncore/net/wellenreiter/gui/statwindow.cpp b/noncore/net/wellenreiter/gui/statwindow.cpp
index a9ae661..48e4847 100644
--- a/noncore/net/wellenreiter/gui/statwindow.cpp
+++ b/noncore/net/wellenreiter/gui/statwindow.cpp
@@ -1,43 +1,43 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
**********************************************************************/
#include "statwindow.h"
#include <opie2/olistview.h>
MStatWindow::MStatWindow( QWidget * parent, const char * name, WFlags f )
:QVBox( parent, name, f )
{
table = new OListView( this );
table->addColumn( tr( "Protocol" ) );
table->addColumn( tr( "Count" ) );
table->setItemMargin( 2 );
};
void MStatWindow::updateCounter( const QString& protocol, int counter )
{
QListViewItemIterator it( table );
for ( ; it.current(); ++it )
{
if ( it.current()->text( 0 ) == protocol )
{
it.current()->setText( 1, QString::number( counter ) );
return;
}
}
new OListViewItem( table, protocol, QString::number( counter ) );
}
diff --git a/noncore/net/wellenreiter/gui/statwindow.h b/noncore/net/wellenreiter/gui/statwindow.h
index 0ab4b50..b9057e7 100644
--- a/noncore/net/wellenreiter/gui/statwindow.h
+++ b/noncore/net/wellenreiter/gui/statwindow.h
@@ -1,43 +1,43 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 STATWINDOW_H
#define STATWINDOW_H
#include <qvbox.h>
class QString;
class OListView;
class MStatWindow: public QVBox
{
Q_OBJECT
public:
MStatWindow( QWidget * parent = 0, const char * name = "MStatWindow", WFlags f = 0 );
void log( QString text );
const QString getLog() const;
void clear();
void updateCounter( const QString&, int );
protected:
OListView* table;
};
#endif
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp
index db68e5b..67e3940 100644
--- a/noncore/net/wellenreiter/gui/wellenreiter.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp
@@ -451,129 +451,137 @@ void Wellenreiter::stopClicked()
iface->setChannelHopping(); // stop hopping channels
}
else
killTimers();
pcap->close();
sniffing = false;
if ( iface )
{
// switch off monitor mode
iface->setMode( "managed" );
// switch off promisc flag
iface->setPromiscuousMode( false );
system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess
}
logwindow->log( "(i) Stopped Scanning." );
assert( parent() );
( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" );
// message the user
QMessageBox::information( this, "Wellenreiter II",
tr( "Your wireless card\nshould now be usable again." ) );
sniffing = false;
emit( stoppedSniffing() );
#ifdef QWS
if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() )
{
QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable;
}
#else
#warning FIXME: setScreenSaverMode is not operational on the X11 build
#endif
// print out statistics
for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it )
statwindow->updateCounter( it.key(), it.data() );
}
void Wellenreiter::startClicked()
{
// get configuration from config window
const QString& interface = configwindow->interfaceName->currentText();
const int cardtype = configwindow->driverType();
const int interval = configwindow->hoppingInterval();
if ( ( interface == "" ) || ( cardtype == 0 ) )
{
QMessageBox::information( this, "Wellenreiter II",
tr( "Your device is not\nproperly configured. Please reconfigure!" ) );
return;
}
// configure device
ONetwork* net = ONetwork::instance();
// TODO: check if interface is wireless and support sniffing for non-wireless interfaces
+ if ( !net->isPresent( interface ) )
+ {
+ QMessageBox::information( this, "Wellenreiter II",
+ tr( "The configured device (%1)\nis not available on this system\n. Please reconfigure!" ).arg( interface ) );
+ return;
+ }
+
iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless!
+ assert( iface );
// bring device UP
if ( cardtype != DEVTYPE_FILE )
{
iface->setUp( true );
if ( !iface->isUp() )
{
QMessageBox::warning( this, "Wellenreiter II",
tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) );
return;
}
}
// set monitor mode
bool usePrism = configwindow->usePrismHeader();
switch ( cardtype )
{
case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break;
case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break;
case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break;
case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break;
case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break;
case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break;
default: assert( 0 ); // shouldn't reach this
}
// switch device into monitor mode
if ( cardtype < DEVTYPE_FILE )
{
if ( cardtype != DEVTYPE_MANUAL )
iface->setMode( "monitor" );
if ( iface->mode() != "monitor" )
{
if ( QMessageBox::warning( this, "Wellenreiter II",
tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) +
tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No )
return;
}
}
// open GPS device
if ( configwindow->enableGPS->isChecked() )
{
qDebug( "Wellenreiter:GPS enabled @ %s:%d", (const char*) configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() );
}
// open pcap and start sniffing
if ( configwindow->writeCaptureFile->isChecked() ) // write to a user specified capture file?
{
dumpname = configwindow->captureFileName->text();
if ( dumpname.isEmpty() ) dumpname = "captureFile";
dumpname.append( '-' );
dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) );
dumpname.append( ".wellenreiter" );
}
else // write it anyway ;)
{
dumpname = "/var/log/dump.wellenreiter";
}
if ( cardtype != DEVTYPE_FILE )
pcap->open( interface );
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
index b8b6730..f57dba2 100644
--- a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
+++ b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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.
**
***********************************************************************/
#include "wellenreiterbase.h"
#include <qlabel.h>
#include <qlayout.h>
#include "logwindow.h"
#include "hexwindow.h"
#include "scanlist.h"
#include "statwindow.h"
#include "graphwindow.h"
#ifdef QWS
#include <qpe/resource.h>
#include <opie2/otabwidget.h>
using namespace Opie;
#else
#include "resource.h"
#include <qtabwidget.h>
#endif
/*
* Constructs a WellenreiterBase which is a child of 'parent', with the
* name 'name' and widget flags set to 'f'
*/
WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags fl )
: QWidget( parent, name, fl )
{
//ani1 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot0" ) );
//ani2 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot90" ) );
//ani3 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot180" ) );
//ani4 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot270" ) );
if ( !name )
setName( "WellenreiterBase" );
resize( 191, 294 );
#ifdef QWS
setCaption( tr( "Wellenreiter/Opie" ) );
#else
setCaption( tr( "Wellenreiter/X11" ) );
#endif
WellenreiterBaseLayout = new QVBoxLayout( this );
WellenreiterBaseLayout->setSpacing( 2 );
WellenreiterBaseLayout->setMargin( 0 );
#ifdef QWS
TabWidget = new OTabWidget( this, "TabWidget", OTabWidget::Global );
#else
TabWidget = new QTabWidget( this, "TabWidget" );
#endif
ap = new QWidget( TabWidget, "ap" );
apLayout = new QVBoxLayout( ap );
apLayout->setSpacing( 2 );
apLayout->setMargin( 2 );
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.h b/noncore/net/wellenreiter/gui/wellenreiterbase.h
index 2cc273e..5e00ddc 100644
--- a/noncore/net/wellenreiter/gui/wellenreiterbase.h
+++ b/noncore/net/wellenreiter/gui/wellenreiterbase.h
@@ -1,68 +1,68 @@
/**********************************************************************
-** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved.
+** Copyright (C) 2002-2004 Michael 'Mickey' Lauer. All rights reserved.
**
-** This file is part of Opie Environment.
+** This file is part of Wellenreiter II.
**
** 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 WELLENREITERBASE_H
#define WELLENREITERBASE_H
#include <qvariant.h>
#include <qwidget.h>
class QVBoxLayout;
class QHBoxLayout;
class QGridLayout;
class QLabel;
class MScanListView;
class MScanListItem;
class QPushButton;
class MLogWindow;
class MHexWindow;
class MStatWindow;
class MGraphWindow;
#ifdef QWS
#include <opie2/otabwidget.h>
using namespace Opie;
#else
class QTabWidget;
#endif
class WellenreiterBase : public QWidget
{
Q_OBJECT
public:
WellenreiterBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
~WellenreiterBase();
#ifdef QWS
OTabWidget* TabWidget;
#else
QTabWidget* TabWidget;
#endif
QWidget* ap;
MScanListView* netview;
MLogWindow* logwindow;
MHexWindow* hexwindow;
MStatWindow* statwindow;
MGraphWindow* graphwindow;
QWidget* about;
QLabel* PixmapLabel1_3_2;
QLabel* TextLabel1_4_2;
protected:
QVBoxLayout* WellenreiterBaseLayout;
QVBoxLayout* apLayout;
QGridLayout* aboutLayout;
bool event( QEvent* );