summaryrefslogtreecommitdiff
path: root/noncore/net/wellenreiter/gui/scanlist.cpp
Side-by-side diff
Diffstat (limited to 'noncore/net/wellenreiter/gui/scanlist.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/wellenreiter/gui/scanlist.cpp39
1 files changed, 39 insertions, 0 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
@@ -11,26 +11,28 @@
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
**********************************************************************/
#include "scanlist.h"
#include "configwindow.h"
#include "logwindow.h"
#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
#ifdef QWS
#include <qpe/resource.h>
#else
#include "resource.h"
#endif
const int col_type = 0;
@@ -65,24 +67,32 @@ MScanListView::MScanListView( QWidget* parent, const char* name )
addColumn( tr( "T" ) );
setColumnAlignment( col_traffic, AlignCenter );
addColumn( tr( "IP" ) );
setColumnAlignment( col_ip, AlignCenter );
addColumn( tr( "Manufacturer" ) );
setColumnAlignment( col_manuf, AlignCenter );
addColumn( tr( "First Seen" ) );
setColumnAlignment( col_firstseen, AlignCenter );
addColumn( tr( "Last Seen" ) );
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
+
};
MScanListView::~MScanListView()
{
};
OListViewItem* MScanListView::childFactory()
{
return new MScanListItem( this );
}
@@ -308,24 +318,45 @@ void MScanListView::identify( const OMacAddress& macaddr, const QString& ip )
if ( it.current()->text( col_ap ) == macaddr.toString(true) )
{
it.current()->setText( col_ip, ip );
return;
}
}
qDebug( "D'oh! Received identification, but item not yet in list... ==> Handle this!" );
MLogWindow::logwindow()->log( QString().sprintf( "WARNING: Unhandled identification %s = %s!",
(const char*) macaddr.toString(), (const char*) 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
//============================================================
MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QString macaddr,
bool wep, int channel, int signal )
:OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null ),
_type( type ), _essid( essid ), _macaddr( macaddr ), _wep( wep ),
_channel( channel ), _signal( signal ), _beacons( 1 )
{
#ifdef DEBUG
qDebug( "creating scanlist item" );
@@ -336,24 +367,32 @@ MScanListItem::MScanListItem( QListView* parent, QString type, QString essid, QS
}
MScanListItem::MScanListItem( QListViewItem* parent, QString type, QString essid, QString macaddr,
bool wep, int channel, int signal )
:OListViewItem( parent, essid, QString::null, macaddr, QString::null, QString::null )
{
#ifdef DEBUG
qDebug( "creating scanlist item" );
#endif
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 );
}
void MScanListItem::serializeTo( QDataStream& s ) const
{
#ifdef DEBUG
qDebug( "serializing MScanListItem" );
#endif
OListViewItem::serializeTo( s );