summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/mainwindow.cpp
Unidiff
Diffstat (limited to 'noncore/net/wellenreiter/gui/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/mainwindow.cpp30
1 files changed, 15 insertions, 15 deletions
diff --git a/noncore/net/wellenreiter/gui/mainwindow.cpp b/noncore/net/wellenreiter/gui/mainwindow.cpp
index 8525109..ef7ffcf 100644
--- a/noncore/net/wellenreiter/gui/mainwindow.cpp
+++ b/noncore/net/wellenreiter/gui/mainwindow.cpp
@@ -8,49 +8,49 @@
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14**********************************************************************/ 14**********************************************************************/
15 15
16#include "configwindow.h" 16#include "configwindow.h"
17#include "gps.h" 17#include "gps.h"
18#include "logwindow.h" 18#include "logwindow.h"
19#include "packetview.h" 19#include "packetview.h"
20#include "mainwindow.h" 20#include "mainwindow.h"
21#include "wellenreiter.h" 21#include "wellenreiter.h"
22#include "scanlist.h" 22#include "scanlist.h"
23 23
24/* OPIE */ 24/* OPIE */
25#ifdef QWS 25#ifdef QWS
26#include <qpe/resource.h> 26#include <qpe/resource.h>
27#include <opie2/odebug.h> 27#include <opie2/odebug.h>
28#include <opie2/ofiledialog.h> 28#include <opie2/ofiledialog.h>
29#else 29#else
30#include "resource.h" 30#include "resource.h"
31#include <qapplication.h> 31#include <qapplication.h>
32#include <qfiledialog.h> 32#include <qfiledialog.h>
33#endif 33#endif
34using namespace Opie::Core; 34using namespace Opie::Core;
35using namespace Opie::Net; 35using namespace Opie::Net;
36using namespace Opie::Ui; 36using namespace Opie::Ui;
37 37
38/* QT */ 38/* QT */
39#include <qcombobox.h> 39#include <qcombobox.h>
40#include <qdatastream.h> 40#include <qdatastream.h>
41#include <qfile.h> 41#include <qfile.h>
42#include <qfileinfo.h> 42#include <qfileinfo.h>
43#include <qlabel.h> 43#include <qlabel.h>
44#include <qlayout.h> 44#include <qlayout.h>
45#include <qlineedit.h> 45#include <qlineedit.h>
46#include <qiconset.h> 46#include <qiconset.h>
47#include <qmenubar.h> 47#include <qmenubar.h>
48#include <qmessagebox.h> 48#include <qmessagebox.h>
49#include <qpopupmenu.h> 49#include <qpopupmenu.h>
50#include <qpushbutton.h> 50#include <qpushbutton.h>
51#include <qstatusbar.h> 51#include <qstatusbar.h>
52#include <qspinbox.h> 52#include <qspinbox.h>
53#include <qtextstream.h> 53#include <qtextstream.h>
54#include <qtoolbutton.h> 54#include <qtoolbutton.h>
55#include <qwhatsthis.h> 55#include <qwhatsthis.h>
56 56
@@ -168,112 +168,112 @@ WellenreiterMainWindow::WellenreiterMainWindow( QWidget * parent, const char * n
168 mb->insertItem( d ); 168 mb->insertItem( d );
169 #else // Qt3 changed the insertion order. It's now totally random :( 169 #else // Qt3 changed the insertion order. It's now totally random :(
170 mb->insertItem( d ); 170 mb->insertItem( d );
171 mb->insertItem( uploadButton ); 171 mb->insertItem( uploadButton );
172 mb->insertItem( stopButton ); 172 mb->insertItem( stopButton );
173 mb->insertItem( startButton ); 173 mb->insertItem( startButton );
174 #endif 174 #endif
175 175
176 updateToolButtonState(); 176 updateToolButtonState();
177 177
178 // setup status bar (for now only on X11) 178 // setup status bar (for now only on X11)
179 179
180 #ifndef QWS 180 #ifndef QWS
181 statusBar()->message( tr( "Ready." ) ); 181 statusBar()->message( tr( "Ready." ) );
182 #endif 182 #endif
183 183
184 connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) ); 184 connect( mw, SIGNAL( startedSniffing() ), this, SLOT( changedSniffingState() ) );
185 connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) ); 185 connect( mw, SIGNAL( stoppedSniffing() ), this, SLOT( changedSniffingState() ) );
186}; 186};
187 187
188 188
189 189
190void WellenreiterMainWindow::showConfigure() 190void WellenreiterMainWindow::showConfigure()
191{ 191{
192 odebug << "show configure..." << oendl; 192 odebug << "show configure..." << oendl;
193 cw->setCaption( tr( "Configure" ) ); 193 cw->setCaption( tr( "Configure" ) );
194 int result = QPEApplication::execDialog( cw ); 194 int result = QPEApplication::execDialog( cw );
195 195
196 if ( result ) updateToolButtonState(); 196 if ( result ) updateToolButtonState();
197} 197}
198 198
199 199
200void WellenreiterMainWindow::updateToolButtonState() 200void WellenreiterMainWindow::updateToolButtonState()
201{ 201{
202 const QString& interface = cw->interfaceName->currentText(); 202 const QString& interface = cw->interfaceName->currentText();
203 const int cardtype = cw->driverType(); 203 const int cardtype = cw->driverType();
204 204
205 if ( ( interface != "<select>" ) && ( cardtype != 0 ) ) 205 if ( ( interface != "<select>" ) && ( cardtype != 0 ) )
206 { 206 {
207 startButton->setEnabled( true ); 207 startButton->setEnabled( true );
208 menuBar()->setItemEnabled( startID, true ); 208 menuBar()->setItemEnabled( startID, true );
209 } 209 }
210 else 210 else
211 { 211 {
212 startButton->setEnabled( false ); 212 startButton->setEnabled( false );
213 menuBar()->setItemEnabled( startID, false ); 213 menuBar()->setItemEnabled( startID, false );
214 } 214 }
215} 215}
216 216
217 217
218void WellenreiterMainWindow::changedSniffingState() 218void WellenreiterMainWindow::changedSniffingState()
219{ 219{
220 startButton->setEnabled( !mw->sniffing ); 220 startButton->setEnabled( !mw->sniffing );
221 menuBar()->setItemEnabled( startID, !mw->sniffing ); 221 menuBar()->setItemEnabled( startID, !mw->sniffing );
222 stopButton->setEnabled( mw->sniffing ); 222 stopButton->setEnabled( mw->sniffing );
223 menuBar()->setItemEnabled( stopID, mw->sniffing ); 223 menuBar()->setItemEnabled( stopID, mw->sniffing );
224 224
225 if ( !mw->sniffing ) 225 if ( !mw->sniffing && QFile::exists( mw->dumpname ) )
226 { 226 {
227 menuBar()->setItemEnabled( uploadID, true ); 227 menuBar()->setItemEnabled( uploadID, true );
228 uploadButton->setEnabled( true ); 228 uploadButton->setEnabled( true );
229 } 229 }
230} 230}
231 231
232 232
233WellenreiterMainWindow::~WellenreiterMainWindow() 233WellenreiterMainWindow::~WellenreiterMainWindow()
234{ 234{
235 odebug << "Wellenreiter: bye." << oendl; 235 odebug << "Wellenreiter: bye." << oendl;
236}; 236};
237 237
238 238
239void WellenreiterMainWindow::demoAddStations() 239void 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
251void WellenreiterMainWindow::demoReadFromGps() 251void 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://" << 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
263QString WellenreiterMainWindow::getFileName( bool save ) 263QString 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
298void WellenreiterMainWindow::fileSaveLog() 298void 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 '" << 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 '" << fname << "'" << oendl; 313 odebug << "Problem saving log to file '" << fname << "'" << oendl;
314 } 314 }
315 } 315 }
316} 316}
317 317
318void WellenreiterMainWindow::fileSaveSession() 318void 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 '" << 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 '" << fname << "'" << oendl; 334 odebug << "Problem saving session to file '" << fname << "'" << oendl;
335 } 335 }
336 } 336 }
337} 337}
338 338
339void WellenreiterMainWindow::fileSaveHex() 339void 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 '" << 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 '" << fname << "'" << oendl; 356 odebug << "Problem saving hex log to file '" << fname << "'" << oendl;
357 } 357 }
358 } 358 }
359 */ 359 */
360} 360}
361 361
362void WellenreiterMainWindow::fileLoadSession() 362void 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 '" << 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 '" << fname << "'" << oendl; 377 odebug << "Problem loading session from file '" << fname << "'" << oendl;
378 } 378 }
379 } 379 }
380} 380}
381 381
382 382
383void WellenreiterMainWindow::fileNew() 383void 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
391void WellenreiterMainWindow::closeEvent( QCloseEvent* e ) 391void 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 );
@@ -418,53 +418,53 @@ void WellenreiterMainWindow::uploadSession()
418 QPushButton* reject; 418 QPushButton* reject;
419 419
420 QDialog* d = new QDialog( 0, "session upload", true ); 420 QDialog* d = new QDialog( 0, "session upload", true );
421 d->setCaption( tr( "Upload Session" ) ); 421 d->setCaption( tr( "Upload Session" ) );
422 QGridLayout* g = new QGridLayout( d, 4, 2, 3 ); 422 QGridLayout* g = new QGridLayout( d, 4, 2, 3 );
423 g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 ); 423 g->addWidget( new QLabel( tr( "From: " ), d ), 0, 0 );
424 g->addWidget( from = new QLineEdit( d ), 0, 1 ); 424 g->addWidget( from = new QLineEdit( d ), 0, 1 );
425 g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 ); 425 g->addWidget( new QLabel( tr( "Location: " ), d ), 1, 0 );
426 g->addWidget( location = new QLineEdit( d ), 1, 1 ); 426 g->addWidget( location = new QLineEdit( d ), 1, 1 );
427 g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 ); 427 g->addWidget( new QLabel( tr( "Comments: " ), d ), 2, 0 );
428 g->addWidget( comments = new QLineEdit( d ), 2, 1 ); 428 g->addWidget( comments = new QLineEdit( d ), 2, 1 );
429 g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 ); 429 g->addWidget( accept = new QPushButton( tr( "&Ok" ), d ), 3, 0 );
430 g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 ); 430 g->addWidget( reject = new QPushButton( tr( "&Cancel" ), d ), 3, 1 );
431 accept->setDefault( true ); 431 accept->setDefault( true );
432 accept->setAutoDefault( true ); 432 accept->setAutoDefault( true );
433 from->setText( "WL II User" ); 433 from->setText( "WL II User" );
434 location->setText( "WL II Location" ); 434 location->setText( "WL II Location" );
435 comments->setText( "No Comments." ); 435 comments->setText( "No Comments." );
436 connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) ); 436 connect( accept, SIGNAL( clicked() ), d, SLOT( accept() ) );
437 connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) ); 437 connect( reject, SIGNAL( clicked() ), d, SLOT( reject() ) );
438 int result = d->exec(); 438 int result = d->exec();
439 439
440 if ( !result ) 440 if ( !result )
441 { 441 {
442 odebug << "Session upload cancelled :(" << oendl; 442 odebug << "Session upload cancelled :(" << oendl;
443 return; 443 return;
444 } 444 }
445 445
446 odebug << "Starting upload..." << oendl; 446 odebug << "Starting upload..." << oendl;
447 447
448 struct sockaddr_in raddr; 448 struct sockaddr_in raddr;
449 struct hostent *rhost_info; 449 struct hostent *rhost_info;
450 int sock = -1; 450 int sock = -1;
451 bool ok = false; 451 bool ok = false;
452 452
453 rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname ); 453 rhost_info = (struct hostent *) ::gethostbyname( CAP_hostname );
454 if ( rhost_info ) 454 if ( rhost_info )
455 { 455 {
456 456
457 457
458 if ( !QFile::exists( mw->captureFileName() ) ) 458 if ( !QFile::exists( mw->captureFileName() ) )
459 { 459 {
460 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile '%1' doesn't exist</p>").arg( mw->captureFileName() ) ); 460 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Logfile '%1' doesn't exist</p>").arg( mw->captureFileName() ) );
461 return; 461 return;
462 } 462 }
463 463
464 QFile f( mw->captureFileName() ); 464 QFile f( mw->captureFileName() );
465 if ( !f.open( IO_ReadOnly ) ) 465 if ( !f.open( IO_ReadOnly ) )
466 { 466 {
467 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile '%1'</p>").arg( mw->captureFileName() ) ); 467 QMessageBox::warning( 0, tr( "Error" ), tr( "<p>Can't open Logfile '%1'</p>").arg( mw->captureFileName() ) );
468 return; 468 return;
469 } 469 }
470 470