From 6b682070b6d83f3537dd9fa5aee715ab142a04e6 Mon Sep 17 00:00:00 2001 From: mickeyl Date: Sun, 15 Jun 2003 12:45:31 +0000 Subject: basic framework for context menu "join network" established just need to send the proper qcop messages now --- (limited to 'noncore/net') diff --git a/noncore/net/wellenreiter/gui/scanlist.cpp b/noncore/net/wellenreiter/gui/scanlist.cpp index 809d0bd..085eec4 100644 --- a/noncore/net/wellenreiter/gui/scanlist.cpp +++ b/noncore/net/wellenreiter/gui/scanlist.cpp @@ -20,8 +20,10 @@ #include #include #include +#include #ifdef QWS +#include #include using namespace Opie; #endif @@ -74,6 +76,14 @@ MScanListView::MScanListView( QWidget* parent, const char* name ) setColumnAlignment( col_lastseen, AlignCenter ); setRootIsDecorated( true ); setAllColumnsShowFocus( true ); + + connect( this, SIGNAL( rightButtonClicked(QListViewItem*,const QPoint&,int) ), + this, SLOT( contextMenuRequested(QListViewItem*,const QPoint&,int) ) ); + + #ifdef QWS + QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); + #endif + }; @@ -317,6 +327,27 @@ void MScanListView::identify( const OMacAddress& macaddr, const QString& ip ) } +void MScanListView::contextMenuRequested( QListViewItem* item, const QPoint&, int col ) +{ + if ( !item ) return; + + MScanListItem* itm = static_cast( item ); + + qDebug( "contextMenuRequested on item '%s' (%s) in column: '%d'", + (const char*) itm->text(0), (const char*) itm->type, col ); + + if ( itm->type == "adhoc" || itm->type == "managed" ) + { + QString entry = QString().sprintf( "&Join %s Net '%s'...", (const char*) itm->type, (const char*) itm->essid() ); + + QPopupMenu m( this ); + m.insertItem( entry, 37773, 0 ); + int result = m.exec( QCursor::pos() ); + if ( result == 37773 ) + emit joinNetwork( itm->type, itm->essid(), itm->channel(), itm->macaddr() ); + } +} + //============================================================ // MScanListItem //============================================================ @@ -345,6 +376,14 @@ MScanListItem::MScanListItem( QListViewItem* parent, QString type, QString essid decorateItem( type, essid, macaddr, wep, channel, signal ); } +const QString& MScanListItem::essid() const +{ + if ( type == "network" ) + return _essid; + else + return ( (MScanListItem*) parent() )->essid(); +} + OListViewItem* MScanListItem::childFactory() { return new MScanListItem( this ); diff --git a/noncore/net/wellenreiter/gui/scanlist.h b/noncore/net/wellenreiter/gui/scanlist.h index 253c166..5aba0d2 100644 --- a/noncore/net/wellenreiter/gui/scanlist.h +++ b/noncore/net/wellenreiter/gui/scanlist.h @@ -47,6 +47,12 @@ class MScanListView: public OListView void identify( const OMacAddress&, const QString& ipaddr ); + void contextMenuRequested( QListViewItem* item, const QPoint&, int ); + + signals: + void rightButtonClicked(QListViewItem*,const QPoint&,int); + void joinNetwork( const QString&, const QString&, int, const QString& ); + protected: void addIfNotExisting( MScanListItem* parent, const OMacAddress& addr, const QString& type = "station" ); @@ -82,7 +88,7 @@ class MScanListItem: public OListViewItem public: //const QString& type() { return _type; }; - const QString& essid() { return _essid; }; + const QString& essid() const; const QString& macaddr() { return _macaddr; }; bool wep() { return _wep; }; int channel() { return _channel; }; diff --git a/noncore/net/wellenreiter/gui/wellenreiter.cpp b/noncore/net/wellenreiter/gui/wellenreiter.cpp index 2f26702..8a9e55d 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.cpp +++ b/noncore/net/wellenreiter/gui/wellenreiter.cpp @@ -28,6 +28,7 @@ #ifdef QWS #include +#include using namespace Opie; #endif @@ -81,6 +82,8 @@ Wellenreiter::Wellenreiter( QWidget* parent ) #endif netview->setColumnWidthMode( 1, QListView::Manual ); + connect( netview, SIGNAL( joinNetwork(const QString&,const QString&,int,const QString&) ), + this, SLOT( joinNetwork(const QString&,const QString&,int,const QString&) ) ); pcap = new OPacketCapturer(); } @@ -488,3 +491,18 @@ void Wellenreiter::doAction( const QString& action, const QString& protocol, OPa QString().sprintf( "Got packet with protocol '%s'", (const char*) protocol ) ); } +void Wellenreiter::joinNetwork(const QString& type, const QString& essid, int channel, const QString& macaddr) +{ + qDebug( "joinNetwork() - %s, %s, %d, %s", + (const char*) type, + (const char*) essid, + channel, + (const char*) macaddr ); + + // TODO: Stop scanning here + + QCopEnvelope msg( "QPE/Application/networksettings", "wlan(QString,QString,QString)" ); + msg << "test" << "test" << "test"; + +} + diff --git a/noncore/net/wellenreiter/gui/wellenreiter.h b/noncore/net/wellenreiter/gui/wellenreiter.h index f23ca4d..e1062df 100644 --- a/noncore/net/wellenreiter/gui/wellenreiter.h +++ b/noncore/net/wellenreiter/gui/wellenreiter.h @@ -59,6 +59,8 @@ class Wellenreiter : public WellenreiterBase { void startClicked(); void stopClicked(); + void joinNetwork(const QString&,const QString&,int,const QString&); + signals: void startedSniffing(); void stoppedSniffing(); -- cgit v0.9.0.2