summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opiestumbler/opiestumbler.cpp55
-rw-r--r--noncore/net/opiestumbler/opiestumbler.h11
2 files changed, 57 insertions, 9 deletions
diff --git a/noncore/net/opiestumbler/opiestumbler.cpp b/noncore/net/opiestumbler/opiestumbler.cpp
index f231fca..bc4a7ab 100644
--- a/noncore/net/opiestumbler/opiestumbler.cpp
+++ b/noncore/net/opiestumbler/opiestumbler.cpp
@@ -1,37 +1,38 @@
#include <cstdlib>
#include <qmenubar.h>
#include <qaction.h>
#include <qlistview.h>
#include <qstring.h>
//#include <qapplication.h>
#include <qdatetime.h>
#include <qpopupmenu.h>
#include <qstatusbar.h>
#include <qlayout.h>
#include <qwhatsthis.h>
#include <qtimer.h>
+#include <qprogressbar.h>
#include <qpe/resource.h>
#include <qpe/config.h>
//#include <qpe/global.h>
#include <qpe/qcopenvelope_qws.h>
#include <qpe/qpeapplication.h>
#include <opie2/odebug.h>
#include <opie2/ostation.h>
#include <opie2/omanufacturerdb.h>
#include <opie2/onetwork.h>
#include <opie2/oprocess.h>
#include "stumbler.h"
#include "opiestumbler.h"
#include "stumblersettings.h"
#include "stationviewitem.h"
#include "stumblerstation.h"
#include "stationinfo.h"
using Opie::Net::OWirelessNetworkInterface;
using Opie::Net::ONetwork;
@@ -254,95 +255,131 @@ QString OpieStumbler::manufacturer( const QString &mac, bool extended )
else
retval = m_db->lookup(mac);
if ( retval.isEmpty() )
retval = tr("Unknown");
return retval;
}
void OpieStumbler::slotJoinNetwork()
{
slotStopScanning();
OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
if( !wiface )
return;
QListIterator<StumblerStation> it(m_stationsHistory);
for(; it.current() && it.current()->st->macAddress.toString() != m_mac; ++it );
if( !it.current() )
return;
-
+
+ m_ssid = it.current()->st->ssid.left(it.current()->st->ssid.length()-1);
+ m_splash = new QFrame( this, "splash", false, WStyle_StaysOnTop | WStyle_DialogBorder | WStyle_Customize );
+ m_splash->setFrameStyle( QFrame::Panel | QFrame::Raised );
+ m_splashBox = new QVBoxLayout( m_splash, 4, 4 );
+ m_infoLabel = new QLabel( QString("<center><b>%1 %2</b></center>").arg(tr("Joining Network")).arg(m_ssid), m_splash );
+ m_pbar = new QProgressBar( 3, m_splash );
+ m_pbar->setCenterIndicator(true);
+ m_splashBox->addWidget( m_infoLabel );
+ m_splashBox->addWidget( m_pbar );
+ int sw = m_splashBox->sizeHint().width()*2;
+ int sh = m_splashBox->sizeHint().height();
+ m_splash->setGeometry((240-(sw))/2, (320-sh)/2, sw, sh);
+ m_splash->show();
+ m_splash->raise();
+
Opie::Net::OStation *station = it.current()->st;
odebug << "Bringing interface down" << oendl;
wiface->setUp(FALSE);
odebug << "Setting mode to " << (station->type == "adhoc" ? "adhoc" : "managed") << oendl;
wiface->setMode(station->type == "adhoc" ? "adhoc" : "managed" );
odebug << "Setting channel to " << station->channel << oendl;
wiface->setChannel(station->channel);
odebug << "Setting SSID to " << station->ssid << oendl;
wiface->setSSID(station->ssid);
wiface->commit();
odebug << "Bringing interface up" << oendl;
wiface->setUp(TRUE);
+ m_pbar->setProgress(1);
//Wait 5 sec for association
QTimer::singleShot(5000, this, SLOT(slotAssociated()));
}
void OpieStumbler::slotAssociated()
{
OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
- if( !wiface )
+ if( !wiface ) {
+ slotCleanSplash();
return;
+ }
if (!wiface->isAssociated()) {
Global::statusMessage(tr("Could not Join"));
+ m_infoLabel->setText(tr("Could not Join"));
+ QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
return;
}
Global::statusMessage(tr("Joined"));
+ m_pbar->setProgress(2);
+ m_infoLabel->setText(QString("<center><b>%1 %2</b></center>").arg(tr("Joined Network")).arg(m_ssid));
if(m_proc) {
m_proc->kill();
delete m_proc;
}
m_proc = new Opie::Core::OProcess(this);
*m_proc << "udhcpc" << "-f" << "-n" << "-i" << m_interface;
m_proc->start(Opie::Core::OProcess::DontCare);
QTimer::singleShot(5000, this, SLOT(slotCheckDHCP()));
}
void OpieStumbler::slotCheckDHCP()
{
if(!m_proc->isRunning()) {
Global::statusMessage(tr("Could not Obtain an Address"));
+ m_infoLabel->setText(QString("<center><b>%1</b></center>").arg(tr("Could not Obtain an Address")));
delete m_proc;
m_proc = NULL;
+ QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
return;
}
m_listCurrent->show();
+ m_pbar->setProgress(3);
-
OWirelessNetworkInterface *wiface = static_cast<OWirelessNetworkInterface*>(ONetwork::instance()->interface(m_interface));
- Global::statusMessage(tr("Obtained IP ") + wiface->ipV4Address().toString());
+ QString ipv4 = wiface->ipV4Address().toString();
+ m_infoLabel->setText(QString("<center><b>%1 %2</b></center>").arg(tr("Obtained IP")).arg(ipv4));
+ Global::statusMessage(tr("Obtained IP") + " " + ipv4);
+ QTimer::singleShot(5000, this, SLOT(slotCleanSplash()));
+
}
-
+
+void OpieStumbler::slotCleanSplash()
+{
+ delete m_pbar;
+ m_pbar = 0;
+ delete m_infoLabel;
+ m_infoLabel = 0;
-
-
-
-
+ delete m_splashBox;
+ m_splashBox = 0;
+
+ delete m_splash;
+ m_splash = 0;
+}
diff --git a/noncore/net/opiestumbler/opiestumbler.h b/noncore/net/opiestumbler/opiestumbler.h
index 3f45a78..84a69ba 100644
--- a/noncore/net/opiestumbler/opiestumbler.h
+++ b/noncore/net/opiestumbler/opiestumbler.h
@@ -1,70 +1,81 @@
#ifndef OPIESTUMBLER_H
#define OPIESTUMBLER_H
#include <qmainwindow.h>
#include <qlist.h>
#include "stumblerstation.h"
class QString;
class QPopupMenu;
class Stumbler;
class QCopChannel;
class QListView;
class QListViewItem;
+class QFrame;
+class QLabel;
+class QProgressBar;
+class QVBoxLayout;
namespace Opie{
namespace Net {
class OMacAddress;
class OStation;
class OManufacturerDB;
}
namespace Core {
class OProcess;
}
}
class OpieStumbler: public QMainWindow {
Q_OBJECT
public:
enum CurrentColumns { CURSSID, CURCHAN, CURSIGNAL, CURENC };
enum HistoryColumns { HISSSID, HISCHAN, HISSIGNAL, HISENC, HISVENDOR };
OpieStumbler(QWidget *parent = 0, const char *name = 0, WFlags f = 0);
static QString appName() { return QString::fromLatin1("opiestumbler"); }
static QString appCaption();
void displayStations();
QString manufacturer(const QString &mac, bool extended = FALSE );
protected slots:
void slotConfigure();
void slotStartScanning();
void slotStopScanning();
void slotUpdateStations();
void slotMessageReceived( const QCString &, const QByteArray & );
void slotCurrentMousePressed(int button, QListViewItem *item, const QPoint &point, int c);
void slotHistoryMousePressed(int button, QListViewItem *item, const QPoint &point, int c);
void slotShowDetails();
void slotLoadManufacturers();
void slotJoinNetwork();
void slotAssociated();
void slotCheckDHCP();
+ void slotCleanSplash();
protected:
void loadConfig();
+
QListView *m_listCurrent;
QListView *m_listHistory;
QString m_interface;
Stumbler *m_stumbler;
QCopChannel *m_channel;
QList <Opie::Net::OStation> *m_stationsCurrent;
QList <StumblerStation> m_stationsHistory;
QPopupMenu *m_popupCurrent;
QPopupMenu *m_popupHistory;
Opie::Net::OManufacturerDB *m_db;
QString m_mac;
+ QString m_ssid;
Opie::Core::OProcess *m_proc;
+ QFrame *m_splash;
+ QVBoxLayout *m_splashBox;
+ QLabel *m_infoLabel;
+ QProgressBar *m_pbar;
};
#endif /* OPIESTUMBLER_H */