-rw-r--r-- | noncore/net/wellenreiter/gui/configbase.ui | 149 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.cpp | 50 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/graphwindow.h | 3 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.cpp | 19 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/protolistview.h | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 64 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.h | 3 |
7 files changed, 198 insertions, 94 deletions
diff --git a/noncore/net/wellenreiter/gui/configbase.ui b/noncore/net/wellenreiter/gui/configbase.ui index 7504ebc..422826a 100644 --- a/noncore/net/wellenreiter/gui/configbase.ui +++ b/noncore/net/wellenreiter/gui/configbase.ui | |||
@@ -2,26 +2,26 @@ | |||
2 | <class>WellenreiterConfigBase</class> | 2 | <class>WellenreiterConfigBase</class> |
3 | <widget> | 3 | <widget> |
4 | <class>QDialog</class> | 4 | <class>QDialog</class> |
5 | <property stdset="1"> | 5 | <property stdset="1"> |
6 | <name>name</name> | 6 | <name>name</name> |
7 | <cstring>WellenreiterConfigBase</cstring> | 7 | <cstring>WellenreiterConfigBase</cstring> |
8 | </property> | 8 | </property> |
9 | <property stdset="1"> | 9 | <property stdset="1"> |
10 | <name>geometry</name> | 10 | <name>geometry</name> |
11 | <rect> | 11 | <rect> |
12 | <x>0</x> | 12 | <x>0</x> |
13 | <y>0</y> | 13 | <y>0</y> |
14 | <width>209</width> | 14 | <width>261</width> |
15 | <height>287</height> | 15 | <height>280</height> |
16 | </rect> | 16 | </rect> |
17 | </property> | 17 | </property> |
18 | <property stdset="1"> | 18 | <property stdset="1"> |
19 | <name>caption</name> | 19 | <name>caption</name> |
20 | <string>Wellenreiter II COnfiguration Dialog</string> | 20 | <string>Wellenreiter II COnfiguration Dialog</string> |
21 | </property> | 21 | </property> |
22 | <property> | 22 | <property> |
23 | <name>layoutMargin</name> | 23 | <name>layoutMargin</name> |
24 | </property> | 24 | </property> |
25 | <property> | 25 | <property> |
26 | <name>layoutSpacing</name> | 26 | <name>layoutSpacing</name> |
27 | </property> | 27 | </property> |
@@ -86,86 +86,36 @@ | |||
86 | <name>name</name> | 86 | <name>name</name> |
87 | <cstring>TextLabel2_3</cstring> | 87 | <cstring>TextLabel2_3</cstring> |
88 | </property> | 88 | </property> |
89 | <property stdset="1"> | 89 | <property stdset="1"> |
90 | <name>enabled</name> | 90 | <name>enabled</name> |
91 | <bool>true</bool> | 91 | <bool>true</bool> |
92 | </property> | 92 | </property> |
93 | <property stdset="1"> | 93 | <property stdset="1"> |
94 | <name>text</name> | 94 | <name>text</name> |
95 | <string>Driver:</string> | 95 | <string>Driver:</string> |
96 | </property> | 96 | </property> |
97 | </widget> | 97 | </widget> |
98 | <widget row="4" column="0" rowspan="1" colspan="2" > | ||
99 | <class>QCheckBox</class> | ||
100 | <property stdset="1"> | ||
101 | <name>name</name> | ||
102 | <cstring>hopChannels</cstring> | ||
103 | </property> | ||
104 | <property stdset="1"> | ||
105 | <name>text</name> | ||
106 | <string>Hop Channels</string> | ||
107 | </property> | ||
108 | <property stdset="1"> | ||
109 | <name>checked</name> | ||
110 | <bool>true</bool> | ||
111 | </property> | ||
112 | </widget> | ||
113 | <widget row="2" column="0" rowspan="1" colspan="4" > | 98 | <widget row="2" column="0" rowspan="1" colspan="4" > |
114 | <class>QCheckBox</class> | 99 | <class>QCheckBox</class> |
115 | <property stdset="1"> | 100 | <property stdset="1"> |
116 | <name>name</name> | 101 | <name>name</name> |
117 | <cstring>prismHeader</cstring> | 102 | <cstring>prismHeader</cstring> |
118 | </property> | 103 | </property> |
119 | <property stdset="1"> | 104 | <property stdset="1"> |
120 | <name>text</name> | 105 | <name>text</name> |
121 | <string>Use additional PRISM header</string> | 106 | <string>Use additional PRISM header</string> |
122 | </property> | 107 | </property> |
123 | </widget> | 108 | </widget> |
124 | <widget row="4" column="3" > | 109 | <widget row="6" column="0" rowspan="1" colspan="4" > |
125 | <class>QSpinBox</class> | ||
126 | <property stdset="1"> | ||
127 | <name>name</name> | ||
128 | <cstring>hopInterval</cstring> | ||
129 | </property> | ||
130 | <property stdset="1"> | ||
131 | <name>enabled</name> | ||
132 | <bool>true</bool> | ||
133 | </property> | ||
134 | <property stdset="1"> | ||
135 | <name>suffix</name> | ||
136 | <string> ms</string> | ||
137 | </property> | ||
138 | <property stdset="1"> | ||
139 | <name>maxValue</name> | ||
140 | <number>2000</number> | ||
141 | </property> | ||
142 | <property stdset="1"> | ||
143 | <name>minValue</name> | ||
144 | <number>100</number> | ||
145 | </property> | ||
146 | <property stdset="1"> | ||
147 | <name>lineStep</name> | ||
148 | <number>100</number> | ||
149 | </property> | ||
150 | <property stdset="1"> | ||
151 | <name>value</name> | ||
152 | <number>1000</number> | ||
153 | </property> | ||
154 | <property> | ||
155 | <name>whatsThis</name> | ||
156 | <string>Choose the channel hop interval.</string> | ||
157 | </property> | ||
158 | </widget> | ||
159 | <widget row="5" column="0" rowspan="1" colspan="4" > | ||
160 | <class>QGroupBox</class> | 110 | <class>QGroupBox</class> |
161 | <property stdset="1"> | 111 | <property stdset="1"> |
162 | <name>name</name> | 112 | <name>name</name> |
163 | <cstring>GroupBox1</cstring> | 113 | <cstring>GroupBox1</cstring> |
164 | </property> | 114 | </property> |
165 | <property stdset="1"> | 115 | <property stdset="1"> |
166 | <name>title</name> | 116 | <name>title</name> |
167 | <string>Scan on channel</string> | 117 | <string>Scan on channel</string> |
168 | </property> | 118 | </property> |
169 | <property> | 119 | <property> |
170 | <name>layoutMargin</name> | 120 | <name>layoutMargin</name> |
171 | </property> | 121 | </property> |
@@ -411,56 +361,117 @@ | |||
411 | <name>name</name> | 361 | <name>name</name> |
412 | <cstring>deviceType</cstring> | 362 | <cstring>deviceType</cstring> |
413 | </property> | 363 | </property> |
414 | <property stdset="1"> | 364 | <property stdset="1"> |
415 | <name>enabled</name> | 365 | <name>enabled</name> |
416 | <bool>true</bool> | 366 | <bool>true</bool> |
417 | </property> | 367 | </property> |
418 | <property> | 368 | <property> |
419 | <name>whatsThis</name> | 369 | <name>whatsThis</name> |
420 | <string>Choose the type of driver used for sniffing.</string> | 370 | <string>Choose the type of driver used for sniffing.</string> |
421 | </property> | 371 | </property> |
422 | </widget> | 372 | </widget> |
423 | <widget row="4" column="2" > | ||
424 | <class>QLabel</class> | ||
425 | <property stdset="1"> | ||
426 | <name>name</name> | ||
427 | <cstring>TextLabel1</cstring> | ||
428 | </property> | ||
429 | <property stdset="1"> | ||
430 | <name>text</name> | ||
431 | <string>every</string> | ||
432 | </property> | ||
433 | </widget> | ||
434 | <spacer row="3" column="0" > | 373 | <spacer row="3" column="0" > |
435 | <property> | 374 | <property> |
436 | <name>name</name> | 375 | <name>name</name> |
437 | <cstring>Spacer4</cstring> | 376 | <cstring>Spacer4</cstring> |
438 | </property> | 377 | </property> |
439 | <property stdset="1"> | 378 | <property stdset="1"> |
440 | <name>orientation</name> | 379 | <name>orientation</name> |
441 | <enum>Vertical</enum> | 380 | <enum>Vertical</enum> |
442 | </property> | 381 | </property> |
443 | <property stdset="1"> | 382 | <property stdset="1"> |
444 | <name>sizeType</name> | 383 | <name>sizeType</name> |
445 | <enum>Expanding</enum> | 384 | <enum>Expanding</enum> |
446 | </property> | 385 | </property> |
447 | <property> | 386 | <property> |
448 | <name>sizeHint</name> | 387 | <name>sizeHint</name> |
449 | <size> | 388 | <size> |
450 | <width>20</width> | 389 | <width>20</width> |
451 | <height>20</height> | 390 | <height>20</height> |
452 | </size> | 391 | </size> |
453 | </property> | 392 | </property> |
454 | </spacer> | 393 | </spacer> |
394 | <widget row="4" column="2" > | ||
395 | <class>QLabel</class> | ||
396 | <property stdset="1"> | ||
397 | <name>name</name> | ||
398 | <cstring>TextLabel1</cstring> | ||
399 | </property> | ||
400 | <property stdset="1"> | ||
401 | <name>text</name> | ||
402 | <string>every</string> | ||
403 | </property> | ||
404 | </widget> | ||
405 | <widget row="4" column="0" rowspan="1" colspan="2" > | ||
406 | <class>QCheckBox</class> | ||
407 | <property stdset="1"> | ||
408 | <name>name</name> | ||
409 | <cstring>hopChannels</cstring> | ||
410 | </property> | ||
411 | <property stdset="1"> | ||
412 | <name>text</name> | ||
413 | <string>Hop Channels</string> | ||
414 | </property> | ||
415 | <property stdset="1"> | ||
416 | <name>checked</name> | ||
417 | <bool>true</bool> | ||
418 | </property> | ||
419 | </widget> | ||
420 | <widget row="4" column="3" > | ||
421 | <class>QSpinBox</class> | ||
422 | <property stdset="1"> | ||
423 | <name>name</name> | ||
424 | <cstring>hopInterval</cstring> | ||
425 | </property> | ||
426 | <property stdset="1"> | ||
427 | <name>enabled</name> | ||
428 | <bool>true</bool> | ||
429 | </property> | ||
430 | <property stdset="1"> | ||
431 | <name>suffix</name> | ||
432 | <string> ms</string> | ||
433 | </property> | ||
434 | <property stdset="1"> | ||
435 | <name>maxValue</name> | ||
436 | <number>2000</number> | ||
437 | </property> | ||
438 | <property stdset="1"> | ||
439 | <name>minValue</name> | ||
440 | <number>100</number> | ||
441 | </property> | ||
442 | <property stdset="1"> | ||
443 | <name>lineStep</name> | ||
444 | <number>100</number> | ||
445 | </property> | ||
446 | <property stdset="1"> | ||
447 | <name>value</name> | ||
448 | <number>1000</number> | ||
449 | </property> | ||
450 | <property> | ||
451 | <name>whatsThis</name> | ||
452 | <string>Choose the channel hop interval.</string> | ||
453 | </property> | ||
454 | </widget> | ||
455 | <widget row="5" column="0" rowspan="1" colspan="4" > | ||
456 | <class>QCheckBox</class> | ||
457 | <property stdset="1"> | ||
458 | <name>name</name> | ||
459 | <cstring>adaptiveHopping</cstring> | ||
460 | </property> | ||
461 | <property stdset="1"> | ||
462 | <name>text</name> | ||
463 | <string>Use Adaptive(TM) Hop Scheme</string> | ||
464 | </property> | ||
465 | </widget> | ||
455 | </grid> | 466 | </grid> |
456 | </widget> | 467 | </widget> |
457 | <widget> | 468 | <widget> |
458 | <class>QWidget</class> | 469 | <class>QWidget</class> |
459 | <property stdset="1"> | 470 | <property stdset="1"> |
460 | <name>name</name> | 471 | <name>name</name> |
461 | <cstring>tab</cstring> | 472 | <cstring>tab</cstring> |
462 | </property> | 473 | </property> |
463 | <attribute> | 474 | <attribute> |
464 | <name>title</name> | 475 | <name>title</name> |
465 | <string>Capture</string> | 476 | <string>Capture</string> |
466 | </attribute> | 477 | </attribute> |
@@ -471,24 +482,28 @@ | |||
471 | </property> | 482 | </property> |
472 | <property stdset="1"> | 483 | <property stdset="1"> |
473 | <name>spacing</name> | 484 | <name>spacing</name> |
474 | <number>3</number> | 485 | <number>3</number> |
475 | </property> | 486 | </property> |
476 | <widget row="2" column="0" rowspan="1" colspan="3" > | 487 | <widget row="2" column="0" rowspan="1" colspan="3" > |
477 | <class>ProtocolListView</class> | 488 | <class>ProtocolListView</class> |
478 | <property stdset="1"> | 489 | <property stdset="1"> |
479 | <name>name</name> | 490 | <name>name</name> |
480 | <cstring>capturePackets</cstring> | 491 | <cstring>capturePackets</cstring> |
481 | </property> | 492 | </property> |
482 | <property stdset="1"> | 493 | <property stdset="1"> |
494 | <name>enabled</name> | ||
495 | <bool>false</bool> | ||
496 | </property> | ||
497 | <property stdset="1"> | ||
483 | <name>sizePolicy</name> | 498 | <name>sizePolicy</name> |
484 | <sizepolicy> | 499 | <sizepolicy> |
485 | <hsizetype>7</hsizetype> | 500 | <hsizetype>7</hsizetype> |
486 | <vsizetype>7</vsizetype> | 501 | <vsizetype>7</vsizetype> |
487 | </sizepolicy> | 502 | </sizepolicy> |
488 | </property> | 503 | </property> |
489 | </widget> | 504 | </widget> |
490 | <widget row="1" column="0" rowspan="1" colspan="3" > | 505 | <widget row="1" column="0" rowspan="1" colspan="3" > |
491 | <class>QLineEdit</class> | 506 | <class>QLineEdit</class> |
492 | <property stdset="1"> | 507 | <property stdset="1"> |
493 | <name>name</name> | 508 | <name>name</name> |
494 | <cstring>captureFileName</cstring> | 509 | <cstring>captureFileName</cstring> |
@@ -856,14 +871,20 @@ | |||
856 | <connection> | 871 | <connection> |
857 | <sender>writeCaptureFile</sender> | 872 | <sender>writeCaptureFile</sender> |
858 | <signal>toggled(bool)</signal> | 873 | <signal>toggled(bool)</signal> |
859 | <receiver>getCaptureFileName</receiver> | 874 | <receiver>getCaptureFileName</receiver> |
860 | <slot>setEnabled(bool)</slot> | 875 | <slot>setEnabled(bool)</slot> |
861 | </connection> | 876 | </connection> |
862 | <connection> | 877 | <connection> |
863 | <sender>writeCaptureFile</sender> | 878 | <sender>writeCaptureFile</sender> |
864 | <signal>toggled(bool)</signal> | 879 | <signal>toggled(bool)</signal> |
865 | <receiver>captureFileName</receiver> | 880 | <receiver>captureFileName</receiver> |
866 | <slot>setEnabled(bool)</slot> | 881 | <slot>setEnabled(bool)</slot> |
867 | </connection> | 882 | </connection> |
883 | <connection> | ||
884 | <sender>writeCaptureFile</sender> | ||
885 | <signal>toggled(bool)</signal> | ||
886 | <receiver>capturePackets</receiver> | ||
887 | <slot>setEnabled(bool)</slot> | ||
888 | </connection> | ||
868 | </connections> | 889 | </connections> |
869 | </UI> | 890 | </UI> |
diff --git a/noncore/net/wellenreiter/gui/graphwindow.cpp b/noncore/net/wellenreiter/gui/graphwindow.cpp index 7e1f378..b116b91 100644 --- a/noncore/net/wellenreiter/gui/graphwindow.cpp +++ b/noncore/net/wellenreiter/gui/graphwindow.cpp | |||
@@ -20,29 +20,43 @@ | |||
20 | #include <qtimer.h> | 20 | #include <qtimer.h> |
21 | 21 | ||
22 | MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const char* name, WFlags f) | 22 | MFrequencySpectrum::MFrequencySpectrum( int channels, QWidget* parent, const char* name, WFlags f) |
23 | :QWidget( parent, name,f ), _channels( channels ) | 23 | :QWidget( parent, name,f ), _channels( channels ) |
24 | { | 24 | { |
25 | _values = new int[_channels]; | 25 | _values = new int[_channels]; |
26 | _dirty = new bool[_channels]; | 26 | _dirty = new bool[_channels]; |
27 | for ( int i = 0; i < channels; ++i ) | 27 | for ( int i = 0; i < channels; ++i ) |
28 | { _values[i] = 0; | 28 | { _values[i] = 0; |
29 | _dirty[i] = true; | 29 | _dirty[i] = true; |
30 | } | 30 | } |
31 | 31 | ||
32 | // we draw everything alone | 32 | // we draw everything on our own |
33 | setBackgroundMode( QWidget::NoBackground ); | 33 | setBackgroundMode( QWidget::NoBackground ); |
34 | } | 34 | } |
35 | 35 | ||
36 | 36 | ||
37 | void MFrequencySpectrum::drawTopLine( QPainter* p, int x, int y, int width, const QColor& c ) | ||
38 | { | ||
39 | p->setPen( c.light() ); | ||
40 | p->drawLine( x, y, x+width-1, y ); | ||
41 | } | ||
42 | |||
43 | |||
44 | void MFrequencySpectrum::drawBottomLine( QPainter* p, int x, int y, int width, const QColor& c ) | ||
45 | { | ||
46 | p->setPen( c.dark() ); | ||
47 | p->drawLine( x, y, x+width-1, y ); | ||
48 | } | ||
49 | |||
50 | |||
37 | void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c ) | 51 | void MFrequencySpectrum::drawLine( QPainter* p, int x, int y, int width, const QColor& c ) |
38 | { | 52 | { |
39 | p->setPen( c.light() ); | 53 | p->setPen( c.light() ); |
40 | p->drawPoint( x++, y ); | 54 | p->drawPoint( x++, y ); |
41 | p->setPen( c ); | 55 | p->setPen( c ); |
42 | p->drawLine( x, y, x+width-2, y ); | 56 | p->drawLine( x, y, x+width-2, y ); |
43 | p->setPen( c.dark() ); | 57 | p->setPen( c.dark() ); |
44 | p->drawPoint( x+width-1, y ); | 58 | p->drawPoint( x+width-1, y ); |
45 | } | 59 | } |
46 | 60 | ||
47 | 61 | ||
48 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ) | 62 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ) |
@@ -52,30 +66,31 @@ void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int heig | |||
52 | int v1 = 140; int v2 = 255; | 66 | int v1 = 140; int v2 = 255; |
53 | 67 | ||
54 | /*int h1 = 196; int h2 = 194; | 68 | /*int h1 = 196; int h2 = 194; |
55 | int s1 = 85; int s2 = 15; | 69 | int s1 = 85; int s2 = 15; |
56 | int v1 = 95; int v2 = 237;*/ | 70 | int v1 = 95; int v2 = 237;*/ |
57 | 71 | ||
58 | QColor c( 120, 60, 200 ); | 72 | QColor c( 120, 60, 200 ); |
59 | for ( int i = 0; i < height; ++i ) | 73 | for ( int i = 0; i < height; ++i ) |
60 | { | 74 | { |
61 | int h = (h2-h1)*i/maxheight + h1; | 75 | int h = (h2-h1)*i/maxheight + h1; |
62 | int s = (s2-s1)*i/maxheight + s1; | 76 | int s = (s2-s1)*i/maxheight + s1; |
63 | int v = (v2-v1)*i/maxheight + v1; | 77 | int v = (v2-v1)*i/maxheight + v1; |
64 | drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | 78 | if ( i == 0 ) |
79 | drawBottomLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
80 | else if ( i == height-1 ) | ||
81 | drawTopLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
82 | else | ||
83 | drawLine( p, x, y-i, width, QColor( h,s,v, QColor::Hsv ) ); | ||
65 | } | 84 | } |
66 | |||
67 | /*for ( int i = height; i < maxheight; ++i ) | ||
68 | drawLine( p, x, y-i, width, QColor( 47, 68, 76 ) );*/ | ||
69 | |||
70 | } | 85 | } |
71 | 86 | ||
72 | 87 | ||
73 | void MFrequencySpectrum::paintEvent( QPaintEvent* e ) | 88 | void MFrequencySpectrum::paintEvent( QPaintEvent* e ) |
74 | { | 89 | { |
75 | QPixmap pm( size() ); | 90 | QPixmap pm( size() ); |
76 | QPainter p; | 91 | QPainter p; |
77 | p.begin( &pm ); | 92 | p.begin( &pm ); |
78 | p.drawTiledPixmap( 0, 0, size().width(), size().height(), QPixmap( (const char**) &background ) ); | 93 | p.drawTiledPixmap( 0, 0, size().width(), size().height(), QPixmap( (const char**) &background ) ); |
79 | 94 | ||
80 | int xmargin = 5; | 95 | int xmargin = 5; |
81 | int ymargin = 2; | 96 | int ymargin = 2; |
@@ -89,24 +104,40 @@ void MFrequencySpectrum::paintEvent( QPaintEvent* e ) | |||
89 | { | 104 | { |
90 | drawBar( &p, xmargin + x, y - ymargin, width-3, _values[i]*y/100, y ); | 105 | drawBar( &p, xmargin + x, y - ymargin, width-3, _values[i]*y/100, y ); |
91 | _dirty[i] = false; | 106 | _dirty[i] = false; |
92 | } | 107 | } |
93 | x+= width; | 108 | x+= width; |
94 | } | 109 | } |
95 | 110 | ||
96 | p.end(); | 111 | p.end(); |
97 | bitBlt( this, 0, 0, &pm ); | 112 | bitBlt( this, 0, 0, &pm ); |
98 | } | 113 | } |
99 | 114 | ||
100 | 115 | ||
116 | void MFrequencySpectrum::mousePressEvent( QMouseEvent* e ) | ||
117 | { | ||
118 | int xmargin = 5; | ||
119 | int ymargin = 2; | ||
120 | int y = size().height() - 2 * ymargin; | ||
121 | int x = 0; | ||
122 | int width = ( size().width() - 2 * xmargin ) / _channels; | ||
123 | |||
124 | QPoint pos = e->pos(); | ||
125 | int channel = ( pos.x()-xmargin ) / width; | ||
126 | int height = 100 - ( pos.y()-ymargin )*100/y; | ||
127 | if ( channel < 15 ) _values[channel] = height; | ||
128 | |||
129 | } | ||
130 | |||
131 | |||
101 | Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) | 132 | Legende::Legende( int channels, QWidget* parent, const char* name, WFlags f ) |
102 | :QFrame( parent, name, f ), _channels( channels ) | 133 | :QFrame( parent, name, f ), _channels( channels ) |
103 | { | 134 | { |
104 | setLineWidth( 2 ); | 135 | setLineWidth( 2 ); |
105 | setFrameStyle( Panel + Sunken ); | 136 | setFrameStyle( Panel + Sunken ); |
106 | setFixedHeight( 16 ); | 137 | setFixedHeight( 16 ); |
107 | 138 | ||
108 | } | 139 | } |
109 | 140 | ||
110 | 141 | ||
111 | void Legende::drawContents( QPainter* p ) | 142 | void Legende::drawContents( QPainter* p ) |
112 | { | 143 | { |
@@ -116,44 +147,41 @@ void Legende::drawContents( QPainter* p ) | |||
116 | int width = ( contentsRect().width() - 2 * xmargin ) / _channels; | 147 | int width = ( contentsRect().width() - 2 * xmargin ) / _channels; |
117 | 148 | ||
118 | for ( int i = 0; i < _channels; ++i ) | 149 | for ( int i = 0; i < _channels; ++i ) |
119 | p->drawText( xmargin + (width*i), 12, QString().sprintf( "%02d", i+1 ) ); | 150 | p->drawText( xmargin + (width*i), 12, QString().sprintf( "%02d", i+1 ) ); |
120 | } | 151 | } |
121 | 152 | ||
122 | 153 | ||
123 | MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) | 154 | MGraphWindow::MGraphWindow( QWidget* parent, const char* name, WFlags f ) |
124 | :QVBox( parent, name, f ) | 155 | :QVBox( parent, name, f ) |
125 | { | 156 | { |
126 | spectrum = new MFrequencySpectrum( 14, this ); | 157 | spectrum = new MFrequencySpectrum( 14, this ); |
127 | legende = new Legende( 14, this ); | 158 | legende = new Legende( 14, this ); |
128 | startTimer( 50 ); //FIXME: tweak | 159 | startTimer( 50 ); |
129 | |||
130 | //testGraph(); | ||
131 | |||
132 | }; | 160 | }; |
133 | 161 | ||
134 | 162 | ||
135 | void MGraphWindow::testGraph() | 163 | void MGraphWindow::testGraph() |
136 | { | 164 | { |
137 | static int i = 0; | 165 | static int i = 0; |
138 | spectrum->setValue( i++, 100 ); | 166 | spectrum->setValue( i++, 100 ); |
139 | if ( i == 14 ) i = 0; | 167 | if ( i == 14 ) i = 0; |
140 | QTimer::singleShot( 2000, this, SLOT( testGraph() ) ); | 168 | QTimer::singleShot( 2000, this, SLOT( testGraph() ) ); |
141 | 169 | ||
142 | } | 170 | } |
143 | 171 | ||
144 | 172 | ||
145 | void MGraphWindow::timerEvent( QTimerEvent* e ) | 173 | void MGraphWindow::timerEvent( QTimerEvent* e ) |
146 | { | 174 | { |
147 | for ( int i = 0; i < 14; i++ ) | 175 | for ( int i = 0; i < 14; i++ ) |
148 | { | 176 | { |
149 | spectrum->decrease( i, 1 ); //TODO: make this customizable? | 177 | spectrum->decrease( i, 1 ); |
150 | } | 178 | } |
151 | spectrum->repaint(); | 179 | spectrum->repaint(); |
152 | } | 180 | } |
153 | 181 | ||
154 | 182 | ||
155 | void MGraphWindow::traffic( int channel, int signal ) | 183 | void MGraphWindow::traffic( int channel, int signal ) |
156 | { | 184 | { |
157 | spectrum->setValue( channel-1, signal ); | 185 | spectrum->setValue( channel-1, signal ); |
158 | } | 186 | } |
159 | 187 | ||
diff --git a/noncore/net/wellenreiter/gui/graphwindow.h b/noncore/net/wellenreiter/gui/graphwindow.h index 4050065..1e00ae7 100644 --- a/noncore/net/wellenreiter/gui/graphwindow.h +++ b/noncore/net/wellenreiter/gui/graphwindow.h | |||
@@ -34,26 +34,29 @@ class MFrequencySpectrum : public QWidget | |||
34 | }; | 34 | }; |
35 | void decrease( int channel, int amount ) | 35 | void decrease( int channel, int amount ) |
36 | { | 36 | { |
37 | if ( _values[channel] >= amount ) | 37 | if ( _values[channel] >= amount ) |
38 | { | 38 | { |
39 | _values[channel] -= amount; | 39 | _values[channel] -= amount; |
40 | _dirty[channel] = true; | 40 | _dirty[channel] = true; |
41 | } | 41 | } |
42 | }; | 42 | }; |
43 | 43 | ||
44 | protected: | 44 | protected: |
45 | virtual void paintEvent( QPaintEvent* ); | 45 | virtual void paintEvent( QPaintEvent* ); |
46 | virtual void mousePressEvent( QMouseEvent* ); | ||
46 | 47 | ||
47 | void drawLine( QPainter* p, int x, int y, int width, const QColor& c ); | 48 | void drawLine( QPainter* p, int x, int y, int width, const QColor& c ); |
49 | void drawTopLine( QPainter* p, int x, int y, int width, const QColor& c ); | ||
50 | void drawBottomLine( 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 ); | 51 | void MFrequencySpectrum::drawBar( QPainter* p, int x, int y, int width, int height, int maxheight ); |
49 | 52 | ||
50 | private: | 53 | private: |
51 | int _channels; | 54 | int _channels; |
52 | int* _values; | 55 | int* _values; |
53 | bool* _dirty; | 56 | bool* _dirty; |
54 | }; | 57 | }; |
55 | 58 | ||
56 | 59 | ||
57 | class Legende : public QFrame | 60 | class Legende : public QFrame |
58 | { | 61 | { |
59 | public: | 62 | public: |
diff --git a/noncore/net/wellenreiter/gui/protolistview.cpp b/noncore/net/wellenreiter/gui/protolistview.cpp index d4b0dfe..f4b45d0 100644 --- a/noncore/net/wellenreiter/gui/protolistview.cpp +++ b/noncore/net/wellenreiter/gui/protolistview.cpp | |||
@@ -19,37 +19,37 @@ | |||
19 | #include <qcheckbox.h> | 19 | #include <qcheckbox.h> |
20 | #include <qcombobox.h> | 20 | #include <qcombobox.h> |
21 | #include <qhbox.h> | 21 | #include <qhbox.h> |
22 | #include <qvbox.h> | 22 | #include <qvbox.h> |
23 | #include <qpalette.h> | 23 | #include <qpalette.h> |
24 | #include <qcolor.h> | 24 | #include <qcolor.h> |
25 | #include <qlabel.h> | 25 | #include <qlabel.h> |
26 | #include <qframe.h> | 26 | #include <qframe.h> |
27 | 27 | ||
28 | ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f ) | 28 | ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f ) |
29 | :QScrollView( parent, name, f ) | 29 | :QScrollView( parent, name, f ) |
30 | { | 30 | { |
31 | actions = ( QString( "parsePackets" ) == QString( name ) ); | 31 | parse = ( QString( "parsePackets" ) == QString( name ) ); |
32 | 32 | ||
33 | setMargins( 3, 3, 0, 0 ); | 33 | setMargins( 3, 3, 0, 0 ); |
34 | viewport()->setBackgroundColor( QCheckBox(0).palette().color( QPalette::Active, QColorGroup::Background ) ); | 34 | viewport()->setBackgroundColor( QCheckBox(0).palette().color( QPalette::Active, QColorGroup::Background ) ); |
35 | 35 | ||
36 | vbox = new QVBox( viewport() ); | 36 | vbox = new QVBox( viewport() ); |
37 | vbox->setSpacing( 1 ); | 37 | vbox->setSpacing( 1 ); |
38 | addChild( vbox ); | 38 | addChild( vbox ); |
39 | 39 | ||
40 | QHBox* hbox = new QHBox( vbox ); | 40 | QHBox* hbox = new QHBox( vbox ); |
41 | hbox->setSpacing( 40 ); | 41 | hbox->setSpacing( 40 ); |
42 | new QLabel( tr( "Protocol Family" ), hbox ); | 42 | new QLabel( tr( "Protocol Family" ), hbox ); |
43 | if ( actions ) new QLabel( tr( "Perform Action" ), hbox ); | 43 | new QLabel( tr( "Perform Action" ), hbox ); |
44 | QFrame* frame = new QFrame( vbox ); | 44 | QFrame* frame = new QFrame( vbox ); |
45 | frame->setFrameStyle( QFrame::HLine + QFrame::Sunken ); | 45 | frame->setFrameStyle( QFrame::HLine + QFrame::Sunken ); |
46 | 46 | ||
47 | //TODO: hardcoded for now...a protocol database would be nice!? | 47 | //TODO: hardcoded for now...a protocol database would be nice!? |
48 | 48 | ||
49 | //addProtocol( "Ethernet" ); | 49 | //addProtocol( "Ethernet" ); |
50 | addProtocol( "Prism" ); | 50 | addProtocol( "Prism" ); |
51 | //addProtocol( "802.11" ); | 51 | //addProtocol( "802.11" ); |
52 | addProtocol( "802.11 Management" ); | 52 | addProtocol( "802.11 Management" ); |
53 | addProtocol( "802.11 SSID" ); | 53 | addProtocol( "802.11 SSID" ); |
54 | addProtocol( "802.11 Rates" ); | 54 | addProtocol( "802.11 Rates" ); |
55 | addProtocol( "802.11 CF" ); | 55 | addProtocol( "802.11 CF" ); |
@@ -69,49 +69,56 @@ ProtocolListView::ProtocolListView( QWidget* parent, const char* name, WFlags f | |||
69 | 69 | ||
70 | 70 | ||
71 | ProtocolListView::~ProtocolListView() | 71 | ProtocolListView::~ProtocolListView() |
72 | { | 72 | { |
73 | } | 73 | } |
74 | 74 | ||
75 | 75 | ||
76 | void ProtocolListView::addProtocol( const QString& name ) | 76 | void ProtocolListView::addProtocol( const QString& name ) |
77 | { | 77 | { |
78 | QHBox* hbox = new QHBox( vbox ); | 78 | QHBox* hbox = new QHBox( vbox ); |
79 | new QCheckBox( name, hbox, (const char*) name ); | 79 | new QCheckBox( name, hbox, (const char*) name ); |
80 | 80 | ||
81 | if ( actions ) | 81 | if ( parse ) |
82 | { | 82 | { |
83 | QComboBox* combo = new QComboBox( hbox, (const char*) name ); | 83 | QComboBox* combo = new QComboBox( hbox, (const char*) name ); |
84 | #ifdef QWS | 84 | #ifdef QWS |
85 | combo->setFixedWidth( 75 ); | 85 | combo->setFixedWidth( 75 ); |
86 | #endif | 86 | #endif |
87 | combo->insertItem( "Ignore" ); | 87 | combo->insertItem( "Ignore" ); |
88 | combo->insertItem( "Discard!" ); | ||
88 | combo->insertItem( "TouchSound" ); | 89 | combo->insertItem( "TouchSound" ); |
89 | combo->insertItem( "AlarmSound" ); | 90 | combo->insertItem( "AlarmSound" ); |
90 | combo->insertItem( "KeySound" ); | 91 | combo->insertItem( "KeySound" ); |
91 | combo->insertItem( "LedOn" ); | 92 | combo->insertItem( "LedOn" ); |
92 | combo->insertItem( "LedOff" ); | 93 | combo->insertItem( "LedOff" ); |
93 | combo->insertItem( "LogMessage" ); | 94 | combo->insertItem( "LogMessage" ); |
94 | combo->insertItem( "MessageBox" ); | 95 | combo->insertItem( "MessageBox" ); |
95 | } | 96 | } |
97 | else | ||
98 | { | ||
99 | QComboBox* combo = new QComboBox( hbox, (const char*) name ); | ||
100 | #ifdef QWS | ||
101 | combo->setFixedWidth( 75 ); | ||
102 | #endif | ||
103 | combo->insertItem( "Pass" ); | ||
104 | combo->insertItem( "Discard!" ); | ||
105 | } | ||
96 | } | 106 | } |
97 | 107 | ||
98 | 108 | ||
99 | bool ProtocolListView::isProtocolChecked( const QString& name ) | 109 | bool ProtocolListView::isProtocolChecked( const QString& name ) |
100 | { | 110 | { |
101 | QCheckBox* box = (QCheckBox*) child( (const char*) name ); | 111 | QCheckBox* box = (QCheckBox*) child( (const char*) name ); |
102 | return ( box && box->isOn() ); | 112 | return ( box && box->isOn() ); |
103 | } | 113 | } |
104 | 114 | ||
105 | 115 | ||
106 | QString ProtocolListView::protocolAction( const QString& name ) | 116 | QString ProtocolListView::protocolAction( const QString& name ) |
107 | { | 117 | { |
108 | //QObject * child ( const char * objName, const char * inheritsClass = 0, | ||
109 | // bool recursiveSearch = TRUE ) | ||
110 | |||
111 | QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" ); | 118 | QComboBox* combo = (QComboBox*) child( (const char*) name, "QComboBox" ); |
112 | if ( combo ) | 119 | if ( combo ) |
113 | return combo->currentText(); | 120 | return combo->currentText(); |
114 | else | 121 | else |
115 | return "<unknown>"; | 122 | return "<unknown>"; |
116 | } | 123 | } |
117 | 124 | ||
diff --git a/noncore/net/wellenreiter/gui/protolistview.h b/noncore/net/wellenreiter/gui/protolistview.h index 166b648..8b460cb 100644 --- a/noncore/net/wellenreiter/gui/protolistview.h +++ b/noncore/net/wellenreiter/gui/protolistview.h | |||
@@ -9,39 +9,37 @@ | |||
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 PROTOLISTVIEW_H | 16 | #ifndef PROTOLISTVIEW_H |
17 | #define PROTOLISTVIEW_H | 17 | #define PROTOLISTVIEW_H |
18 | 18 | ||
19 | #include <qscrollview.h> | 19 | #include <qscrollview.h> |
20 | #include <qdict.h> | 20 | #include <qdict.h> |
21 | //#include <qcheckbox.h> | ||
22 | //#include <qcombobox.h> | ||
23 | class QCheckBox; | 21 | class QCheckBox; |
24 | class QComboBox; | 22 | class QComboBox; |
25 | 23 | ||
26 | class QVBox; | 24 | class QVBox; |
27 | 25 | ||
28 | class ProtocolListView : public QScrollView | 26 | class ProtocolListView : public QScrollView |
29 | { | 27 | { |
30 | public: | 28 | public: |
31 | ProtocolListView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); | 29 | ProtocolListView( QWidget* parent = 0, const char* name = 0, WFlags f = 0 ); |
32 | virtual ~ProtocolListView(); | 30 | virtual ~ProtocolListView(); |
33 | 31 | ||
34 | bool isProtocolChecked( const QString& name ); | 32 | bool isProtocolChecked( const QString& name ); |
35 | QString protocolAction( const QString& name ); | 33 | QString protocolAction( const QString& name ); |
36 | 34 | ||
37 | protected: | 35 | protected: |
38 | virtual void addProtocol( const QString& name ); | 36 | virtual void addProtocol( const QString& name ); |
39 | 37 | ||
40 | private: | 38 | private: |
41 | QVBox* vbox; | 39 | QVBox* vbox; |
42 | bool actions; | 40 | bool parse; |
43 | }; | 41 | }; |
44 | 42 | ||
45 | 43 | ||
46 | 44 | ||
47 | #endif // PROTOLISTVIEW_H | 45 | #endif // PROTOLISTVIEW_H |
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index edf7dcf..965f6b0 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -142,30 +142,30 @@ void Wellenreiter::channelHopped(int c) | |||
142 | void Wellenreiter::handleNotification( OPacket* p ) | 142 | void Wellenreiter::handleNotification( OPacket* p ) |
143 | { | 143 | { |
144 | QObjectList* l = p->queryList(); | 144 | QObjectList* l = p->queryList(); |
145 | QObjectListIt it( *l ); | 145 | QObjectListIt it( *l ); |
146 | QObject* o; | 146 | QObject* o; |
147 | 147 | ||
148 | while ( (o = it.current()) != 0 ) | 148 | while ( (o = it.current()) != 0 ) |
149 | { | 149 | { |
150 | QString name = it.current()->name(); | 150 | QString name = it.current()->name(); |
151 | if ( configwindow->parsePackets->isProtocolChecked( name ) ) | 151 | if ( configwindow->parsePackets->isProtocolChecked( name ) ) |
152 | { | 152 | { |
153 | QString action = configwindow->parsePackets->protocolAction( name ); | 153 | QString action = configwindow->parsePackets->protocolAction( name ); |
154 | qDebug( "action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); | 154 | qDebug( "parsePacket-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); |
155 | doAction( action, name, p ); | 155 | doAction( action, name, p ); |
156 | } | 156 | } |
157 | else | 157 | else |
158 | { | 158 | { |
159 | qDebug( "protocol '%s' not checked.", (const char*) name ); | 159 | qDebug( "protocol '%s' not checked in parsePackets.", (const char*) name ); |
160 | } | 160 | } |
161 | ++it; | 161 | ++it; |
162 | } | 162 | } |
163 | } | 163 | } |
164 | 164 | ||
165 | 165 | ||
166 | void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) | 166 | void Wellenreiter::handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) |
167 | { | 167 | { |
168 | QString type; | 168 | QString type; |
169 | if ( beacon->canIBSS() ) | 169 | if ( beacon->canIBSS() ) |
170 | { | 170 | { |
171 | type = "adhoc"; | 171 | type = "adhoc"; |
@@ -262,52 +262,96 @@ void Wellenreiter::handleData( OPacket* p, OWaveLanDataPacket* data ) | |||
262 | netView()->identify( arp->targetMacAddress().toString(), arp->targetIPV4Address().toString() ); | 262 | netView()->identify( arp->targetMacAddress().toString(), arp->targetIPV4Address().toString() ); |
263 | } | 263 | } |
264 | } | 264 | } |
265 | 265 | ||
266 | OIPPacket* ip = (OIPPacket*) p->child( "IP" ); | 266 | OIPPacket* ip = (OIPPacket*) p->child( "IP" ); |
267 | if ( ip ) | 267 | if ( ip ) |
268 | { | 268 | { |
269 | qDebug( "Received IP packet." ); | 269 | qDebug( "Received IP packet." ); |
270 | } | 270 | } |
271 | } | 271 | } |
272 | 272 | ||
273 | 273 | ||
274 | QObject* childIfToParse( OPacket* p, const QString& protocol ) | 274 | QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) |
275 | { | 275 | { |
276 | //FIXME: Implement | 276 | if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) |
277 | if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) | ||
278 | return 0; | ||
279 | |||
280 | return p->child( protocol ); | ||
281 | } | ||
282 | |||
283 | |||
284 | bool Wellenreiter::checkDumpPacket( OPacket* p ) | ||
285 | { | ||
286 | // go through all child packets and see if one is inside the child hierarchy for p | ||
287 | // if so, do what the user requested (protocolAction), e.g. pass or discard | ||
288 | if ( !configwindow->writeCaptureFile->isOn() ) | ||
289 | return false; | ||
290 | |||
291 | QObjectList* l = p->queryList(); | ||
292 | QObjectListIt it( *l ); | ||
293 | QObject* o; | ||
294 | |||
295 | while ( (o = it.current()) != 0 ) | ||
296 | { | ||
297 | QString name = it.current()->name(); | ||
298 | if ( configwindow->capturePackets->isProtocolChecked( name ) ) | ||
299 | { | ||
300 | QString action = configwindow->capturePackets->protocolAction( name ); | ||
301 | qDebug( "capturePackets-action for '%s' seems to be '%s'", (const char*) name, (const char*) action ); | ||
302 | if ( action == "Discard" ) | ||
303 | { | ||
304 | logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); | ||
305 | return false; | ||
306 | } | ||
307 | } | ||
308 | else | ||
309 | { | ||
310 | qDebug( "protocol '%s' not checked in capturePackets.", (const char*) name ); | ||
311 | } | ||
312 | ++it; | ||
313 | } | ||
314 | return true; | ||
277 | } | 315 | } |
278 | 316 | ||
279 | 317 | ||
280 | void Wellenreiter::receivePacket( OPacket* p ) | 318 | void Wellenreiter::receivePacket( OPacket* p ) |
281 | { | 319 | { |
282 | hexWindow()->log( p->dump( 8 ) ); | 320 | hexWindow()->log( p->dump( 8 ) ); |
283 | 321 | ||
284 | handleNotification( p ); | 322 | if ( checkDumpPacket( p ) ) |
323 | { | ||
324 | pcap->dump( p ); | ||
325 | } | ||
285 | 326 | ||
286 | // check if we received a beacon frame | 327 | // check if we received a beacon frame |
287 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( p->child( "802.11 Management" ) ); | 328 | OWaveLanManagementPacket* beacon = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); |
288 | if ( beacon && beacon->managementType() == "Beacon" ) | 329 | if ( beacon && beacon->managementType() == "Beacon" ) |
289 | { | 330 | { |
290 | handleBeacon( p, beacon ); | 331 | handleBeacon( p, beacon ); |
291 | return; | 332 | return; |
292 | } | 333 | } |
293 | 334 | ||
294 | //TODO: WEP check here | 335 | //TODO: WEP check here |
295 | 336 | ||
296 | // check for a data frame | 337 | // check for a data frame |
297 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( p->child( "802.11 Data" ) ); | 338 | OWaveLanDataPacket* data = static_cast<OWaveLanDataPacket*>( childIfToParse( p, "802.11 Data" ) ); |
298 | if ( data ) | 339 | if ( data ) |
299 | { | 340 | { |
300 | handleData( p, data ); | 341 | handleData( p, data ); |
301 | } | 342 | } |
343 | |||
344 | handleNotification( p ); | ||
345 | |||
302 | } | 346 | } |
303 | 347 | ||
304 | 348 | ||
305 | void Wellenreiter::stopClicked() | 349 | void Wellenreiter::stopClicked() |
306 | { | 350 | { |
307 | if ( iface ) | 351 | if ( iface ) |
308 | { | 352 | { |
309 | disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); | 353 | disconnect( SIGNAL( receivedPacket(OPacket*) ), this, SLOT( receivePacket(OPacket*) ) ); |
310 | disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); | 354 | disconnect( SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); |
311 | iface->setChannelHopping(); // stop hopping channels | 355 | iface->setChannelHopping(); // stop hopping channels |
312 | } | 356 | } |
313 | else | 357 | else |
@@ -385,31 +429,33 @@ void Wellenreiter::startClicked() | |||
385 | iface->setMonitorMode( true ); | 429 | iface->setMonitorMode( true ); |
386 | if ( !iface->monitorMode() ) | 430 | if ( !iface->monitorMode() ) |
387 | { | 431 | { |
388 | QMessageBox::warning( this, "Wellenreiter II", | 432 | QMessageBox::warning( this, "Wellenreiter II", |
389 | tr( "Can't set device into monitor mode." ) ); | 433 | tr( "Can't set device into monitor mode." ) ); |
390 | return; | 434 | return; |
391 | } | 435 | } |
392 | } | 436 | } |
393 | 437 | ||
394 | // open pcap and start sniffing | 438 | // open pcap and start sniffing |
395 | if ( cardtype != DEVTYPE_FILE ) | 439 | if ( cardtype != DEVTYPE_FILE ) |
396 | { | 440 | { |
397 | if ( configwindow->writeCaptureFile->isEnabled() ) //FIXME: bug!? | 441 | pcap->open( interface ); |
442 | |||
443 | if ( configwindow->writeCaptureFile->isOn() ) | ||
398 | { | 444 | { |
399 | QString dumpname( configwindow->captureFileName->text() ); | 445 | QString dumpname( configwindow->captureFileName->text() ); |
400 | dumpname.append( '-' ); | 446 | dumpname.append( '-' ); |
401 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); | 447 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); |
402 | dumpname.append( ".wellenreiter" ); | 448 | dumpname.append( ".wellenreiter" ); |
403 | pcap->open( interface, dumpname ); | 449 | pcap->openDumpFile( dumpname ); |
404 | } | 450 | } |
405 | else | 451 | else |
406 | { | 452 | { |
407 | pcap->open( interface ); | 453 | pcap->open( interface ); |
408 | } | 454 | } |
409 | } | 455 | } |
410 | else | 456 | else |
411 | { | 457 | { |
412 | pcap->open( QFile( interface ) ); | 458 | pcap->open( QFile( interface ) ); |
413 | } | 459 | } |
414 | 460 | ||
415 | if ( !pcap->isOpen() ) | 461 | if ( !pcap->isOpen() ) |
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index e227a24..37e692c 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h | |||
@@ -60,25 +60,26 @@ class Wellenreiter : public WellenreiterBase { | |||
60 | void stopClicked(); | 60 | void stopClicked(); |
61 | 61 | ||
62 | signals: | 62 | signals: |
63 | void startedSniffing(); | 63 | void startedSniffing(); |
64 | void stoppedSniffing(); | 64 | void stoppedSniffing(); |
65 | 65 | ||
66 | private: | 66 | private: |
67 | void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); | 67 | void handleBeacon( OPacket* p, OWaveLanManagementPacket* beacon ); |
68 | void handleData( OPacket* p, OWaveLanDataPacket* data ); | 68 | void handleData( OPacket* p, OWaveLanDataPacket* data ); |
69 | void handleNotification( OPacket* p ); | 69 | void handleNotification( OPacket* p ); |
70 | void doAction( const QString& action, const QString& protocol, OPacket* p ); | 70 | void doAction( const QString& action, const QString& protocol, OPacket* p ); |
71 | QObject* childIfToParse( OPacket* p, const QString& protocol ); | 71 | QObject* childIfToParse( OPacket* p, const QString& protocol ); |
72 | 72 | bool checkDumpPacket( OPacket* p ); | |
73 | |||
73 | private: | 74 | private: |
74 | #ifdef QWS | 75 | #ifdef QWS |
75 | OSystem _system; // Opie Operating System identifier | 76 | OSystem _system; // Opie Operating System identifier |
76 | #endif | 77 | #endif |
77 | 78 | ||
78 | OWirelessNetworkInterface* iface; | 79 | OWirelessNetworkInterface* iface; |
79 | OPacketCapturer* pcap; | 80 | OPacketCapturer* pcap; |
80 | ManufacturerDB* manufacturerdb; | 81 | ManufacturerDB* manufacturerdb; |
81 | WellenreiterConfigWindow* configwindow; | 82 | WellenreiterConfigWindow* configwindow; |
82 | 83 | ||
83 | //void readConfig(); | 84 | //void readConfig(); |
84 | //void writeConfig(); | 85 | //void writeConfig(); |