summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/networksetup/interfaces.cpp64
-rw-r--r--noncore/net/networksetup/interfaces.h4
-rw-r--r--noncore/net/networksetup/interfacesetupimp.cpp1
-rw-r--r--noncore/net/networksetup/mainwindowimp.cpp36
-rw-r--r--noncore/net/networksetup/mainwindowimp.h1
-rw-r--r--noncore/settings/networksettings/interfaces.cpp64
-rw-r--r--noncore/settings/networksettings/interfaces.h4
-rw-r--r--noncore/settings/networksettings/interfacesetupimp.cpp1
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp36
-rw-r--r--noncore/settings/networksettings/mainwindowimp.h1
10 files changed, 184 insertions, 28 deletions
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
@@ -334,10 +334,9 @@ 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.
* @return QString the options value. QString::null if error == true
@@ -346,8 +345,19 @@ bool Interfaces::setInterfaceOption(QString option, QString value){
return setOption(currentIface, option, 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
*/
bool Interfaces::removeAllInterfaceOptions(){
@@ -376,8 +386,19 @@ void Interfaces::addMapping(QString option){
interfaces.append(QString(MAPPING " %1").arg(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
* @return bool true if it is successfull.
@@ -386,8 +407,18 @@ bool Interfaces::setMap(QString map, QString value){
return setOption(currentMapping, map, 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.
* @return value that goes to the map
@@ -476,11 +507,8 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString
// 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;
- if(value == "")
- (*it) = "";
- else
(*it) = QString("\t%1 %2").arg(option).arg(value);
}
}
if(!found){
@@ -489,8 +517,34 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString
found = true;
}
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
* @param start the start of the 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
@@ -40,13 +40,16 @@ public:
QString getInterfaceMethod(bool &error);
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);
@@ -54,8 +57,9 @@ 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);
QString interfacesFile;
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
@@ -91,9 +91,8 @@ bool InterfaceSetupImp::saveSettings(){
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
if(profile != ""){
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
@@ -31,9 +31,10 @@
#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()));
connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
@@ -55,10 +56,11 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
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...
QString line = stream.readLine(); // line of text excluding '\n'
@@ -94,9 +96,9 @@ MainWindowImp::~MainWindowImp(){
* @param path a directory that is scaned for any plugins that can be loaded
* and attempts to load them
*/
void MainWindowImp::loadModules(QString path){
- qDebug(path.latin1());
+ //qDebug(path.latin1());
QDir d(path);
if(!d.exists())
return;
@@ -119,9 +121,9 @@ void MainWindowImp::loadModules(QString path){
* @param resolveString - function pointer to resolve
* @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 ){
qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
@@ -489,12 +491,30 @@ void MainWindowImp::removeProfile(){
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.
- //TODO
+ 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.
@@ -507,10 +527,10 @@ 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);
file.close();
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
@@ -49,8 +49,9 @@ private:
QMap<KProcess*, QString> threads;
QStringList profiles;
bool advancedUserMode;
+ QString scheme;
};
#endif
diff --git a/noncore/settings/networksettings/interfaces.cpp b/noncore/settings/networksettings/interfaces.cpp
index 0927258..9155890 100644
--- a/noncore/settings/networksettings/interfaces.cpp
+++ b/noncore/settings/networksettings/interfaces.cpp
@@ -334,10 +334,9 @@ 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.
* @return QString the options value. QString::null if error == true
@@ -346,8 +345,19 @@ bool Interfaces::setInterfaceOption(QString option, QString value){
return setOption(currentIface, option, 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
*/
bool Interfaces::removeAllInterfaceOptions(){
@@ -376,8 +386,19 @@ void Interfaces::addMapping(QString option){
interfaces.append(QString(MAPPING " %1").arg(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
* @return bool true if it is successfull.
@@ -386,8 +407,18 @@ bool Interfaces::setMap(QString map, QString value){
return setOption(currentMapping, map, 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.
* @return value that goes to the map
@@ -476,11 +507,8 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString
// 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;
- if(value == "")
- (*it) = "";
- else
(*it) = QString("\t%1 %2").arg(option).arg(value);
}
}
if(!found){
@@ -489,8 +517,34 @@ bool Interfaces::setOption(QStringList::Iterator start, QString option, QString
found = true;
}
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
* @param start the start of the stanza
diff --git a/noncore/settings/networksettings/interfaces.h b/noncore/settings/networksettings/interfaces.h
index 7cf04f0..e09ea71 100644
--- a/noncore/settings/networksettings/interfaces.h
+++ b/noncore/settings/networksettings/interfaces.h
@@ -40,13 +40,16 @@ public:
QString getInterfaceMethod(bool &error);
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);
@@ -54,8 +57,9 @@ 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);
QString interfacesFile;
diff --git a/noncore/settings/networksettings/interfacesetupimp.cpp b/noncore/settings/networksettings/interfacesetupimp.cpp
index bdbdfde..1327726 100644
--- a/noncore/settings/networksettings/interfacesetupimp.cpp
+++ b/noncore/settings/networksettings/interfacesetupimp.cpp
@@ -91,9 +91,8 @@ bool InterfaceSetupImp::saveSettings(){
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
if(profile != ""){
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 9f07f0d..01063c2 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -31,9 +31,10 @@
#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()));
connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
@@ -55,10 +56,11 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
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...
QString line = stream.readLine(); // line of text excluding '\n'
@@ -94,9 +96,9 @@ MainWindowImp::~MainWindowImp(){
* @param path a directory that is scaned for any plugins that can be loaded
* and attempts to load them
*/
void MainWindowImp::loadModules(QString path){
- qDebug(path.latin1());
+ //qDebug(path.latin1());
QDir d(path);
if(!d.exists())
return;
@@ -119,9 +121,9 @@ void MainWindowImp::loadModules(QString path){
* @param resolveString - function pointer to resolve
* @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 ){
qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
@@ -489,12 +491,30 @@ void MainWindowImp::removeProfile(){
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.
- //TODO
+ 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.
@@ -507,10 +527,10 @@ 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);
file.close();
diff --git a/noncore/settings/networksettings/mainwindowimp.h b/noncore/settings/networksettings/mainwindowimp.h
index c67c161..e5284b4 100644
--- a/noncore/settings/networksettings/mainwindowimp.h
+++ b/noncore/settings/networksettings/mainwindowimp.h
@@ -49,8 +49,9 @@ private:
QMap<KProcess*, QString> threads;
QStringList profiles;
bool advancedUserMode;
+ QString scheme;
};
#endif