From 12851a09a2761ca6e189f080e9ca69bf4974302f Mon Sep 17 00:00:00 2001 From: benmeyer Date: Fri, 18 Oct 2002 16:27:02 +0000 Subject: Can now remove mapping and is done so automagicly when you delete a profile --- (limited to 'noncore/net/networksetup') diff --git a/noncore/net/networksetup/interfaces.cpp b/noncore/net/networksetup/interfaces.cpp index 0927258..9155890 100644 --- a/noncore/net/networksetup/interfaces.cpp +++ b/noncore/net/networksetup/interfaces.cpp @@ -335,8 +335,7 @@ QString Interfaces::getInterfaceOption(QString option, bool &error){ /** * Set a value for an option in the currently selected interface. If option - * doesn't exist then it is added along with the value. If value is set to an - * empty string then option is removed. + * doesn't exist then it is added along with the value. * @param option the options to set the value. * @param value the value that option should be set to. * @param error set to true if any error occurs, false otherwise. @@ -347,6 +346,17 @@ bool Interfaces::setInterfaceOption(QString option, QString value){ } /** + * Removes a value for an option in the currently selected interface. + * @param option the options to set the value. + * @param value the value that option should be set to. + * @param error set to true if any error occurs, false otherwise. + * @return QString the options value. QString::null if error == true + */ +bool Interfaces::removeInterfaceOption(QString option, QString value){ + return removeOption(currentIface, option, value); +} + +/** * Removes all of the options from the currently selected interface. * @return bool error if if successfull */ @@ -377,6 +387,17 @@ void Interfaces::addMapping(QString option){ } /** + * Remove the currently selected map and all of its options. + * @return bool if successfull or not. + */ +bool Interfaces::removeMapping(){ + if(currentMapping == interfaces.end()) + return false; + (*currentMapping) = ""; + return removeAllOptions(currentMapping); +} + +/** * Set a map option within a mapping. * @param map map to use * @param value value to go with map @@ -387,6 +408,16 @@ bool Interfaces::setMap(QString map, QString value){ } /** + * Removes a map option within a mapping. + * @param map map to use + * @param value value to go with map + * @return bool true if it is successfull. + */ +bool Interfaces::removeMap(QString map, QString value){ + return removeOption(currentMapping, map, value); +} + +/** * Get a map value within a mapping. * @param map map to get value of * @param bool true if it is successfull. @@ -477,9 +508,6 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString if(found) qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); found = true; - if(value == "") - (*it) = ""; - else (*it) = QString("\t%1 %2").arg(option).arg(value); } } @@ -490,6 +518,32 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString } return found; } +/** + * Removes a option in a stanza + * @param start the start of the stanza + * @param option the option to use when setting value. + * @return bool true if successfull, false otherwise. + */ +bool Interfaces::removeOption(QStringList::Iterator start, QString option, QString value){ + if(start == interfaces.end()) + return false; + + bool found = false; + for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) { + if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){ + // got to the end without finding it + break; + } + if((*it).contains(option) && (*it).contains(value) &&it != start){ + // Found it in stanza so replace it. + if(found) + qDebug(QString("Interfaces: Set Options found more then one value for option: %1 in stanza: %1").arg(option).arg((*start)).latin1()); + found = true; + (*it) = ""; + } + } + return found; +} /** * Removes all options in a stanza diff --git a/noncore/net/networksetup/interfaces.h b/noncore/net/networksetup/interfaces.h index 7cf04f0..e09ea71 100644 --- a/noncore/net/networksetup/interfaces.h +++ b/noncore/net/networksetup/interfaces.h @@ -41,11 +41,14 @@ public: bool setInterfaceMethod(QString newName); QString getInterfaceOption(QString option, bool &error); bool setInterfaceOption(QString option, QString value); + bool removeInterfaceOption(QString option, QString value); bool removeAllInterfaceOptions(); bool setMapping(QString interface); + bool removeMapping(); void addMapping(QString options); bool setMap(QString map, QString value); + bool removeMap(QString map, QString value); QString getMap(QString map, bool &error); bool setScript(QString); QString getScript(bool &error); @@ -55,6 +58,7 @@ public: private: bool setStanza(QString stanza, QString option,QStringList::Iterator &iterator); bool setOption(QStringList::Iterator start, QString option, QString value); + bool removeOption(QStringList::Iterator start, QString option, QString value); QString getOption(QStringList::Iterator start, QString option, bool &error); bool removeAllOptions(QStringList::Iterator start); diff --git a/noncore/net/networksetup/interfacesetupimp.cpp b/noncore/net/networksetup/interfacesetupimp.cpp index bdbdfde..1327726 100644 --- a/noncore/net/networksetup/interfacesetupimp.cpp +++ b/noncore/net/networksetup/interfacesetupimp.cpp @@ -92,7 +92,6 @@ void InterfaceSetupImp::setProfile(const QString &profile){ QString newInterfaceName = interface->getInterfaceName(); if(profile.length() > 0) newInterfaceName += "_" + profile; - qDebug( newInterfaceName.latin1()); // See if we have to make a interface. if(!interfaces->setInterface(newInterfaceName)){ // Add making for this new interface if need too diff --git a/noncore/net/networksetup/mainwindowimp.cpp b/noncore/net/networksetup/mainwindowimp.cpp index 9f07f0d..01063c2 100644 --- a/noncore/net/networksetup/mainwindowimp.cpp +++ b/noncore/net/networksetup/mainwindowimp.cpp @@ -32,7 +32,8 @@ #define TEMP_ALL "/tmp/ifconfig-a" #define TEMP_UP "/tmp/ifconfig" -#define SCHEME "/var/lib/pcmcia/scheme" +#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" + MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){ connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); @@ -56,8 +57,9 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par profilesList->insertItem((*it)); currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); + scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); - QFile file(SCHEME); + QFile file(scheme); if ( file.open(IO_ReadOnly) ) { // file opened successfully QTextStream stream( &file ); // use a text stream while ( !stream.eof() ) { // until end of file... @@ -95,7 +97,7 @@ MainWindowImp::~MainWindowImp(){ * and attempts to load them */ void MainWindowImp::loadModules(QString path){ - qDebug(path.latin1()); + //qDebug(path.latin1()); QDir d(path); if(!d.exists()) return; @@ -120,7 +122,7 @@ void MainWindowImp::loadModules(QString path){ * @return pointer to the function with name resolveString or NULL */ Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){ - qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1()); + //qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1()); QLibrary *lib = new QLibrary(pluginFileName); void *functionPointer = lib->resolve(resolveString); if( !functionPointer ){ @@ -490,10 +492,28 @@ void MainWindowImp::removeProfile(){ profilesList->clear(); for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) profilesList->insertItem((*it)); - } - // Remove any interface settings and mappings. - //TODO + // Remove any interface settings and mappings. + Interfaces interfaces; + // Go through them one by one + QMap::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; + } + } + } } /** @@ -508,8 +528,8 @@ void MainWindowImp::changeProfile(){ QString newProfile = profilesList->text(profilesList->currentItem()); if(newProfile != currentProfileLabel->text()){ currentProfileLabel->setText(newProfile); - QFile::remove(SCHEME); - QFile file(SCHEME); + QFile::remove(scheme); + QFile file(scheme); if ( file.open(IO_ReadWrite) ) { QTextStream stream( &file ); stream << QString("SCHEME=%1").arg(newProfile); diff --git a/noncore/net/networksetup/mainwindowimp.h b/noncore/net/networksetup/mainwindowimp.h index c67c161..e5284b4 100644 --- a/noncore/net/networksetup/mainwindowimp.h +++ b/noncore/net/networksetup/mainwindowimp.h @@ -50,6 +50,7 @@ private: QStringList profiles; bool advancedUserMode; + QString scheme; }; #endif -- cgit v0.9.0.2