author | tille <tille> | 2003-06-16 16:56:06 (UTC) |
---|---|---|
committer | tille <tille> | 2003-06-16 16:56:06 (UTC) |
commit | ad64cf15ac6ac064619079592f7656464e88baac (patch) (side-by-side diff) | |
tree | 54ed14a9cff9bdefcadb5ac5e04e5b3c104207ac | |
parent | c6e6ec7a25dd0acfd970d0b9e2f43a8ea500b98b (diff) | |
download | opie-ad64cf15ac6ac064619079592f7656464e88baac.zip opie-ad64cf15ac6ac064619079592f7656464e88baac.tar.gz opie-ad64cf15ac6ac064619079592f7656464e88baac.tar.bz2 |
add support for multiline qcop calls
and macaddrs
-rw-r--r-- | noncore/settings/networksettings/mainwindowimp.cpp | 7 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanmodule.cpp | 120 |
2 files changed, 62 insertions, 65 deletions
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp index 5029525..544498f 100644 --- a/noncore/settings/networksettings/mainwindowimp.cpp +++ b/noncore/settings/networksettings/mainwindowimp.cpp @@ -456,212 +456,205 @@ void MainWindowImp::informationClicked(){ #ifdef DEBUG qDebug("MainWindowImp::informationClicked:: Module owner has created, we showed."); #endif return; } } InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog); information->showMaximized(); } /** * Update this interface. If no QListViewItem exists create one. * @param Interface* pointer to the interface that needs to be updated. */ void MainWindowImp::updateInterface(Interface *i){ if(!advancedUserMode){ if(i->getInterfaceName() == "lo") return; } QListViewItem *item = NULL; // Find the interface, making it if needed. if(items.find(i) == items.end()){ item = new QListViewItem(connectionList, "", "", ""); // See if you can't find a module owner for this interface QMap<Module*, QLibrary*>::Iterator it; for( it = libraries.begin(); it != libraries.end(); ++it ){ if(it.key()->isOwner(i)) i->setModuleOwner(it.key()); } items.insert(i, item); interfaceItems.insert(item, i); } else item = items[i]; // Update the icons and information #ifdef QWS item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down"))); #else item->setPixmap(0, (SmallIcon(i->getStatus() ? "up": "down"))); #endif QString typeName = "lan"; if(i->getInterfaceName() == "lo") typeName = "lo"; if(i->getInterfaceName().contains("irda")) typeName = "irda"; if(i->getInterfaceName().contains("wlan")) typeName = "wlan"; if(i->getInterfaceName().contains("usb")) typeName = "usb"; if(!i->isAttached()) typeName = "connect_no"; // Actually try to use the Module if(i->getModuleOwner() != NULL) typeName = i->getModuleOwner()->getPixmapName(i); #ifdef QWS item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName))); #else item->setPixmap(1, (SmallIcon(typeName))); #endif item->setText(2, i->getHardwareName()); item->setText(3, QString("(%1)").arg(i->getInterfaceName())); item->setText(4, (i->getStatus()) ? i->getIp() : QString("")); } void MainWindowImp::newProfileChanged(const QString& newText){ if(newText.length() > 0) newProfileButton->setEnabled(true); else newProfileButton->setEnabled(false); } /** * Adds a new profile to the list of profiles. * Don't add profiles that already exists. * Appends to the list and QStringList */ void MainWindowImp::addProfile(){ QString newProfileName = newProfile->text(); if(profiles.grep(newProfileName).count() > 0){ QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok); return; } profiles.append(newProfileName); profilesList->insertItem(newProfileName); } /** * Removes the currently selected profile in the combo. * Doesn't delete if there are less then 2 profiles. */ void MainWindowImp::removeProfile(){ if(profilesList->count() <= 1){ QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok); return; } QString profileToRemove = profilesList->currentText(); if(profileToRemove == "All"){ QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok); return; } // Can't remove the curent profile if(profileToRemove == currentProfileLabel->text()){ QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok); return; } if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){ profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), "")); profilesList->clear(); for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) profilesList->insertItem((*it)); // Remove any interface settings and mappings. Interfaces interfaces; // Go through them one by one QMap<Interface*, QListViewItem*>::Iterator it; for( it = items.begin(); it != items.end(); ++it ){ QString interfaceName = it.key()->getInterfaceName(); qDebug(interfaceName.latin1()); if(interfaces.setInterface(interfaceName + "_" + profileToRemove)){ interfaces.removeInterface(); if(interfaces.setMapping(interfaceName)){ if(profilesList->count() == 1) interfaces.removeMapping(); else{ interfaces.removeMap("map", interfaceName + "_" + profileToRemove); } } interfaces.write(); break; } } } } /** * A new profile has been selected, change. * @param newProfile the new profile. */ void MainWindowImp::changeProfile(){ if(profilesList->currentItem() == -1){ QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok); return; } QString newProfile = profilesList->text(profilesList->currentItem()); if(newProfile != currentProfileLabel->text()){ currentProfileLabel->setText(newProfile); QFile::remove(scheme); QFile file(scheme); if ( file.open(IO_ReadWrite) ) { QTextStream stream( &file ); stream << QString("SCHEME=%1").arg(newProfile); file.close(); } // restart all up devices? if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){ // Go through them one by one QMap<Interface*, QListViewItem*>::Iterator it; for( it = items.begin(); it != items.end(); ++it ){ if(it.key()->getStatus() == true) it.key()->restart(); } } } // TODO change the profile in the modules } void MainWindowImp::makeChannel() { channel = new QCopChannel( "QPE/Application/networksettings", this ); connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), this, SLOT(receive(const QCString&, const QByteArray&)) ); } void MainWindowImp::receive(const QCString &msg, const QByteArray &arg) { bool found = false; qDebug("MainWindowImp::receive QCop msg >"+msg+"<"); QString dest = msg.left(msg.find("(")); QCString param = msg.right(msg.length() - msg.find("(") - 1); param = param.left( param.length() - 1 ); qDebug("dest >%s< param >"+param+"<",dest.latin1()); -// if (param.contains("QString,QString,QString")) { -// QDataStream stream(arg,IO_ReadOnly); -// QString arg1, arg2, arg3; -// stream >> arg1 >> arg2 >> arg3 ; -// qDebug("args: >%s< >%s< >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1()); -// } - QMap<Module*, QLibrary*>::Iterator it; for( it = libraries.begin(); it != libraries.end(); ++it ){ qDebug("plugin >%s<", it.key()->type().latin1() ); if(it.key()->type() == dest){ it.key()->receive( param, arg ); found = true; } } if (found) QPEApplication::setKeepRunning(); else qDebug("Huh what do ya want"); } diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp index bc467bb..e34f0ce 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.cpp +++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp @@ -1,209 +1,213 @@ #include "wlanmodule.h" #include "wlanimp.h" #include "infoimp.h" #include "wextensions.h" #include "interfaceinformationimp.h" #include <qcheckbox.h> #include <qcombobox.h> #include <qlabel.h> +#include <qlineedit.h> #include <qprogressbar.h> #include <qspinbox.h> #include <qtabwidget.h> /** * Constructor, find all of the possible interfaces */ WLANModule::WLANModule() : Module(), wlanconfigWiget(0) { } /** * Delete any interfaces that we own. */ WLANModule::~WLANModule(){ Interface *i; for ( i=list.first(); i != 0; i=list.next() ) delete i; } /** * Change the current profile */ void WLANModule::setProfile(const QString &newProfile){ profile = newProfile; } /** * get the icon name for this device. * @param Interface* can be used in determining the icon. * @return QString the icon name (minus .png, .gif etc) */ QString WLANModule::getPixmapName(Interface* ){ return "wlan"; } /** * Check to see if the interface i is owned by this module. * @param Interface* interface to check against * @return bool true if i is owned by this module, false otherwise. */ bool WLANModule::isOwner(Interface *i){ WExtensions we(i->getInterfaceName()); if(!we.doesHaveWirelessExtensions()) return false; i->setHardwareName("802.11b"); list.append(i); return true; } /** * Create, and return the WLANConfigure Module * @return QWidget* pointer to this modules configure. */ QWidget *WLANModule::configure(Interface *i){ WLANImp *wlanconfig = new WLANImp(0, "WlanConfig", i, false, Qt::WDestructiveClose); wlanconfig->setProfile(profile); return wlanconfig; } /** * Create, and return the Information Module * @return QWidget* pointer to this modules info. */ QWidget *WLANModule::information(Interface *i){ WExtensions we(i->getInterfaceName()); if(!we.doesHaveWirelessExtensions()) return NULL; return getInfo( i ); } /** * Get all active (up or down) interfaces * @return QList<Interface> A list of interfaces that exsist that havn't * been called by isOwner() */ QList<Interface> WLANModule::getInterfaces(){ return list; } /** * Attempt to add a new interface as defined by name * @param name the name of the type of interface that should be created given * by possibleNewInterfaces(); * @return Interface* NULL if it was unable to be created. */ Interface *WLANModule::addNewInterface(const QString &){ // We can't add a 802.11 interface, either the hardware will be there // or it wont. return NULL; } /** * Attempts to remove the interface, doesn't delete i * @return bool true if successfull, false otherwise. */ bool WLANModule::remove(Interface*){ // Can't remove a hardware device, you can stop it though. return false; } void WLANModule::receive(const QCString ¶m, const QByteArray &arg) { qDebug("WLANModule::receive "+param); QStringList params = QStringList::split(",",param); int count = params.count(); qDebug("WLANModule got %i params", count ); if (count < 2){ qDebug("Erorr less than 2 parameter"); qDebug("RETURNING"); return; } QDataStream stream(arg,IO_ReadOnly); QString interface; QString action; - - stream >> interface; - stream >> action; - qDebug("WLANModule got interface %s and acion %s", interface.latin1(), action.latin1()); - // find interfaces - Interface *ifa=0; - for ( Interface *i=list.first(); i != 0; i=list.next() ){ - if (i->getInterfaceName() == interface){ - qDebug("WLANModule found interface %s",interface.latin1()); - ifa = i; + while (! stream.atEnd() ){ + stream >> interface; + stream >> action; + qDebug("WLANModule got interface %s and acion %s", interface.latin1(), action.latin1()); + // find interfaces + Interface *ifa=0; + for ( Interface *i=list.first(); i != 0; i=list.next() ){ + if (i->getInterfaceName() == interface){ + qDebug("WLANModule found interface %s",interface.latin1()); + ifa = i; + } } - } - - if (ifa == 0){ - qFatal("WLANModule Did not find %s",interface.latin1()); - } - if (count == 2){ - // those should call the interface directly - QWidget *info = getInfo( ifa ); - info->showMaximized(); - - if ( action.contains("start" ) ){ - ifa->start(); - } else if ( action.contains("restart" ) ){ - ifa->restart(); - } else if ( action.contains("stop" ) ){ - ifa->stop(); - }else if ( action.contains("refresh" ) ){ - ifa->refresh(); - } - }else if (count == 3){ - QString value; - if (!wlanconfigWiget){ - //FIXME: what if it got closed meanwhile? - wlanconfigWiget = (WLANImp*) configure(ifa); + if (ifa == 0){ + qFatal("WLANModule Did not find %s",interface.latin1()); } - wlanconfigWiget->showMaximized(); - stream >> value; - qDebug("WLANModule is setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); - if ( action.contains("ESSID") ){ - QComboBox *combo = wlanconfigWiget->essid; - bool found = false; - for ( int i = 0; i < combo->count(); i++) - if ( combo->text( i ) == value ){ - combo->setCurrentItem( i ); - found = true; + + if (count == 2){ + // those should call the interface directly + QWidget *info = getInfo( ifa ); + info->showMaximized(); + + if ( action.contains("start" ) ){ + ifa->start(); + } else if ( action.contains("restart" ) ){ + ifa->restart(); + } else if ( action.contains("stop" ) ){ + ifa->stop(); + }else if ( action.contains("refresh" ) ){ + ifa->refresh(); + } + }else if (count == 3){ + QString value; + if (!wlanconfigWiget){ + //FIXME: what if it got closed meanwhile? + wlanconfigWiget = (WLANImp*) configure(ifa); + } + wlanconfigWiget->showMaximized(); + stream >> value; + qDebug("WLANModule is setting %s of %s to %s", action.latin1(), interface.latin1(), value.latin1() ); + if ( action.contains("ESSID") ){ + QComboBox *combo = wlanconfigWiget->essid; + bool found = false; + for ( int i = 0; i < combo->count(); i++) + if ( combo->text( i ) == value ){ + combo->setCurrentItem( i ); + found = true; } - if (!found) combo->insertItem( value, 0 ); - }else if ( action.contains("Mode") ){ - QComboBox *combo = wlanconfigWiget->mode; - for ( int i = 0; i < combo->count(); i++) - if ( combo->text( i ) == value ){ + if (!found) combo->insertItem( value, 0 ); + }else if ( action.contains("Mode") ){ + QComboBox *combo = wlanconfigWiget->mode; + for ( int i = 0; i < combo->count(); i++) + if ( combo->text( i ) == value ){ combo->setCurrentItem( i ); - } - - }else if (action.contains("Channel")){ - wlanconfigWiget->specifyChan->setChecked( true ); - wlanconfigWiget->networkChannel->setValue( value.toInt() ); - }else - qDebug("wlan plugin has no clue"); - } - + } + + }else if (action.contains("Channel")){ + wlanconfigWiget->specifyChan->setChecked( true ); + wlanconfigWiget->networkChannel->setValue( value.toInt() ); + }else if (action.contains("MacAddr")){ + wlanconfigWiget->specifyAp->setChecked( true ); + wlanconfigWiget->macEdit->setText( value ); + }else + qDebug("wlan plugin has no clue"); + } + }// while stream } QWidget *WLANModule::getInfo( Interface *i) { qDebug("WLANModule::getInfo start"); WlanInfoImp *info = new WlanInfoImp(0, i->getInterfaceName(), Qt::WDestructiveClose); InterfaceInformationImp *information = new InterfaceInformationImp(info->tabWidget, "InterfaceSetupImp", i); info->tabWidget->insertTab(information, "TCP/IP", 0); qDebug("WLANModule::getInfo return"); return info; } |