-rw-r--r-- | noncore/net/opiestumbler/opiestumbler.cpp | 55 | ||||
-rw-r--r-- | noncore/net/opiestumbler/opiestumbler.h | 11 |
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 */ |