author | mickeyl <mickeyl> | 2003-05-03 18:26:18 (UTC) |
---|---|---|
committer | mickeyl <mickeyl> | 2003-05-03 18:26:18 (UTC) |
commit | d7b68bdcfad0ee98f755c0b76e720a2e30cd57c6 (patch) (unidiff) | |
tree | a6dfe6bd99116122f1edd486594ff386942d53f1 | |
parent | 998cfb14d533aadd453949ed70d57203a7bfbd0d (diff) | |
download | opie-d7b68bdcfad0ee98f755c0b76e720a2e30cd57c6.zip opie-d7b68bdcfad0ee98f755c0b76e720a2e30cd57c6.tar.gz opie-d7b68bdcfad0ee98f755c0b76e720a2e30cd57c6.tar.bz2 |
start work on graph window
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.cpp | 159 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.h | 118 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/gui.pro | 6 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 7 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiterbase.cpp | 9 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiterbase.h | 2 | ||||
-rw-r--r-- | noncore/net/wellenreiter/opie-wellenreiter.control | 2 |
7 files changed, 299 insertions, 4 deletions
diff --git a/noncore/net/wellenreiter/gui/graphwindow.cpp b/noncore/net/wellenreiter/gui/graphwindow.cpp new file mode 100644 index 0000000..c620fe2 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/graphwindow.cpp | |||
@@ -0,0 +1,159 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Opie Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | **********************************************************************/ | ||
15 | |||
16 | #include "graphwindow.h" | ||
17 | |||
18 | #include <qpainter.h> | ||
19 | #include <qpixmap.h> | ||
20 | #include <qtimer.h> | ||
21 | |||
22 | MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const char* name, WFlags f) | ||
23 | :QWidget( parent, name,f ), _channels( channels ) | ||
24 | { | ||
25 | _values = new int[_channels]; | ||
26 | _dirty = new bool[_channels]; | ||
27 | for ( int i = 0; i < channels; ++i ) | ||
28 | { _values[i] = 0; | ||
29 | _dirty[i] = true; | ||
30 | } | ||
31 | |||
32 | // we draw everything alone | ||
33 | setBackgroundMode( QWidget::NoBackground ); | ||
34 | } | ||
35 | |||
36 | |||
37 | void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c ) | ||
38 | { | ||
39 | p->setPen( c.light() ); | ||
40 | p->drawPoint( x++, y ); | ||
41 | p->setPen( c ); | ||
42 | p->drawLine( x, y, x+width-2, y ); | ||
43 | p->setPen( c.dark() ); | ||
44 | p->drawPoint( x+width-1, y ); | ||
45 | } | ||
46 | |||
47 | |||
48 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ) | ||
49 | { | ||
50 | /* int h1 = 133; int h2 = 0; | ||
51 | int s1 = 200; int s2 = 255; | ||
52 | int v1 = 140; int v2 = 255; */ | ||
53 | |||
54 | int h1 = 196; int h2 = 194; | ||
55 | int s1 = 85; int s2 = 15; | ||
56 | int v1 = 95; int v2 = 237; | ||
57 | |||
58 | QColor c( 120, 60, 200 ); | ||
59 | for ( int i = 0; i < height; ++i ) | ||
60 | { | ||
61 | int h = (h2-h1)*i/maxheight + h1; | ||
62 | int s = (s2-s1)*i/maxheight + s1; | ||
63 | int v = (v2-v1)*i/maxheight + v1; | ||
64 | drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
65 | } | ||
66 | |||
67 | /*for ( int i = height; i < maxheight; ++i ) | ||
68 | drawLine( p, x, y-i, width, QColor( 47, 68, 76 ) );*/ | ||
69 | |||
70 | } | ||
71 | |||
72 | |||
73 | void MFrequencySpectrum::paintEvent( QPaintEvent* e ) | ||
74 | { | ||
75 | QPixmap pm( size() ); | ||
76 | QPainter p; | ||
77 | p.begin( &pm ); | ||
78 | p.drawTiledPixmap( 0, 0, size().width(), size().height(), QPixmap( (const char**) &background ) ); | ||
79 | |||
80 | int xmargin = 5; | ||
81 | int ymargin = 2; | ||
82 | int y = size().height() - 2 * ymargin; | ||
83 | int x = 0; | ||
84 | int width = ( size().width() - 2 * xmargin ) / _channels; | ||
85 | |||
86 | for ( int i = 0; i < _channels; ++i ) | ||
87 | { | ||
88 | if ( _dirty[i] ) | ||
89 | { | ||
90 | drawBar( &p, xmargin + x, y - ymargin, width-3, _values[i]*y/100, y ); | ||
91 | _dirty[i] = false; | ||
92 | } | ||
93 | x+= width; | ||
94 | } | ||
95 | |||
96 | p.end(); | ||
97 | bitBlt( this, 0, 0, &pm ); | ||
98 | } | ||
99 | |||
100 | |||
101 | Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) | ||
102 | :QFrame( parent, name, f ), _channels( channels ) | ||
103 | { | ||
104 | setLineWidth( 2 ); | ||
105 | setFrameStyle( Panel + Sunken ); | ||
106 | setFixedHeight( 16 ); | ||
107 | |||
108 | } | ||
109 | |||
110 | |||
111 | void Legende::drawContents( QPainter* p ) | ||
112 | { | ||
113 | int xmargin = 5; | ||
114 | int ymargin = 2; | ||
115 | int x = 0; | ||
116 | int width = ( contentsRect().width() - 2 * xmargin ) / _channels; | ||
117 | |||
118 | for ( int i = 0; i < _channels; ++i ) | ||
119 | p->drawText( xmargin + (width*i), 12, QString().sprintf( "%02d", i+1 ) ); | ||
120 | } | ||
121 | |||
122 | |||
123 | MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) | ||
124 | :QVBox( parent, name, f ) | ||
125 | { | ||
126 | spectrum = new MFrequencySpectrum( 14, this ); | ||
127 | legende = new Legende( 14, this ); | ||
128 | startTimer( 50 ); | ||
129 | |||
130 | //testGraph(); | ||
131 | |||
132 | }; | ||
133 | |||
134 | |||
135 | void MGraphWindow::testGraph() | ||
136 | { | ||
137 | static int i = 0; | ||
138 | spectrum->setValue( i++, 100 ); | ||
139 | if ( i == 14 ) i = 0; | ||
140 | QTimer::singleShot( 2000, this, SLOT( testGraph() ) ); | ||
141 | |||
142 | } | ||
143 | |||
144 | |||
145 | void MGraphWindow::timerEvent( QTimerEvent* e ) | ||
146 | { | ||
147 | for ( int i = 0; i < 14; i++ ) | ||
148 | { | ||
149 | spectrum->decrease( i, 4 ); | ||
150 | } | ||
151 | spectrum->repaint(); | ||
152 | } | ||
153 | |||
154 | |||
155 | void MGraphWindow::traffic( int channel, int signal ) | ||
156 | { | ||
157 | spectrum->setValue( channel-1, signal ); | ||
158 | } | ||
159 | |||
diff --git a/noncore/net/wellenreiter/gui/graphwindow.h b/noncore/net/wellenreiter/gui/graphwindow.h new file mode 100644 index 0000000..4050065 --- a/dev/null +++ b/noncore/net/wellenreiter/gui/graphwindow.h | |||
@@ -0,0 +1,118 @@ | |||
1 | /********************************************************************** | ||
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | ||
3 | ** | ||
4 | ** This file is part of Opie Environment. | ||
5 | ** | ||
6 | ** This file may be distributed and/or modified under the terms of the | ||
7 | ** GNU General Public License version 2 as published by the Free Software | ||
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | ||
9 | ** packaging of this file. | ||
10 | ** | ||
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | ||
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
13 | ** | ||
14 | **********************************************************************/ | ||
15 | |||
16 | #ifndef GRAPHWINDOW_H | ||
17 | #define GRAPHWINDOW_H | ||
18 | |||
19 | #include <qwidget.h> | ||
20 | #include <qvbox.h> | ||
21 | |||
22 | class MFrequencySpectrum : public QWidget | ||
23 | { | ||
24 | public: | ||
25 | MFrequencySpectrum( int channels, QWidget* parent = 0, const char* name = "MFrequencySpectrum", WFlags f = 0 ); | ||
26 | int value( int channel ) const { return _values[channel]; }; | ||
27 | void setValue( int channel, int value ) | ||
28 | { | ||
29 | if ( value > _values[channel] ) | ||
30 | { | ||
31 | _values[channel] = value; | ||
32 | _dirty[channel] = true; | ||
33 | } | ||
34 | }; | ||
35 | void decrease( int channel, int amount ) | ||
36 | { | ||
37 | if ( _values[channel] >= amount ) | ||
38 | { | ||
39 | _values[channel] -= amount; | ||
40 | _dirty[channel] = true; | ||
41 | } | ||
42 | }; | ||
43 | |||
44 | protected: | ||
45 | virtual void paintEvent( QPaintEvent* ); | ||
46 | |||
47 | void drawLine( QPainter* p, int x, int y, int width, const QColor& c ); | ||
48 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ); | ||
49 | |||
50 | private: | ||
51 | int _channels; | ||
52 | int* _values; | ||
53 | bool* _dirty; | ||
54 | }; | ||
55 | |||
56 | |||
57 | class Legende : public QFrame | ||
58 | { | ||
59 | public: | ||
60 | Legende( int channels, QWidget* parent = 0, const char* name = "Legende", WFlags f = 0 ); | ||
61 | |||
62 | protected: | ||
63 | virtual void drawContents( QPainter* ); | ||
64 | |||
65 | private: | ||
66 | int _channels; | ||
67 | }; | ||
68 | |||
69 | |||
70 | class MGraphWindow : public QVBox | ||
71 | { | ||
72 | Q_OBJECT | ||
73 | |||
74 | public: | ||
75 | MGraphWindow( QWidget* parent = 0, const char* name = "MGraphWindow", WFlags f = 0 ); | ||
76 | void traffic( int channel, int signal ); | ||
77 | |||
78 | protected: | ||
79 | virtual void timerEvent( QTimerEvent* e ); | ||
80 | |||
81 | protected slots: | ||
82 | virtual void testGraph(); | ||
83 | |||
84 | protected: | ||
85 | MFrequencySpectrum* spectrum; | ||
86 | Legende* legende; | ||
87 | |||
88 | }; | ||
89 | |||
90 | /* XPM */ | ||
91 | static char * background[] = { | ||
92 | "16 16 6 1", | ||
93 | " c None", | ||
94 | ".c #52676E", | ||
95 | "+c #3F545B", | ||
96 | "@c #394E56", | ||
97 | "#c #2F454C", | ||
98 | "$c #364B52", | ||
99 | ".+++++++++++++++", | ||
100 | "@###############", | ||
101 | "+$$$$$$$$$$$$$$$", | ||
102 | "@###############", | ||
103 | "+$$$$$$$$$$$$$$$", | ||
104 | "@###############", | ||
105 | "+$$$$$$$$$$$$$$$", | ||
106 | "@###############", | ||
107 | "+$$$$$$$$$$$$$$$", | ||
108 | "@###############", | ||
109 | "+$$$$$$$$$$$$$$$", | ||
110 | "@###############", | ||
111 | "+$$$$$$$$$$$$$$$", | ||
112 | "@###############", | ||
113 | "+$$$$$$$$$$$$$$$", | ||
114 | "@###############"}; | ||
115 | |||
116 | |||
117 | #endif | ||
118 | |||
diff --git a/noncore/net/wellenreiter/gui/gui.pro b/noncore/net/wellenreiter/gui/gui.pro index 476518a..927f4b7 100644 --- a/noncore/net/wellenreiter/gui/gui.pro +++ b/noncore/net/wellenreiter/gui/gui.pro | |||
@@ -1,45 +1,47 @@ | |||
1 | MOC_DIR = ./tmp | 1 | MOC_DIR = ./tmp |
2 | OBJECTS_DIR = ./tmp | 2 | OBJECTS_DIR = ./tmp |
3 | DESTDIR = $(OPIEDIR)/bin | 3 | DESTDIR = $(OPIEDIR)/bin |
4 | TEMPLATE = app | 4 | TEMPLATE = app |
5 | CONFIG = qt warn_on debug | 5 | CONFIG = qt warn_on debug |
6 | 6 | ||
7 | HEADERS = wellenreiterbase.h \ | 7 | HEADERS = wellenreiterbase.h \ |
8 | mainwindow.h \ | 8 | mainwindow.h \ |
9 | wellenreiter.h \ | 9 | wellenreiter.h \ |
10 | scanlist.h \ | 10 | scanlist.h \ |
11 | logwindow.h \ | 11 | logwindow.h \ |
12 | hexwindow.h \ | 12 | hexwindow.h \ |
13 | statwindow.h \ | 13 | statwindow.h \ |
14 | configwindow.h \ | 14 | configwindow.h \ |
15 | manufacturers.h | 15 | manufacturers.h \ |
16 | graphwindow.h | ||
16 | 17 | ||
17 | SOURCES = main.cpp \ | 18 | SOURCES = main.cpp \ |
18 | mainwindow.cpp \ | 19 | mainwindow.cpp \ |
19 | wellenreiterbase.cpp \ | 20 | wellenreiterbase.cpp \ |
20 | wellenreiter.cpp \ | 21 | wellenreiter.cpp \ |
21 | scanlist.cpp \ | 22 | scanlist.cpp \ |
22 | logwindow.cpp \ | 23 | logwindow.cpp \ |
23 | hexwindow.cpp \ | 24 | hexwindow.cpp \ |
24 | statwindow.cpp \ | 25 | statwindow.cpp \ |
25 | configwindow.cpp \ | 26 | configwindow.cpp \ |
26 | manufacturers.cpp | 27 | manufacturers.cpp \ |
28 | graphwindow.cpp | ||
27 | 29 | ||
28 | INCLUDEPATH += $(OPIEDIR)/include | 30 | INCLUDEPATH += $(OPIEDIR)/include |
29 | DEPENDPATH += $(OPIEDIR)/include | 31 | DEPENDPATH += $(OPIEDIR)/include |
30 | INTERFACES = configbase.ui | 32 | INTERFACES = configbase.ui |
31 | TARGET = wellenreiter | 33 | TARGET = wellenreiter |
32 | 34 | ||
33 | !contains( platform, x11 ) { | 35 | !contains( platform, x11 ) { |
34 | message( qws ) | 36 | message( qws ) |
35 | include ( $(OPIEDIR)/include.pro ) | 37 | include ( $(OPIEDIR)/include.pro ) |
36 | LIBS += -lqpe -lopie -lopiecore2 -lopieui2 -lopienet2 -lstdc++ | 38 | LIBS += -lqpe -lopie -lopiecore2 -lopieui2 -lopienet2 -lstdc++ |
37 | } | 39 | } |
38 | 40 | ||
39 | contains( platform, x11 ) { | 41 | contains( platform, x11 ) { |
40 | LIBS += -L$(OPIEDIR)/output/lib -Wl,-rpath,$(OPIEDIR)/output/lib -Wl,-rpath,/usr/local/lib -lwellenreiter | 42 | LIBS += -L$(OPIEDIR)/output/lib -Wl,-rpath,$(OPIEDIR)/output/lib -Wl,-rpath,/usr/local/lib -lwellenreiter |
41 | SOURCES += resource.cpp | 43 | SOURCES += resource.cpp |
42 | HEADERS += resource.h | 44 | HEADERS += resource.h |
43 | DESTDIR = $(OPIEDIR)/output/bin | 45 | DESTDIR = $(OPIEDIR)/output/bin |
44 | } | 46 | } |
45 | 47 | ||
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 4b82c9a..c061319 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -1,382 +1,389 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | 2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Opie Environment. | 4 | ** This file is part of Opie Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ***********************************************************************/ | 14 | ***********************************************************************/ |
15 | 15 | ||
16 | // Opie | 16 | // Opie |
17 | 17 | ||
18 | #ifdef QWS | 18 | #ifdef QWS |
19 | #include <opie/odevice.h> | 19 | #include <opie/odevice.h> |
20 | using namespace Opie; | 20 | using namespace Opie; |
21 | #endif | 21 | #endif |
22 | 22 | ||
23 | #ifdef QWS | 23 | #ifdef QWS |
24 | #include <opie2/oapplication.h> | 24 | #include <opie2/oapplication.h> |
25 | #else | 25 | #else |
26 | #include <qapplication.h> | 26 | #include <qapplication.h> |
27 | #endif | 27 | #endif |
28 | #include <opie2/onetwork.h> | 28 | #include <opie2/onetwork.h> |
29 | #include <opie2/opcap.h> | 29 | #include <opie2/opcap.h> |
30 | 30 | ||
31 | // Qt | 31 | // Qt |
32 | 32 | ||
33 | #include <qcheckbox.h> | 33 | #include <qcheckbox.h> |
34 | #include <qcombobox.h> | 34 | #include <qcombobox.h> |
35 | #include <qdatetime.h> | 35 | #include <qdatetime.h> |
36 | #include <qpushbutton.h> | 36 | #include <qpushbutton.h> |
37 | #include <qlineedit.h> | 37 | #include <qlineedit.h> |
38 | #include <qmessagebox.h> | 38 | #include <qmessagebox.h> |
39 | #include <qregexp.h> | 39 | #include <qregexp.h> |
40 | #include <qspinbox.h> | 40 | #include <qspinbox.h> |
41 | #include <qtoolbutton.h> | 41 | #include <qtoolbutton.h> |
42 | #include <qmainwindow.h> | 42 | #include <qmainwindow.h> |
43 | 43 | ||
44 | // Standard | 44 | // Standard |
45 | 45 | ||
46 | #include <assert.h> | 46 | #include <assert.h> |
47 | #include <errno.h> | 47 | #include <errno.h> |
48 | #include <unistd.h> | 48 | #include <unistd.h> |
49 | #include <string.h> | 49 | #include <string.h> |
50 | #include <sys/types.h> | 50 | #include <sys/types.h> |
51 | #include <stdlib.h> | 51 | #include <stdlib.h> |
52 | 52 | ||
53 | // Local | 53 | // Local |
54 | 54 | ||
55 | #include "wellenreiter.h" | 55 | #include "wellenreiter.h" |
56 | #include "scanlist.h" | 56 | #include "scanlist.h" |
57 | #include "logwindow.h" | 57 | #include "logwindow.h" |
58 | #include "hexwindow.h" | 58 | #include "hexwindow.h" |
59 | #include "configwindow.h" | 59 | #include "configwindow.h" |
60 | #include "statwindow.h" | 60 | #include "statwindow.h" |
61 | #include "graphwindow.h" | ||
61 | #include "manufacturers.h" | 62 | #include "manufacturers.h" |
62 | 63 | ||
63 | Wellenreiter::Wellenreiter( QWidget* parent ) | 64 | Wellenreiter::Wellenreiter( QWidget* parent ) |
64 | : WellenreiterBase( parent, 0, 0 ), | 65 | : WellenreiterBase( parent, 0, 0 ), |
65 | sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 ) | 66 | sniffing( false ), iface( 0 ), manufacturerdb( 0 ), configwindow( 0 ) |
66 | { | 67 | { |
67 | 68 | ||
68 | // | 69 | // |
69 | // construct manufacturer database | 70 | // construct manufacturer database |
70 | // | 71 | // |
71 | 72 | ||
72 | QString manufile; | 73 | QString manufile; |
73 | #ifdef QWS | 74 | #ifdef QWS |
74 | manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() ); | 75 | manufile.sprintf( "%s/share/wellenreiter/manufacturers.dat", (const char*) QPEApplication::qpeDir() ); |
75 | #else | 76 | #else |
76 | manufile.sprintf( "/usr/local/share/wellenreiter/manufacturers.dat" ); | 77 | manufile.sprintf( "/usr/local/share/wellenreiter/manufacturers.dat" ); |
77 | #endif | 78 | #endif |
78 | manufacturerdb = new ManufacturerDB( manufile ); | 79 | manufacturerdb = new ManufacturerDB( manufile ); |
79 | 80 | ||
80 | logwindow->log( "(i) Wellenreiter has been started." ); | 81 | logwindow->log( "(i) Wellenreiter has been started." ); |
81 | 82 | ||
82 | // | 83 | // |
83 | // detect operating system | 84 | // detect operating system |
84 | // | 85 | // |
85 | 86 | ||
86 | #ifdef QWS | 87 | #ifdef QWS |
87 | QString sys; | 88 | QString sys; |
88 | sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); | 89 | sys.sprintf( "(i) Running on '%s'.", (const char*) ODevice::inst()->systemString() ); |
89 | _system = ODevice::inst()->system(); | 90 | _system = ODevice::inst()->system(); |
90 | logwindow->log( sys ); | 91 | logwindow->log( sys ); |
91 | #endif | 92 | #endif |
92 | 93 | ||
93 | // setup GUI | 94 | // setup GUI |
94 | netview->setColumnWidthMode( 1, QListView::Manual ); | 95 | netview->setColumnWidthMode( 1, QListView::Manual ); |
95 | 96 | ||
96 | if ( manufacturerdb ) | 97 | if ( manufacturerdb ) |
97 | netview->setManufacturerDB( manufacturerdb ); | 98 | netview->setManufacturerDB( manufacturerdb ); |
98 | 99 | ||
99 | pcap = new OPacketCapturer(); | 100 | pcap = new OPacketCapturer(); |
100 | 101 | ||
101 | } | 102 | } |
102 | 103 | ||
103 | 104 | ||
104 | Wellenreiter::~Wellenreiter() | 105 | Wellenreiter::~Wellenreiter() |
105 | { | 106 | { |
106 | // no need to delete child widgets, Qt does it all for us | 107 | // no need to delete child widgets, Qt does it all for us |
107 | 108 | ||
108 | delete manufacturerdb; | 109 | delete manufacturerdb; |
109 | delete pcap; | 110 | delete pcap; |
110 | } | 111 | } |
111 | 112 | ||
112 | 113 | ||
113 | void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) | 114 | void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) |
114 | { | 115 | { |
115 | configwindow = cw; | 116 | configwindow = cw; |
116 | } | 117 | } |
117 | 118 | ||
118 | 119 | ||
119 | void Wellenreiter::channelHopped(int c) | 120 | void Wellenreiter::channelHopped(int c) |
120 | { | 121 | { |
121 | QString title = "Wellenreiter II -scan- ["; | 122 | QString title = "Wellenreiter II -scan- ["; |
122 | QString left; | 123 | QString left; |
123 | if ( c > 1 ) left.fill( '.', c-1 ); | 124 | if ( c > 1 ) left.fill( '.', c-1 ); |
124 | title.append( left ); | 125 | title.append( left ); |
125 | title.append( '|' ); | 126 | title.append( '|' ); |
126 | if ( c < iface->channels() ) | 127 | if ( c < iface->channels() ) |
127 | { | 128 | { |
128 | QString right; | 129 | QString right; |
129 | right.fill( '.', iface->channels()-c ); | 130 | right.fill( '.', iface->channels()-c ); |
130 | title.append( right ); | 131 | title.append( right ); |
131 | } | 132 | } |
132 | title.append( "]" ); | 133 | title.append( "]" ); |
133 | //title.append( QString().sprintf( " %02d", c ) ); | 134 | //title.append( QString().sprintf( " %02d", c ) ); |
134 | assert( parent() ); | 135 | assert( parent() ); |
135 | ( (QMainWindow*) parent() )->setCaption( title ); | 136 | ( (QMainWindow*) parent() )->setCaption( title ); |
136 | } | 137 | } |
137 | 138 | ||
138 | 139 | ||
139 | void Wellenreiter::receivePacket(OPacket* p) | 140 | void Wellenreiter::receivePacket(OPacket* p) |
140 | { | 141 | { |
141 | hexWindow()->log( p->dump( 8 ) ); | 142 | hexWindow()->log( p->dump( 8 ) ); |
142 | 143 | ||
143 | // check if we received a beacon frame | 144 | // check if we received a beacon frame |
144 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); | 145 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); |
145 | if ( beacon && beacon->managementType() == "Beacon" ) | 146 | if ( beacon && beacon->managementType() == "Beacon" ) |
146 | { | 147 | { |
147 | QString type; | 148 | QString type; |
148 | if ( beacon->canIBSS() ) | 149 | if ( beacon->canIBSS() ) |
149 | { | 150 | { |
150 | type = "adhoc"; | 151 | type = "adhoc"; |
151 | } | 152 | } |
152 | else if ( beacon->canESS() ) | 153 | else if ( beacon->canESS() ) |
153 | { | 154 | { |
154 | type = "managed"; | 155 | type = "managed"; |
155 | } | 156 | } |
156 | else | 157 | else |
157 | { | 158 | { |
158 | qDebug( "Wellenreiter::invalid frame detected: '%s'", (const char*) p->dump( 16 ) ); | 159 | qDebug( "Wellenreiter::invalid frame detected: '%s'", (const char*) p->dump( 16 ) ); |
159 | return; | 160 | return; |
160 | } | 161 | } |
161 | 162 | ||
162 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); | 163 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); |
163 | QString essid = ssid ? ssid->ID() : QString("<unknown>"); | 164 | QString essid = ssid ? ssid->ID() : QString("<unknown>"); |
164 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); | 165 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); |
165 | int channel = ds ? ds->channel() : -1; | 166 | int channel = ds ? ds->channel() : -1; |
166 | 167 | ||
167 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | 168 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); |
168 | netView()->addNewItem( type, essid, header->macAddress2().toString(), beacon->canPrivacy(), channel, 0 ); | 169 | netView()->addNewItem( type, essid, header->macAddress2().toString(), beacon->canPrivacy(), channel, 0 ); |
170 | |||
171 | // do we have a prism header? | ||
172 | OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) ); | ||
173 | if ( ds && prism ) | ||
174 | graphwindow->traffic( ds->channel(), prism->signalStrength() ); | ||
175 | |||
169 | return; | 176 | return; |
170 | } | 177 | } |
171 | 178 | ||
172 | // check for a data frame | 179 | // check for a data frame |
173 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) ); | 180 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) ); |
174 | if ( data ) | 181 | if ( data ) |
175 | { | 182 | { |
176 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); | 183 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); |
177 | if ( wlan->fromDS() && !wlan->toDS() ) | 184 | if ( wlan->fromDS() && !wlan->toDS() ) |
178 | { | 185 | { |
179 | qDebug( "FromDS traffic: '%s' -> '%s' via '%s'", | 186 | qDebug( "FromDS traffic: '%s' -> '%s' via '%s'", |
180 | (const char*) wlan->macAddress3().toString(true), | 187 | (const char*) wlan->macAddress3().toString(true), |
181 | (const char*) wlan->macAddress1().toString(true), | 188 | (const char*) wlan->macAddress1().toString(true), |
182 | (const char*) wlan->macAddress2().toString(true) ); | 189 | (const char*) wlan->macAddress2().toString(true) ); |
183 | netView()->fromDStraffic( wlan->macAddress3().toString(), | 190 | netView()->fromDStraffic( wlan->macAddress3().toString(), |
184 | wlan->macAddress1().toString(), | 191 | wlan->macAddress1().toString(), |
185 | wlan->macAddress2().toString() ); | 192 | wlan->macAddress2().toString() ); |
186 | } | 193 | } |
187 | else | 194 | else |
188 | if ( !wlan->fromDS() && wlan->toDS() ) | 195 | if ( !wlan->fromDS() && wlan->toDS() ) |
189 | { | 196 | { |
190 | qDebug( "ToDS traffic: '%s' -> '%s' via '%s'", | 197 | qDebug( "ToDS traffic: '%s' -> '%s' via '%s'", |
191 | (const char*) wlan->macAddress2().toString(true), | 198 | (const char*) wlan->macAddress2().toString(true), |
192 | (const char*) wlan->macAddress3().toString(true), | 199 | (const char*) wlan->macAddress3().toString(true), |
193 | (const char*) wlan->macAddress1().toString(true) ); | 200 | (const char*) wlan->macAddress1().toString(true) ); |
194 | netView()->toDStraffic( wlan->macAddress2().toString(), | 201 | netView()->toDStraffic( wlan->macAddress2().toString(), |
195 | wlan->macAddress3().toString(), | 202 | wlan->macAddress3().toString(), |
196 | wlan->macAddress1().toString() ); | 203 | wlan->macAddress1().toString() ); |
197 | } | 204 | } |
198 | else | 205 | else |
199 | if ( wlan->fromDS() && wlan->toDS() ) | 206 | if ( wlan->fromDS() && wlan->toDS() ) |
200 | { | 207 | { |
201 | qDebug( "WDS(bridge) traffic: '%s' -> '%s' via '%s' and '%s'", | 208 | qDebug( "WDS(bridge) traffic: '%s' -> '%s' via '%s' and '%s'", |
202 | (const char*) wlan->macAddress4().toString(true), | 209 | (const char*) wlan->macAddress4().toString(true), |
203 | (const char*) wlan->macAddress3().toString(true), | 210 | (const char*) wlan->macAddress3().toString(true), |
204 | (const char*) wlan->macAddress1().toString(true), | 211 | (const char*) wlan->macAddress1().toString(true), |
205 | (const char*) wlan->macAddress2().toString(true) ); | 212 | (const char*) wlan->macAddress2().toString(true) ); |
206 | netView()->WDStraffic( wlan->macAddress4().toString(), | 213 | netView()->WDStraffic( wlan->macAddress4().toString(), |
207 | wlan->macAddress3().toString(), | 214 | wlan->macAddress3().toString(), |
208 | wlan->macAddress1().toString(), | 215 | wlan->macAddress1().toString(), |
209 | wlan->macAddress2().toString() ); | 216 | wlan->macAddress2().toString() ); |
210 | } | 217 | } |
211 | else | 218 | else |
212 | { | 219 | { |
213 | qDebug( "IBSS(AdHoc) traffic: '%s' -> '%s' (Cell: '%s')'", | 220 | qDebug( "IBSS(AdHoc) traffic: '%s' -> '%s' (Cell: '%s')'", |
214 | (const char*) wlan->macAddress2().toString(true), | 221 | (const char*) wlan->macAddress2().toString(true), |
215 | (const char*) wlan->macAddress1().toString(true), | 222 | (const char*) wlan->macAddress1().toString(true), |
216 | (const char*) wlan->macAddress3().toString(true) ); | 223 | (const char*) wlan->macAddress3().toString(true) ); |
217 | netView()->IBSStraffic( wlan->macAddress2().toString(), | 224 | netView()->IBSStraffic( wlan->macAddress2().toString(), |
218 | wlan->macAddress1().toString(), | 225 | wlan->macAddress1().toString(), |
219 | wlan->macAddress3().toString() ); | 226 | wlan->macAddress3().toString() ); |
220 | } | 227 | } |
221 | return; | 228 | return; |
222 | } | 229 | } |
223 | } | 230 | } |
224 | 231 | ||
225 | 232 | ||
226 | void Wellenreiter::stopClicked() | 233 | void Wellenreiter::stopClicked() |
227 | { | 234 | { |
228 | if ( iface ) | 235 | if ( iface ) |
229 | { | 236 | { |
230 | disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); | 237 | disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); |
231 | disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); | 238 | disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); |
232 | iface->setChannelHopping(); // stop hopping channels | 239 | iface->setChannelHopping(); // stop hopping channels |
233 | } | 240 | } |
234 | else | 241 | else |
235 | killTimers(); | 242 | killTimers(); |
236 | 243 | ||
237 | pcap->close(); | 244 | pcap->close(); |
238 | sniffing = false; | 245 | sniffing = false; |
239 | 246 | ||
240 | if ( iface ) | 247 | if ( iface ) |
241 | { | 248 | { |
242 | // switch off monitor mode | 249 | // switch off monitor mode |
243 | iface->setMonitorMode( false ); | 250 | iface->setMonitorMode( false ); |
244 | // switch off promisc flag | 251 | // switch off promisc flag |
245 | iface->setPromiscuousMode( false ); | 252 | iface->setPromiscuousMode( false ); |
246 | 253 | ||
247 | system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess | 254 | system( "cardctl reset; sleep 1" ); //FIXME: Use OProcess |
248 | } | 255 | } |
249 | 256 | ||
250 | logwindow->log( "(i) Stopped Scanning." ); | 257 | logwindow->log( "(i) Stopped Scanning." ); |
251 | assert( parent() ); | 258 | assert( parent() ); |
252 | ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" ); | 259 | ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II" ); |
253 | 260 | ||
254 | // message the user | 261 | // message the user |
255 | QMessageBox::information( this, "Wellenreiter II", "Your wireless card\nshould now be usable again." ); | 262 | QMessageBox::information( this, "Wellenreiter II", "Your wireless card\nshould now be usable again." ); |
256 | 263 | ||
257 | sniffing = false; | 264 | sniffing = false; |
258 | emit( stoppedSniffing() ); | 265 | emit( stoppedSniffing() ); |
259 | 266 | ||
260 | // print out statistics | 267 | // print out statistics |
261 | for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it ) | 268 | for( QMap<QString,int>::ConstIterator it = pcap->statistics().begin(); it != pcap->statistics().end(); ++it ) |
262 | statwindow->updateCounter( it.key(), it.data() ); | 269 | statwindow->updateCounter( it.key(), it.data() ); |
263 | } | 270 | } |
264 | 271 | ||
265 | 272 | ||
266 | void Wellenreiter::startClicked() | 273 | void Wellenreiter::startClicked() |
267 | { | 274 | { |
268 | // get configuration from config window | 275 | // get configuration from config window |
269 | 276 | ||
270 | const QString& interface = configwindow->interfaceName->currentText(); | 277 | const QString& interface = configwindow->interfaceName->currentText(); |
271 | const int cardtype = configwindow->daemonDeviceType(); | 278 | const int cardtype = configwindow->daemonDeviceType(); |
272 | const int interval = configwindow->daemonHopInterval(); | 279 | const int interval = configwindow->daemonHopInterval(); |
273 | 280 | ||
274 | if ( ( interface == "" ) || ( cardtype == 0 ) ) | 281 | if ( ( interface == "" ) || ( cardtype == 0 ) ) |
275 | { | 282 | { |
276 | QMessageBox::information( this, "Wellenreiter II", "Your device is not\nproperly configured. Please reconfigure!" ); | 283 | QMessageBox::information( this, "Wellenreiter II", "Your device is not\nproperly configured. Please reconfigure!" ); |
277 | return; | 284 | return; |
278 | } | 285 | } |
279 | 286 | ||
280 | // configure device | 287 | // configure device |
281 | 288 | ||
282 | ONetwork* net = ONetwork::instance(); | 289 | ONetwork* net = ONetwork::instance(); |
283 | iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); | 290 | iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); |
284 | 291 | ||
285 | // set monitor mode | 292 | // set monitor mode |
286 | 293 | ||
287 | switch ( cardtype ) | 294 | switch ( cardtype ) |
288 | { | 295 | { |
289 | case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface ) ); break; | 296 | case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface ) ); break; |
290 | case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface ) ); break; | 297 | case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface ) ); break; |
291 | case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface ) ); break; | 298 | case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface ) ); break; |
292 | case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface ) ); break; | 299 | case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface ) ); break; |
293 | case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", "Bring your device into\nmonitor mode now." ); break; | 300 | case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", "Bring your device into\nmonitor mode now." ); break; |
294 | case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break; | 301 | case DEVTYPE_FILE: qDebug( "Wellenreiter: Capturing from file '%s'", (const char*) interface ); break; |
295 | default: assert( 0 ); // shouldn't reach this | 302 | default: assert( 0 ); // shouldn't reach this |
296 | } | 303 | } |
297 | 304 | ||
298 | // switch device into monitor mode | 305 | // switch device into monitor mode |
299 | if ( cardtype < DEVTYPE_FILE ) | 306 | if ( cardtype < DEVTYPE_FILE ) |
300 | { | 307 | { |
301 | if ( cardtype != DEVTYPE_MANUAL ) | 308 | if ( cardtype != DEVTYPE_MANUAL ) |
302 | iface->setMonitorMode( true ); | 309 | iface->setMonitorMode( true ); |
303 | if ( !iface->monitorMode() ) | 310 | if ( !iface->monitorMode() ) |
304 | { | 311 | { |
305 | QMessageBox::warning( this, "Wellenreiter II", "Can't set device into monitor mode." ); | 312 | QMessageBox::warning( this, "Wellenreiter II", "Can't set device into monitor mode." ); |
306 | return; | 313 | return; |
307 | } | 314 | } |
308 | } | 315 | } |
309 | 316 | ||
310 | // open pcap and start sniffing | 317 | // open pcap and start sniffing |
311 | if ( cardtype != DEVTYPE_FILE ) | 318 | if ( cardtype != DEVTYPE_FILE ) |
312 | { | 319 | { |
313 | if ( configwindow->writeCaptureFile->isEnabled() ) | 320 | if ( configwindow->writeCaptureFile->isEnabled() ) |
314 | { | 321 | { |
315 | QString dumpname( configwindow->captureFileName->text() ); | 322 | QString dumpname( configwindow->captureFileName->text() ); |
316 | dumpname.append( '-' ); | 323 | dumpname.append( '-' ); |
317 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); | 324 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); |
318 | dumpname.append( ".wellenreiter" ); | 325 | dumpname.append( ".wellenreiter" ); |
319 | pcap->open( interface, dumpname ); | 326 | pcap->open( interface, dumpname ); |
320 | } | 327 | } |
321 | else | 328 | else |
322 | { | 329 | { |
323 | pcap->open( interface ); | 330 | pcap->open( interface ); |
324 | } | 331 | } |
325 | } | 332 | } |
326 | else | 333 | else |
327 | { | 334 | { |
328 | pcap->open( QFile( interface ) ); | 335 | pcap->open( QFile( interface ) ); |
329 | } | 336 | } |
330 | 337 | ||
331 | if ( !pcap->isOpen() ) | 338 | if ( !pcap->isOpen() ) |
332 | { | 339 | { |
333 | QMessageBox::warning( this, "Wellenreiter II", "Can't open packet capturer:\n" + QString(strerror( errno ) )); | 340 | QMessageBox::warning( this, "Wellenreiter II", "Can't open packet capturer:\n" + QString(strerror( errno ) )); |
334 | return; | 341 | return; |
335 | } | 342 | } |
336 | 343 | ||
337 | // set capturer to non-blocking mode | 344 | // set capturer to non-blocking mode |
338 | pcap->setBlocking( false ); | 345 | pcap->setBlocking( false ); |
339 | 346 | ||
340 | // start channel hopper | 347 | // start channel hopper |
341 | if ( cardtype != DEVTYPE_FILE ) | 348 | if ( cardtype != DEVTYPE_FILE ) |
342 | iface->setChannelHopping( 1000 ); //use interval from config window | 349 | iface->setChannelHopping( 1000 ); //use interval from config window |
343 | 350 | ||
344 | if ( cardtype != DEVTYPE_FILE ) | 351 | if ( cardtype != DEVTYPE_FILE ) |
345 | { | 352 | { |
346 | // connect socket notifier and start channel hopper | 353 | // connect socket notifier and start channel hopper |
347 | connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); | 354 | connect( pcap, SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); |
348 | connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); | 355 | connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); |
349 | } | 356 | } |
350 | else | 357 | else |
351 | { | 358 | { |
352 | // start timer for reading packets | 359 | // start timer for reading packets |
353 | startTimer( 100 ); | 360 | startTimer( 100 ); |
354 | } | 361 | } |
355 | 362 | ||
356 | logwindow->log( "(i) Started Scanning." ); | 363 | logwindow->log( "(i) Started Scanning." ); |
357 | sniffing = true; | 364 | sniffing = true; |
358 | emit( startedSniffing() ); | 365 | emit( startedSniffing() ); |
359 | if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title | 366 | if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title |
360 | else | 367 | else |
361 | { | 368 | { |
362 | assert( parent() ); | 369 | assert( parent() ); |
363 | ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II - replaying capture file..." ); | 370 | ( (QMainWindow*) parent() )->setCaption( "Wellenreiter II - replaying capture file..." ); |
364 | } | 371 | } |
365 | } | 372 | } |
366 | 373 | ||
367 | 374 | ||
368 | void Wellenreiter::timerEvent( QTimerEvent* ) | 375 | void Wellenreiter::timerEvent( QTimerEvent* ) |
369 | { | 376 | { |
370 | qDebug( "Wellenreiter::timerEvent()" ); | 377 | qDebug( "Wellenreiter::timerEvent()" ); |
371 | OPacket* p = pcap->next(); | 378 | OPacket* p = pcap->next(); |
372 | if ( !p ) // no more packets available | 379 | if ( !p ) // no more packets available |
373 | { | 380 | { |
374 | stopClicked(); | 381 | stopClicked(); |
375 | } | 382 | } |
376 | else | 383 | else |
377 | { | 384 | { |
378 | receivePacket( p ); | 385 | receivePacket( p ); |
379 | delete p; | 386 | delete p; |
380 | } | 387 | } |
381 | } | 388 | } |
382 | 389 | ||
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp index 9745069..36fbb9a 100644 --- a/noncore/net/wellenreiter/gui/wellenreiterbase.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiterbase.cpp | |||
@@ -1,178 +1,185 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | 2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Opie Environment. | 4 | ** This file is part of Opie Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | ***********************************************************************/ | 14 | ***********************************************************************/ |
15 | 15 | ||
16 | #include "wellenreiterbase.h" | 16 | #include "wellenreiterbase.h" |
17 | 17 | ||
18 | #include <qheader.h> | 18 | #include <qheader.h> |
19 | #include <qlabel.h> | 19 | #include <qlabel.h> |
20 | #include <qlistview.h> | 20 | #include <qlistview.h> |
21 | #include <qmultilineedit.h> | 21 | #include <qmultilineedit.h> |
22 | #include <qpushbutton.h> | 22 | #include <qpushbutton.h> |
23 | #include <qlayout.h> | 23 | #include <qlayout.h> |
24 | #include <qvariant.h> | 24 | #include <qvariant.h> |
25 | #include <qtooltip.h> | 25 | #include <qtooltip.h> |
26 | #include <qwhatsthis.h> | 26 | #include <qwhatsthis.h> |
27 | #include <qimage.h> | 27 | #include <qimage.h> |
28 | #include <qpixmap.h> | 28 | #include <qpixmap.h> |
29 | 29 | ||
30 | #include "logwindow.h" | 30 | #include "logwindow.h" |
31 | #include "hexwindow.h" | 31 | #include "hexwindow.h" |
32 | #include "scanlist.h" | 32 | #include "scanlist.h" |
33 | #include "statwindow.h" | 33 | #include "statwindow.h" |
34 | #include "graphwindow.h" | ||
34 | 35 | ||
35 | #ifdef QWS | 36 | #ifdef QWS |
36 | #include <qpe/resource.h> | 37 | #include <qpe/resource.h> |
37 | #include <opie/otabwidget.h> | 38 | #include <opie/otabwidget.h> |
38 | #else | 39 | #else |
39 | #include "resource.h" | 40 | #include "resource.h" |
40 | #include <qtabwidget.h> | 41 | #include <qtabwidget.h> |
41 | #endif | 42 | #endif |
42 | 43 | ||
43 | 44 | ||
44 | /* | 45 | /* |
45 | * Constructs a WellenreiterBase which is a child of 'parent', with the | 46 | * Constructs a WellenreiterBase which is a child of 'parent', with the |
46 | * name 'name' and widget flags set to 'f' | 47 | * name 'name' and widget flags set to 'f' |
47 | */ | 48 | */ |
48 | WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags fl ) | 49 | WellenreiterBase::WellenreiterBase( QWidget* parent, const char* name, WFlags fl ) |
49 | : QWidget( parent, name, fl ) | 50 | : QWidget( parent, name, fl ) |
50 | { | 51 | { |
51 | //ani1 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot0" ) ); | 52 | //ani1 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot0" ) ); |
52 | //ani2 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot90" ) ); | 53 | //ani2 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot90" ) ); |
53 | //ani3 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot180" ) ); | 54 | //ani3 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot180" ) ); |
54 | //ani4 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot270" ) ); | 55 | //ani4 = new QPixmap( Resource::loadPixmap( "wellenreiter/networks_rot270" ) ); |
55 | 56 | ||
56 | if ( !name ) | 57 | if ( !name ) |
57 | setName( "WellenreiterBase" ); | 58 | setName( "WellenreiterBase" ); |
58 | resize( 191, 294 ); | 59 | resize( 191, 294 ); |
59 | #ifdef QWS | 60 | #ifdef QWS |
60 | setCaption( tr( "Wellenreiter/Opie" ) ); | 61 | setCaption( tr( "Wellenreiter/Opie" ) ); |
61 | #else | 62 | #else |
62 | setCaption( tr( "Wellenreiter/X11" ) ); | 63 | setCaption( tr( "Wellenreiter/X11" ) ); |
63 | #endif | 64 | #endif |
64 | WellenreiterBaseLayout = new QVBoxLayout( this ); | 65 | WellenreiterBaseLayout = new QVBoxLayout( this ); |
65 | WellenreiterBaseLayout->setSpacing( 2 ); | 66 | WellenreiterBaseLayout->setSpacing( 2 ); |
66 | WellenreiterBaseLayout->setMargin( 0 ); | 67 | WellenreiterBaseLayout->setMargin( 0 ); |
67 | #ifdef QWS | 68 | #ifdef QWS |
68 | TabWidget = new OTabWidget( this, "TabWidget", OTabWidget::Global ); | 69 | TabWidget = new OTabWidget( this, "TabWidget", OTabWidget::Global ); |
69 | #else | 70 | #else |
70 | TabWidget = new QTabWidget( this, "TabWidget" ); | 71 | TabWidget = new QTabWidget( this, "TabWidget" ); |
71 | #endif | 72 | #endif |
72 | ap = new QWidget( TabWidget, "ap" ); | 73 | ap = new QWidget( TabWidget, "ap" ); |
73 | apLayout = new QVBoxLayout( ap ); | 74 | apLayout = new QVBoxLayout( ap ); |
74 | apLayout->setSpacing( 2 ); | 75 | apLayout->setSpacing( 2 ); |
75 | apLayout->setMargin( 2 ); | 76 | apLayout->setMargin( 2 ); |
76 | 77 | ||
77 | //--------- NETVIEW TAB -------------- | 78 | //--------- NETVIEW TAB -------------- |
78 | 79 | ||
79 | netview = new MScanListView( ap ); | 80 | netview = new MScanListView( ap ); |
80 | apLayout->addWidget( netview ); | 81 | apLayout->addWidget( netview ); |
81 | 82 | ||
83 | //--------- GRAPH TAB -------------- | ||
84 | |||
85 | graphwindow = new MGraphWindow( TabWidget, "Graph" ); | ||
86 | |||
82 | //--------- LOG TAB -------------- | 87 | //--------- LOG TAB -------------- |
83 | 88 | ||
84 | logwindow = new MLogWindow( TabWidget, "Log" ); | 89 | logwindow = new MLogWindow( TabWidget, "Log" ); |
85 | 90 | ||
86 | //--------- HEX TAB -------------- | 91 | //--------- HEX TAB -------------- |
87 | 92 | ||
88 | hexwindow = new MHexWindow( TabWidget, "Hex" ); | 93 | hexwindow = new MHexWindow( TabWidget, "Hex" ); |
89 | 94 | ||
90 | //--------- STAT TAB -------------- | 95 | //--------- STAT TAB -------------- |
91 | 96 | ||
92 | statwindow = new MStatWindow( TabWidget, "Stat" ); | 97 | statwindow = new MStatWindow( TabWidget, "Stat" ); |
93 | 98 | ||
94 | //--------- ABOUT TAB -------------- | 99 | //--------- ABOUT TAB -------------- |
95 | 100 | ||
96 | about = new QWidget( TabWidget, "about" ); | 101 | about = new QWidget( TabWidget, "about" ); |
97 | aboutLayout = new QGridLayout( about ); | 102 | aboutLayout = new QGridLayout( about ); |
98 | aboutLayout->setSpacing( 6 ); | 103 | aboutLayout->setSpacing( 6 ); |
99 | aboutLayout->setMargin( 11 ); | 104 | aboutLayout->setMargin( 11 ); |
100 | 105 | ||
101 | PixmapLabel1_3_2 = new QLabel( about, "PixmapLabel1_3_2" ); | 106 | PixmapLabel1_3_2 = new QLabel( about, "PixmapLabel1_3_2" ); |
102 | PixmapLabel1_3_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, PixmapLabel1_3_2->sizePolicy().hasHeightForWidth() ) ); | 107 | PixmapLabel1_3_2->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, PixmapLabel1_3_2->sizePolicy().hasHeightForWidth() ) ); |
103 | PixmapLabel1_3_2->setFrameShape( QLabel::Panel ); | 108 | PixmapLabel1_3_2->setFrameShape( QLabel::Panel ); |
104 | PixmapLabel1_3_2->setFrameShadow( QLabel::Sunken ); | 109 | PixmapLabel1_3_2->setFrameShadow( QLabel::Sunken ); |
105 | PixmapLabel1_3_2->setLineWidth( 2 ); | 110 | PixmapLabel1_3_2->setLineWidth( 2 ); |
106 | PixmapLabel1_3_2->setMargin( 0 ); | 111 | PixmapLabel1_3_2->setMargin( 0 ); |
107 | PixmapLabel1_3_2->setMidLineWidth( 0 ); | 112 | PixmapLabel1_3_2->setMidLineWidth( 0 ); |
108 | PixmapLabel1_3_2->setPixmap( Resource::loadPixmap( "wellenreiter/logo" ) ); | 113 | PixmapLabel1_3_2->setPixmap( Resource::loadPixmap( "wellenreiter/logo" ) ); |
109 | PixmapLabel1_3_2->setScaledContents( TRUE ); | 114 | PixmapLabel1_3_2->setScaledContents( TRUE ); |
110 | PixmapLabel1_3_2->setAlignment( int( QLabel::AlignCenter ) ); | 115 | PixmapLabel1_3_2->setAlignment( int( QLabel::AlignCenter ) ); |
111 | 116 | ||
112 | aboutLayout->addWidget( PixmapLabel1_3_2, 0, 0 ); | 117 | aboutLayout->addWidget( PixmapLabel1_3_2, 0, 0 ); |
113 | 118 | ||
114 | TextLabel1_4_2 = new QLabel( about, "TextLabel1_4_2" ); | 119 | TextLabel1_4_2 = new QLabel( about, "TextLabel1_4_2" ); |
115 | QFont TextLabel1_4_2_font( TextLabel1_4_2->font() ); | 120 | QFont TextLabel1_4_2_font( TextLabel1_4_2->font() ); |
116 | TextLabel1_4_2_font.setFamily( "adobe-helvetica" ); | 121 | TextLabel1_4_2_font.setFamily( "adobe-helvetica" ); |
117 | TextLabel1_4_2_font.setPointSize( 10 ); | 122 | TextLabel1_4_2_font.setPointSize( 10 ); |
118 | TextLabel1_4_2->setFont( TextLabel1_4_2_font ); | 123 | TextLabel1_4_2->setFont( TextLabel1_4_2_font ); |
119 | TextLabel1_4_2->setText( tr( "<p align=center>\n" | 124 | TextLabel1_4_2->setText( tr( "<p align=center>\n" |
120 | "<hr>\n" | 125 | "<hr>\n" |
121 | "Max Moser<br>\n" | 126 | "Max Moser<br>\n" |
122 | "Martin J. Muench<br>\n" | 127 | "Martin J. Muench<br>\n" |
123 | "Michael Lauer<br><hr>\n" | 128 | "Michael Lauer<br><hr>\n" |
124 | "<b>www.remote-exploit.org</b>\n" | 129 | "<b>www.remote-exploit.org</b>\n" |
125 | "</p>" ) ); | 130 | "</p>" ) ); |
126 | TextLabel1_4_2->setAlignment( int( QLabel::AlignCenter ) ); | 131 | TextLabel1_4_2->setAlignment( int( QLabel::AlignCenter ) ); |
127 | 132 | ||
128 | aboutLayout->addWidget( TextLabel1_4_2, 1, 0 ); | 133 | aboutLayout->addWidget( TextLabel1_4_2, 1, 0 ); |
129 | 134 | ||
130 | #ifdef QWS | 135 | #ifdef QWS |
131 | TabWidget->addTab( ap, "wellenreiter/networks", tr( "Nets" ) ); | 136 | TabWidget->addTab( ap, "wellenreiter/networks", tr( "Nets" ) ); |
137 | TabWidget->addTab( graphwindow, "wellenreiter/graph", tr( "Graph" ) ); | ||
132 | TabWidget->addTab( logwindow, "wellenreiter/log", tr( "Log" ) ); | 138 | TabWidget->addTab( logwindow, "wellenreiter/log", tr( "Log" ) ); |
133 | TabWidget->addTab( hexwindow, "wellenreiter/hex", tr( "Hex" ) ); | 139 | TabWidget->addTab( hexwindow, "wellenreiter/hex", tr( "Hex" ) ); |
134 | TabWidget->addTab( statwindow, "wellenreiter/stat", tr( "Stat" ) ); | 140 | TabWidget->addTab( statwindow, "wellenreiter/stat", tr( "Stat" ) ); |
135 | TabWidget->addTab( about, "wellenreiter/about", tr( "About" ) ); | 141 | TabWidget->addTab( about, "wellenreiter/about", tr( "About" ) ); |
136 | #else | 142 | #else |
137 | TabWidget->addTab( ap, /* "wellenreiter/networks", */ tr( "Networks" ) ); | 143 | TabWidget->addTab( ap, /* "wellenreiter/networks", */ tr( "Networks" ) ); |
144 | TabWidget->addTab( graphwindow, /* "wellenreiter/graph", */ tr( "Graph" ) ); | ||
138 | TabWidget->addTab( logwindow, /* "wellenreiter/log", */ tr( "Log" ) ); | 145 | TabWidget->addTab( logwindow, /* "wellenreiter/log", */ tr( "Log" ) ); |
139 | TabWidget->addTab( hexwindow, /* "wellenreiter/hex", */ tr( "Hex" ) ); | 146 | TabWidget->addTab( hexwindow, /* "wellenreiter/hex", */ tr( "Hex" ) ); |
140 | TabWidget->addTab( statwindow, /* "wellenreiter/hex", */ tr( "Stat" ) ); | 147 | TabWidget->addTab( statwindow, /* "wellenreiter/hex", */ tr( "Stat" ) ); |
141 | TabWidget->addTab( about, /* "wellenreiter/about", */ tr( "About" ) ); | 148 | TabWidget->addTab( about, /* "wellenreiter/about", */ tr( "About" ) ); |
142 | #endif | 149 | #endif |
143 | WellenreiterBaseLayout->addWidget( TabWidget ); | 150 | WellenreiterBaseLayout->addWidget( TabWidget ); |
144 | 151 | ||
145 | #ifdef QWS | 152 | #ifdef QWS |
146 | TabWidget->setCurrentTab( tr( "Nets" ) ); | 153 | TabWidget->setCurrentTab( tr( "Nets" ) ); |
147 | #endif | 154 | #endif |
148 | 155 | ||
149 | } | 156 | } |
150 | 157 | ||
151 | /* | 158 | /* |
152 | * Destroys the object and frees any allocated resources | 159 | * Destroys the object and frees any allocated resources |
153 | */ | 160 | */ |
154 | WellenreiterBase::~WellenreiterBase() | 161 | WellenreiterBase::~WellenreiterBase() |
155 | { | 162 | { |
156 | // no need to delete child widgets, Qt does it all for us | 163 | // no need to delete child widgets, Qt does it all for us |
157 | } | 164 | } |
158 | 165 | ||
159 | /* | 166 | /* |
160 | * Main event handler. Reimplemented to handle application | 167 | * Main event handler. Reimplemented to handle application |
161 | * font changes | 168 | * font changes |
162 | */ | 169 | */ |
163 | bool WellenreiterBase::event( QEvent* ev ) | 170 | bool WellenreiterBase::event( QEvent* ev ) |
164 | { | 171 | { |
165 | bool ret = QWidget::event( ev ); | 172 | bool ret = QWidget::event( ev ); |
166 | if ( ev->type() == QEvent::ApplicationFontChange ) { | 173 | if ( ev->type() == QEvent::ApplicationFontChange ) { |
167 | //QFont Log_2_font( Log_2->font() ); | 174 | //QFont Log_2_font( Log_2->font() ); |
168 | //Log_2_font.setFamily( "adobe-courier" ); | 175 | //Log_2_font.setFamily( "adobe-courier" ); |
169 | //Log_2_font.setPointSize( 8 ); | 176 | //Log_2_font.setPointSize( 8 ); |
170 | //Log_2->setFont( Log_2_font ); | 177 | //Log_2->setFont( Log_2_font ); |
171 | QFont TextLabel1_4_2_font( TextLabel1_4_2->font() ); | 178 | QFont TextLabel1_4_2_font( TextLabel1_4_2->font() ); |
172 | TextLabel1_4_2_font.setFamily( "adobe-helvetica" ); | 179 | TextLabel1_4_2_font.setFamily( "adobe-helvetica" ); |
173 | TextLabel1_4_2_font.setPointSize( 10 ); | 180 | TextLabel1_4_2_font.setPointSize( 10 ); |
174 | TextLabel1_4_2->setFont( TextLabel1_4_2_font ); | 181 | TextLabel1_4_2->setFont( TextLabel1_4_2_font ); |
175 | } | 182 | } |
176 | return ret; | 183 | return ret; |
177 | } | 184 | } |
178 | 185 | ||
diff --git a/noncore/net/wellenreiter/gui/wellenreiterbase.h b/noncore/net/wellenreiter/gui/wellenreiterbase.h index ad2e96c..e8dc924 100644 --- a/noncore/net/wellenreiter/gui/wellenreiterbase.h +++ b/noncore/net/wellenreiter/gui/wellenreiterbase.h | |||
@@ -1,74 +1,76 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. | 2 | ** Copyright (C) 2002 Michael 'Mickey' Lauer. All rights reserved. |
3 | ** | 3 | ** |
4 | ** This file is part of Opie Environment. | 4 | ** This file is part of Opie Environment. |
5 | ** | 5 | ** |
6 | ** This file may be distributed and/or modified under the terms of the | 6 | ** This file may be distributed and/or modified under the terms of the |
7 | ** GNU General Public License version 2 as published by the Free Software | 7 | ** GNU General Public License version 2 as published by the Free Software |
8 | ** Foundation and appearing in the file LICENSE.GPL included in the | 8 | ** Foundation and appearing in the file LICENSE.GPL included in the |
9 | ** packaging of this file. | 9 | ** packaging of this file. |
10 | ** | 10 | ** |
11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE | 11 | ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE |
12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | 12 | ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. |
13 | ** | 13 | ** |
14 | **********************************************************************/ | 14 | **********************************************************************/ |
15 | 15 | ||
16 | #ifndef WELLENREITERBASE_H | 16 | #ifndef WELLENREITERBASE_H |
17 | #define WELLENREITERBASE_H | 17 | #define WELLENREITERBASE_H |
18 | 18 | ||
19 | #include <qvariant.h> | 19 | #include <qvariant.h> |
20 | #include <qwidget.h> | 20 | #include <qwidget.h> |
21 | class QVBoxLayout; | 21 | class QVBoxLayout; |
22 | class QHBoxLayout; | 22 | class QHBoxLayout; |
23 | class QGridLayout; | 23 | class QGridLayout; |
24 | class QLabel; | 24 | class QLabel; |
25 | class MScanListView; | 25 | class MScanListView; |
26 | class MScanListItem; | 26 | class MScanListItem; |
27 | class QPushButton; | 27 | class QPushButton; |
28 | class MLogWindow; | 28 | class MLogWindow; |
29 | class MHexWindow; | 29 | class MHexWindow; |
30 | class MStatWindow; | 30 | class MStatWindow; |
31 | class MGraphWindow; | ||
31 | 32 | ||
32 | #ifdef QWS | 33 | #ifdef QWS |
33 | class OTabWidget; | 34 | class OTabWidget; |
34 | #else | 35 | #else |
35 | class QTabWidget; | 36 | class QTabWidget; |
36 | #endif | 37 | #endif |
37 | 38 | ||
38 | class WellenreiterBase : public QWidget | 39 | class WellenreiterBase : public QWidget |
39 | { | 40 | { |
40 | Q_OBJECT | 41 | Q_OBJECT |
41 | 42 | ||
42 | public: | 43 | public: |
43 | WellenreiterBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); | 44 | WellenreiterBase( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); |
44 | ~WellenreiterBase(); | 45 | ~WellenreiterBase(); |
45 | 46 | ||
46 | #ifdef QWS | 47 | #ifdef QWS |
47 | OTabWidget* TabWidget; | 48 | OTabWidget* TabWidget; |
48 | #else | 49 | #else |
49 | QTabWidget* TabWidget; | 50 | QTabWidget* TabWidget; |
50 | #endif | 51 | #endif |
51 | QWidget* ap; | 52 | QWidget* ap; |
52 | MScanListView* netview; | 53 | MScanListView* netview; |
53 | MLogWindow* logwindow; | 54 | MLogWindow* logwindow; |
54 | MHexWindow* hexwindow; | 55 | MHexWindow* hexwindow; |
55 | MStatWindow* statwindow; | 56 | MStatWindow* statwindow; |
57 | MGraphWindow* graphwindow; | ||
56 | QWidget* about; | 58 | QWidget* about; |
57 | QLabel* PixmapLabel1_3_2; | 59 | QLabel* PixmapLabel1_3_2; |
58 | QLabel* TextLabel1_4_2; | 60 | QLabel* TextLabel1_4_2; |
59 | 61 | ||
60 | protected: | 62 | protected: |
61 | QVBoxLayout* WellenreiterBaseLayout; | 63 | QVBoxLayout* WellenreiterBaseLayout; |
62 | QVBoxLayout* apLayout; | 64 | QVBoxLayout* apLayout; |
63 | QGridLayout* aboutLayout; | 65 | QGridLayout* aboutLayout; |
64 | bool event( QEvent* ); | 66 | bool event( QEvent* ); |
65 | 67 | ||
66 | QPixmap* ani1; | 68 | QPixmap* ani1; |
67 | QPixmap* ani2; | 69 | QPixmap* ani2; |
68 | QPixmap* ani3; | 70 | QPixmap* ani3; |
69 | QPixmap* ani4; | 71 | QPixmap* ani4; |
70 | 72 | ||
71 | 73 | ||
72 | }; | 74 | }; |
73 | 75 | ||
74 | #endif // WELLENREITERBASE_H | 76 | #endif // WELLENREITERBASE_H |
diff --git a/noncore/net/wellenreiter/opie-wellenreiter.control b/noncore/net/wellenreiter/opie-wellenreiter.control index f7267b4..8bb5b1c 100644 --- a/noncore/net/wellenreiter/opie-wellenreiter.control +++ b/noncore/net/wellenreiter/opie-wellenreiter.control | |||
@@ -1,10 +1,10 @@ | |||
1 | Package: opie-wellenreiter | 1 | Package: opie-wellenreiter |
2 | Files: bin/wellenreiter share/wellenreiter pics/wellenreiter apps/Applications/wellenreiter.desktop | 2 | Files: bin/wellenreiter share/wellenreiter pics/wellenreiter apps/Applications/wellenreiter.desktop |
3 | Priority: optional | 3 | Priority: optional |
4 | Section: opie/applications | 4 | Section: opie/applications |
5 | Maintainer: Michael 'Mickey' Lauer <mickeyl@handhelds.org> | 5 | Maintainer: Michael 'Mickey' Lauer <mickeyl@handhelds.org> |
6 | Architecture: arm | 6 | Architecture: arm |
7 | Version: $QPE_VERSION-$SUB_VERSION | 7 | Version: 0.9.9-$SUB_VERSION |
8 | Depends: task-opie-minimal, libpcap0, libopie2 (1.8.1) | 8 | Depends: task-opie-minimal, libpcap0, libopie2 (1.8.1) |
9 | Description: A WaveLAN Network Monitor | 9 | Description: A WaveLAN Network Monitor |
10 | A WaveLAN Network Monitor/Sniffer for the Opie Environment. | 10 | A WaveLAN Network Monitor/Sniffer for the Opie Environment. |