summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/networksetup/TODO3
-rw-r--r--noncore/net/networksetup/addconnectionimp.cpp5
-rw-r--r--noncore/net/networksetup/addconnectionimp.h2
-rw-r--r--noncore/net/networksetup/interfaces/interface.cpp2
-rw-r--r--noncore/net/networksetup/interfaces/interface.h19
-rw-r--r--noncore/net/networksetup/interfaces/interfaces.cpp62
-rw-r--r--noncore/net/networksetup/interfaces/interfaces.h48
-rw-r--r--noncore/net/networksetup/interfaces/interfacesetup.ui26
-rw-r--r--noncore/net/networksetup/interfaces/interfacesetupimp.h1
-rw-r--r--noncore/net/networksetup/mainwindowimp.cpp6
-rw-r--r--noncore/net/networksetup/mainwindowimp.h6
-rw-r--r--noncore/net/networksetup/module.h4
-rw-r--r--noncore/net/networksetup/wlan/infoimp.h2
-rw-r--r--noncore/net/networksetup/wlan/wextensions.cpp3
-rw-r--r--noncore/net/networksetup/wlan/wlanimp.cpp2
-rw-r--r--noncore/net/networksetup/wlan/wlanimp.h2
-rw-r--r--noncore/net/networksetup/wlan/wlanmodule.cpp4
-rw-r--r--noncore/net/networksetup/wlan/wlanmodule.h18
-rw-r--r--noncore/settings/networksettings/TODO3
-rw-r--r--noncore/settings/networksettings/addconnectionimp.cpp5
-rw-r--r--noncore/settings/networksettings/addconnectionimp.h2
-rw-r--r--noncore/settings/networksettings/interfaces/interface.cpp2
-rw-r--r--noncore/settings/networksettings/interfaces/interface.h19
-rw-r--r--noncore/settings/networksettings/interfaces/interfaces.cpp62
-rw-r--r--noncore/settings/networksettings/interfaces/interfaces.h48
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetup.ui26
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.h1
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp6
-rw-r--r--noncore/settings/networksettings/mainwindowimp.h6
-rw-r--r--noncore/settings/networksettings/module.h4
-rw-r--r--noncore/settings/networksettings/wlan/infoimp.h2
-rw-r--r--noncore/settings/networksettings/wlan/wextensions.cpp3
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp.cpp2
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp.h2
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.cpp4
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.h18
36 files changed, 238 insertions, 192 deletions
diff --git a/noncore/net/networksetup/TODO b/noncore/net/networksetup/TODO
index 8e57405..7185dbe 100644
--- a/noncore/net/networksetup/TODO
+++ b/noncore/net/networksetup/TODO
@@ -1,14 +1,13 @@
CLEAN UP
-Write a class that parses /proc and not ifconfig
-
udchcp needs to output the dhcp information so interfaces can read it
interfacesetupimp really doesn't need a interface* pointer
Possible other modules to write: ppp, ipsec, bluetooth, ipchains
PPP module needs to scan pppd.tdb to see what is currently active
WLAN - add possiblity to input text or hex without knowing "s:"
+Interface setupimp needs to use kernel calls.
diff --git a/noncore/net/networksetup/addconnectionimp.cpp b/noncore/net/networksetup/addconnectionimp.cpp
index 53db0fc..07545f7 100644
--- a/noncore/net/networksetup/addconnectionimp.cpp
+++ b/noncore/net/networksetup/addconnectionimp.cpp
@@ -12,26 +12,25 @@ AddConnectionImp::AddConnectionImp(QWidget *parent, const char *name, WFlags f):
registeredServicesList->header()->hide();
};
/**
* The current item changed, update the discription.
*/
void AddConnectionImp::changed(){
QListViewItem *item = registeredServicesList->currentItem();
- if(item){
+ if(item)
help->setText(list[item->text(0)]);
- }
}
/**
* Save a copy of newList for the discriptions and append them all to the view
* @param newList the new list of possible interfaces
*/
-void AddConnectionImp::addConnections(QMap<QString, QString> newList){
+void AddConnectionImp::addConnections(const QMap<QString, QString> &newList){
list = newList;
QMap<QString, QString>::Iterator it;
for( it = list.begin(); it != list.end(); ++it )
QListViewItem *item = new QListViewItem(registeredServicesList, it.key());
registeredServicesList->setCurrentItem(registeredServicesList->firstChild());
}
// addserviceimp.cpp
diff --git a/noncore/net/networksetup/addconnectionimp.h b/noncore/net/networksetup/addconnectionimp.h
index 643cd9a..680a502 100644
--- a/noncore/net/networksetup/addconnectionimp.h
+++ b/noncore/net/networksetup/addconnectionimp.h
@@ -8,17 +8,17 @@
class QListViewItem;
class AddConnectionImp : public AddConnection {
Q_OBJECT
public:
AddConnectionImp(QWidget *parent=0, const char *name=0, WFlags f=0);
- void addConnections(QMap<QString, QString> newList);
+ void addConnections(const QMap<QString, QString> &newList);
private slots:
void changed();
private:
QMap<QString, QString> list;
};
diff --git a/noncore/net/networksetup/interfaces/interface.cpp b/noncore/net/networksetup/interfaces/interface.cpp
index e4f405e..4129b3d 100644
--- a/noncore/net/networksetup/interfaces/interface.cpp
+++ b/noncore/net/networksetup/interfaces/interface.cpp
@@ -37,17 +37,17 @@ void Interface::setAttached(bool isAttached){
emit(updateInterface(this));
};
/**
* Set Hardware name
* @param name - the new name
* emit updateInterface
*/
-void Interface::setHardwareName(QString name){
+void Interface::setHardwareName(const QString &name){
hardwareName = name;
emit(updateInterface(this));
};
/**
* Set Module owner
* @param owner - the new owner
* emit updateInterface
diff --git a/noncore/net/networksetup/interfaces/interface.h b/noncore/net/networksetup/interfaces/interface.h
index fc064fe..989d6d8 100644
--- a/noncore/net/networksetup/interfaces/interface.h
+++ b/noncore/net/networksetup/interfaces/interface.h
@@ -10,31 +10,30 @@ class Interface : public QObject{
Q_OBJECT
signals:
void updateInterface(Interface *i);
void updateMessage(const QString &message);
public:
Interface(QObject * parent=0, const char * name= "unknown", bool status = false);
- virtual ~Interface(){};
- virtual QString getInterfaceName(){ QString n(this->name()); return n; };
+ QString getInterfaceName(){ QString n(this->name()); return n; };
- virtual bool getStatus(){ return status; };
- virtual void setStatus(bool newStatus);
+ bool getStatus(){ return status; };
+ void setStatus(bool newStatus);
- virtual bool isAttached(){ return attached; };
- virtual void setAttached(bool isAttached=false);
+ bool isAttached(){ return attached; };
+ void setAttached(bool isAttached=false);
- virtual QString getHardwareName(){ return hardwareName; };
- virtual void setHardwareName(QString name="Unknown");
+ QString getHardwareName(){ return hardwareName; };
+ void setHardwareName(const QString &name="Unknown");
- virtual Module* getModuleOwner(){ return moduleOwner; };
- virtual void setModuleOwner(Module *owner=NULL);
+ Module* getModuleOwner(){ return moduleOwner; };
+ void setModuleOwner(Module *owner=NULL);
// inet information.
QString getMacAddress(){ return macAddress; };
QString getIp(){ return ip; };
QString getSubnetMask(){ return subnetMask; };
QString getBroadcast(){ return broadcast; };
bool isDhcp(){ return dhcp; };
QString getDhcpServerIp(){ return dhcpServerIp; };
diff --git a/noncore/net/networksetup/interfaces/interfaces.cpp b/noncore/net/networksetup/interfaces/interfaces.cpp
index f1b8067..708f399 100644
--- a/noncore/net/networksetup/interfaces/interfaces.cpp
+++ b/noncore/net/networksetup/interfaces/interfaces.cpp
@@ -65,33 +65,33 @@ QStringList Interfaces::getInterfaceList(){
}
/**
* Find out if interface is in an "auto" group or not.
* Report any duplicates such as eth0 being in two differnt auto's
* @param interface interface to check to see if it is on or not.
* @return true is interface is in auto
*/
-bool Interfaces::isAuto(QString interface){
+bool Interfaces::isAuto(const QString &interface){
QStringList autoLines = interfaces.grep(QRegExp(AUTO));
QStringList awi = autoLines.grep(QRegExp(interface));
if(awi.count() > 1)
qDebug(QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1());
if(awi.count() < 1)
return false;
return true;
}
/**
* Attempt to set the auto option for interface to setAuto.
* @param interface the interface to set
* @param setAuto the value to set interface to.
* @return false if already set to setAuto.
* */
-bool Interfaces::setAuto(QString interface, bool setAuto){
+bool Interfaces::setAuto(const QString &interface, bool setAuto){
// Don't need to set it if it is already set.
if(isAuto(interface) == setAuto)
return false;
bool changed = false;
for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
if((*it).contains(AUTO)){
//We know that they are not in any group so let add to this auto.
@@ -151,32 +151,32 @@ bool Interfaces::isInterfaceSet(){
* Add a new interface of with the settings - family and method
* @param interface the name of the interface to set. All whitespace is
* removed from the interface name.
* @param family the family of this interface inet or inet, ipx or inet6
* Must of one of the families defined in interfaces.h
* @param method for the family. see interfaces man page for family methods.
* @return true if successfull.
*/
-bool Interfaces::addInterface(QString interface, QString family, QString method){
+bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){
if(acceptedFamily.contains(family)==0)
return false;
- interface = interface.simplifyWhiteSpace();
- interface = interface.replace(QRegExp(" "), "");
+ QString newInterface = interface.simplifyWhiteSpace();
+ newInterface = newInterface.replace(QRegExp(" "), "");
interfaces.append("");
- interfaces.append(QString(IFACE " %1 %2 %3").arg(interface).arg(family).arg(method));
+ interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method));
return true;
}
/**
* Copies interface with name interface to name newInterface
* @param newInterface name of the new interface.
* @return bool true if successfull
*/
-bool Interfaces::copyInterface(QString interface, QString newInterface){
+bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){
if(!setInterface(interface)) return false;
QStringList::Iterator it = currentIface;
it++;
bool error;
addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error));
if(!setInterface(newInterface)) return false;
@@ -275,48 +275,48 @@ QString Interfaces::getInterfaceMethod(bool &error){
return line;
}
/**
* Sets the interface name to newName.
* @param newName the new name of the interface. All whitespace is removed.
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceName(QString newName){
+bool Interfaces::setInterfaceName(const QString &newName){
if(currentIface == interfaces.end())
return false;
- newName = newName.simplifyWhiteSpace();
- newName = newName.replace(QRegExp(" "), "");
+ QString name = newName.simplifyWhiteSpace();
+ name = name.replace(QRegExp(" "), "");
bool returnValue = false;
- (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
+ (*currentIface) = QString("iface %1 %2 %3").arg(name).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
return !returnValue;
}
/**
* Sets the interface family to newName.
* @param newName the new name of the interface. Must be one of the families
* defined in the interfaces.h file.
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceFamily(QString newName){
+bool Interfaces::setInterfaceFamily(const QString &newName){
if(currentIface == interfaces.end())
return false;
if(acceptedFamily.contains(newName)==0)
return false;
bool returnValue = false;
(*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue));
return !returnValue;
}
/**
* Sets the interface method to newName
* @param newName the new name of the interface
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceMethod(QString newName){
+bool Interfaces::setInterfaceMethod(const QString &newName){
if(currentIface == interfaces.end())
return false;
bool returnValue = false;
(*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName);
return !returnValue;
}
/**
@@ -324,40 +324,40 @@ bool Interfaces::setInterfaceMethod(QString newName){
* calling getInterfaceOption("address") on the following stanza would
* return 192.168.1.1.
* iface eth0 static
* address 192.168.1.1
* @param option the options to get the value.
* @param error set to true if any error occurs, false otherwise.
* @return QString the options value. QString::null if error == true
*/
-QString Interfaces::getInterfaceOption(QString option, bool &error){
+QString Interfaces::getInterfaceOption(const QString &option, bool &error){
return getOption(currentIface, option, 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.
* @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::setInterfaceOption(QString option, QString value){
+bool Interfaces::setInterfaceOption(const QString &option, const 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){
+bool Interfaces::removeInterfaceOption(const QString &option, const 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(){
@@ -366,27 +366,27 @@ bool Interfaces::removeAllInterfaceOptions(){
/**
* Set the current map to interface's map. This needs to be done before you
* can call addMapping(), set/getMap(), and get/setScript().
* @param interface the name of the interface to set. All whitespace is
* removed from the interface name.
* @return bool true if it is successfull.
*/
-bool Interfaces::setMapping(QString interface){
- interface = interface.simplifyWhiteSpace();
- interface = interface.replace(QRegExp(" "), "");
- return setStanza(MAPPING, interface, currentMapping);
+bool Interfaces::setMapping(const QString &interface){
+ QString interfaceName = interface.simplifyWhiteSpace();
+ interfaceName = interfaceName.replace(QRegExp(" "), "");
+ return setStanza(MAPPING, interfaceName, currentMapping);
}
/**
* Adds a new Mapping to the interfaces file with interfaces.
* @param interface the name(s) of the interfaces to set to this mapping
*/
-void Interfaces::addMapping(QString option){
+void Interfaces::addMapping(const QString &option){
interfaces.append("");
interfaces.append(QString(MAPPING " %1").arg(option));
}
/**
* Remove the currently selected map and all of its options.
* @return bool if successfull or not.
*/
@@ -398,66 +398,68 @@ bool Interfaces::removeMapping(){
}
/**
* 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.
*/
-bool Interfaces::setMap(QString map, QString value){
+bool Interfaces::setMap(const QString &map, const 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){
+bool Interfaces::removeMap(const QString &map, const 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
*/
-QString Interfaces::getMap(QString map, bool &error){
+QString Interfaces::getMap(const QString &map, bool &error){
return getOption(currentMapping, map, error);
}
/**
* Sets a script value of the current mapping to argument.
* @param argument the script name.
* @return true if successfull.
*/
-bool Interfaces::setScript(QString argument){
+bool Interfaces::setScript(const QString &argument){
return setOption(currentMapping, "script", argument);
}
/**
* @param error true if could not retrieve the current script argument.
* @return QString the argument of the script for the current mapping.
*/
QString Interfaces::getScript(bool &error){
return getOption(currentMapping, "script", error);
}
+
+
/**
* Helper function used to parse through the QStringList and put pointers in
* the correct place.
* @param stanza The stanza (auto, iface, mapping) to look for.
* @param option string that must be in the stanza's main line.
* @param interator interator to place at location of stanza if successfull.
* @return bool true if the stanza is found.
*/
-bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){
+bool Interfaces::setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator){
bool found = false;
iterator = interfaces.end();
for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains(stanza) && line.contains(option) && line.at(0) != '#'){
uint point = line.find(option);
bool valid = true;
if(point > 0){
@@ -484,17 +486,17 @@ bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator
}
/**
* Sets a value of an 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::setOption(QStringList::Iterator start, QString option, QString value){
+bool Interfaces::setOption(const QStringList::Iterator &start, const QString &option, const 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){
if(!found && value != ""){
// Got to the end of the stanza without finding it, so append it.
@@ -519,17 +521,17 @@ 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){
+bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option, const 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;
@@ -545,17 +547,17 @@ bool Interfaces::removeOption(QStringList::Iterator start, QString option, QStri
return found;
}
/**
* Removes all options in a stanza
* @param start the start of the stanza
* @return bool true if successfull, false otherwise.
*/
-bool Interfaces::removeAllOptions(QStringList::Iterator start){
+bool Interfaces::removeAllOptions(const QStringList::Iterator &start){
if(start == interfaces.end())
return false;
QStringList::Iterator it = start;
it = ++it;
for (; it != interfaces.end(); ++it ) {
if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
break;
@@ -570,17 +572,17 @@ bool Interfaces::removeAllOptions(QStringList::Iterator start){
/**
* Gets a value of an option in a stanza
* @param start the start of the stanza
* @param option the option to use when getting the value.
* @param bool true if errors false otherwise.
* @return QString the value of option QString::null() if error == true.
*/
-QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){
+QString Interfaces::getOption(const QStringList::Iterator &start, const QString &option, bool &error){
if(start == interfaces.end()){
error = false;
return QString();
}
QString value;
bool found = false;
for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
diff --git a/noncore/net/networksetup/interfaces/interfaces.h b/noncore/net/networksetup/interfaces/interfaces.h
index e09ea71..26abb73 100644
--- a/noncore/net/networksetup/interfaces/interfaces.h
+++ b/noncore/net/networksetup/interfaces/interfaces.h
@@ -20,52 +20,52 @@
* See the interfaces man page for the syntax rules.
*/
class Interfaces {
public:
Interfaces(QString useInterfacesFile = "/etc/network/interfaces");
QStringList getInterfaceList();
- bool isAuto(QString interface);
- bool setAuto(QString interface, bool setAuto);
+ bool isAuto(const QString &interface);
+ bool setAuto(const QString &interface, bool setAuto);
bool removeInterface();
- bool addInterface(QString interface, QString family, QString method);
- bool copyInterface(QString oldInterface, QString newInterface);
+ bool addInterface(const QString &interface, const QString &family, const QString &method);
+ bool copyInterface(const QString &oldInterface, const QString &newInterface);
bool setInterface(QString interface);
- bool isInterfaceSet();
+ inline bool isInterfaceSet();
QString getInterfaceName(bool &error);
- bool setInterfaceName(QString newName);
+ bool setInterfaceName(const QString &newName);
QString getInterfaceFamily(bool &error);
- bool setInterfaceFamily(QString newName);
+ bool setInterfaceFamily(const QString &newName);
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 setInterfaceMethod(const QString &newName);
+ inline QString getInterfaceOption(const QString &option, bool &error);
+ inline bool setInterfaceOption(const QString &option, const QString &value);
+ inline bool removeInterfaceOption(const QString &option, const QString &value);
+ inline bool removeAllInterfaceOptions();
- bool setMapping(QString interface);
+ bool setMapping(const 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);
+ inline void addMapping(const QString &options);
+ inline bool setMap(const QString &map, const QString &value);
+ inline bool removeMap(const QString &map, const QString &value);
+ inline QString getMap(const QString &map, bool &error);
+ inline bool setScript(const QString &argument);
+ inline QString getScript(bool &error);
bool write();
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);
+ bool setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator);
+ bool setOption(const QStringList::Iterator &start, const QString &option, const QString &value);
+ bool removeOption(const QStringList::Iterator &start, const QString &option, const QString &value);
+ QString getOption(const QStringList::Iterator &start, const QString &option, bool &error);
+ bool removeAllOptions(const QStringList::Iterator &start);
QString interfacesFile;
QStringList interfaces;
QStringList::Iterator currentIface;
QStringList::Iterator currentMapping;
QStringList acceptedFamily;
};
diff --git a/noncore/net/networksetup/interfaces/interfacesetup.ui b/noncore/net/networksetup/interfaces/interfacesetup.ui
index ab8e413..df55d25 100644
--- a/noncore/net/networksetup/interfaces/interfacesetup.ui
+++ b/noncore/net/networksetup/interfaces/interfacesetup.ui
@@ -94,16 +94,20 @@
<name>maxValue</name>
<number>87600</number>
</property>
<property stdset="1">
<name>minValue</name>
<number>1</number>
</property>
<property stdset="1">
+ <name>lineStep</name>
+ <number>24</number>
+ </property>
+ <property stdset="1">
<name>value</name>
<number>168</number>
</property>
</widget>
</hbox>
</widget>
<widget>
<class>QGroupBox</class>
@@ -246,16 +250,38 @@
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
+<customwidgets>
+ <customwidget>
+ <class>QWidget</class>
+ <header location="local">qwidget.h</header>
+ <sizehint>
+ <width>100</width>
+ <height>100</height>
+ </sizehint>
+ <container>0</container>
+ <sizepolicy>
+ <hordata>7</hordata>
+ <verdata>7</verdata>
+ </sizepolicy>
+ <pixmap>image0</pixmap>
+ </customwidget>
+</customwidgets>
+<images>
+ <image>
+ <name>image0</name>
+ <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+ </image>
+</images>
<connections>
<connection>
<sender>dhcpCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>leaseHoursLabel</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
diff --git a/noncore/net/networksetup/interfaces/interfacesetupimp.h b/noncore/net/networksetup/interfaces/interfacesetupimp.h
index a88e190..60933aa 100644
--- a/noncore/net/networksetup/interfaces/interfacesetupimp.h
+++ b/noncore/net/networksetup/interfaces/interfacesetupimp.h
@@ -16,17 +16,16 @@ public:
public slots:
void setProfile(const QString &profile);
bool saveSettings();
private:
Interfaces *interfaces;
Interface *interface;
-
};
#include <qlayout.h>
class InterfaceSetupImpDialog : public QDialog {
Q_OBJECT
diff --git a/noncore/net/networksetup/mainwindowimp.cpp b/noncore/net/networksetup/mainwindowimp.cpp
index 48ef9b3..7b93554 100644
--- a/noncore/net/networksetup/mainwindowimp.cpp
+++ b/noncore/net/networksetup/mainwindowimp.cpp
@@ -25,17 +25,17 @@
#include <qfile.h>
#include <qtextstream.h>
#include <net/if.h>
#include <sys/ioctl.h>
#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
-MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){
+MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false), scheme(DEFAULT_SCHEME){
connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
@@ -184,17 +184,17 @@ void MainWindowImp::getAllInterfaces(){
}
}
/**
* Load all modules that are found in the path
* @param path a directory that is scaned for any plugins that can be loaded
* and attempts to load them
*/
-void MainWindowImp::loadModules(QString path){
+void MainWindowImp::loadModules(const QString &path){
//qDebug(path.latin1());
QDir d(path);
if(!d.exists())
return;
// Don't want sym links
d.setFilter( QDir::Files | QDir::NoSymLinks );
const QFileInfoList *list = d.entryInfoList();
@@ -209,17 +209,17 @@ void MainWindowImp::loadModules(QString path){
}
/**
* Attempt to load a function and resolve a function.
* @param pluginFileName - the name of the file in which to attempt to load
* @param resolveString - function pointer to resolve
* @return pointer to the function with name resolveString or NULL
*/
-Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){
+Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){
//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());
delete lib;
return NULL;
}
diff --git a/noncore/net/networksetup/mainwindowimp.h b/noncore/net/networksetup/mainwindowimp.h
index 382428c..4f09d6c 100644
--- a/noncore/net/networksetup/mainwindowimp.h
+++ b/noncore/net/networksetup/mainwindowimp.h
@@ -28,20 +28,20 @@ private slots:
void addProfile();
void removeProfile();
void changeProfile();
void updateInterface(Interface *i);
void newProfileChanged(const QString& newText);
private:
- void loadModules(QString path);
+ void loadModules(const QString &path);
- Module* loadPlugin(QString pluginFileName,
- QString resolveString = "create_plugin");
+ Module* loadPlugin(const QString &pluginFileName,
+ const QString &resolveString = "create_plugin");
// For our local list of names
QMap<QString, Interface*> interfaceNames;
QMap<Module*, QLibrary*> libraries;
QMap<Interface*, QListViewItem*> items;
QMap<QListViewItem*, Interface*> interfaceItems;
diff --git a/noncore/net/networksetup/module.h b/noncore/net/networksetup/module.h
index 92b125a..2e6272b 100644
--- a/noncore/net/networksetup/module.h
+++ b/noncore/net/networksetup/module.h
@@ -17,17 +17,17 @@ signals:
public:
Module(){};
/**
* The current profile has been changed and the module should do any
* neccesary changes also.
* @param newProfile what the profile should be changed to.
*/
- virtual void setProfile(QString newProfile) = 0;
+ virtual void setProfile(const QString &newProfile) = 0;
/**
* 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)
*/
virtual QString getPixmapName(Interface *) = 0;
@@ -65,17 +65,17 @@ public:
*/
virtual void possibleNewInterfaces(QMap<QString, QString> &list) = 0;
/**
* Attempts to create a new interface from name
* @return Interface* NULL if it was unable to be created.
* @param name the type of interface to create
*/
- virtual Interface *addNewInterface(QString name) = 0;
+ virtual Interface *addNewInterface(const QString &name) = 0;
/**
* Attempts to remove the interface, doesn't delete i
* @return bool true if successfull, false otherwise.
*/
virtual bool remove(Interface* i) = 0;
};
diff --git a/noncore/net/networksetup/wlan/infoimp.h b/noncore/net/networksetup/wlan/infoimp.h
index 5311bea..8f7f0d6 100644
--- a/noncore/net/networksetup/wlan/infoimp.h
+++ b/noncore/net/networksetup/wlan/infoimp.h
@@ -1,15 +1,15 @@
#ifndef INFOIMP_H
#define INFOIMP_H
#include "info.h"
class QTimer;
-class WExtensions;
+//class WExtensions;
class WlanInfoImp : public WlanInfo {
Q_OBJECT
public:
WlanInfoImp( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
private slots:
diff --git a/noncore/net/networksetup/wlan/wextensions.cpp b/noncore/net/networksetup/wlan/wextensions.cpp
index eb6fc42..6335ebc 100644
--- a/noncore/net/networksetup/wlan/wextensions.cpp
+++ b/noncore/net/networksetup/wlan/wextensions.cpp
@@ -11,18 +11,17 @@
#define PROCNETWIRELESS "/proc/net/wireless"
#define IW_LOWER 0
#define IW_UPPER 256
/**
* Constructor. Sets hasWirelessExtensions
*/
-WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false){
- interface = interfaceName;
+WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false), interface(interfaceName) {
fd = socket( AF_INET, SOCK_DGRAM, 0 );
if(fd == -1)
return;
const char* buffer[200];
memset( &iwr, 0, sizeof( iwr ) );
iwr.u.essid.pointer = (caddr_t) buffer;
iwr.u.essid.length = IW_ESSID_MAX_SIZE;
diff --git a/noncore/net/networksetup/wlan/wlanimp.cpp b/noncore/net/networksetup/wlan/wlanimp.cpp
index 689eae2..d4b4af9 100644
--- a/noncore/net/networksetup/wlan/wlanimp.cpp
+++ b/noncore/net/networksetup/wlan/wlanimp.cpp
@@ -39,17 +39,17 @@ WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, W
}
else
qDebug(QString("WLANImp: Can't open file: %1 for reading.").arg(wlanFile).latin1());
}
/**
* Change the profile for both wireless settings and network settings.
*/
-void WLANImp::setProfile(QString &profile){
+void WLANImp::setProfile(const QString &profile){
interfaceSetup->setProfile(profile);
parseSettingFile();
}
/**
* Parses the settings file that was read in and gets any setting from it.
*/
void WLANImp::parseSettingFile(){
diff --git a/noncore/net/networksetup/wlan/wlanimp.h b/noncore/net/networksetup/wlan/wlanimp.h
index f88e550..df599af 100644
--- a/noncore/net/networksetup/wlan/wlanimp.h
+++ b/noncore/net/networksetup/wlan/wlanimp.h
@@ -8,17 +8,17 @@ class InterfaceSetupImp;
class Interface;
class Config;
class WLANImp : public WLAN {
Q_OBJECT
public:
WLANImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0 );
- void setProfile(QString &profile);
+ void setProfile(const QString &profile);
protected:
void accept();
private:
void parseSettingFile();
void changeAndSaveSettingFile();
diff --git a/noncore/net/networksetup/wlan/wlanmodule.cpp b/noncore/net/networksetup/wlan/wlanmodule.cpp
index b14fc0a..3979e60 100644
--- a/noncore/net/networksetup/wlan/wlanmodule.cpp
+++ b/noncore/net/networksetup/wlan/wlanmodule.cpp
@@ -21,17 +21,17 @@ WLANModule::~WLANModule(){
Interface *i;
for ( i=list.first(); i != 0; i=list.next() )
delete i;
}
/**
* Change the current profile
*/
-void WLANModule::setProfile(QString newProfile){
+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)
*/
@@ -89,17 +89,17 @@ QList<Interface> WLANModule::getInterfaces(){
}
/**
* 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(QString ){
+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.
diff --git a/noncore/net/networksetup/wlan/wlanmodule.h b/noncore/net/networksetup/wlan/wlanmodule.h
index a81ccff..3a54de6 100644
--- a/noncore/net/networksetup/wlan/wlanmodule.h
+++ b/noncore/net/networksetup/wlan/wlanmodule.h
@@ -7,25 +7,25 @@ class WLANModule : Module{
signals:
void updateInterface(Interface *i);
public:
WLANModule();
~WLANModule();
- virtual void setProfile(QString newProfile);
- virtual bool isOwner(Interface *);
- virtual QWidget *configure(Interface *i);
- virtual QWidget *information(Interface *i);
- virtual QList<Interface> getInterfaces();
- virtual void possibleNewInterfaces(QMap<QString, QString> &){};
- virtual Interface *addNewInterface(QString name);
- virtual bool remove(Interface* i);
- virtual QString getPixmapName(Interface* i);
+ void setProfile(const QString &newProfile);
+ bool isOwner(Interface *);
+ QWidget *configure(Interface *i);
+ QWidget *information(Interface *i);
+ QList<Interface> getInterfaces();
+ void possibleNewInterfaces(QMap<QString, QString> &){};
+ Interface *addNewInterface(const QString &name);
+ bool remove(Interface* i);
+ QString getPixmapName(Interface* i);
private:
QList<Interface> list;
QString profile;
};
extern "C"
diff --git a/noncore/settings/networksettings/TODO b/noncore/settings/networksettings/TODO
index 8e57405..7185dbe 100644
--- a/noncore/settings/networksettings/TODO
+++ b/noncore/settings/networksettings/TODO
@@ -1,14 +1,13 @@
CLEAN UP
-Write a class that parses /proc and not ifconfig
-
udchcp needs to output the dhcp information so interfaces can read it
interfacesetupimp really doesn't need a interface* pointer
Possible other modules to write: ppp, ipsec, bluetooth, ipchains
PPP module needs to scan pppd.tdb to see what is currently active
WLAN - add possiblity to input text or hex without knowing "s:"
+Interface setupimp needs to use kernel calls.
diff --git a/noncore/settings/networksettings/addconnectionimp.cpp b/noncore/settings/networksettings/addconnectionimp.cpp
index 53db0fc..07545f7 100644
--- a/noncore/settings/networksettings/addconnectionimp.cpp
+++ b/noncore/settings/networksettings/addconnectionimp.cpp
@@ -12,26 +12,25 @@ AddConnectionImp::AddConnectionImp(QWidget *parent, const char *name, WFlags f):
registeredServicesList->header()->hide();
};
/**
* The current item changed, update the discription.
*/
void AddConnectionImp::changed(){
QListViewItem *item = registeredServicesList->currentItem();
- if(item){
+ if(item)
help->setText(list[item->text(0)]);
- }
}
/**
* Save a copy of newList for the discriptions and append them all to the view
* @param newList the new list of possible interfaces
*/
-void AddConnectionImp::addConnections(QMap<QString, QString> newList){
+void AddConnectionImp::addConnections(const QMap<QString, QString> &newList){
list = newList;
QMap<QString, QString>::Iterator it;
for( it = list.begin(); it != list.end(); ++it )
QListViewItem *item = new QListViewItem(registeredServicesList, it.key());
registeredServicesList->setCurrentItem(registeredServicesList->firstChild());
}
// addserviceimp.cpp
diff --git a/noncore/settings/networksettings/addconnectionimp.h b/noncore/settings/networksettings/addconnectionimp.h
index 643cd9a..680a502 100644
--- a/noncore/settings/networksettings/addconnectionimp.h
+++ b/noncore/settings/networksettings/addconnectionimp.h
@@ -8,17 +8,17 @@
class QListViewItem;
class AddConnectionImp : public AddConnection {
Q_OBJECT
public:
AddConnectionImp(QWidget *parent=0, const char *name=0, WFlags f=0);
- void addConnections(QMap<QString, QString> newList);
+ void addConnections(const QMap<QString, QString> &newList);
private slots:
void changed();
private:
QMap<QString, QString> list;
};
diff --git a/noncore/settings/networksettings/interfaces/interface.cpp b/noncore/settings/networksettings/interfaces/interface.cpp
index e4f405e..4129b3d 100644
--- a/noncore/settings/networksettings/interfaces/interface.cpp
+++ b/noncore/settings/networksettings/interfaces/interface.cpp
@@ -37,17 +37,17 @@ void Interface::setAttached(bool isAttached){
emit(updateInterface(this));
};
/**
* Set Hardware name
* @param name - the new name
* emit updateInterface
*/
-void Interface::setHardwareName(QString name){
+void Interface::setHardwareName(const QString &name){
hardwareName = name;
emit(updateInterface(this));
};
/**
* Set Module owner
* @param owner - the new owner
* emit updateInterface
diff --git a/noncore/settings/networksettings/interfaces/interface.h b/noncore/settings/networksettings/interfaces/interface.h
index fc064fe..989d6d8 100644
--- a/noncore/settings/networksettings/interfaces/interface.h
+++ b/noncore/settings/networksettings/interfaces/interface.h
@@ -10,31 +10,30 @@ class Interface : public QObject{
Q_OBJECT
signals:
void updateInterface(Interface *i);
void updateMessage(const QString &message);
public:
Interface(QObject * parent=0, const char * name= "unknown", bool status = false);
- virtual ~Interface(){};
- virtual QString getInterfaceName(){ QString n(this->name()); return n; };
+ QString getInterfaceName(){ QString n(this->name()); return n; };
- virtual bool getStatus(){ return status; };
- virtual void setStatus(bool newStatus);
+ bool getStatus(){ return status; };
+ void setStatus(bool newStatus);
- virtual bool isAttached(){ return attached; };
- virtual void setAttached(bool isAttached=false);
+ bool isAttached(){ return attached; };
+ void setAttached(bool isAttached=false);
- virtual QString getHardwareName(){ return hardwareName; };
- virtual void setHardwareName(QString name="Unknown");
+ QString getHardwareName(){ return hardwareName; };
+ void setHardwareName(const QString &name="Unknown");
- virtual Module* getModuleOwner(){ return moduleOwner; };
- virtual void setModuleOwner(Module *owner=NULL);
+ Module* getModuleOwner(){ return moduleOwner; };
+ void setModuleOwner(Module *owner=NULL);
// inet information.
QString getMacAddress(){ return macAddress; };
QString getIp(){ return ip; };
QString getSubnetMask(){ return subnetMask; };
QString getBroadcast(){ return broadcast; };
bool isDhcp(){ return dhcp; };
QString getDhcpServerIp(){ return dhcpServerIp; };
diff --git a/noncore/settings/networksettings/interfaces/interfaces.cpp b/noncore/settings/networksettings/interfaces/interfaces.cpp
index f1b8067..708f399 100644
--- a/noncore/settings/networksettings/interfaces/interfaces.cpp
+++ b/noncore/settings/networksettings/interfaces/interfaces.cpp
@@ -65,33 +65,33 @@ QStringList Interfaces::getInterfaceList(){
}
/**
* Find out if interface is in an "auto" group or not.
* Report any duplicates such as eth0 being in two differnt auto's
* @param interface interface to check to see if it is on or not.
* @return true is interface is in auto
*/
-bool Interfaces::isAuto(QString interface){
+bool Interfaces::isAuto(const QString &interface){
QStringList autoLines = interfaces.grep(QRegExp(AUTO));
QStringList awi = autoLines.grep(QRegExp(interface));
if(awi.count() > 1)
qDebug(QString("Interfaces: Found more then auto group with interface: %1.").arg(interface).latin1());
if(awi.count() < 1)
return false;
return true;
}
/**
* Attempt to set the auto option for interface to setAuto.
* @param interface the interface to set
* @param setAuto the value to set interface to.
* @return false if already set to setAuto.
* */
-bool Interfaces::setAuto(QString interface, bool setAuto){
+bool Interfaces::setAuto(const QString &interface, bool setAuto){
// Don't need to set it if it is already set.
if(isAuto(interface) == setAuto)
return false;
bool changed = false;
for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
if((*it).contains(AUTO)){
//We know that they are not in any group so let add to this auto.
@@ -151,32 +151,32 @@ bool Interfaces::isInterfaceSet(){
* Add a new interface of with the settings - family and method
* @param interface the name of the interface to set. All whitespace is
* removed from the interface name.
* @param family the family of this interface inet or inet, ipx or inet6
* Must of one of the families defined in interfaces.h
* @param method for the family. see interfaces man page for family methods.
* @return true if successfull.
*/
-bool Interfaces::addInterface(QString interface, QString family, QString method){
+bool Interfaces::addInterface(const QString &interface, const QString &family, const QString &method){
if(acceptedFamily.contains(family)==0)
return false;
- interface = interface.simplifyWhiteSpace();
- interface = interface.replace(QRegExp(" "), "");
+ QString newInterface = interface.simplifyWhiteSpace();
+ newInterface = newInterface.replace(QRegExp(" "), "");
interfaces.append("");
- interfaces.append(QString(IFACE " %1 %2 %3").arg(interface).arg(family).arg(method));
+ interfaces.append(QString(IFACE " %1 %2 %3").arg(newInterface).arg(family).arg(method));
return true;
}
/**
* Copies interface with name interface to name newInterface
* @param newInterface name of the new interface.
* @return bool true if successfull
*/
-bool Interfaces::copyInterface(QString interface, QString newInterface){
+bool Interfaces::copyInterface(const QString &interface, const QString &newInterface){
if(!setInterface(interface)) return false;
QStringList::Iterator it = currentIface;
it++;
bool error;
addInterface(newInterface, getInterfaceFamily(error), getInterfaceMethod(error));
if(!setInterface(newInterface)) return false;
@@ -275,48 +275,48 @@ QString Interfaces::getInterfaceMethod(bool &error){
return line;
}
/**
* Sets the interface name to newName.
* @param newName the new name of the interface. All whitespace is removed.
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceName(QString newName){
+bool Interfaces::setInterfaceName(const QString &newName){
if(currentIface == interfaces.end())
return false;
- newName = newName.simplifyWhiteSpace();
- newName = newName.replace(QRegExp(" "), "");
+ QString name = newName.simplifyWhiteSpace();
+ name = name.replace(QRegExp(" "), "");
bool returnValue = false;
- (*currentIface) = QString("iface %1 %2 %3").arg(newName).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
+ (*currentIface) = QString("iface %1 %2 %3").arg(name).arg(getInterfaceFamily(returnValue)).arg(getInterfaceMethod(returnValue));
return !returnValue;
}
/**
* Sets the interface family to newName.
* @param newName the new name of the interface. Must be one of the families
* defined in the interfaces.h file.
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceFamily(QString newName){
+bool Interfaces::setInterfaceFamily(const QString &newName){
if(currentIface == interfaces.end())
return false;
if(acceptedFamily.contains(newName)==0)
return false;
bool returnValue = false;
(*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(newName).arg(getInterfaceMethod(returnValue));
return !returnValue;
}
/**
* Sets the interface method to newName
* @param newName the new name of the interface
* @return bool true if successfull.
*/
-bool Interfaces::setInterfaceMethod(QString newName){
+bool Interfaces::setInterfaceMethod(const QString &newName){
if(currentIface == interfaces.end())
return false;
bool returnValue = false;
(*currentIface) = QString("iface %1 %2 %3").arg(getInterfaceName(returnValue)).arg(getInterfaceFamily(returnValue)).arg(newName);
return !returnValue;
}
/**
@@ -324,40 +324,40 @@ bool Interfaces::setInterfaceMethod(QString newName){
* calling getInterfaceOption("address") on the following stanza would
* return 192.168.1.1.
* iface eth0 static
* address 192.168.1.1
* @param option the options to get the value.
* @param error set to true if any error occurs, false otherwise.
* @return QString the options value. QString::null if error == true
*/
-QString Interfaces::getInterfaceOption(QString option, bool &error){
+QString Interfaces::getInterfaceOption(const QString &option, bool &error){
return getOption(currentIface, option, 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.
* @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::setInterfaceOption(QString option, QString value){
+bool Interfaces::setInterfaceOption(const QString &option, const 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){
+bool Interfaces::removeInterfaceOption(const QString &option, const 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(){
@@ -366,27 +366,27 @@ bool Interfaces::removeAllInterfaceOptions(){
/**
* Set the current map to interface's map. This needs to be done before you
* can call addMapping(), set/getMap(), and get/setScript().
* @param interface the name of the interface to set. All whitespace is
* removed from the interface name.
* @return bool true if it is successfull.
*/
-bool Interfaces::setMapping(QString interface){
- interface = interface.simplifyWhiteSpace();
- interface = interface.replace(QRegExp(" "), "");
- return setStanza(MAPPING, interface, currentMapping);
+bool Interfaces::setMapping(const QString &interface){
+ QString interfaceName = interface.simplifyWhiteSpace();
+ interfaceName = interfaceName.replace(QRegExp(" "), "");
+ return setStanza(MAPPING, interfaceName, currentMapping);
}
/**
* Adds a new Mapping to the interfaces file with interfaces.
* @param interface the name(s) of the interfaces to set to this mapping
*/
-void Interfaces::addMapping(QString option){
+void Interfaces::addMapping(const QString &option){
interfaces.append("");
interfaces.append(QString(MAPPING " %1").arg(option));
}
/**
* Remove the currently selected map and all of its options.
* @return bool if successfull or not.
*/
@@ -398,66 +398,68 @@ bool Interfaces::removeMapping(){
}
/**
* 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.
*/
-bool Interfaces::setMap(QString map, QString value){
+bool Interfaces::setMap(const QString &map, const 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){
+bool Interfaces::removeMap(const QString &map, const 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
*/
-QString Interfaces::getMap(QString map, bool &error){
+QString Interfaces::getMap(const QString &map, bool &error){
return getOption(currentMapping, map, error);
}
/**
* Sets a script value of the current mapping to argument.
* @param argument the script name.
* @return true if successfull.
*/
-bool Interfaces::setScript(QString argument){
+bool Interfaces::setScript(const QString &argument){
return setOption(currentMapping, "script", argument);
}
/**
* @param error true if could not retrieve the current script argument.
* @return QString the argument of the script for the current mapping.
*/
QString Interfaces::getScript(bool &error){
return getOption(currentMapping, "script", error);
}
+
+
/**
* Helper function used to parse through the QStringList and put pointers in
* the correct place.
* @param stanza The stanza (auto, iface, mapping) to look for.
* @param option string that must be in the stanza's main line.
* @param interator interator to place at location of stanza if successfull.
* @return bool true if the stanza is found.
*/
-bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator &iterator){
+bool Interfaces::setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator){
bool found = false;
iterator = interfaces.end();
for ( QStringList::Iterator it = interfaces.begin(); it != interfaces.end(); ++it ) {
QString line = (*it).simplifyWhiteSpace();
if(line.contains(stanza) && line.contains(option) && line.at(0) != '#'){
uint point = line.find(option);
bool valid = true;
if(point > 0){
@@ -484,17 +486,17 @@ bool Interfaces::setStanza(QString stanza, QString option, QStringList::Iterator
}
/**
* Sets a value of an 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::setOption(QStringList::Iterator start, QString option, QString value){
+bool Interfaces::setOption(const QStringList::Iterator &start, const QString &option, const 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){
if(!found && value != ""){
// Got to the end of the stanza without finding it, so append it.
@@ -519,17 +521,17 @@ 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){
+bool Interfaces::removeOption(const QStringList::Iterator &start, const QString &option, const 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;
@@ -545,17 +547,17 @@ bool Interfaces::removeOption(QStringList::Iterator start, QString option, QStri
return found;
}
/**
* Removes all options in a stanza
* @param start the start of the stanza
* @return bool true if successfull, false otherwise.
*/
-bool Interfaces::removeAllOptions(QStringList::Iterator start){
+bool Interfaces::removeAllOptions(const QStringList::Iterator &start){
if(start == interfaces.end())
return false;
QStringList::Iterator it = start;
it = ++it;
for (; it != interfaces.end(); ++it ) {
if(((*it).contains(IFACE) || (*it).contains(MAPPING) || (*it).contains(AUTO)) && it != start){
break;
@@ -570,17 +572,17 @@ bool Interfaces::removeAllOptions(QStringList::Iterator start){
/**
* Gets a value of an option in a stanza
* @param start the start of the stanza
* @param option the option to use when getting the value.
* @param bool true if errors false otherwise.
* @return QString the value of option QString::null() if error == true.
*/
-QString Interfaces::getOption(QStringList::Iterator start, QString option, bool &error){
+QString Interfaces::getOption(const QStringList::Iterator &start, const QString &option, bool &error){
if(start == interfaces.end()){
error = false;
return QString();
}
QString value;
bool found = false;
for ( QStringList::Iterator it = start; it != interfaces.end(); ++it ) {
diff --git a/noncore/settings/networksettings/interfaces/interfaces.h b/noncore/settings/networksettings/interfaces/interfaces.h
index e09ea71..26abb73 100644
--- a/noncore/settings/networksettings/interfaces/interfaces.h
+++ b/noncore/settings/networksettings/interfaces/interfaces.h
@@ -20,52 +20,52 @@
* See the interfaces man page for the syntax rules.
*/
class Interfaces {
public:
Interfaces(QString useInterfacesFile = "/etc/network/interfaces");
QStringList getInterfaceList();
- bool isAuto(QString interface);
- bool setAuto(QString interface, bool setAuto);
+ bool isAuto(const QString &interface);
+ bool setAuto(const QString &interface, bool setAuto);
bool removeInterface();
- bool addInterface(QString interface, QString family, QString method);
- bool copyInterface(QString oldInterface, QString newInterface);
+ bool addInterface(const QString &interface, const QString &family, const QString &method);
+ bool copyInterface(const QString &oldInterface, const QString &newInterface);
bool setInterface(QString interface);
- bool isInterfaceSet();
+ inline bool isInterfaceSet();
QString getInterfaceName(bool &error);
- bool setInterfaceName(QString newName);
+ bool setInterfaceName(const QString &newName);
QString getInterfaceFamily(bool &error);
- bool setInterfaceFamily(QString newName);
+ bool setInterfaceFamily(const QString &newName);
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 setInterfaceMethod(const QString &newName);
+ inline QString getInterfaceOption(const QString &option, bool &error);
+ inline bool setInterfaceOption(const QString &option, const QString &value);
+ inline bool removeInterfaceOption(const QString &option, const QString &value);
+ inline bool removeAllInterfaceOptions();
- bool setMapping(QString interface);
+ bool setMapping(const 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);
+ inline void addMapping(const QString &options);
+ inline bool setMap(const QString &map, const QString &value);
+ inline bool removeMap(const QString &map, const QString &value);
+ inline QString getMap(const QString &map, bool &error);
+ inline bool setScript(const QString &argument);
+ inline QString getScript(bool &error);
bool write();
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);
+ bool setStanza(const QString &stanza, const QString &option, QStringList::Iterator &iterator);
+ bool setOption(const QStringList::Iterator &start, const QString &option, const QString &value);
+ bool removeOption(const QStringList::Iterator &start, const QString &option, const QString &value);
+ QString getOption(const QStringList::Iterator &start, const QString &option, bool &error);
+ bool removeAllOptions(const QStringList::Iterator &start);
QString interfacesFile;
QStringList interfaces;
QStringList::Iterator currentIface;
QStringList::Iterator currentMapping;
QStringList acceptedFamily;
};
diff --git a/noncore/settings/networksettings/interfaces/interfacesetup.ui b/noncore/settings/networksettings/interfaces/interfacesetup.ui
index ab8e413..df55d25 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetup.ui
+++ b/noncore/settings/networksettings/interfaces/interfacesetup.ui
@@ -94,16 +94,20 @@
<name>maxValue</name>
<number>87600</number>
</property>
<property stdset="1">
<name>minValue</name>
<number>1</number>
</property>
<property stdset="1">
+ <name>lineStep</name>
+ <number>24</number>
+ </property>
+ <property stdset="1">
<name>value</name>
<number>168</number>
</property>
</widget>
</hbox>
</widget>
<widget>
<class>QGroupBox</class>
@@ -246,16 +250,38 @@
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</vbox>
</widget>
+<customwidgets>
+ <customwidget>
+ <class>QWidget</class>
+ <header location="local">qwidget.h</header>
+ <sizehint>
+ <width>100</width>
+ <height>100</height>
+ </sizehint>
+ <container>0</container>
+ <sizepolicy>
+ <hordata>7</hordata>
+ <verdata>7</verdata>
+ </sizepolicy>
+ <pixmap>image0</pixmap>
+ </customwidget>
+</customwidgets>
+<images>
+ <image>
+ <name>image0</name>
+ <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
+ </image>
+</images>
<connections>
<connection>
<sender>dhcpCheckBox</sender>
<signal>toggled(bool)</signal>
<receiver>leaseHoursLabel</receiver>
<slot>setEnabled(bool)</slot>
</connection>
<connection>
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.h b/noncore/settings/networksettings/interfaces/interfacesetupimp.h
index a88e190..60933aa 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetupimp.h
+++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.h
@@ -16,17 +16,16 @@ public:
public slots:
void setProfile(const QString &profile);
bool saveSettings();
private:
Interfaces *interfaces;
Interface *interface;
-
};
#include <qlayout.h>
class InterfaceSetupImpDialog : public QDialog {
Q_OBJECT
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 48ef9b3..7b93554 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -25,17 +25,17 @@
#include <qfile.h>
#include <qtextstream.h>
#include <net/if.h>
#include <sys/ioctl.h>
#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
-MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){
+MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false), scheme(DEFAULT_SCHEME){
connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
@@ -184,17 +184,17 @@ void MainWindowImp::getAllInterfaces(){
}
}
/**
* Load all modules that are found in the path
* @param path a directory that is scaned for any plugins that can be loaded
* and attempts to load them
*/
-void MainWindowImp::loadModules(QString path){
+void MainWindowImp::loadModules(const QString &path){
//qDebug(path.latin1());
QDir d(path);
if(!d.exists())
return;
// Don't want sym links
d.setFilter( QDir::Files | QDir::NoSymLinks );
const QFileInfoList *list = d.entryInfoList();
@@ -209,17 +209,17 @@ void MainWindowImp::loadModules(QString path){
}
/**
* Attempt to load a function and resolve a function.
* @param pluginFileName - the name of the file in which to attempt to load
* @param resolveString - function pointer to resolve
* @return pointer to the function with name resolveString or NULL
*/
-Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){
+Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){
//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());
delete lib;
return NULL;
}
diff --git a/noncore/settings/networksettings/mainwindowimp.h b/noncore/settings/networksettings/mainwindowimp.h
index 382428c..4f09d6c 100644
--- a/noncore/settings/networksettings/mainwindowimp.h
+++ b/noncore/settings/networksettings/mainwindowimp.h
@@ -28,20 +28,20 @@ private slots:
void addProfile();
void removeProfile();
void changeProfile();
void updateInterface(Interface *i);
void newProfileChanged(const QString& newText);
private:
- void loadModules(QString path);
+ void loadModules(const QString &path);
- Module* loadPlugin(QString pluginFileName,
- QString resolveString = "create_plugin");
+ Module* loadPlugin(const QString &pluginFileName,
+ const QString &resolveString = "create_plugin");
// For our local list of names
QMap<QString, Interface*> interfaceNames;
QMap<Module*, QLibrary*> libraries;
QMap<Interface*, QListViewItem*> items;
QMap<QListViewItem*, Interface*> interfaceItems;
diff --git a/noncore/settings/networksettings/module.h b/noncore/settings/networksettings/module.h
index 92b125a..2e6272b 100644
--- a/noncore/settings/networksettings/module.h
+++ b/noncore/settings/networksettings/module.h
@@ -17,17 +17,17 @@ signals:
public:
Module(){};
/**
* The current profile has been changed and the module should do any
* neccesary changes also.
* @param newProfile what the profile should be changed to.
*/
- virtual void setProfile(QString newProfile) = 0;
+ virtual void setProfile(const QString &newProfile) = 0;
/**
* 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)
*/
virtual QString getPixmapName(Interface *) = 0;
@@ -65,17 +65,17 @@ public:
*/
virtual void possibleNewInterfaces(QMap<QString, QString> &list) = 0;
/**
* Attempts to create a new interface from name
* @return Interface* NULL if it was unable to be created.
* @param name the type of interface to create
*/
- virtual Interface *addNewInterface(QString name) = 0;
+ virtual Interface *addNewInterface(const QString &name) = 0;
/**
* Attempts to remove the interface, doesn't delete i
* @return bool true if successfull, false otherwise.
*/
virtual bool remove(Interface* i) = 0;
};
diff --git a/noncore/settings/networksettings/wlan/infoimp.h b/noncore/settings/networksettings/wlan/infoimp.h
index 5311bea..8f7f0d6 100644
--- a/noncore/settings/networksettings/wlan/infoimp.h
+++ b/noncore/settings/networksettings/wlan/infoimp.h
@@ -1,15 +1,15 @@
#ifndef INFOIMP_H
#define INFOIMP_H
#include "info.h"
class QTimer;
-class WExtensions;
+//class WExtensions;
class WlanInfoImp : public WlanInfo {
Q_OBJECT
public:
WlanInfoImp( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
private slots:
diff --git a/noncore/settings/networksettings/wlan/wextensions.cpp b/noncore/settings/networksettings/wlan/wextensions.cpp
index eb6fc42..6335ebc 100644
--- a/noncore/settings/networksettings/wlan/wextensions.cpp
+++ b/noncore/settings/networksettings/wlan/wextensions.cpp
@@ -11,18 +11,17 @@
#define PROCNETWIRELESS "/proc/net/wireless"
#define IW_LOWER 0
#define IW_UPPER 256
/**
* Constructor. Sets hasWirelessExtensions
*/
-WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false){
- interface = interfaceName;
+WExtensions::WExtensions(QString interfaceName): hasWirelessExtensions(false), interface(interfaceName) {
fd = socket( AF_INET, SOCK_DGRAM, 0 );
if(fd == -1)
return;
const char* buffer[200];
memset( &iwr, 0, sizeof( iwr ) );
iwr.u.essid.pointer = (caddr_t) buffer;
iwr.u.essid.length = IW_ESSID_MAX_SIZE;
diff --git a/noncore/settings/networksettings/wlan/wlanimp.cpp b/noncore/settings/networksettings/wlan/wlanimp.cpp
index 689eae2..d4b4af9 100644
--- a/noncore/settings/networksettings/wlan/wlanimp.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp.cpp
@@ -39,17 +39,17 @@ WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, W
}
else
qDebug(QString("WLANImp: Can't open file: %1 for reading.").arg(wlanFile).latin1());
}
/**
* Change the profile for both wireless settings and network settings.
*/
-void WLANImp::setProfile(QString &profile){
+void WLANImp::setProfile(const QString &profile){
interfaceSetup->setProfile(profile);
parseSettingFile();
}
/**
* Parses the settings file that was read in and gets any setting from it.
*/
void WLANImp::parseSettingFile(){
diff --git a/noncore/settings/networksettings/wlan/wlanimp.h b/noncore/settings/networksettings/wlan/wlanimp.h
index f88e550..df599af 100644
--- a/noncore/settings/networksettings/wlan/wlanimp.h
+++ b/noncore/settings/networksettings/wlan/wlanimp.h
@@ -8,17 +8,17 @@ class InterfaceSetupImp;
class Interface;
class Config;
class WLANImp : public WLAN {
Q_OBJECT
public:
WLANImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = FALSE, WFlags fl = 0 );
- void setProfile(QString &profile);
+ void setProfile(const QString &profile);
protected:
void accept();
private:
void parseSettingFile();
void changeAndSaveSettingFile();
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp
index b14fc0a..3979e60 100644
--- a/noncore/settings/networksettings/wlan/wlanmodule.cpp
+++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp
@@ -21,17 +21,17 @@ WLANModule::~WLANModule(){
Interface *i;
for ( i=list.first(); i != 0; i=list.next() )
delete i;
}
/**
* Change the current profile
*/
-void WLANModule::setProfile(QString newProfile){
+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)
*/
@@ -89,17 +89,17 @@ QList<Interface> WLANModule::getInterfaces(){
}
/**
* 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(QString ){
+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.
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.h b/noncore/settings/networksettings/wlan/wlanmodule.h
index a81ccff..3a54de6 100644
--- a/noncore/settings/networksettings/wlan/wlanmodule.h
+++ b/noncore/settings/networksettings/wlan/wlanmodule.h
@@ -7,25 +7,25 @@ class WLANModule : Module{
signals:
void updateInterface(Interface *i);
public:
WLANModule();
~WLANModule();
- virtual void setProfile(QString newProfile);
- virtual bool isOwner(Interface *);
- virtual QWidget *configure(Interface *i);
- virtual QWidget *information(Interface *i);
- virtual QList<Interface> getInterfaces();
- virtual void possibleNewInterfaces(QMap<QString, QString> &){};
- virtual Interface *addNewInterface(QString name);
- virtual bool remove(Interface* i);
- virtual QString getPixmapName(Interface* i);
+ void setProfile(const QString &newProfile);
+ bool isOwner(Interface *);
+ QWidget *configure(Interface *i);
+ QWidget *information(Interface *i);
+ QList<Interface> getInterfaces();
+ void possibleNewInterfaces(QMap<QString, QString> &){};
+ Interface *addNewInterface(const QString &name);
+ bool remove(Interface* i);
+ QString getPixmapName(Interface* i);
private:
QList<Interface> list;
QString profile;
};
extern "C"