summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2003-06-15 12:45:31 (UTC)
committer mickeyl <mickeyl>2003-06-15 12:45:31 (UTC)
commit6b682070b6d83f3537dd9fa5aee715ab142a04e6 (patch) (side-by-side diff)
treeb152def34a4fe52ef6195af9c1c324b23a3d7981
parent7feda6ad0e05602d0a939f9867f296f62ae758cd (diff)
downloadopie-6b682070b6d83f3537dd9fa5aee715ab142a04e6.zip
opie-6b682070b6d83f3537dd9fa5aee715ab142a04e6.tar.gz
opie-6b682070b6d83f3537dd9fa5aee715ab142a04e6.tar.bz2
basic framework for context menu "join network" established
just need to send the proper qcop messages now
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp39
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.h8
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.cpp18
-rw-r--r--noncore/net/wellenreiter/gui/wellenreiter.h2
4 files changed, 66 insertions, 1 deletions
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 <assert.h>
#include <qdatetime.h>
#include <qtextstream.h>
+#include <qpopupmenu.h>
#ifdef QWS
+#include <qpe/qpeapplication.h>
#include <opie/odevice.h>
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<MScanListItem*>( 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 <opie/odevice.h>
+#include <qpe/qcopenvelope_qws.h>
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();