-rw-r--r-- | noncore/applets/zkbapplet/zkbwidget.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/keyz-cfg/zkb.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/keyz-cfg/zkbcfg.cpp | 4 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/configwindow.cpp | 8 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/mainwindow.cpp | 18 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/scanlist.cpp | 24 | ||||
-rw-r--r-- | noncore/net/wellenreiter/gui/wellenreiter.cpp | 58 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanimp2.cpp | 4 | ||||
-rw-r--r-- | noncore/settings/sysinfo/benchmarkinfo.cpp | 2 |
9 files changed, 61 insertions, 61 deletions
diff --git a/noncore/applets/zkbapplet/zkbwidget.cpp b/noncore/applets/zkbapplet/zkbwidget.cpp index 13d554c..38bfba9 100644 --- a/noncore/applets/zkbapplet/zkbwidget.cpp +++ b/noncore/applets/zkbapplet/zkbwidget.cpp | |||
@@ -73,49 +73,49 @@ bool ZkbWidget::loadKeymap() { | |||
73 | ++it, n++) { | 73 | ++it, n++) { |
74 | 74 | ||
75 | // printf("label: %s\n", (const char*) (*it).utf8()); | 75 | // printf("label: %s\n", (const char*) (*it).utf8()); |
76 | 76 | ||
77 | labels->insertItem(*it, n, n); | 77 | labels->insertItem(*it, n, n); |
78 | int lw = fm.width(*it); | 78 | int lw = fm.width(*it); |
79 | if (lw > w) { | 79 | if (lw > w) { |
80 | w = lw; | 80 | w = lw; |
81 | } | 81 | } |
82 | } | 82 | } |
83 | 83 | ||
84 | if (w == 0) { | 84 | if (w == 0) { |
85 | hide(); | 85 | hide(); |
86 | } else { | 86 | } else { |
87 | show(); | 87 | show(); |
88 | } | 88 | } |
89 | return true; | 89 | return true; |
90 | } | 90 | } |
91 | 91 | ||
92 | QSize ZkbWidget::sizeHint() const { | 92 | QSize ZkbWidget::sizeHint() const { |
93 | return QSize(AppLnk::smallIconSize(),AppLnk::smallIconSize()); | 93 | return QSize(AppLnk::smallIconSize(),AppLnk::smallIconSize()); |
94 | } | 94 | } |
95 | 95 | ||
96 | void ZkbWidget::stateChanged(const QString& s) { | 96 | void ZkbWidget::stateChanged(const QString& s) { |
97 | //odebug << "stateChanged: " << (const char*) s.utf8() << "\n" << oendl; | 97 | //odebug << "stateChanged: " << s.utf8() << "\n" << oendl; |
98 | setText(s); | 98 | setText(s); |
99 | } | 99 | } |
100 | 100 | ||
101 | void ZkbWidget::labelChanged(int id) { | 101 | void ZkbWidget::labelChanged(int id) { |
102 | if (id == 0) { | 102 | if (id == 0) { |
103 | keymap->disable(); | 103 | keymap->disable(); |
104 | setPixmap(disabled); | 104 | setPixmap(disabled); |
105 | return; | 105 | return; |
106 | } | 106 | } |
107 | 107 | ||
108 | keymap->enable(); | 108 | keymap->enable(); |
109 | 109 | ||
110 | QStringList l = keymap->listLabels(); | 110 | QStringList l = keymap->listLabels(); |
111 | QString lbl = l[id-1]; | 111 | QString lbl = l[id-1]; |
112 | 112 | ||
113 | //printf("labelChanged: %s\n", (const char*) lbl.utf8()); | 113 | //printf("labelChanged: %s\n", (const char*) lbl.utf8()); |
114 | State* state = keymap->getStateByLabel(lbl); | 114 | State* state = keymap->getStateByLabel(lbl); |
115 | if (state != 0) { | 115 | if (state != 0) { |
116 | keymap->setCurrentState(state); | 116 | keymap->setCurrentState(state); |
117 | setText(lbl); | 117 | setText(lbl); |
118 | } | 118 | } |
119 | } | 119 | } |
120 | 120 | ||
121 | void ZkbWidget::mouseReleaseEvent(QMouseEvent*) { | 121 | void ZkbWidget::mouseReleaseEvent(QMouseEvent*) { |
diff --git a/noncore/apps/keyz-cfg/zkb.cpp b/noncore/apps/keyz-cfg/zkb.cpp index 8382615..58bde2a 100644 --- a/noncore/apps/keyz-cfg/zkb.cpp +++ b/noncore/apps/keyz-cfg/zkb.cpp | |||
@@ -343,49 +343,49 @@ QStringList Keymap::listLabels() { | |||
343 | 343 | ||
344 | return ret; | 344 | return ret; |
345 | } | 345 | } |
346 | 346 | ||
347 | State* Keymap::getStateByLabel(const QString& label) { | 347 | State* Keymap::getStateByLabel(const QString& label) { |
348 | QMap<QString, QString>::Iterator lit = labels.find(label); | 348 | QMap<QString, QString>::Iterator lit = labels.find(label); |
349 | State* state = 0; | 349 | State* state = 0; |
350 | 350 | ||
351 | if (lit == labels.end()) { | 351 | if (lit == labels.end()) { |
352 | return 0; | 352 | return 0; |
353 | } | 353 | } |
354 | 354 | ||
355 | QString name = lit.data(); | 355 | QString name = lit.data(); |
356 | 356 | ||
357 | int n = name.find(":*"); | 357 | int n = name.find(":*"); |
358 | if (n>=0 && n==(int)(name.length()-2)) { | 358 | if (n>=0 && n==(int)(name.length()-2)) { |
359 | name=name.left(name.length() - 1); | 359 | name=name.left(name.length() - 1); |
360 | 360 | ||
361 | n = currentStateName.findRev(":"); | 361 | n = currentStateName.findRev(":"); |
362 | if (n >= 0) { | 362 | if (n >= 0) { |
363 | name += currentStateName.mid(n+1); | 363 | name += currentStateName.mid(n+1); |
364 | } | 364 | } |
365 | } | 365 | } |
366 | 366 | ||
367 | //odebug << "look for: " << (const char*) name.utf8() << "\n" << oendl; | 367 | //odebug << "look for: " << name.utf8() << "\n" << oendl; |
368 | QMap<QString, State*>::Iterator sit = states.find(name); | 368 | QMap<QString, State*>::Iterator sit = states.find(name); |
369 | if (sit != states.end()) { | 369 | if (sit != states.end()) { |
370 | state = sit.data(); | 370 | state = sit.data(); |
371 | } | 371 | } |
372 | 372 | ||
373 | return state; | 373 | return state; |
374 | } | 374 | } |
375 | 375 | ||
376 | bool Keymap::addState(const QString& name, State* state) { | 376 | bool Keymap::addState(const QString& name, State* state) { |
377 | if (states.find(name) != states.end()) { | 377 | if (states.find(name) != states.end()) { |
378 | return false; | 378 | return false; |
379 | } | 379 | } |
380 | 380 | ||
381 | states.insert(name, state); | 381 | states.insert(name, state); |
382 | lsmapInSync = false; | 382 | lsmapInSync = false; |
383 | 383 | ||
384 | if (currentState == 0) { | 384 | if (currentState == 0) { |
385 | setCurrentState(state); | 385 | setCurrentState(state); |
386 | } | 386 | } |
387 | 387 | ||
388 | return true; | 388 | return true; |
389 | } | 389 | } |
390 | 390 | ||
391 | State* Keymap::getCurrentState() const { | 391 | State* Keymap::getCurrentState() const { |
diff --git a/noncore/apps/keyz-cfg/zkbcfg.cpp b/noncore/apps/keyz-cfg/zkbcfg.cpp index f1d53ba..24bd897 100644 --- a/noncore/apps/keyz-cfg/zkbcfg.cpp +++ b/noncore/apps/keyz-cfg/zkbcfg.cpp | |||
@@ -1,46 +1,46 @@ | |||
1 | #include "zkbcfg.h" | 1 | #include "zkbcfg.h" |
2 | 2 | ||
3 | /* OPIE */ | 3 | /* OPIE */ |
4 | #include <opie2/odebug.h> | 4 | #include <opie2/odebug.h> |
5 | using namespace Opie::Core; | 5 | using namespace Opie::Core; |
6 | 6 | ||
7 | /* QT */ | 7 | /* QT */ |
8 | #include <qfileinfo.h> | 8 | #include <qfileinfo.h> |
9 | 9 | ||
10 | // Implementation of XkbConfig class | 10 | // Implementation of XkbConfig class |
11 | ZkbConfig::ZkbConfig(const QString& dir):path(dir) { | 11 | ZkbConfig::ZkbConfig(const QString& dir):path(dir) { |
12 | } | 12 | } |
13 | 13 | ||
14 | ZkbConfig::~ZkbConfig() { | 14 | ZkbConfig::~ZkbConfig() { |
15 | } | 15 | } |
16 | 16 | ||
17 | bool ZkbConfig::load(const QString& file, Keymap& keymap, const QString& prefix) { | 17 | bool ZkbConfig::load(const QString& file, Keymap& keymap, const QString& prefix) { |
18 | bool ret; | 18 | bool ret; |
19 | QFile f(path+"/"+file); | 19 | QFile f(path+"/"+file); |
20 | QFileInfo fi(f); | 20 | QFileInfo fi(f); |
21 | 21 | ||
22 | odebug << "start loading file=" << (const char*) file.utf8() << "\n" << oendl; | 22 | odebug << "start loading file=" << file.utf8() << "\n" << oendl; |
23 | if (includedFiles.find(fi.absFilePath()) != includedFiles.end()) { | 23 | if (includedFiles.find(fi.absFilePath()) != includedFiles.end()) { |
24 | return false; | 24 | return false; |
25 | } | 25 | } |
26 | 26 | ||
27 | includedFiles.insert(fi.absFilePath(), 1); | 27 | includedFiles.insert(fi.absFilePath(), 1); |
28 | QXmlInputSource is(f); | 28 | QXmlInputSource is(f); |
29 | QXmlSimpleReader reader; | 29 | QXmlSimpleReader reader; |
30 | ZkbHandler h(*this, keymap, prefix); | 30 | ZkbHandler h(*this, keymap, prefix); |
31 | 31 | ||
32 | reader.setContentHandler(&h); | 32 | reader.setContentHandler(&h); |
33 | reader.setErrorHandler(this); | 33 | reader.setErrorHandler(this); |
34 | ret = reader.parse(is); | 34 | ret = reader.parse(is); |
35 | includedFiles.remove(fi.absFilePath()); | 35 | includedFiles.remove(fi.absFilePath()); |
36 | 36 | ||
37 | odebug << "end loading file=" << file.utf8() << ": status=" << err.utf8() << oendl; | 37 | odebug << "end loading file=" << file.utf8() << ": status=" << err.utf8() << oendl; |
38 | return ret; | 38 | return ret; |
39 | } | 39 | } |
40 | 40 | ||
41 | bool ZkbConfig::warning(const QXmlParseException& e) { | 41 | bool ZkbConfig::warning(const QXmlParseException& e) { |
42 | QString tmp; | 42 | QString tmp; |
43 | 43 | ||
44 | tmp.sprintf("%d: warning: %s\n", e.lineNumber(), | 44 | tmp.sprintf("%d: warning: %s\n", e.lineNumber(), |
45 | (const char*) e.message().utf8()); | 45 | (const char*) e.message().utf8()); |
46 | 46 | ||
@@ -104,49 +104,49 @@ bool ZkbHandler::startIncludeElement(const QString& file, | |||
104 | if (!ret) { | 104 | if (!ret) { |
105 | setError("Error including file: " + file); | 105 | setError("Error including file: " + file); |
106 | } | 106 | } |
107 | 107 | ||
108 | return ret; | 108 | return ret; |
109 | } | 109 | } |
110 | 110 | ||
111 | bool ZkbHandler::startLabelElement(const QString& label, | 111 | bool ZkbHandler::startLabelElement(const QString& label, |
112 | const QString& state) { | 112 | const QString& state) { |
113 | 113 | ||
114 | if (!keymap.addLabel(label, prefix + state)) { | 114 | if (!keymap.addLabel(label, prefix + state)) { |
115 | err = "label " + label + " already defined"; | 115 | err = "label " + label + " already defined"; |
116 | return false; | 116 | return false; |
117 | } | 117 | } |
118 | 118 | ||
119 | return true; | 119 | return true; |
120 | } | 120 | } |
121 | 121 | ||
122 | bool ZkbHandler::startStateElement(const QString& name, | 122 | bool ZkbHandler::startStateElement(const QString& name, |
123 | const QString& parentName, bool dflt) { | 123 | const QString& parentName, bool dflt) { |
124 | 124 | ||
125 | currentStateName = prefix + name; | 125 | currentStateName = prefix + name; |
126 | currentState = keymap.getStateByName(currentStateName); | 126 | currentState = keymap.getStateByName(currentStateName); |
127 | 127 | ||
128 | //odebug << "state name=" << (const char*) currentStateName.utf8() << "\n" << oendl; | 128 | //odebug << "state name=" << currentStateName.utf8() << "\n" << oendl; |
129 | 129 | ||
130 | State* parent = 0; | 130 | State* parent = 0; |
131 | if (!parentName.isEmpty()) { | 131 | if (!parentName.isEmpty()) { |
132 | QString pn = prefix + parentName; | 132 | QString pn = prefix + parentName; |
133 | parent = keymap.getStateByName(pn); | 133 | parent = keymap.getStateByName(pn); |
134 | if (parent == 0) { | 134 | if (parent == 0) { |
135 | err = currentStateName + | 135 | err = currentStateName + |
136 | ": undefined parent state: " + pn; | 136 | ": undefined parent state: " + pn; |
137 | return false; | 137 | return false; |
138 | } | 138 | } |
139 | } | 139 | } |
140 | 140 | ||
141 | if (currentState == 0) { | 141 | if (currentState == 0) { |
142 | currentState = new State(parent); | 142 | currentState = new State(parent); |
143 | keymap.addState(currentStateName, currentState); | 143 | keymap.addState(currentStateName, currentState); |
144 | } else { | 144 | } else { |
145 | if (parent!=0) { | 145 | if (parent!=0) { |
146 | currentState->setParent(parent); | 146 | currentState->setParent(parent); |
147 | } | 147 | } |
148 | } | 148 | } |
149 | 149 | ||
150 | if (dflt) { | 150 | if (dflt) { |
151 | keymap.setCurrentState(currentState); | 151 | keymap.setCurrentState(currentState); |
152 | } | 152 | } |
diff --git a/noncore/net/wellenreiter/gui/configwindow.cpp b/noncore/net/wellenreiter/gui/configwindow.cpp index bfdb20a..279b39c 100644 --- a/noncore/net/wellenreiter/gui/configwindow.cpp +++ b/noncore/net/wellenreiter/gui/configwindow.cpp | |||
@@ -216,49 +216,49 @@ void WellenreiterConfigWindow::synchronizeActionsAndScripts() | |||
216 | } | 216 | } |
217 | 217 | ||
218 | 218 | ||
219 | void WellenreiterConfigWindow::changedNetworkAction(int t) | 219 | void WellenreiterConfigWindow::changedNetworkAction(int t) |
220 | { | 220 | { |
221 | synchronizeActionsAndScripts(); | 221 | synchronizeActionsAndScripts(); |
222 | } | 222 | } |
223 | 223 | ||
224 | 224 | ||
225 | void WellenreiterConfigWindow::changedClientAction(int t) | 225 | void WellenreiterConfigWindow::changedClientAction(int t) |
226 | { | 226 | { |
227 | synchronizeActionsAndScripts(); | 227 | synchronizeActionsAndScripts(); |
228 | } | 228 | } |
229 | 229 | ||
230 | 230 | ||
231 | void WellenreiterConfigWindow::changedStationAction(int t) | 231 | void WellenreiterConfigWindow::changedStationAction(int t) |
232 | { | 232 | { |
233 | synchronizeActionsAndScripts(); | 233 | synchronizeActionsAndScripts(); |
234 | } | 234 | } |
235 | 235 | ||
236 | 236 | ||
237 | void WellenreiterConfigWindow::getCaptureFileNameClicked() | 237 | void WellenreiterConfigWindow::getCaptureFileNameClicked() |
238 | { | 238 | { |
239 | QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true); | 239 | QString name = ( (WellenreiterMainWindow*) qApp->mainWidget() )->getFileName(true); |
240 | odebug << "name = " << (const char*) name << "" << oendl; | 240 | odebug << "name = " << name << "" << oendl; |
241 | if ( !name.isEmpty() ) | 241 | if ( !name.isEmpty() ) |
242 | { | 242 | { |
243 | captureFileName->setText( name ); | 243 | captureFileName->setText( name ); |
244 | } | 244 | } |
245 | } | 245 | } |
246 | 246 | ||
247 | 247 | ||
248 | void WellenreiterConfigWindow::channelAllClicked(int state) | 248 | void WellenreiterConfigWindow::channelAllClicked(int state) |
249 | { | 249 | { |
250 | bool b = state; | 250 | bool b = state; |
251 | channel1->setChecked( b ); | 251 | channel1->setChecked( b ); |
252 | channel2->setChecked( b ); | 252 | channel2->setChecked( b ); |
253 | channel3->setChecked( b ); | 253 | channel3->setChecked( b ); |
254 | channel4->setChecked( b ); | 254 | channel4->setChecked( b ); |
255 | channel5->setChecked( b ); | 255 | channel5->setChecked( b ); |
256 | channel6->setChecked( b ); | 256 | channel6->setChecked( b ); |
257 | channel7->setChecked( b ); | 257 | channel7->setChecked( b ); |
258 | channel8->setChecked( b ); | 258 | channel8->setChecked( b ); |
259 | channel9->setChecked( b ); | 259 | channel9->setChecked( b ); |
260 | channel10->setChecked( b ); | 260 | channel10->setChecked( b ); |
261 | channel11->setChecked( b ); | 261 | channel11->setChecked( b ); |
262 | channel12->setChecked( b ); | 262 | channel12->setChecked( b ); |
263 | channel13->setChecked( b ); | 263 | channel13->setChecked( b ); |
264 | channel14->setChecked( b ); | 264 | channel14->setChecked( b ); |
@@ -291,78 +291,78 @@ void WellenreiterConfigWindow::performAction( const QString& type, | |||
291 | int channel, | 291 | int channel, |
292 | int signal | 292 | int signal |
293 | /* , const GpsLocation& loc */ ) | 293 | /* , const GpsLocation& loc */ ) |
294 | { | 294 | { |
295 | int action; | 295 | int action; |
296 | QString script; | 296 | QString script; |
297 | 297 | ||
298 | if ( type == "network" ) | 298 | if ( type == "network" ) |
299 | { | 299 | { |
300 | action = newNetworkAction->currentItem(); | 300 | action = newNetworkAction->currentItem(); |
301 | script = newNetworkScript->text(); | 301 | script = newNetworkScript->text(); |
302 | } | 302 | } |
303 | else if ( type == "managed" || type == "adhoc" ) | 303 | else if ( type == "managed" || type == "adhoc" ) |
304 | { | 304 | { |
305 | action = newClientAction->currentItem(); | 305 | action = newClientAction->currentItem(); |
306 | script = newClientScript->text(); | 306 | script = newClientScript->text(); |
307 | } | 307 | } |
308 | else if ( type == "station" ) | 308 | else if ( type == "station" ) |
309 | { | 309 | { |
310 | action = newStationAction->currentItem(); | 310 | action = newStationAction->currentItem(); |
311 | script = newStationScript->text(); | 311 | script = newStationScript->text(); |
312 | } | 312 | } |
313 | else | 313 | else |
314 | { | 314 | { |
315 | owarn << "WellenreiterConfigWindow::performAction(): unknown type '" << (const char*) type << "'" << oendl; | 315 | owarn << "WellenreiterConfigWindow::performAction(): unknown type '" << type << "'" << oendl; |
316 | return; | 316 | return; |
317 | } | 317 | } |
318 | 318 | ||
319 | odebug << "for event '" << (const char*) type << "' I'm going to perform action " << action << " (script='" << (const char*) script << "')" << oendl; | 319 | odebug << "for event '" << (const char*) type << "' I'm going to perform action " << action << " (script='" << script << "')" << oendl; |
320 | 320 | ||
321 | switch( action ) | 321 | switch( action ) |
322 | { | 322 | { |
323 | case 0: /* Ignore */ return; | 323 | case 0: /* Ignore */ return; |
324 | case 1: /* Play Alarm */ ODevice::inst()->playAlarmSound(); return; | 324 | case 1: /* Play Alarm */ ODevice::inst()->playAlarmSound(); return; |
325 | case 2: /* Play Click */ ODevice::inst()->playTouchSound(); return; | 325 | case 2: /* Play Click */ ODevice::inst()->playTouchSound(); return; |
326 | case 3: /* Blink LED */ break; //FIXME: Implement this | 326 | case 3: /* Blink LED */ break; //FIXME: Implement this |
327 | case 4: /* Run Script */ | 327 | case 4: /* Run Script */ |
328 | { | 328 | { |
329 | /** | 329 | /** |
330 | * | 330 | * |
331 | * Script Substitution Information: | 331 | * Script Substitution Information: |
332 | * | 332 | * |
333 | * $SSID = SSID | 333 | * $SSID = SSID |
334 | * $MAC = MAC | 334 | * $MAC = MAC |
335 | * $WEP = Wep | 335 | * $WEP = Wep |
336 | * $CHAN = Channel | 336 | * $CHAN = Channel |
337 | * | 337 | * |
338 | **/ | 338 | **/ |
339 | script = script.replace( QRegExp( "$SSID" ), essid ); | 339 | script = script.replace( QRegExp( "$SSID" ), essid ); |
340 | script = script.replace( QRegExp( "$MAC" ), mac ); | 340 | script = script.replace( QRegExp( "$MAC" ), mac ); |
341 | script = script.replace( QRegExp( "$WEP" ), wep ? QString( "true" ) : QString( "false" ) ); | 341 | script = script.replace( QRegExp( "$WEP" ), wep ? QString( "true" ) : QString( "false" ) ); |
342 | script = script.replace( QRegExp( "$CHAN" ), QString::number( channel ) ); | 342 | script = script.replace( QRegExp( "$CHAN" ), QString::number( channel ) ); |
343 | 343 | ||
344 | odebug << "going to call script '" << (const char*) script << "'" << oendl; | 344 | odebug << "going to call script '" << script << "'" << oendl; |
345 | ::system( script ); | 345 | ::system( script ); |
346 | odebug << "script returned." << oendl; | 346 | odebug << "script returned." << oendl; |
347 | return; | 347 | return; |
348 | } | 348 | } |
349 | default: assert( false ); | 349 | default: assert( false ); |
350 | } | 350 | } |
351 | } | 351 | } |
352 | 352 | ||
353 | 353 | ||
354 | void WellenreiterConfigWindow::load() | 354 | void WellenreiterConfigWindow::load() |
355 | { | 355 | { |
356 | #ifdef Q_WS_X11 | 356 | #ifdef Q_WS_X11 |
357 | #warning Persistent Configuration not yet implemented for standalone X11 build | 357 | #warning Persistent Configuration not yet implemented for standalone X11 build |
358 | performAutodetection(); | 358 | performAutodetection(); |
359 | #else | 359 | #else |
360 | odebug << "loading configuration settings..." << oendl; | 360 | odebug << "loading configuration settings..." << oendl; |
361 | 361 | ||
362 | /* This is dumb monkey typing stuff... We _need_ to do this automatically! */ | 362 | /* This is dumb monkey typing stuff... We _need_ to do this automatically! */ |
363 | 363 | ||
364 | OConfig* c = oApp->config(); | 364 | OConfig* c = oApp->config(); |
365 | 365 | ||
366 | c->setGroup( "Interface" ); | 366 | c->setGroup( "Interface" ); |
367 | 367 | ||
368 | QString interface = c->readEntry( "name", "<none>" ); | 368 | QString interface = c->readEntry( "name", "<none>" ); |
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp index a4b8839..8525109 100644 --- a/noncore/net/wellenreiter/gui/mainwindow.cpp +++ b/noncore/net/wellenreiter/gui/mainwindow.cpp | |||
@@ -231,49 +231,49 @@ void WellenreiterMainWindow::changedSniffingState() | |||
231 | 231 | ||
232 | 232 | ||
233 | WellenreiterMainWindow::~WellenreiterMainWindow() | 233 | WellenreiterMainWindow::~WellenreiterMainWindow() |
234 | { | 234 | { |
235 | odebug << "Wellenreiter: bye." << oendl; | 235 | odebug << "Wellenreiter: bye." << oendl; |
236 | }; | 236 | }; |
237 | 237 | ||
238 | 238 | ||
239 | void WellenreiterMainWindow::demoAddStations() | 239 | void WellenreiterMainWindow::demoAddStations() |
240 | { | 240 | { |
241 | //mw = 0; // test SIGSEGV handling | 241 | //mw = 0; // test SIGSEGV handling |
242 | 242 | ||
243 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 39.8794, -94.0936) ); | 243 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:00:20:EF:A6:43"), true, 6, 80, GpsLocation( 39.8794, -94.0936) ); |
244 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) ); | 244 | mw->netView()->addNewItem( "managed", "Vanille", OMacAddress::fromString("00:30:6D:EF:A6:23"), true, 11, 10, GpsLocation( 0.0, 0.0 ) ); |
245 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:03:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) ); | 245 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:03:F8:E7:16:22"), false, 3, 10, GpsLocation( 5.5, 2.3 ) ); |
246 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:04:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) ); | 246 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:04:01:E7:56:62"), false, 3, 15, GpsLocation( 2.3, 5.5 ) ); |
247 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:05:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) ); | 247 | mw->netView()->addNewItem( "adhoc", "ELAN", OMacAddress::fromString("00:05:8E:E7:56:E2"), false, 3, 20, GpsLocation( -10.0, -20.5 ) ); |
248 | } | 248 | } |
249 | 249 | ||
250 | 250 | ||
251 | void WellenreiterMainWindow::demoReadFromGps() | 251 | void WellenreiterMainWindow::demoReadFromGps() |
252 | { | 252 | { |
253 | WellenreiterConfigWindow* configwindow = WellenreiterConfigWindow::instance(); | 253 | WellenreiterConfigWindow* configwindow = WellenreiterConfigWindow::instance(); |
254 | GPS* gps = new GPS( this ); | 254 | GPS* gps = new GPS( this ); |
255 | odebug << "Wellenreiter::demoReadFromGps(): url=gps://" << (const char*) configwindow->gpsdHost->currentText() << ":" << configwindow->gpsdPort->value() << "/" << oendl; | 255 | odebug << "Wellenreiter::demoReadFromGps(): url=gps://" << configwindow->gpsdHost->currentText() << ":" << configwindow->gpsdPort->value() << "/" << oendl; |
256 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); | 256 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); |
257 | GpsLocation loc = gps->position(); | 257 | GpsLocation loc = gps->position(); |
258 | QMessageBox::information( this, "Wellenreiter/Opie", tr( "GPS said:\n%1" ).arg( loc.dmsPosition() ) ); | 258 | QMessageBox::information( this, "Wellenreiter/Opie", tr( "GPS said:\n%1" ).arg( loc.dmsPosition() ) ); |
259 | delete gps; | 259 | delete gps; |
260 | } | 260 | } |
261 | 261 | ||
262 | 262 | ||
263 | QString WellenreiterMainWindow::getFileName( bool save ) | 263 | QString WellenreiterMainWindow::getFileName( bool save ) |
264 | { | 264 | { |
265 | QMap<QString, QStringList> map; | 265 | QMap<QString, QStringList> map; |
266 | map.insert( tr("All"), QStringList() ); | 266 | map.insert( tr("All"), QStringList() ); |
267 | QStringList text; | 267 | QStringList text; |
268 | text << "text/*"; | 268 | text << "text/*"; |
269 | map.insert( tr("Text"), text ); | 269 | map.insert( tr("Text"), text ); |
270 | text << "*"; | 270 | text << "*"; |
271 | map.insert( tr("All"), text ); | 271 | map.insert( tr("All"), text ); |
272 | 272 | ||
273 | QString str; | 273 | QString str; |
274 | if ( save ) | 274 | if ( save ) |
275 | { | 275 | { |
276 | #ifdef QWS | 276 | #ifdef QWS |
277 | str = OFileDialog::getSaveFileName( 2, "/", QString::null, map ); | 277 | str = OFileDialog::getSaveFileName( 2, "/", QString::null, map ); |
278 | #else | 278 | #else |
279 | str = QFileDialog::getSaveFileName(); | 279 | str = QFileDialog::getSaveFileName(); |
@@ -285,117 +285,117 @@ QString WellenreiterMainWindow::getFileName( bool save ) | |||
285 | { | 285 | { |
286 | #ifdef QWS | 286 | #ifdef QWS |
287 | str = OFileDialog::getOpenFileName( 2, "/", QString::null, map ); | 287 | str = OFileDialog::getOpenFileName( 2, "/", QString::null, map ); |
288 | #else | 288 | #else |
289 | str = QFileDialog::getOpenFileName(); | 289 | str = QFileDialog::getOpenFileName(); |
290 | #endif | 290 | #endif |
291 | if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() ) | 291 | if ( str.isEmpty() || !QFile(str).exists() || QFileInfo(str).isDir() ) |
292 | return ""; | 292 | return ""; |
293 | } | 293 | } |
294 | return str; | 294 | return str; |
295 | } | 295 | } |
296 | 296 | ||
297 | 297 | ||
298 | void WellenreiterMainWindow::fileSaveLog() | 298 | void WellenreiterMainWindow::fileSaveLog() |
299 | { | 299 | { |
300 | QString fname = getFileName( true ); | 300 | QString fname = getFileName( true ); |
301 | if ( !fname.isEmpty() ) | 301 | if ( !fname.isEmpty() ) |
302 | { | 302 | { |
303 | QFile f( fname ); | 303 | QFile f( fname ); |
304 | if ( f.open(IO_WriteOnly) ) | 304 | if ( f.open(IO_WriteOnly) ) |
305 | { | 305 | { |
306 | QTextStream t( &f ); | 306 | QTextStream t( &f ); |
307 | t << mw->logWindow()->getLog(); | 307 | t << mw->logWindow()->getLog(); |
308 | f.close(); | 308 | f.close(); |
309 | odebug << "Saved log to file '" << (const char*) fname << "'" << oendl; | 309 | odebug << "Saved log to file '" << fname << "'" << oendl; |
310 | } | 310 | } |
311 | else | 311 | else |
312 | { | 312 | { |
313 | odebug << "Problem saving log to file '" << (const char*) fname << "'" << oendl; | 313 | odebug << "Problem saving log to file '" << fname << "'" << oendl; |
314 | } | 314 | } |
315 | } | 315 | } |
316 | } | 316 | } |
317 | 317 | ||
318 | void WellenreiterMainWindow::fileSaveSession() | 318 | void WellenreiterMainWindow::fileSaveSession() |
319 | { | 319 | { |
320 | QString fname = getFileName( true ); | 320 | QString fname = getFileName( true ); |
321 | if ( !fname.isEmpty() ) | 321 | if ( !fname.isEmpty() ) |
322 | { | 322 | { |
323 | 323 | ||
324 | QFile f( fname ); | 324 | QFile f( fname ); |
325 | if ( f.open(IO_WriteOnly) ) | 325 | if ( f.open(IO_WriteOnly) ) |
326 | { | 326 | { |
327 | QDataStream t( &f ); | 327 | QDataStream t( &f ); |
328 | t << *mw->netView(); | 328 | t << *mw->netView(); |
329 | f.close(); | 329 | f.close(); |
330 | odebug << "Saved session to file '" << (const char*) fname << "'" << oendl; | 330 | odebug << "Saved session to file '" << fname << "'" << oendl; |
331 | } | 331 | } |
332 | else | 332 | else |
333 | { | 333 | { |
334 | odebug << "Problem saving session to file '" << (const char*) fname << "'" << oendl; | 334 | odebug << "Problem saving session to file '" << fname << "'" << oendl; |
335 | } | 335 | } |
336 | } | 336 | } |
337 | } | 337 | } |
338 | 338 | ||
339 | void WellenreiterMainWindow::fileSaveHex() | 339 | void WellenreiterMainWindow::fileSaveHex() |
340 | { | 340 | { |
341 | #warning DOES NOT WORK AT THE MOMENT | 341 | #warning DOES NOT WORK AT THE MOMENT |
342 | /* | 342 | /* |
343 | QString fname = getFileName( true ); | 343 | QString fname = getFileName( true ); |
344 | if ( !fname.isEmpty() ) | 344 | if ( !fname.isEmpty() ) |
345 | { | 345 | { |
346 | QFile f( fname ); | 346 | QFile f( fname ); |
347 | if ( f.open(IO_WriteOnly) ) | 347 | if ( f.open(IO_WriteOnly) ) |
348 | { | 348 | { |
349 | QTextStream t( &f ); | 349 | QTextStream t( &f ); |
350 | t << mw->hexWindow()->getLog(); | 350 | t << mw->hexWindow()->getLog(); |
351 | f.close(); | 351 | f.close(); |
352 | odebug << "Saved hex log to file '" << (const char*) fname << "'" << oendl; | 352 | odebug << "Saved hex log to file '" << fname << "'" << oendl; |
353 | } | 353 | } |
354 | else | 354 | else |
355 | { | 355 | { |
356 | odebug << "Problem saving hex log to file '" << (const char*) fname << "'" << oendl; | 356 | odebug << "Problem saving hex log to file '" << fname << "'" << oendl; |
357 | } | 357 | } |
358 | } | 358 | } |
359 | */ | 359 | */ |
360 | } | 360 | } |
361 | 361 | ||
362 | void WellenreiterMainWindow::fileLoadSession() | 362 | void WellenreiterMainWindow::fileLoadSession() |
363 | { | 363 | { |
364 | QString fname = getFileName( false ); | 364 | QString fname = getFileName( false ); |
365 | if ( !fname.isEmpty() ) | 365 | if ( !fname.isEmpty() ) |
366 | { | 366 | { |
367 | QFile f( fname ); | 367 | QFile f( fname ); |
368 | if ( f.open(IO_ReadOnly) ) | 368 | if ( f.open(IO_ReadOnly) ) |
369 | { | 369 | { |
370 | QDataStream t( &f ); | 370 | QDataStream t( &f ); |
371 | t >> *mw->netView(); | 371 | t >> *mw->netView(); |
372 | f.close(); | 372 | f.close(); |
373 | odebug << "Loaded session from file '" << (const char*) fname << "'" << oendl; | 373 | odebug << "Loaded session from file '" << fname << "'" << oendl; |
374 | } | 374 | } |
375 | else | 375 | else |
376 | { | 376 | { |
377 | odebug << "Problem loading session from file '" << (const char*) fname << "'" << oendl; | 377 | odebug << "Problem loading session from file '" << fname << "'" << oendl; |
378 | } | 378 | } |
379 | } | 379 | } |
380 | } | 380 | } |
381 | 381 | ||
382 | 382 | ||
383 | void WellenreiterMainWindow::fileNew() | 383 | void WellenreiterMainWindow::fileNew() |
384 | { | 384 | { |
385 | mw->netView()->clear(); | 385 | mw->netView()->clear(); |
386 | mw->logWindow()->clear(); | 386 | mw->logWindow()->clear(); |
387 | mw->hexWindow()->clear(); | 387 | mw->hexWindow()->clear(); |
388 | } | 388 | } |
389 | 389 | ||
390 | 390 | ||
391 | void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) | 391 | void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) |
392 | { | 392 | { |
393 | if ( mw->isDaemonRunning() ) | 393 | if ( mw->isDaemonRunning() ) |
394 | { | 394 | { |
395 | QMessageBox::warning( this, "Wellenreiter/Opie", | 395 | QMessageBox::warning( this, "Wellenreiter/Opie", |
396 | tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) ); | 396 | tr( "Sniffing in progress!\nPlease stop sniffing before closing." ) ); |
397 | e->ignore(); | 397 | e->ignore(); |
398 | } | 398 | } |
399 | else | 399 | else |
400 | { | 400 | { |
401 | QMainWindow::closeEvent( e ); | 401 | QMainWindow::closeEvent( e ); |
diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp index a2be782..ed9ec14 100644 --- a/noncore/net/wellenreiter/gui/scanlist.cpp +++ b/noncore/net/wellenreiter/gui/scanlist.cpp | |||
@@ -121,152 +121,152 @@ void MScanListView::addNewItem( const QString& type, | |||
121 | const QString& essid, | 121 | const QString& essid, |
122 | const OMacAddress& mac, | 122 | const OMacAddress& mac, |
123 | bool wep, | 123 | bool wep, |
124 | int channel, | 124 | int channel, |
125 | int signal, | 125 | int signal, |
126 | const GpsLocation& loc, | 126 | const GpsLocation& loc, |
127 | bool probe ) | 127 | bool probe ) |
128 | { | 128 | { |
129 | QString macaddr = mac.toString(true); | 129 | QString macaddr = mac.toString(true); |
130 | 130 | ||
131 | #ifdef DEBUG | 131 | #ifdef DEBUG |
132 | qDebug( "MScanList::addNewItem( %s / %s / %s [%d]", (const char*) type, | 132 | qDebug( "MScanList::addNewItem( %s / %s / %s [%d]", (const char*) type, |
133 | (const char*) essid, (const char*) macaddr, channel ); | 133 | (const char*) essid, (const char*) macaddr, channel ); |
134 | #endif | 134 | #endif |
135 | 135 | ||
136 | // search, if we already have seen this net | 136 | // search, if we already have seen this net |
137 | 137 | ||
138 | QString s; | 138 | QString s; |
139 | MScanListItem* network; | 139 | MScanListItem* network; |
140 | MScanListItem* item = static_cast<MScanListItem*> ( firstChild() ); | 140 | MScanListItem* item = static_cast<MScanListItem*> ( firstChild() ); |
141 | 141 | ||
142 | while ( item && ( item->text( col_essid ) != essid ) ) | 142 | while ( item && ( item->text( col_essid ) != essid ) ) |
143 | { | 143 | { |
144 | #ifdef DEBUG | 144 | #ifdef DEBUG |
145 | odebug << "itemtext: " << (const char*) item->text( col_essid ) << "" << oendl; | 145 | odebug << "itemtext: " << item->text( col_essid ) << "" << oendl; |
146 | #endif | 146 | #endif |
147 | item = static_cast<MScanListItem*> ( item->nextSibling() ); | 147 | item = static_cast<MScanListItem*> ( item->nextSibling() ); |
148 | } | 148 | } |
149 | if ( item ) | 149 | if ( item ) |
150 | { | 150 | { |
151 | // we have already seen this net, check all childs if MAC exists | 151 | // we have already seen this net, check all childs if MAC exists |
152 | 152 | ||
153 | network = item; | 153 | network = item; |
154 | 154 | ||
155 | item = static_cast<MScanListItem*> ( item->firstChild() ); | 155 | item = static_cast<MScanListItem*> ( item->firstChild() ); |
156 | assert( item ); // this shouldn't fail | 156 | assert( item ); // this shouldn't fail |
157 | 157 | ||
158 | while ( item && ( item->text( col_ap ) != macaddr ) ) | 158 | while ( item && ( item->text( col_ap ) != macaddr ) ) |
159 | { | 159 | { |
160 | #ifdef DEBUG | 160 | #ifdef DEBUG |
161 | odebug << "subitemtext: " << (const char*) item->text( col_ap ) << "" << oendl; | 161 | odebug << "subitemtext: " << item->text( col_ap ) << "" << oendl; |
162 | #endif | 162 | #endif |
163 | item = static_cast<MScanListItem*> ( item->nextSibling() ); | 163 | item = static_cast<MScanListItem*> ( item->nextSibling() ); |
164 | } | 164 | } |
165 | 165 | ||
166 | if ( item ) | 166 | if ( item ) |
167 | { | 167 | { |
168 | // we have already seen this item, it's a dupe | 168 | // we have already seen this item, it's a dupe |
169 | #ifdef DEBUG | 169 | #ifdef DEBUG |
170 | odebug << "" << (const char*) macaddr << " is a dupe - ignoring..." << oendl; | 170 | odebug << "" << macaddr << " is a dupe - ignoring..." << oendl; |
171 | #endif | 171 | #endif |
172 | item->receivedBeacon(); | 172 | item->receivedBeacon(); |
173 | return; | 173 | return; |
174 | } | 174 | } |
175 | } | 175 | } |
176 | else | 176 | else |
177 | { | 177 | { |
178 | s.sprintf( "(i) New network: ESSID '%s'", (const char*) essid ); | 178 | s.sprintf( "(i) New network: ESSID '%s'", (const char*) essid ); |
179 | MLogWindow::logwindow()->log( s ); | 179 | MLogWindow::logwindow()->log( s ); |
180 | network = new MScanListItem( this, "network", essid, QString::null, 0, 0, 0, probe ); | 180 | network = new MScanListItem( this, "network", essid, QString::null, 0, 0, 0, probe ); |
181 | } | 181 | } |
182 | 182 | ||
183 | 183 | ||
184 | // insert new station as child from network | 184 | // insert new station as child from network |
185 | // no essid to reduce clutter, maybe later we have a nick or stationname to display!? | 185 | // no essid to reduce clutter, maybe later we have a nick or stationname to display!? |
186 | 186 | ||
187 | #ifdef DEBUG | 187 | #ifdef DEBUG |
188 | odebug << "inserting new station " << (const char*) macaddr << "" << oendl; | 188 | odebug << "inserting new station " << macaddr << "" << oendl; |
189 | #endif | 189 | #endif |
190 | 190 | ||
191 | MScanListItem* station = new MScanListItem( network, type, "", macaddr, wep, channel, signal ); | 191 | MScanListItem* station = new MScanListItem( network, type, "", macaddr, wep, channel, signal ); |
192 | station->setManufacturer( mac.manufacturer() ); | 192 | station->setManufacturer( mac.manufacturer() ); |
193 | station->setLocation( loc.dmsPosition() ); | 193 | station->setLocation( loc.dmsPosition() ); |
194 | 194 | ||
195 | if ( type == "managed" ) | 195 | if ( type == "managed" ) |
196 | { | 196 | { |
197 | s.sprintf( "(i) New Access Point in '%s' [%d]", (const char*) essid, channel ); | 197 | s.sprintf( "(i) New Access Point in '%s' [%d]", (const char*) essid, channel ); |
198 | } | 198 | } |
199 | else | 199 | else |
200 | { | 200 | { |
201 | s.sprintf( "(i) New AdHoc station in '%s' [%d]", (const char*) essid, channel ); | 201 | s.sprintf( "(i) New AdHoc station in '%s' [%d]", (const char*) essid, channel ); |
202 | } | 202 | } |
203 | MLogWindow::logwindow()->log( s ); | 203 | MLogWindow::logwindow()->log( s ); |
204 | } | 204 | } |
205 | 205 | ||
206 | 206 | ||
207 | void MScanListView::addIfNotExisting( MScanListItem* network, const OMacAddress& addr, const QString& type ) | 207 | void MScanListView::addIfNotExisting( MScanListItem* network, const OMacAddress& addr, const QString& type ) |
208 | { | 208 | { |
209 | MScanListItem* subitem = static_cast<MScanListItem*>( network->firstChild() ); | 209 | MScanListItem* subitem = static_cast<MScanListItem*>( network->firstChild() ); |
210 | 210 | ||
211 | while ( subitem && ( subitem->text( col_ap ) != addr.toString(true) ) ) | 211 | while ( subitem && ( subitem->text( col_ap ) != addr.toString(true) ) ) |
212 | { | 212 | { |
213 | #ifdef DEBUG | 213 | #ifdef DEBUG |
214 | odebug << "subitemtext: " << (const char*) subitem->text( col_ap ) << "" << oendl; | 214 | odebug << "subitemtext: " << subitem->text( col_ap ) << "" << oendl; |
215 | #endif | 215 | #endif |
216 | subitem = static_cast<MScanListItem*> ( subitem->nextSibling() ); | 216 | subitem = static_cast<MScanListItem*> ( subitem->nextSibling() ); |
217 | } | 217 | } |
218 | 218 | ||
219 | if ( subitem ) | 219 | if ( subitem ) |
220 | { | 220 | { |
221 | // we have already seen this item, it's a dupe | 221 | // we have already seen this item, it's a dupe |
222 | #ifdef DEBUG | 222 | #ifdef DEBUG |
223 | odebug << "" << (const char*) addr.toString(true) << " is a dupe - ignoring..." << oendl; | 223 | odebug << "" << addr.toString(true) << " is a dupe - ignoring..." << oendl; |
224 | #endif | 224 | #endif |
225 | subitem->receivedBeacon(); //FIXME: sent data bit | 225 | subitem->receivedBeacon(); //FIXME: sent data bit |
226 | return; | 226 | return; |
227 | } | 227 | } |
228 | 228 | ||
229 | // Hey, it seems to be a new item :-D | 229 | // Hey, it seems to be a new item :-D |
230 | MScanListItem* station = new MScanListItem( network, type, /* network->text( col_essid ) */ "", addr.toString(true), false, -1, -1 ); | 230 | MScanListItem* station = new MScanListItem( network, type, /* network->text( col_essid ) */ "", addr.toString(true), false, -1, -1 ); |
231 | station->setManufacturer( addr.manufacturer() ); | 231 | station->setManufacturer( addr.manufacturer() ); |
232 | 232 | ||
233 | QString s; | 233 | QString s; |
234 | if ( type == "station" ) | 234 | if ( type == "station" ) |
235 | { | 235 | { |
236 | s.sprintf( "(i) New Station in '%s' [xx]", (const char*) network->text( col_essid ) ); | 236 | s.sprintf( "(i) New Station in '%s' [xx]", (const char*) network->text( col_essid ) ); |
237 | } | 237 | } |
238 | else | 238 | else |
239 | { | 239 | { |
240 | s.sprintf( "(i) New Wireless Station in '%s' [xx]", (const char*) network->text( col_essid ) ); | 240 | s.sprintf( "(i) New Wireless Station in '%s' [xx]", (const char*) network->text( col_essid ) ); |
241 | } | 241 | } |
242 | MLogWindow::logwindow()->log( s ); | 242 | MLogWindow::logwindow()->log( s ); |
243 | } | 243 | } |
244 | 244 | ||
245 | 245 | ||
246 | void MScanListView::WDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& viaFrom, const OMacAddress& viaTo ) | 246 | void MScanListView::WDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& viaFrom, const OMacAddress& viaTo ) |
247 | { | 247 | { |
248 | odebug << "WDSTraffic: " << (const char*) viaFrom.toString() << " and " << (const char*) viaTo.toString() << " seem to form a WDS" << oendl; | 248 | odebug << "WDSTraffic: " << (const char*) viaFrom.toString() << " and " << viaTo.toString() << " seem to form a WDS" << oendl; |
249 | QString s; | 249 | QString s; |
250 | MScanListItem* network; | 250 | MScanListItem* network; |
251 | 251 | ||
252 | QListViewItemIterator it( this ); | 252 | QListViewItemIterator it( this ); |
253 | while ( it.current() && | 253 | while ( it.current() && |
254 | it.current()->text( col_ap ) != viaFrom.toString(true) && | 254 | it.current()->text( col_ap ) != viaFrom.toString(true) && |
255 | it.current()->text( col_ap ) != viaTo.toString(true) ) ++it; | 255 | it.current()->text( col_ap ) != viaTo.toString(true) ) ++it; |
256 | 256 | ||
257 | MScanListItem* item = static_cast<MScanListItem*>( it.current() ); | 257 | MScanListItem* item = static_cast<MScanListItem*>( it.current() ); |
258 | 258 | ||
259 | if ( item ) // Either viaFrom or viaTo AP has shown up yet, so just add our two new stations | 259 | if ( item ) // Either viaFrom or viaTo AP has shown up yet, so just add our two new stations |
260 | { | 260 | { |
261 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), from ); | 261 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), from ); |
262 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), to ); | 262 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), to ); |
263 | } | 263 | } |
264 | else | 264 | else |
265 | { | 265 | { |
266 | odebug << "D'Oh! Stations without AP... ignoring for now... will handle this in 1.1 version :-D" << oendl; | 266 | odebug << "D'Oh! Stations without AP... ignoring for now... will handle this in 1.1 version :-D" << oendl; |
267 | MLogWindow::logwindow()->log( "WARNING: Unhandled WSD traffic!" ); | 267 | MLogWindow::logwindow()->log( "WARNING: Unhandled WSD traffic!" ); |
268 | } | 268 | } |
269 | } | 269 | } |
270 | 270 | ||
271 | 271 | ||
272 | void MScanListView::toDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ) | 272 | void MScanListView::toDStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ) |
@@ -302,94 +302,94 @@ void MScanListView::fromDStraffic( const OMacAddress& from, const OMacAddress& t | |||
302 | 302 | ||
303 | MScanListItem* item = static_cast<MScanListItem*>( it.current() ); | 303 | MScanListItem* item = static_cast<MScanListItem*>( it.current() ); |
304 | 304 | ||
305 | if ( item ) // AP has shown up yet, so just add our new "from" - station | 305 | if ( item ) // AP has shown up yet, so just add our new "from" - station |
306 | { | 306 | { |
307 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), from, "station" ); | 307 | addIfNotExisting( static_cast<MScanListItem*>(item->parent()), from, "station" ); |
308 | } | 308 | } |
309 | else | 309 | else |
310 | { | 310 | { |
311 | odebug << "D'Oh! Station without AP... ignoring for now... will handle this in 1.1 :-D" << oendl; | 311 | odebug << "D'Oh! Station without AP... ignoring for now... will handle this in 1.1 :-D" << oendl; |
312 | MLogWindow::logwindow()->log( "WARNING: Unhandled fromDS traffic!" ); | 312 | MLogWindow::logwindow()->log( "WARNING: Unhandled fromDS traffic!" ); |
313 | } | 313 | } |
314 | } | 314 | } |
315 | 315 | ||
316 | 316 | ||
317 | void MScanListView::IBSStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ) | 317 | void MScanListView::IBSStraffic( const OMacAddress& from, const OMacAddress& to, const OMacAddress& via ) |
318 | { | 318 | { |
319 | owarn << "D'oh! Not yet implemented..." << oendl; | 319 | owarn << "D'oh! Not yet implemented..." << oendl; |
320 | MLogWindow::logwindow()->log( "WARNING: Unhandled IBSS traffic!" ); | 320 | MLogWindow::logwindow()->log( "WARNING: Unhandled IBSS traffic!" ); |
321 | } | 321 | } |
322 | 322 | ||
323 | 323 | ||
324 | void MScanListView::identify( const OMacAddress& macaddr, const QString& ip ) | 324 | void MScanListView::identify( const OMacAddress& macaddr, const QString& ip ) |
325 | { | 325 | { |
326 | odebug << "identify " << (const char*) macaddr.toString() << " = " << (const char*) ip << "" << oendl; | 326 | odebug << "identify " << (const char*) macaddr.toString() << " = " << ip << "" << oendl; |
327 | 327 | ||
328 | QListViewItemIterator it( this ); | 328 | QListViewItemIterator it( this ); |
329 | for ( ; it.current(); ++it ) | 329 | for ( ; it.current(); ++it ) |
330 | { | 330 | { |
331 | if ( it.current()->text( col_ap ) == macaddr.toString(true) ) | 331 | if ( it.current()->text( col_ap ) == macaddr.toString(true) ) |
332 | { | 332 | { |
333 | it.current()->setText( col_ip, ip ); | 333 | it.current()->setText( col_ip, ip ); |
334 | return; | 334 | return; |
335 | } | 335 | } |
336 | } | 336 | } |
337 | odebug << "D'oh! Received identification, but item not yet in list... ==> Handle this!" << oendl; | 337 | odebug << "D'oh! Received identification, but item not yet in list... ==> Handle this!" << oendl; |
338 | MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled identification %s = %s!", | 338 | MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled identification %s = %s!", |
339 | (const char*) macaddr.toString(), (const char*) ip ) ); | 339 | (const char*) macaddr.toString(), (const char*) ip ) ); |
340 | } | 340 | } |
341 | 341 | ||
342 | 342 | ||
343 | void MScanListView::addService( const QString& name, const OMacAddress& macaddr, const QString& ip ) | 343 | void MScanListView::addService( const QString& name, const OMacAddress& macaddr, const QString& ip ) |
344 | { | 344 | { |
345 | odebug << "addService '" << (const char*) name << "', Server = " << (const char*) macaddr.toString() << " = " << (const char*) ip << "" << oendl; | 345 | odebug << "addService '" << (const char*) name << "', Server = " << (const char*) macaddr.toString() << " = " << ip << "" << oendl; |
346 | 346 | ||
347 | //TODO: Refactor that out, we need it all over the place. | 347 | //TODO: Refactor that out, we need it all over the place. |
348 | // Best to do it in a more comfortable abstraction in OListView | 348 | // Best to do it in a more comfortable abstraction in OListView |
349 | // (Hmm, didn't I already start something in this direction?) | 349 | // (Hmm, didn't I already start something in this direction?) |
350 | 350 | ||
351 | QListViewItemIterator it( this ); | 351 | QListViewItemIterator it( this ); |
352 | for ( ; it.current(); ++it ) | 352 | for ( ; it.current(); ++it ) |
353 | { | 353 | { |
354 | if ( it.current()->text( col_ap ) == macaddr.toString(true) ) | 354 | if ( it.current()->text( col_ap ) == macaddr.toString(true) ) |
355 | { | 355 | { |
356 | 356 | ||
357 | MScanListItem* subitem = static_cast<MScanListItem*>( it.current()->firstChild() ); | 357 | MScanListItem* subitem = static_cast<MScanListItem*>( it.current()->firstChild() ); |
358 | 358 | ||
359 | while ( subitem && ( subitem->text( col_essid ) != name ) ) | 359 | while ( subitem && ( subitem->text( col_essid ) != name ) ) |
360 | { | 360 | { |
361 | #ifdef DEBUG | 361 | #ifdef DEBUG |
362 | odebug << "subitemtext: " << (const char*) subitem->text( col_essid ) << "" << oendl; | 362 | odebug << "subitemtext: " << subitem->text( col_essid ) << "" << oendl; |
363 | #endif | 363 | #endif |
364 | subitem = static_cast<MScanListItem*> ( subitem->nextSibling() ); | 364 | subitem = static_cast<MScanListItem*> ( subitem->nextSibling() ); |
365 | } | 365 | } |
366 | 366 | ||
367 | if ( subitem ) | 367 | if ( subitem ) |
368 | { | 368 | { |
369 | // we have already seen this item, it's a dupe | 369 | // we have already seen this item, it's a dupe |
370 | #ifdef DEBUG | 370 | #ifdef DEBUG |
371 | odebug << "" << (const char*) name << " is a dupe - ignoring..." << oendl; | 371 | odebug << "" << name << " is a dupe - ignoring..." << oendl; |
372 | #endif | 372 | #endif |
373 | subitem->receivedBeacon(); //FIXME: sent data bit | 373 | subitem->receivedBeacon(); //FIXME: sent data bit |
374 | return; | 374 | return; |
375 | } | 375 | } |
376 | 376 | ||
377 | // never seen that - add new item | 377 | // never seen that - add new item |
378 | 378 | ||
379 | MScanListItem* item = new MScanListItem( it.current(), "service", "N/A", " ", false, -1, -1 ); | 379 | MScanListItem* item = new MScanListItem( it.current(), "service", "N/A", " ", false, -1, -1 ); |
380 | item->setText( col_essid, name ); | 380 | item->setText( col_essid, name ); |
381 | 381 | ||
382 | return; | 382 | return; |
383 | } | 383 | } |
384 | } | 384 | } |
385 | odebug << "D'oh! Received identification, but item not yet in list... ==> Handle this!" << oendl; | 385 | odebug << "D'oh! Received identification, but item not yet in list... ==> Handle this!" << oendl; |
386 | MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled service addition %s = %s!", | 386 | MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled service addition %s = %s!", |
387 | (const char*) macaddr.toString(), (const char*) ip ) ); | 387 | (const char*) macaddr.toString(), (const char*) ip ) ); |
388 | } | 388 | } |
389 | 389 | ||
390 | 390 | ||
391 | void MScanListView::contextMenuRequested( QListViewItem* item, const QPoint&, int col ) | 391 | void MScanListView::contextMenuRequested( QListViewItem* item, const QPoint&, int col ) |
392 | { | 392 | { |
393 | if ( !item ) return; | 393 | if ( !item ) return; |
394 | 394 | ||
395 | MScanListItem* itm = static_cast<MScanListItem*>( item ); | 395 | MScanListItem* itm = static_cast<MScanListItem*>( item ); |
@@ -534,34 +534,34 @@ void MScanListItem::decorateItem( QString type, QString essid, QString macaddr, | |||
534 | if ( WellenreiterConfigWindow::instance()->openTree->isChecked() ) | 534 | if ( WellenreiterConfigWindow::instance()->openTree->isChecked() ) |
535 | { | 535 | { |
536 | listView()->ensureItemVisible( this ); | 536 | listView()->ensureItemVisible( this ); |
537 | } | 537 | } |
538 | 538 | ||
539 | } | 539 | } |
540 | 540 | ||
541 | 541 | ||
542 | void MScanListItem::setManufacturer( const QString& manufacturer ) | 542 | void MScanListItem::setManufacturer( const QString& manufacturer ) |
543 | { | 543 | { |
544 | setText( col_manuf, manufacturer ); | 544 | setText( col_manuf, manufacturer ); |
545 | } | 545 | } |
546 | 546 | ||
547 | 547 | ||
548 | void MScanListItem::setLocation( const QString& location ) | 548 | void MScanListItem::setLocation( const QString& location ) |
549 | { | 549 | { |
550 | setText( col_location, location ); | 550 | setText( col_location, location ); |
551 | } | 551 | } |
552 | 552 | ||
553 | 553 | ||
554 | void MScanListItem::receivedBeacon() | 554 | void MScanListItem::receivedBeacon() |
555 | { | 555 | { |
556 | _beacons++; | 556 | _beacons++; |
557 | #ifdef DEBUG | 557 | #ifdef DEBUG |
558 | odebug << "MScanListItem " << (const char*) _macaddr << ": received beacon #" << _beacons << "" << oendl; | 558 | odebug << "MScanListItem " << _macaddr << ": received beacon #" << _beacons << "" << oendl; |
559 | #endif | 559 | #endif |
560 | setText( col_sig, QString::number( _beacons ) ); | 560 | setText( col_sig, QString::number( _beacons ) ); |
561 | setText( col_lastseen, QTime::currentTime().toString() ); | 561 | setText( col_lastseen, QTime::currentTime().toString() ); |
562 | 562 | ||
563 | MScanListItem* p = (MScanListItem*) parent(); | 563 | MScanListItem* p = (MScanListItem*) parent(); |
564 | if ( p ) p->receivedBeacon(); | 564 | if ( p ) p->receivedBeacon(); |
565 | 565 | ||
566 | } | 566 | } |
567 | 567 | ||
diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index fad6efd..822bde8 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp | |||
@@ -77,320 +77,320 @@ Wellenreiter::Wellenreiter( QWidget* parent ) | |||
77 | logwindow->log( sys ); | 77 | logwindow->log( sys ); |
78 | #endif | 78 | #endif |
79 | 79 | ||
80 | netview->setColumnWidthMode( 1, QListView::Manual ); | 80 | netview->setColumnWidthMode( 1, QListView::Manual ); |
81 | connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ), | 81 | connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ), |
82 | this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) ); | 82 | this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) ); |
83 | pcap = new OPacketCapturer(); | 83 | pcap = new OPacketCapturer(); |
84 | pcap->setAutoDelete( false ); | 84 | pcap->setAutoDelete( false ); |
85 | 85 | ||
86 | gps = new GPS( this ); | 86 | gps = new GPS( this ); |
87 | 87 | ||
88 | QTimer::singleShot( 1000, this, SLOT( initialTimer() ) ); | 88 | QTimer::singleShot( 1000, this, SLOT( initialTimer() ) ); |
89 | 89 | ||
90 | } | 90 | } |
91 | 91 | ||
92 | 92 | ||
93 | Wellenreiter::~Wellenreiter() | 93 | Wellenreiter::~Wellenreiter() |
94 | { | 94 | { |
95 | delete pcap; | 95 | delete pcap; |
96 | } | 96 | } |
97 | 97 | ||
98 | 98 | ||
99 | void Wellenreiter::initialTimer() | 99 | void Wellenreiter::initialTimer() |
100 | { | 100 | { |
101 | odebug << "Wellenreiter::preloading manufacturer database..." << oendl; | 101 | odebug << "Wellenreiter::preloading manufacturer database..." << oendl; |
102 | OManufacturerDB::instance(); | 102 | OManufacturerDB::instance(); |
103 | } | 103 | } |
104 | 104 | ||
105 | 105 | ||
106 | void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) | 106 | void Wellenreiter::setConfigWindow( WellenreiterConfigWindow* cw ) |
107 | { | 107 | { |
108 | configwindow = cw; | 108 | configwindow = cw; |
109 | } | 109 | } |
110 | 110 | ||
111 | 111 | ||
112 | void Wellenreiter::channelHopped(int c) | 112 | void Wellenreiter::channelHopped(int c) |
113 | { | 113 | { |
114 | QString title = "Wellenreiter II -scan- ["; | 114 | QString title = "Wellenreiter II -scan- ["; |
115 | QString left; | 115 | QString left; |
116 | if ( c > 1 ) left.fill( '.', c-1 ); | 116 | if ( c > 1 ) left.fill( '.', c-1 ); |
117 | title.append( left ); | 117 | title.append( left ); |
118 | title.append( '|' ); | 118 | title.append( '|' ); |
119 | if ( c < iface->channels() ) | 119 | if ( c < iface->channels() ) |
120 | { | 120 | { |
121 | QString right; | 121 | QString right; |
122 | right.fill( '.', iface->channels()-c ); | 122 | right.fill( '.', iface->channels()-c ); |
123 | title.append( right ); | 123 | title.append( right ); |
124 | } | 124 | } |
125 | title.append( "]" ); | 125 | title.append( "]" ); |
126 | //title.append( QString().sprintf( " %02d", c ) ); | 126 | //title.append( QString().sprintf( " %02d", c ) ); |
127 | assert( parent() ); | 127 | assert( parent() ); |
128 | ( (QMainWindow*) parent() )->setCaption( title ); | 128 | ( (QMainWindow*) parent() )->setCaption( title ); |
129 | } | 129 | } |
130 | 130 | ||
131 | 131 | ||
132 | void Wellenreiter::handleNotification( OPacket* p ) | 132 | void Wellenreiter::handleNotification( OPacket* p ) |
133 | { | 133 | { |
134 | QObjectList* l = p->queryList(); | 134 | QObjectList* l = p->queryList(); |
135 | QObjectListIt it( *l ); | 135 | QObjectListIt it( *l ); |
136 | QObject* o; | 136 | QObject* o; |
137 | 137 | ||
138 | while ( (o = it.current()) != 0 ) | 138 | while ( (o = it.current()) != 0 ) |
139 | { | 139 | { |
140 | QString name = it.current()->name(); | 140 | QString name = it.current()->name(); |
141 | if ( configwindow->parsePackets->isProtocolChecked( name ) ) | 141 | if ( configwindow->parsePackets->isProtocolChecked( name ) ) |
142 | { | 142 | { |
143 | QString action = configwindow->parsePackets->protocolAction( name ); | 143 | QString action = configwindow->parsePackets->protocolAction( name ); |
144 | odebug << "parsePacket-action for '" << (const char*) name << "' seems to be '" << (const char*) action << "'" << oendl; | 144 | odebug << "parsePacket-action for '" << (const char*) name << "' seems to be '" << action << "'" << oendl; |
145 | doAction( action, name, p ); | 145 | doAction( action, name, p ); |
146 | } | 146 | } |
147 | else | 147 | else |
148 | { | 148 | { |
149 | odebug << "protocol '" << (const char*) name << "' not checked in parsePackets." << oendl; | 149 | odebug << "protocol '" << name << "' not checked in parsePackets." << oendl; |
150 | } | 150 | } |
151 | ++it; | 151 | ++it; |
152 | } | 152 | } |
153 | } | 153 | } |
154 | 154 | ||
155 | 155 | ||
156 | void Wellenreiter::handleManagementFrame( OPacket* p, OWaveLanManagementPacket* manage ) | 156 | void Wellenreiter::handleManagementFrame( OPacket* p, OWaveLanManagementPacket* manage ) |
157 | { | 157 | { |
158 | if ( manage->managementType() == "Beacon" ) handleManagementFrameBeacon( p, manage ); | 158 | if ( manage->managementType() == "Beacon" ) handleManagementFrameBeacon( p, manage ); |
159 | else if ( manage->managementType() == "ProbeRequest" ) handleManagementFrameProbeRequest( p, manage ); | 159 | else if ( manage->managementType() == "ProbeRequest" ) handleManagementFrameProbeRequest( p, manage ); |
160 | else if ( manage->managementType() == "ProbeResponse" ) handleManagementFrameProbeResponse( p, manage ); | 160 | else if ( manage->managementType() == "ProbeResponse" ) handleManagementFrameProbeResponse( p, manage ); |
161 | else owarn << "Wellenreiter::handleManagementFrame(): '" << (const char*) manage->managementType() << "' - please handle me!" << oendl; | 161 | else owarn << "Wellenreiter::handleManagementFrame(): '" << manage->managementType() << "' - please handle me!" << oendl; |
162 | } | 162 | } |
163 | 163 | ||
164 | 164 | ||
165 | void Wellenreiter::handleManagementFrameProbeRequest( OPacket* p, OWaveLanManagementPacket* request ) | 165 | void Wellenreiter::handleManagementFrameProbeRequest( OPacket* p, OWaveLanManagementPacket* request ) |
166 | { | 166 | { |
167 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); | 167 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); |
168 | QString essid = ssid ? ssid->ID( true /* decloak */ ) : QString("<unknown>"); | 168 | QString essid = ssid ? ssid->ID( true /* decloak */ ) : QString("<unknown>"); |
169 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); | 169 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); |
170 | int channel = ds ? ds->channel() : -1; | 170 | int channel = ds ? ds->channel() : -1; |
171 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | 171 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); |
172 | 172 | ||
173 | GpsLocation loc( -111, -111 ); | 173 | GpsLocation loc( -111, -111 ); |
174 | if ( configwindow->enableGPS->isChecked() ) | 174 | if ( configwindow->enableGPS->isChecked() ) |
175 | { | 175 | { |
176 | // TODO: add check if GPS is working!? | 176 | // TODO: add check if GPS is working!? |
177 | odebug << "Wellenreiter::gathering GPS data..." << oendl; | 177 | odebug << "Wellenreiter::gathering GPS data..." << oendl; |
178 | loc = gps->position(); | 178 | loc = gps->position(); |
179 | odebug << "Wellenreiter::GPS data received is ( " << loc.latitude() << " , " << loc.longitude() << " ) - dms string = '" << loc.dmsPosition().latin1() << "'" << oendl; | 179 | odebug << "Wellenreiter::GPS data received is ( " << loc.latitude() << " , " << loc.longitude() << " ) - dms string = '" << loc.dmsPosition().latin1() << "'" << oendl; |
180 | } | 180 | } |
181 | 181 | ||
182 | if ( essid.length() ) | 182 | if ( essid.length() ) |
183 | netView()->addNewItem( "adhoc", essid, header->macAddress2(), false /* should check FrameControl field */, -1, 0, loc, true /* only probed */ ); | 183 | netView()->addNewItem( "adhoc", essid, header->macAddress2(), false /* should check FrameControl field */, -1, 0, loc, true /* only probed */ ); |
184 | odebug << "Wellenreiter::invalid frame [possibly noise] detected!" << oendl; | 184 | odebug << "Wellenreiter::invalid frame [possibly noise] detected!" << oendl; |
185 | } | 185 | } |
186 | 186 | ||
187 | 187 | ||
188 | void Wellenreiter::handleManagementFrameProbeResponse( OPacket* p, OWaveLanManagementPacket* response ) | 188 | void Wellenreiter::handleManagementFrameProbeResponse( OPacket* p, OWaveLanManagementPacket* response ) |
189 | { | 189 | { |
190 | } | 190 | } |
191 | 191 | ||
192 | 192 | ||
193 | void Wellenreiter::handleManagementFrameBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) | 193 | void Wellenreiter::handleManagementFrameBeacon( OPacket* p, OWaveLanManagementPacket* beacon ) |
194 | { | 194 | { |
195 | QString type; | 195 | QString type; |
196 | if ( beacon->canIBSS() ) | 196 | if ( beacon->canIBSS() ) |
197 | { | 197 | { |
198 | type = "adhoc"; | 198 | type = "adhoc"; |
199 | } | 199 | } |
200 | else if ( beacon->canESS() ) | 200 | else if ( beacon->canESS() ) |
201 | { | 201 | { |
202 | type = "managed"; | 202 | type = "managed"; |
203 | } | 203 | } |
204 | else | 204 | else |
205 | { | 205 | { |
206 | owarn << "Wellenreiter::invalid frame [possibly noise] detected!" << oendl; | 206 | owarn << "Wellenreiter::invalid frame [possibly noise] detected!" << oendl; |
207 | return; | 207 | return; |
208 | } | 208 | } |
209 | 209 | ||
210 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); | 210 | OWaveLanManagementSSID* ssid = static_cast<OWaveLanManagementSSID*>( p->child( "802.11 SSID" ) ); |
211 | QString essid = ssid ? ssid->ID( true /* decloak */ ) : QString("<unknown>"); | 211 | QString essid = ssid ? ssid->ID( true /* decloak */ ) : QString("<unknown>"); |
212 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); | 212 | OWaveLanManagementDS* ds = static_cast<OWaveLanManagementDS*>( p->child( "802.11 DS" ) ); |
213 | int channel = ds ? ds->channel() : -1; | 213 | int channel = ds ? ds->channel() : -1; |
214 | 214 | ||
215 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | 215 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); |
216 | 216 | ||
217 | GpsLocation loc( -111, -111 ); | 217 | GpsLocation loc( -111, -111 ); |
218 | if ( configwindow->enableGPS->isChecked() ) | 218 | if ( configwindow->enableGPS->isChecked() ) |
219 | { | 219 | { |
220 | // TODO: add check if GPS is working!? | 220 | // TODO: add check if GPS is working!? |
221 | odebug << "Wellenreiter::gathering GPS data..." << oendl; | 221 | odebug << "Wellenreiter::gathering GPS data..." << oendl; |
222 | loc = gps->position(); | 222 | loc = gps->position(); |
223 | odebug << "Wellenreiter::GPS data received is ( " << loc.latitude() << " , " << loc.longitude() << " ) - dms string = '" << loc.dmsPosition().latin1() << "'" << oendl; | 223 | odebug << "Wellenreiter::GPS data received is ( " << loc.latitude() << " , " << loc.longitude() << " ) - dms string = '" << loc.dmsPosition().latin1() << "'" << oendl; |
224 | } | 224 | } |
225 | 225 | ||
226 | netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0, loc ); | 226 | netView()->addNewItem( type, essid, header->macAddress2(), beacon->canPrivacy(), channel, 0, loc ); |
227 | 227 | ||
228 | // update graph window | 228 | // update graph window |
229 | if ( ds ) | 229 | if ( ds ) |
230 | { | 230 | { |
231 | OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) ); | 231 | OPrismHeaderPacket* prism = static_cast<OPrismHeaderPacket*>( p->child( "Prism" ) ); |
232 | if ( prism ) | 232 | if ( prism ) |
233 | graphwindow->traffic( ds->channel(), prism->signalStrength() ); | 233 | graphwindow->traffic( ds->channel(), prism->signalStrength() ); |
234 | else | 234 | else |
235 | graphwindow->traffic( ds->channel(), 95 ); | 235 | graphwindow->traffic( ds->channel(), 95 ); |
236 | } | 236 | } |
237 | } | 237 | } |
238 | 238 | ||
239 | 239 | ||
240 | void Wellenreiter::handleControlFrame( OPacket* p, OWaveLanControlPacket* control ) | 240 | void Wellenreiter::handleControlFrame( OPacket* p, OWaveLanControlPacket* control ) |
241 | { | 241 | { |
242 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); | 242 | OWaveLanPacket* header = static_cast<OWaveLanPacket*>( p->child( "802.11" ) ); |
243 | 243 | ||
244 | if ( control->controlType() == "Acknowledge" ) | 244 | if ( control->controlType() == "Acknowledge" ) |
245 | { | 245 | { |
246 | netView()->addNewItem( "adhoc", "<unknown>", header->macAddress1(), false, -1, 0, GpsLocation( -111, -111 ) ); | 246 | netView()->addNewItem( "adhoc", "<unknown>", header->macAddress1(), false, -1, 0, GpsLocation( -111, -111 ) ); |
247 | } | 247 | } |
248 | else | 248 | else |
249 | { | 249 | { |
250 | odebug << "Wellenreiter::handleControlFrame - please handle " << (const char*) control->controlType() << " in a future version! :D" << oendl; | 250 | odebug << "Wellenreiter::handleControlFrame - please handle " << control->controlType() << " in a future version! :D" << oendl; |
251 | } | 251 | } |
252 | } | 252 | } |
253 | 253 | ||
254 | 254 | ||
255 | void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ) | 255 | void Wellenreiter::handleWlanData( OPacket* p, OWaveLanDataPacket* data, OMacAddress& from, OMacAddress& to ) |
256 | { | 256 | { |
257 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); | 257 | OWaveLanPacket* wlan = (OWaveLanPacket*) p->child( "802.11" ); |
258 | if ( wlan->fromDS() && !wlan->toDS() ) | 258 | if ( wlan->fromDS() && !wlan->toDS() ) |
259 | { | 259 | { |
260 | netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); | 260 | netView()->fromDStraffic( wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); |
261 | from = wlan->macAddress3(); | 261 | from = wlan->macAddress3(); |
262 | to = wlan->macAddress2(); | 262 | to = wlan->macAddress2(); |
263 | } | 263 | } |
264 | else if ( !wlan->fromDS() && wlan->toDS() ) | 264 | else if ( !wlan->fromDS() && wlan->toDS() ) |
265 | { | 265 | { |
266 | netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() ); | 266 | netView()->toDStraffic( wlan->macAddress2(), wlan->macAddress3(), wlan->macAddress1() ); |
267 | from = wlan->macAddress2(); | 267 | from = wlan->macAddress2(); |
268 | to = wlan->macAddress3(); | 268 | to = wlan->macAddress3(); |
269 | } | 269 | } |
270 | else if ( wlan->fromDS() && wlan->toDS() ) | 270 | else if ( wlan->fromDS() && wlan->toDS() ) |
271 | { | 271 | { |
272 | netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); | 272 | netView()->WDStraffic( wlan->macAddress4(), wlan->macAddress3(), wlan->macAddress1(), wlan->macAddress2() ); |
273 | from = wlan->macAddress4(); | 273 | from = wlan->macAddress4(); |
274 | to = wlan->macAddress3(); | 274 | to = wlan->macAddress3(); |
275 | } | 275 | } |
276 | else | 276 | else |
277 | { | 277 | { |
278 | netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() ); | 278 | netView()->IBSStraffic( wlan->macAddress2(), wlan->macAddress1(), wlan->macAddress3() ); |
279 | from = wlan->macAddress2(); | 279 | from = wlan->macAddress2(); |
280 | to = wlan->macAddress1(); | 280 | to = wlan->macAddress1(); |
281 | } | 281 | } |
282 | } | 282 | } |
283 | 283 | ||
284 | 284 | ||
285 | void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ) | 285 | void Wellenreiter::handleEthernetData( OPacket* p, OEthernetPacket* data, OMacAddress& from, OMacAddress& to ) |
286 | { | 286 | { |
287 | from = data->sourceAddress(); | 287 | from = data->sourceAddress(); |
288 | to = data->destinationAddress(); | 288 | to = data->destinationAddress(); |
289 | 289 | ||
290 | netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( -111, -111 ) ); | 290 | netView()->addNewItem( "station", "<wired>", from, false, -1, 0, GpsLocation( -111, -111 ) ); |
291 | } | 291 | } |
292 | 292 | ||
293 | 293 | ||
294 | void Wellenreiter::handleARPData( OPacket* p, OARPPacket*, OMacAddress& source, OMacAddress& dest ) | 294 | void Wellenreiter::handleARPData( OPacket* p, OARPPacket*, OMacAddress& source, OMacAddress& dest ) |
295 | { | 295 | { |
296 | OARPPacket* arp = (OARPPacket*) p->child( "ARP" ); | 296 | OARPPacket* arp = (OARPPacket*) p->child( "ARP" ); |
297 | if ( arp ) | 297 | if ( arp ) |
298 | { | 298 | { |
299 | odebug << "Received ARP traffic (type '" << (const char*) arp->type() << "'): " << oendl; | 299 | odebug << "Received ARP traffic (type '" << arp->type() << "'): " << oendl; |
300 | if ( arp->type() == "REQUEST" ) | 300 | if ( arp->type() == "REQUEST" ) |
301 | { | 301 | { |
302 | netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); | 302 | netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); |
303 | } | 303 | } |
304 | else if ( arp->type() == "REPLY" ) | 304 | else if ( arp->type() == "REPLY" ) |
305 | { | 305 | { |
306 | netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); | 306 | netView()->identify( arp->senderMacAddress(), arp->senderIPV4Address().toString() ); |
307 | netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() ); | 307 | netView()->identify( arp->targetMacAddress(), arp->targetIPV4Address().toString() ); |
308 | } | 308 | } |
309 | } | 309 | } |
310 | } | 310 | } |
311 | 311 | ||
312 | 312 | ||
313 | void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest ) | 313 | void Wellenreiter::handleIPData( OPacket* p, OIPPacket* ip, OMacAddress& source, OMacAddress& dest ) |
314 | { | 314 | { |
315 | //TODO: Implement more IP based protocols | 315 | //TODO: Implement more IP based protocols |
316 | 316 | ||
317 | ODHCPPacket* dhcp = (ODHCPPacket*) p->child( "DHCP" ); | 317 | ODHCPPacket* dhcp = (ODHCPPacket*) p->child( "DHCP" ); |
318 | if ( dhcp ) | 318 | if ( dhcp ) |
319 | { | 319 | { |
320 | odebug << "Received DHCP '" << (const char*) dhcp->type() << "' packet" << oendl; | 320 | odebug << "Received DHCP '" << dhcp->type() << "' packet" << oendl; |
321 | if ( dhcp->type() == "OFFER" ) | 321 | if ( dhcp->type() == "OFFER" ) |
322 | { | 322 | { |
323 | odebug << "DHCP: '" << (const char*) source.toString() << "' ('" << (const char*) dhcp->serverAddress().toString() << "') seems to be a DHCP server." << oendl; | 323 | odebug << "DHCP: '" << (const char*) source.toString() << "' ('" << dhcp->serverAddress().toString() << "') seems to be a DHCP server." << oendl; |
324 | netView()->identify( source, dhcp->serverAddress().toString() ); | 324 | netView()->identify( source, dhcp->serverAddress().toString() ); |
325 | netView()->addService( "DHCP", source, dhcp->serverAddress().toString() ); | 325 | netView()->addService( "DHCP", source, dhcp->serverAddress().toString() ); |
326 | } | 326 | } |
327 | else if ( dhcp->type() == "ACK" ) | 327 | else if ( dhcp->type() == "ACK" ) |
328 | { | 328 | { |
329 | odebug << "DHCP: '" << (const char*) dhcp->clientMacAddress().toString() << "' ('" << (const char*) dhcp->yourAddress().toString() << "') accepted the offered DHCP address." << oendl; | 329 | odebug << "DHCP: '" << (const char*) dhcp->clientMacAddress().toString() << "' ('" << dhcp->yourAddress().toString() << "') accepted the offered DHCP address." << oendl; |
330 | netView()->identify( dhcp->clientMacAddress(), dhcp->yourAddress().toString() ); | 330 | netView()->identify( dhcp->clientMacAddress(), dhcp->yourAddress().toString() ); |
331 | } | 331 | } |
332 | } | 332 | } |
333 | } | 333 | } |
334 | 334 | ||
335 | 335 | ||
336 | QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) | 336 | QObject* Wellenreiter::childIfToParse( OPacket* p, const QString& protocol ) |
337 | { | 337 | { |
338 | if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) | 338 | if ( configwindow->parsePackets->isProtocolChecked( protocol ) ) |
339 | if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) | 339 | if ( configwindow->parsePackets->protocolAction( protocol ) == "Discard!" ) |
340 | return 0; | 340 | return 0; |
341 | 341 | ||
342 | return p->child( protocol ); | 342 | return p->child( protocol ); |
343 | } | 343 | } |
344 | 344 | ||
345 | 345 | ||
346 | bool Wellenreiter::checkDumpPacket( OPacket* p ) | 346 | bool Wellenreiter::checkDumpPacket( OPacket* p ) |
347 | { | 347 | { |
348 | // go through all child packets and see if one is inside the child hierarchy for p | 348 | // go through all child packets and see if one is inside the child hierarchy for p |
349 | // if so, do what the user requested (protocolAction), e.g. pass or discard | 349 | // if so, do what the user requested (protocolAction), e.g. pass or discard |
350 | if ( !configwindow->writeCaptureFile->isChecked() ) | 350 | if ( !configwindow->writeCaptureFile->isChecked() ) |
351 | return true; // semantic change - we're logging anyway now to /tmp/wellenreiter | 351 | return true; // semantic change - we're logging anyway now to /tmp/wellenreiter |
352 | 352 | ||
353 | QObjectList* l = p->queryList(); | 353 | QObjectList* l = p->queryList(); |
354 | QObjectListIt it( *l ); | 354 | QObjectListIt it( *l ); |
355 | QObject* o; | 355 | QObject* o; |
356 | 356 | ||
357 | while ( (o = it.current()) != 0 ) | 357 | while ( (o = it.current()) != 0 ) |
358 | { | 358 | { |
359 | QString name = it.current()->name(); | 359 | QString name = it.current()->name(); |
360 | if ( configwindow->capturePackets->isProtocolChecked( name ) ) | 360 | if ( configwindow->capturePackets->isProtocolChecked( name ) ) |
361 | { | 361 | { |
362 | QString action = configwindow->capturePackets->protocolAction( name ); | 362 | QString action = configwindow->capturePackets->protocolAction( name ); |
363 | odebug << "capturePackets-action for '" << (const char*) name << "' seems to be '" << (const char*) action << "'" << oendl; | 363 | odebug << "capturePackets-action for '" << (const char*) name << "' seems to be '" << action << "'" << oendl; |
364 | if ( action == "Discard" ) | 364 | if ( action == "Discard" ) |
365 | { | 365 | { |
366 | logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); | 366 | logwindow->log( QString().sprintf( "(i) dump-discarding of '%s' packet requested.", (const char*) name ) ); |
367 | return false; | 367 | return false; |
368 | } | 368 | } |
369 | } | 369 | } |
370 | else | 370 | else |
371 | { | 371 | { |
372 | odebug << "protocol '" << (const char*) name << "' not checked in capturePackets." << oendl; | 372 | odebug << "protocol '" << name << "' not checked in capturePackets." << oendl; |
373 | } | 373 | } |
374 | ++it; | 374 | ++it; |
375 | } | 375 | } |
376 | return true; | 376 | return true; |
377 | } | 377 | } |
378 | 378 | ||
379 | 379 | ||
380 | void Wellenreiter::receivePacket( OPacket* p ) | 380 | void Wellenreiter::receivePacket( OPacket* p ) |
381 | { | 381 | { |
382 | hexWindow()->add( p ); | 382 | hexWindow()->add( p ); |
383 | 383 | ||
384 | if ( checkDumpPacket( p ) ) | 384 | if ( checkDumpPacket( p ) ) |
385 | { | 385 | { |
386 | pcap->dump( p ); | 386 | pcap->dump( p ); |
387 | } | 387 | } |
388 | 388 | ||
389 | // check for a management frame | 389 | // check for a management frame |
390 | OWaveLanManagementPacket* manage = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); | 390 | OWaveLanManagementPacket* manage = static_cast<OWaveLanManagementPacket*>( childIfToParse( p, "802.11 Management" ) ); |
391 | if ( manage ) | 391 | if ( manage ) |
392 | { | 392 | { |
393 | handleManagementFrame( p, manage ); | 393 | handleManagementFrame( p, manage ); |
394 | return; | 394 | return; |
395 | } | 395 | } |
396 | 396 | ||
@@ -492,124 +492,124 @@ void Wellenreiter::stopClicked() | |||
492 | 492 | ||
493 | 493 | ||
494 | void Wellenreiter::startClicked() | 494 | void Wellenreiter::startClicked() |
495 | { | 495 | { |
496 | // get configuration from config window | 496 | // get configuration from config window |
497 | 497 | ||
498 | const QString& interface = configwindow->interfaceName->currentText(); | 498 | const QString& interface = configwindow->interfaceName->currentText(); |
499 | const int cardtype = configwindow->driverType(); | 499 | const int cardtype = configwindow->driverType(); |
500 | const int interval = configwindow->hoppingInterval(); | 500 | const int interval = configwindow->hoppingInterval(); |
501 | 501 | ||
502 | if ( ( interface == "" ) || ( cardtype == 0 ) ) | 502 | if ( ( interface == "" ) || ( cardtype == 0 ) ) |
503 | { | 503 | { |
504 | QMessageBox::information( this, "Wellenreiter II", | 504 | QMessageBox::information( this, "Wellenreiter II", |
505 | tr( "Your device is not\nproperly configured. Please reconfigure!" ) ); | 505 | tr( "Your device is not\nproperly configured. Please reconfigure!" ) ); |
506 | return; | 506 | return; |
507 | } | 507 | } |
508 | 508 | ||
509 | // configure device | 509 | // configure device |
510 | ONetwork* net = ONetwork::instance(); | 510 | ONetwork* net = ONetwork::instance(); |
511 | 511 | ||
512 | // TODO: check if interface is wireless and support sniffing for non-wireless interfaces | 512 | // TODO: check if interface is wireless and support sniffing for non-wireless interfaces |
513 | 513 | ||
514 | if ( cardtype != DEVTYPE_FILE ) | 514 | if ( cardtype != DEVTYPE_FILE ) |
515 | { | 515 | { |
516 | 516 | ||
517 | if ( !net->isPresent( interface ) ) | 517 | if ( !net->isPresent( interface ) ) |
518 | { | 518 | { |
519 | QMessageBox::information( this, "Wellenreiter II", | 519 | QMessageBox::information( this, "Wellenreiter II", |
520 | tr( "The configured device (%1)\nis not available on this system\n. Please reconfigure!" ).arg( interface ) ); | 520 | tr( "The configured device (%1)\nis not available on this system\n. Please reconfigure!" ).arg( interface ) ); |
521 | return; | 521 | return; |
522 | } | 522 | } |
523 | 523 | ||
524 | iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless! | 524 | iface = static_cast<OWirelessNetworkInterface*>(net->interface( interface )); // fails if network is not wireless! |
525 | assert( iface ); | 525 | assert( iface ); |
526 | 526 | ||
527 | // bring device UP | 527 | // bring device UP |
528 | iface->setUp( true ); | 528 | iface->setUp( true ); |
529 | if ( !iface->isUp() ) | 529 | if ( !iface->isUp() ) |
530 | { | 530 | { |
531 | QMessageBox::warning( this, "Wellenreiter II", | 531 | QMessageBox::warning( this, "Wellenreiter II", |
532 | tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) ); | 532 | tr( "Can't bring interface '%1' up:\n" ).arg( iface->name() ) + strerror( errno ) ); |
533 | return; | 533 | return; |
534 | } | 534 | } |
535 | } | 535 | } |
536 | // set monitor mode | 536 | // set monitor mode |
537 | bool usePrism = configwindow->usePrismHeader(); | 537 | bool usePrism = configwindow->usePrismHeader(); |
538 | 538 | ||
539 | switch ( cardtype ) | 539 | switch ( cardtype ) |
540 | { | 540 | { |
541 | case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break; | 541 | case DEVTYPE_CISCO: iface->setMonitoring( new OCiscoMonitoringInterface( iface, usePrism ) ); break; |
542 | case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break; | 542 | case DEVTYPE_WLAN_NG: iface->setMonitoring( new OWlanNGMonitoringInterface( iface, usePrism ) ); break; |
543 | case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break; | 543 | case DEVTYPE_HOSTAP: iface->setMonitoring( new OHostAPMonitoringInterface( iface, usePrism ) ); break; |
544 | case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break; | 544 | case DEVTYPE_ORINOCO: iface->setMonitoring( new OOrinocoMonitoringInterface( iface, usePrism ) ); break; |
545 | case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break; | 545 | case DEVTYPE_MANUAL: QMessageBox::information( this, "Wellenreiter II", tr( "Bring your device into\nmonitor mode now." ) ); break; |
546 | case DEVTYPE_FILE: odebug << "Wellenreiter: Capturing from file '" << (const char*) interface << "'" << oendl; break; | 546 | case DEVTYPE_FILE: odebug << "Wellenreiter: Capturing from file '" << interface << "'" << oendl; break; |
547 | default: assert( 0 ); // shouldn't reach this | 547 | default: assert( 0 ); // shouldn't reach this |
548 | } | 548 | } |
549 | 549 | ||
550 | // switch device into monitor mode | 550 | // switch device into monitor mode |
551 | if ( cardtype < DEVTYPE_FILE ) | 551 | if ( cardtype < DEVTYPE_FILE ) |
552 | { | 552 | { |
553 | if ( cardtype != DEVTYPE_MANUAL ) | 553 | if ( cardtype != DEVTYPE_MANUAL ) |
554 | iface->setMode( "monitor" ); | 554 | iface->setMode( "monitor" ); |
555 | if ( iface->mode() != "monitor" ) | 555 | if ( iface->mode() != "monitor" ) |
556 | { | 556 | { |
557 | if ( QMessageBox::warning( this, "Wellenreiter II", | 557 | if ( QMessageBox::warning( this, "Wellenreiter II", |
558 | tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) + | 558 | tr( "Can't set interface '%1'\ninto monitor mode:\n" ).arg( iface->name() ) + strerror( errno ) + |
559 | tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) | 559 | tr( "\nContinue with limited functionality?" ), QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) |
560 | return; | 560 | return; |
561 | } | 561 | } |
562 | } | 562 | } |
563 | 563 | ||
564 | // open GPS device | 564 | // open GPS device |
565 | if ( configwindow->enableGPS->isChecked() ) | 565 | if ( configwindow->enableGPS->isChecked() ) |
566 | { | 566 | { |
567 | odebug << "Wellenreiter:GPS enabled @ " << (const char*) configwindow->gpsdHost->currentText() << ":" << configwindow->gpsdPort->value() << "" << oendl; | 567 | odebug << "Wellenreiter:GPS enabled @ " << configwindow->gpsdHost->currentText() << ":" << configwindow->gpsdPort->value() << "" << oendl; |
568 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); | 568 | gps->open( configwindow->gpsdHost->currentText(), configwindow->gpsdPort->value() ); |
569 | } | 569 | } |
570 | 570 | ||
571 | // open pcap and start sniffing | 571 | // open pcap and start sniffing |
572 | 572 | ||
573 | if ( configwindow->writeCaptureFile->isChecked() ) // write to a user specified capture file? | 573 | if ( configwindow->writeCaptureFile->isChecked() ) // write to a user specified capture file? |
574 | { | 574 | { |
575 | dumpname = configwindow->captureFileName->text(); | 575 | dumpname = configwindow->captureFileName->text(); |
576 | if ( dumpname.isEmpty() ) dumpname = "captureFile"; | 576 | if ( dumpname.isEmpty() ) dumpname = "captureFile"; |
577 | dumpname.append( '-' ); | 577 | dumpname.append( '-' ); |
578 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); | 578 | dumpname.append( QTime::currentTime().toString().replace( QRegExp( ":" ), "-" ) ); |
579 | dumpname.append( ".wellenreiter" ); | 579 | dumpname.append( ".wellenreiter" ); |
580 | } | 580 | } |
581 | else // write it anyway ;) | 581 | else // write it anyway ;) |
582 | { | 582 | { |
583 | dumpname = "/var/log/dump.wellenreiter"; | 583 | dumpname = "/var/log/dump.wellenreiter"; |
584 | } | 584 | } |
585 | 585 | ||
586 | if ( cardtype != DEVTYPE_FILE ) | 586 | if ( cardtype != DEVTYPE_FILE ) |
587 | pcap->open( interface ); | 587 | pcap->open( interface ); |
588 | else | 588 | else |
589 | pcap->open( QFile( interface ) ); | 589 | pcap->open( QFile( interface ) ); |
590 | 590 | ||
591 | odebug << "Wellenreiter:: dumping to " << (const char*) dumpname << "" << oendl; | 591 | odebug << "Wellenreiter:: dumping to " << dumpname << "" << oendl; |
592 | pcap->openDumpFile( dumpname ); | 592 | pcap->openDumpFile( dumpname ); |
593 | 593 | ||
594 | if ( !pcap->isOpen() ) | 594 | if ( !pcap->isOpen() ) |
595 | { | 595 | { |
596 | QMessageBox::warning( this, "Wellenreiter II", tr( "Can't open packet capturer for\n'%1':\n" ).arg( | 596 | QMessageBox::warning( this, "Wellenreiter II", tr( "Can't open packet capturer for\n'%1':\n" ).arg( |
597 | cardtype == DEVTYPE_FILE ? (const char*) interface : iface->name() ) + QString(strerror( errno ) )); | 597 | cardtype == DEVTYPE_FILE ? (const char*) interface : iface->name() ) + QString(strerror( errno ) )); |
598 | return; | 598 | return; |
599 | } | 599 | } |
600 | 600 | ||
601 | // set capturer to non-blocking mode | 601 | // set capturer to non-blocking mode |
602 | pcap->setBlocking( false ); | 602 | pcap->setBlocking( false ); |
603 | 603 | ||
604 | // start channel hopper | 604 | // start channel hopper |
605 | if ( cardtype != DEVTYPE_FILE ) | 605 | if ( cardtype != DEVTYPE_FILE ) |
606 | { | 606 | { |
607 | logwindow->log( QString().sprintf( "(i) Starting channel hopper (d=%d ms)", configwindow->hopInterval->value() ) ); | 607 | logwindow->log( QString().sprintf( "(i) Starting channel hopper (d=%d ms)", configwindow->hopInterval->value() ) ); |
608 | iface->setChannelHopping( configwindow->hopInterval->value() ); //use interval from config window | 608 | iface->setChannelHopping( configwindow->hopInterval->value() ); //use interval from config window |
609 | } | 609 | } |
610 | 610 | ||
611 | if ( cardtype != DEVTYPE_FILE ) | 611 | if ( cardtype != DEVTYPE_FILE ) |
612 | { | 612 | { |
613 | // connect socket notifier and start channel hopper | 613 | // connect socket notifier and start channel hopper |
614 | connect( pcap, SIGNAL( receivedPacket(Opie::Net::OPacket*) ), this, SLOT( receivePacket(Opie::Net::OPacket*) ) ); | 614 | connect( pcap, SIGNAL( receivedPacket(Opie::Net::OPacket*) ), this, SLOT( receivePacket(Opie::Net::OPacket*) ) ); |
615 | connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); | 615 | connect( iface->channelHopper(), SIGNAL( hopped(int) ), this, SLOT( channelHopped(int) ) ); |
@@ -617,55 +617,55 @@ void Wellenreiter::startClicked() | |||
617 | else | 617 | else |
618 | { | 618 | { |
619 | // start timer for reading packets | 619 | // start timer for reading packets |
620 | startTimer( 100 ); | 620 | startTimer( 100 ); |
621 | } | 621 | } |
622 | 622 | ||
623 | logwindow->log( "(i) Started Scanning." ); | 623 | logwindow->log( "(i) Started Scanning." ); |
624 | sniffing = true; | 624 | sniffing = true; |
625 | 625 | ||
626 | #ifdef QWS | 626 | #ifdef QWS |
627 | if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() ) | 627 | if ( WellenreiterConfigWindow::instance()->disablePM->isChecked() ) |
628 | { | 628 | { |
629 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; | 629 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Disable; |
630 | } | 630 | } |
631 | #else | 631 | #else |
632 | #warning FIXME: setScreenSaverMode is not operational on the X11 build | 632 | #warning FIXME: setScreenSaverMode is not operational on the X11 build |
633 | #endif | 633 | #endif |
634 | 634 | ||
635 | emit( startedSniffing() ); | 635 | emit( startedSniffing() ); |
636 | if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title | 636 | if ( cardtype != DEVTYPE_FILE ) channelHopped( 6 ); // set title |
637 | else | 637 | else |
638 | { | 638 | { |
639 | assert( parent() ); | 639 | assert( parent() ); |
640 | ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) ); | 640 | ( (QMainWindow*) parent() )->setCaption( tr( "Wellenreiter II - replaying capture file..." ) ); |
641 | } | 641 | } |
642 | } | 642 | } |
643 | 643 | ||
644 | 644 | ||
645 | void Wellenreiter::timerEvent( QTimerEvent* ) | 645 | void Wellenreiter::timerEvent( QTimerEvent* ) |
646 | { | 646 | { |
647 | odebug << "Wellenreiter::timerEvent()" << oendl; | 647 | odebug << "Wellenreiter::timerEvent()" << oendl; |
648 | OPacket* p = pcap->next(); | 648 | OPacket* p = pcap->next(); |
649 | if ( !p ) // no more packets available | 649 | if ( !p ) // no more packets available |
650 | { | 650 | { |
651 | stopClicked(); | 651 | stopClicked(); |
652 | } | 652 | } |
653 | else | 653 | else |
654 | { | 654 | { |
655 | receivePacket( p ); | 655 | receivePacket( p ); |
656 | // We no longer delete packets here. Ownership of the packets is | 656 | // We no longer delete packets here. Ownership of the packets is |
657 | // transferred to the PacketView. | 657 | // transferred to the PacketView. |
658 | //delete p; | 658 | //delete p; |
659 | } | 659 | } |
660 | } | 660 | } |
661 | 661 | ||
662 | 662 | ||
663 | void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p ) | 663 | void Wellenreiter::doAction( const QString& action, const QString& protocol, OPacket* p ) |
664 | { | 664 | { |
665 | #ifdef QWS | 665 | #ifdef QWS |
666 | if ( action == "TouchSound" ) | 666 | if ( action == "TouchSound" ) |
667 | ODevice::inst()->playTouchSound(); | 667 | ODevice::inst()->playTouchSound(); |
668 | else if ( action == "AlarmSound" ) | 668 | else if ( action == "AlarmSound" ) |
669 | ODevice::inst()->playAlarmSound(); | 669 | ODevice::inst()->playAlarmSound(); |
670 | else if ( action == "KeySound" ) | 670 | else if ( action == "KeySound" ) |
671 | ODevice::inst()->playKeySound(); | 671 | ODevice::inst()->playKeySound(); |
@@ -686,40 +686,40 @@ void Wellenreiter::doAction( const QString& action, const QString& protocol, OPa | |||
686 | void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr) | 686 | void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr) |
687 | { | 687 | { |
688 | #ifdef QWS | 688 | #ifdef QWS |
689 | if ( !iface ) | 689 | if ( !iface ) |
690 | { | 690 | { |
691 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "No wireless\ninterface available." ) ); | 691 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "No wireless\ninterface available." ) ); |
692 | return; | 692 | return; |
693 | } | 693 | } |
694 | 694 | ||
695 | if ( sniffing ) | 695 | if ( sniffing ) |
696 | { | 696 | { |
697 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Stop sniffing before\njoining a net." ) ); | 697 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Stop sniffing before\njoining a net." ) ); |
698 | return; | 698 | return; |
699 | } | 699 | } |
700 | 700 | ||
701 | qDebug( "joinNetwork() with Interface %s: %s, %s, %d, %s", | 701 | qDebug( "joinNetwork() with Interface %s: %s, %s, %d, %s", |
702 | (const char*) iface->name(), | 702 | (const char*) iface->name(), |
703 | (const char*) type, | 703 | (const char*) type, |
704 | (const char*) essid, | 704 | (const char*) essid, |
705 | channel, | 705 | channel, |
706 | (const char*) macaddr ); | 706 | (const char*) macaddr ); |
707 | 707 | ||
708 | QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" ); | 708 | QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" ); |
709 | int count = 3; | 709 | int count = 3; |
710 | odebug << "sending " << count << " messages" << oendl; | 710 | odebug << "sending " << count << " messages" << oendl; |
711 | msg << QString("count") << QString::number(count); | 711 | msg << QString("count") << QString::number(count); |
712 | odebug << "msg >" << iface->name() << "< Mode >" << type.latin1() << "<" << oendl; | 712 | odebug << "msg >" << iface->name() << "< Mode >" << type.latin1() << "<" << oendl; |
713 | msg << QString(iface->name()) << QString("Mode") << type; | 713 | msg << QString(iface->name()) << QString("Mode") << type; |
714 | odebug << "msg >" << iface->name() << "< essid >" << essid.latin1() << "<" << oendl; | 714 | odebug << "msg >" << iface->name() << "< essid >" << essid.latin1() << "<" << oendl; |
715 | msg << QString(iface->name()) << QString("ESSID") << essid; | 715 | msg << QString(iface->name()) << QString("ESSID") << essid; |
716 | odebug << "msg >" << iface->name() << "< channel >" << channel << "<" << oendl; | 716 | odebug << "msg >" << iface->name() << "< channel >" << channel << "<" << oendl; |
717 | msg << QString(iface->name()) << QString("Channel") << channel; | 717 | msg << QString(iface->name()) << QString("Channel") << channel; |
718 | // odebug << "msg >" << iface->name() << "< mac >" << macaddr << "<" << oendl; | 718 | // odebug << "msg >" << iface->name() << "< mac >" << macaddr << "<" << oendl; |
719 | // msg << QString(iface->name()) << QString("MacAddr") << macaddr; | 719 | // msg << QString(iface->name()) << QString("MacAddr") << macaddr; |
720 | #else | 720 | #else |
721 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Function only available on Embedded build" ) ); | 721 | QMessageBox::warning( this, tr( "Can't do that!" ), tr( "Function only available on Embedded build" ) ); |
722 | #endif | 722 | #endif |
723 | 723 | ||
724 | } | 724 | } |
725 | 725 | ||
diff --git a/noncore/settings/networksettings/wlan/wlanimp2.cpp b/noncore/settings/networksettings/wlan/wlanimp2.cpp index e483efe..e4aa2f9 100644 --- a/noncore/settings/networksettings/wlan/wlanimp2.cpp +++ b/noncore/settings/networksettings/wlan/wlanimp2.cpp | |||
@@ -286,77 +286,77 @@ void WLANImp::writeOpts() { | |||
286 | keyList += "[3]"; | 286 | keyList += "[3]"; |
287 | } else if (keyRadio3->isChecked()) { | 287 | } else if (keyRadio3->isChecked()) { |
288 | keyList += "[4]"; | 288 | keyList += "[4]"; |
289 | } | 289 | } |
290 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); | 290 | interfaces->setInterfaceOption(QString("wireless_key"), keyList.join(QString(" "))); |
291 | } else { | 291 | } else { |
292 | interfaces->removeInterfaceOption(QString("wireless_key")); | 292 | interfaces->removeInterfaceOption(QString("wireless_key")); |
293 | } | 293 | } |
294 | interfaces->removeInterfaceOption(QString("wireless_enc")); | 294 | interfaces->removeInterfaceOption(QString("wireless_enc")); |
295 | 295 | ||
296 | if(!interfaceSetup->saveChanges()) | 296 | if(!interfaceSetup->saveChanges()) |
297 | return; | 297 | return; |
298 | 298 | ||
299 | QDialog::accept(); | 299 | QDialog::accept(); |
300 | } | 300 | } |
301 | 301 | ||
302 | /* | 302 | /* |
303 | * Scan for possible wireless networks around... | 303 | * Scan for possible wireless networks around... |
304 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> | 304 | * ... powered by Wellenreiter II technology (C) Michael 'Mickey' Lauer <mickeyl@handhelds.org> |
305 | */ | 305 | */ |
306 | 306 | ||
307 | void WLANImp::rescanNeighbourhood() | 307 | void WLANImp::rescanNeighbourhood() |
308 | { | 308 | { |
309 | QString name = interface->getInterfaceName(); | 309 | QString name = interface->getInterfaceName(); |
310 | odebug << "rescanNeighbourhood via '" << (const char*) name << "'" << oendl; | 310 | odebug << "rescanNeighbourhood via '" << name << "'" << oendl; |
311 | 311 | ||
312 | OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) ); | 312 | OWirelessNetworkInterface* wiface = static_cast<OWirelessNetworkInterface*>( ONetwork::instance()->interface( name ) ); |
313 | assert( wiface ); | 313 | assert( wiface ); |
314 | 314 | ||
315 | // try to guess device type | 315 | // try to guess device type |
316 | QString devicetype; | 316 | QString devicetype; |
317 | QFile m( "/proc/modules" ); | 317 | QFile m( "/proc/modules" ); |
318 | if ( m.open( IO_ReadOnly ) ) | 318 | if ( m.open( IO_ReadOnly ) ) |
319 | { | 319 | { |
320 | QString line; | 320 | QString line; |
321 | QTextStream modules( &m ); | 321 | QTextStream modules( &m ); |
322 | while( !modules.atEnd() && !devicetype ) | 322 | while( !modules.atEnd() && !devicetype ) |
323 | { | 323 | { |
324 | modules >> line; | 324 | modules >> line; |
325 | if ( line.contains( "cisco" ) ) devicetype = "cisco"; | 325 | if ( line.contains( "cisco" ) ) devicetype = "cisco"; |
326 | else if ( line.contains( "hostap" ) ) devicetype = "hostap"; | 326 | else if ( line.contains( "hostap" ) ) devicetype = "hostap"; |
327 | else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */ | 327 | else if ( line.contains( "prism" ) ) devicetype = "wlan-ng"; /* puke */ |
328 | else if ( line.contains( "orinoco" ) ) devicetype = "orinoco"; | 328 | else if ( line.contains( "orinoco" ) ) devicetype = "orinoco"; |
329 | } | 329 | } |
330 | } | 330 | } |
331 | if ( devicetype.isEmpty() ) | 331 | if ( devicetype.isEmpty() ) |
332 | { | 332 | { |
333 | owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl; | 333 | owarn << "rescanNeighbourhood(): couldn't guess device type :(" << oendl; |
334 | return; | 334 | return; |
335 | } | 335 | } |
336 | else | 336 | else |
337 | { | 337 | { |
338 | odebug << "rescanNeighbourhood(): device type seems to be '" << (const char*) devicetype << "'" << oendl; | 338 | odebug << "rescanNeighbourhood(): device type seems to be '" << devicetype << "'" << oendl; |
339 | } | 339 | } |
340 | 340 | ||
341 | // configure interface to receive 802.11 management frames | 341 | // configure interface to receive 802.11 management frames |
342 | 342 | ||
343 | wiface->setUp( true ); | 343 | wiface->setUp( true ); |
344 | wiface->setPromiscuousMode( true ); | 344 | wiface->setPromiscuousMode( true ); |
345 | 345 | ||
346 | if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) ); | 346 | if ( devicetype == "cisco" ) wiface->setMonitoring( new OCiscoMonitoringInterface( wiface, false ) ); |
347 | else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) ); | 347 | else if ( devicetype == "hostap" ) wiface->setMonitoring( new OHostAPMonitoringInterface( wiface, false ) ); |
348 | else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) ); | 348 | else if ( devicetype == "wlan-ng" ) wiface->setMonitoring( new OWlanNGMonitoringInterface( wiface, false ) ); |
349 | else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) ); | 349 | else if ( devicetype == "orinoco" ) wiface->setMonitoring( new OOrinocoMonitoringInterface( wiface, false ) ); |
350 | else | 350 | else |
351 | { | 351 | { |
352 | odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl; | 352 | odebug << "rescanNeighbourhood(): unsupported device type for monitoring :(" << oendl; |
353 | return; | 353 | return; |
354 | } | 354 | } |
355 | 355 | ||
356 | wiface->setMode( "monitor" ); | 356 | wiface->setMode( "monitor" ); |
357 | if ( wiface->mode() != "monitor" ) | 357 | if ( wiface->mode() != "monitor" ) |
358 | { | 358 | { |
359 | owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl; | 359 | owarn << "rescanNeighbourhood(): Unable to bring device into monitor mode (" << strerror( errno ) << ")." << oendl; |
360 | return; | 360 | return; |
361 | } | 361 | } |
362 | 362 | ||
diff --git a/noncore/settings/sysinfo/benchmarkinfo.cpp b/noncore/settings/sysinfo/benchmarkinfo.cpp index 4163fb2..53d4897 100644 --- a/noncore/settings/sysinfo/benchmarkinfo.cpp +++ b/noncore/settings/sysinfo/benchmarkinfo.cpp | |||
@@ -127,49 +127,49 @@ BenchmarkInfo::BenchmarkInfo( QWidget *parent, const char *name, int wFlags ) | |||
127 | 127 | ||
128 | test_alu->setText( 2, "n/a" ); | 128 | test_alu->setText( 2, "n/a" ); |
129 | test_fpu->setText( 2, "n/a" ); | 129 | test_fpu->setText( 2, "n/a" ); |
130 | test_txt->setText( 2, "n/a" ); | 130 | test_txt->setText( 2, "n/a" ); |
131 | test_gfx->setText( 2, "n/a" ); | 131 | test_gfx->setText( 2, "n/a" ); |
132 | test_ram->setText( 2, "n/a" ); | 132 | test_ram->setText( 2, "n/a" ); |
133 | test_sd->setText( 2, "n/a" ); | 133 | test_sd->setText( 2, "n/a" ); |
134 | test_cf->setText( 2, "n/a" ); | 134 | test_cf->setText( 2, "n/a" ); |
135 | 135 | ||
136 | startButton = new QPushButton( tr( "&Start Tests!" ), this ); | 136 | startButton = new QPushButton( tr( "&Start Tests!" ), this ); |
137 | QWhatsThis::add( startButton, tr( "Click here to perform the selected tests." ) ); | 137 | QWhatsThis::add( startButton, tr( "Click here to perform the selected tests." ) ); |
138 | connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) ); | 138 | connect( startButton, SIGNAL( clicked() ), this, SLOT( run() ) ); |
139 | vb->addWidget( tests, 2 ); | 139 | vb->addWidget( tests, 2 ); |
140 | 140 | ||
141 | QFile f( QPEApplication::qpeDir() + "/share/sysinfo/results" ); | 141 | QFile f( QPEApplication::qpeDir() + "/share/sysinfo/results" ); |
142 | if ( f.open( IO_ReadOnly ) ) | 142 | if ( f.open( IO_ReadOnly ) ) |
143 | { | 143 | { |
144 | machineCombo = new QComboBox( this ); | 144 | machineCombo = new QComboBox( this ); |
145 | QWhatsThis::add( machineCombo, tr( "Choose a model to compare your results with." ) ); | 145 | QWhatsThis::add( machineCombo, tr( "Choose a model to compare your results with." ) ); |
146 | 146 | ||
147 | QTextStream ts( &f ); | 147 | QTextStream ts( &f ); |
148 | while( !ts.eof() ) | 148 | while( !ts.eof() ) |
149 | { | 149 | { |
150 | QString machline = ts.readLine(); | 150 | QString machline = ts.readLine(); |
151 | odebug << "sysinfo: parsing benchmark results for '" << (const char*) machline << "'" << oendl; | 151 | odebug << "sysinfo: parsing benchmark results for '" << machline << "'" << oendl; |
152 | QString resline = ts.readLine(); | 152 | QString resline = ts.readLine(); |
153 | machines.insert( machline, new QStringList( QStringList::split( ",", resline ) ) ); | 153 | machines.insert( machline, new QStringList( QStringList::split( ",", resline ) ) ); |
154 | machineCombo->insertItem( machline ); | 154 | machineCombo->insertItem( machline ); |
155 | } | 155 | } |
156 | 156 | ||
157 | QHBoxLayout* hb = new QHBoxLayout( vb ); | 157 | QHBoxLayout* hb = new QHBoxLayout( vb ); |
158 | hb->addWidget( new QLabel( tr( "Compare To:" ), this ) ); | 158 | hb->addWidget( new QLabel( tr( "Compare To:" ), this ) ); |
159 | hb->addWidget( machineCombo, 2 ); | 159 | hb->addWidget( machineCombo, 2 ); |
160 | connect( machineCombo, SIGNAL( activated(int) ), this, SLOT( machineActivated(int) ) ); | 160 | connect( machineCombo, SIGNAL( activated(int) ), this, SLOT( machineActivated(int) ) ); |
161 | } | 161 | } |
162 | 162 | ||
163 | vb->addWidget( startButton, 2 ); | 163 | vb->addWidget( startButton, 2 ); |
164 | } | 164 | } |
165 | 165 | ||
166 | 166 | ||
167 | BenchmarkInfo::~BenchmarkInfo() | 167 | BenchmarkInfo::~BenchmarkInfo() |
168 | {} | 168 | {} |
169 | 169 | ||
170 | 170 | ||
171 | void BenchmarkInfo::machineActivated( int index ) | 171 | void BenchmarkInfo::machineActivated( int index ) |
172 | { | 172 | { |
173 | QStringList* results = machines[ machineCombo->text( index ) ]; | 173 | QStringList* results = machines[ machineCombo->text( index ) ]; |
174 | if ( !results ) | 174 | if ( !results ) |
175 | { | 175 | { |