-rw-r--r-- | noncore/net/networksetup/TODO | 2 | ||||
-rw-r--r-- | noncore/net/networksetup/interface.cpp | 77 | ||||
-rw-r--r-- | noncore/net/networksetup/interface.h | 31 | ||||
-rw-r--r-- | noncore/net/networksetup/interfaceadvanced.ui | 11 | ||||
-rw-r--r-- | noncore/net/networksetup/interfaceinformationimp.cpp | 51 | ||||
-rw-r--r-- | noncore/net/networksetup/interfaceinformationimp.h | 6 | ||||
-rw-r--r-- | noncore/net/networksetup/mainwindowimp.cpp | 43 | ||||
-rw-r--r-- | noncore/net/networksetup/wlan/wlanmodule.cpp | 4 | ||||
-rw-r--r-- | noncore/settings/networksettings/TODO | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/interface.cpp | 77 | ||||
-rw-r--r-- | noncore/settings/networksettings/interface.h | 31 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaceadvanced.ui | 11 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaceinformationimp.cpp | 51 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfaceinformationimp.h | 6 | ||||
-rw-r--r-- | noncore/settings/networksettings/mainwindowimp.cpp | 43 | ||||
-rw-r--r-- | noncore/settings/networksettings/wlan/wlanmodule.cpp | 4 |
16 files changed, 258 insertions, 192 deletions
diff --git a/noncore/net/networksetup/TODO b/noncore/net/networksetup/TODO index 7386646..c8e2989 100644 --- a/noncore/net/networksetup/TODO +++ b/noncore/net/networksetup/TODO @@ -1,6 +1,8 @@ +Write a class that parses /proc and not ifconfig + [ ] Wlanmodule needs to check if an interface supports wireless extensions. [x] When you set options in wlanmodule, hit OK, it exits all of networksetup, doesnt bring you back to the main screen. [x] Wlanmodule isnt writing out wireless.opts [ ] Need a means of bringing an interface up and down (calling diff --git a/noncore/net/networksetup/interface.cpp b/noncore/net/networksetup/interface.cpp index 1f32093..1e01da4 100644 --- a/noncore/net/networksetup/interface.cpp +++ b/noncore/net/networksetup/interface.cpp @@ -8,57 +8,98 @@ #define IFCONFIG "/sbin/ifconfig" #define HDCP_INFO_DIR "/etc/dhcpc" #include <stdio.h> #include <stdlib.h> -Interface::Interface(QString name, bool newSatus): status(newSatus), attached(false), interfaceName(name), hardareName("Unknown"), moduleOwner(NULL), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ +Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), status(newSatus), attached(false), hardareName("Unknown"), moduleOwner(NULL), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ refresh(); } /** + * Set status + * @param newStatus - the new status + * emit updateInterface + */ +void Interface::setStatus(bool newStatus){ + if(status != newStatus){ + status = newStatus; + refresh(); + } +}; + +/** + * Set if attached or not (802.11 card pulled out for example) + * @param isAttached - if attached + * emit updateInterface + */ +void Interface::setAttached(bool isAttached){ + attached = isAttached; + emit(updateInterface(this)); +}; + +/** + * Set Hardware name + * @param name - the new name + * emit updateInterface + */ +void Interface::setHardwareName(QString name){ + hardareName = name; + emit(updateInterface(this)); +}; + +/** + * Set Module owner + * @param owner - the new owner + * emit updateInterface + */ +void Interface::setModuleOwner(Module *owner){ + moduleOwner = owner; + emit(updateInterface(this)); +}; + + +/** * Try to start the interface. - * @return bool true if successfull. */ -bool Interface::start(){ +void Interface::start(){ // check to see if we are already running. - if(status) - return false; + if(true == status) + return; int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(interfaceName).latin1()); + // See if it was successfull... if(ret != 0) - return false; + return; status = true; refresh(); - return true; } /** * Try to stop the interface. - * @return bool true if successfull. */ -bool Interface::stop(){ +void Interface::stop(){ // check to see if we are already stopped. - if(status == false) - return false; + if(false == status) + return; int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(interfaceName).latin1()); if(ret != 0) - return false; + return; status = true; refresh(); - return true; } + /** * Try to restart the interface. - * @return bool true if successfull. */ -bool Interface::restart(){ - return (stop() && start()); +void Interface::restart(){ + stop(); + start(); } /** * Try to refresh the information about the interface. * First call ifconfig, then check the dhcp-info file * @return bool true if successfull. @@ -71,12 +112,13 @@ bool Interface::refresh(){ subnetMask = "0.0.0.0"; broadcast = ""; dhcp = false; dhcpServerIp = ""; leaseObtained = ""; leaseExpires = ""; + emit(updateInterface(this)); return true; } QString fileName = QString("/tmp/%1_ifconfig_info").arg(interfaceName); int ret = system(QString("%1 %2 > %3").arg(IFCONFIG).arg(interfaceName).arg(fileName).latin1()); if(ret != 0){ @@ -135,12 +177,13 @@ bool Interface::refresh(){ dhcpDirectory = "/var/run"; // See if we have QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(interfaceName)); // If there is no DHCP information then exit now with no errors. if(!QFile::exists(dhcpFile)){ + emit(updateInterface(this)); return true; } file.setName(dhcpFile); if (!file.open(IO_ReadOnly)){ qDebug(QString("Interface: Can't open file: %1").arg(dhcpFile).latin1()); @@ -232,11 +275,13 @@ bool Interface::refresh(){ // Calculate the start and renew times datetime = datetime.addSecs(leaseTime); leaseExpires = datetime.toString(); dhcp = true; + + emit(updateInterface(this)); return true; } // interface.cpp diff --git a/noncore/net/networksetup/interface.h b/noncore/net/networksetup/interface.h index 1406e99..980171a 100644 --- a/noncore/net/networksetup/interface.h +++ b/noncore/net/networksetup/interface.h @@ -1,48 +1,53 @@ #ifndef INTERFACE_H #define INTERFACE_H #include <qstring.h> +#include <qobject.h> class Module; -class Interface { +class Interface : public QObject{ + Q_OBJECT +signals: + void updateInterface(Interface *i); + public: - Interface(QString name = "unknown", bool status = false); + Interface(QObject * parent=0, const char * name= "unknown", bool status = false); virtual ~Interface(){}; + virtual QString getInterfaceName(){ QString n(this->name()); return n; }; + virtual bool getStatus(){ return status; }; - virtual void setStatus(bool newSatus){ status = newSatus; refresh(); }; + virtual void setStatus(bool newStatus); virtual bool isAttached(){ return attached; }; - virtual void setAttached(bool isAttached=false){ attached = isAttached; }; - - virtual QString getInterfaceName(){ return interfaceName; }; - virtual void setInterfaceName(QString name="unknown"){ interfaceName = name; }; + virtual void setAttached(bool isAttached=false); virtual QString getHardwareName(){ return hardareName; }; - virtual void setHardwareName(QString name="Unknown"){ hardareName = name; }; + virtual void setHardwareName(QString name="Unknown"); virtual Module* getModuleOwner(){ return moduleOwner; }; - virtual void setModuleOwner(Module *owner=NULL){ moduleOwner = owner; }; + virtual 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; }; QString getLeaseObtained(){ return leaseObtained; }; QString getLeaseExpires(){ return leaseExpires; }; - + +public slots: bool refresh(); - bool start(); - bool stop(); - bool restart(); + void start(); + void stop(); + void restart(); private: // Interface information bool status; bool attached; QString interfaceName; diff --git a/noncore/net/networksetup/interfaceadvanced.ui b/noncore/net/networksetup/interfaceadvanced.ui index 7520abe..efe67b0 100644 --- a/noncore/net/networksetup/interfaceadvanced.ui +++ b/noncore/net/networksetup/interfaceadvanced.ui @@ -8,17 +8,24 @@ </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>188</width> - <height>277</height> + <width>214</width> + <height>286</height> </rect> </property> <property stdset="1"> + <name>maximumSize</name> + <size> + <width>320</width> + <height>32767</height> + </size> + </property> + <property stdset="1"> <name>caption</name> <string>Advanced Interface Information</string> </property> <grid> <property stdset="1"> <name>margin</name> diff --git a/noncore/net/networksetup/interfaceinformationimp.cpp b/noncore/net/networksetup/interfaceinformationimp.cpp index e37e0f8..59a6400 100644 --- a/noncore/net/networksetup/interfaceinformationimp.cpp +++ b/noncore/net/networksetup/interfaceinformationimp.cpp @@ -10,22 +10,28 @@ * just display's information about the interface that is passed to it. */ InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){ assert(i); interface = i; - updateInterface(); - connect(startButton, SIGNAL(clicked()), this, SLOT(start())); - connect(stopButton, SIGNAL(clicked()), this, SLOT(stop())); - connect(restartButton, SIGNAL(clicked()), this, SLOT(restart())); - connect(refreshButton, SIGNAL(clicked()), this, SLOT(refresh())); + connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); + updateInterface(interface); + connect(startButton, SIGNAL(clicked()), interface, SLOT(start())); + connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop())); + connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart())); + connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh())); connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced())); } -void InterfaceInformationImp::updateInterface(){ +/** + * Update the interface information and buttons. + * @param Intarface *i the interface to update (should be the one we already + * know about). + */ +void InterfaceInformationImp::updateInterface(Interface *i){ if(interface->getStatus()){ startButton->setEnabled(false); stopButton->setEnabled(true); restartButton->setEnabled(true); } else{ @@ -37,45 +43,12 @@ void InterfaceInformationImp::updateInterface(){ ipAddressLabel->setText(interface->getIp()); subnetMaskLabel->setText(interface->getSubnetMask()); broadcastLabel->setText(interface->getBroadcast()); } /** - * Start the interface. Update the information if successfull - */ -void InterfaceInformationImp::start(){ - if(interface->start()){ - updateInterface(); - } -} - -/** - * Stop the interface. - */ -void InterfaceInformationImp::stop(){ - if(interface->stop()){ - updateInterface(); - } -} - -/*** - * Tell the interface to refresh its information. - **/ -void InterfaceInformationImp::refresh(){ - if(interface->refresh()) - updateInterface(); -} - -void InterfaceInformationImp::restart(){ - if(interface->restart()){ - updateInterface(); - } -} - - -/** * Create the advanced widget. Fill it with the current interface's information. * Display it. */ void InterfaceInformationImp::advanced(){ InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced"); a->interfaceName->setText(interface->getInterfaceName()); diff --git a/noncore/net/networksetup/interfaceinformationimp.h b/noncore/net/networksetup/interfaceinformationimp.h index c8a478e..42213cc 100644 --- a/noncore/net/networksetup/interfaceinformationimp.h +++ b/noncore/net/networksetup/interfaceinformationimp.h @@ -10,21 +10,17 @@ Q_OBJECT public: InterfaceInformationImp(QWidget *parent=0, const char *name=0, Interface *i=0, WFlags f=0); ~InterfaceInformationImp(){}; private slots: - void start(); - void stop(); - void refresh(); - void restart(); void advanced(); + void updateInterface(Interface *i); private: Interface *interface; - void updateInterface(); }; #endif // addserviceimp.h diff --git a/noncore/net/networksetup/mainwindowimp.cpp b/noncore/net/networksetup/mainwindowimp.cpp index b46362f..117bac1 100644 --- a/noncore/net/networksetup/mainwindowimp.cpp +++ b/noncore/net/networksetup/mainwindowimp.cpp @@ -301,39 +301,40 @@ void MainWindowImp::jobDone(KProcess *process){ line = stream.readLine();
int space = line.find(" ");
if(space > 1){
// We have found an interface
QString interfaceName = line.mid(0, space);
Interface *i;
+ // We have found an interface
+ //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
// See if we already have it
if(interfaceNames.find(interfaceName) == interfaceNames.end()){
if(fileName == TEMP_ALL)
- i = new Interface(interfaceName, false);
+ i = new Interface(this, interfaceName, false);
else
- i = new Interface(interfaceName, true);
+ i = new Interface(this, interfaceName, true);
+ i->setAttached(true);
+
+ QString hardName = "Ethernet";
+ int hardwareName = line.find("Link encap:");
+ int macAddress = line.find("HWaddr");
+ if(macAddress == -1)
+ macAddress = line.length();
+ if(hardwareName != -1)
+ i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName()));
+
+ interfaceNames.insert(i->getInterfaceName(), i);
+ updateInterface(i);
+ connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
}
+ // It was an interface we already had.
else{
i = interfaceNames[interfaceName];
if(fileName != TEMP_ALL)
i->setStatus(true);
}
-
- i->setAttached(true);
- i->setInterfaceName(interfaceName);
-
- QString hardName = "Ethernet";
- int hardwareName = line.find("Link encap:");
- int macAddress = line.find("HWaddr");
- if(macAddress == -1)
- macAddress = line.length();
- if(hardwareName != -1)
- i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName()));
- // We have found an interface
- //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
- interfaceNames.insert(i->getInterfaceName(), i);
- updateInterface(i);
}
}
file.close();
QFile::remove(fileName);
if(threads.count() == 0){
@@ -344,18 +345,18 @@ void MainWindowImp::jobDone(KProcess *process){ bool found = false;
for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
if(it.key() == (*ni))
found = true;
}
if(!found){
- Interface *i = new Interface(*ni, false);
+ Interface *i = new Interface(this, *ni, false);
i->setAttached(false);
i->setHardwareName(QString("Disconnected (%1)").arg(*ni));
- i->setInterfaceName(*ni);
interfaceNames.insert(i->getInterfaceName(), i);
updateInterface(i);
+ connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
}
}
}
}
/**
@@ -392,13 +393,15 @@ void MainWindowImp::updateInterface(Interface *i){ if(i->getHardwareName().contains("Local Loopback"))
typeName = "lo";
if(i->getInterfaceName().contains("irda"))
typeName = "irda";
if(i->getInterfaceName().contains("wlan"))
typeName = "wlan";
-
+ if(i->getInterfaceName().contains("usb"))
+ typeName = "usb";
+
if(!i->isAttached())
typeName = "connect_no";
// Actually try to use the Module
if(i->getModuleOwner() != NULL)
typeName = i->getModuleOwner()->getPixmapName(i);
diff --git a/noncore/net/networksetup/wlan/wlanmodule.cpp b/noncore/net/networksetup/wlan/wlanmodule.cpp index 98d2eb6..f0394b4 100644 --- a/noncore/net/networksetup/wlan/wlanmodule.cpp +++ b/noncore/net/networksetup/wlan/wlanmodule.cpp @@ -21,14 +21,16 @@ QString WLANModule::getPixmapName(Interface* ){ /** * Check to see if the interface i is owned by this module. * @param Interface* interface to check against * @return bool true if i is owned by this module, false otherwise. */ bool WLANModule::isOwner(Interface *i){ - if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0") + if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){ + i->setHardwareName(QString("802.11b (%1)").arg(i->getInterfaceName())); return true; + } return false; } /** * Create, set tabWiget and return the WLANConfigure Module * @param tabWidget a pointer to the tab widget that this configure has. diff --git a/noncore/settings/networksettings/TODO b/noncore/settings/networksettings/TODO index 7386646..c8e2989 100644 --- a/noncore/settings/networksettings/TODO +++ b/noncore/settings/networksettings/TODO @@ -1,6 +1,8 @@ +Write a class that parses /proc and not ifconfig + [ ] Wlanmodule needs to check if an interface supports wireless extensions. [x] When you set options in wlanmodule, hit OK, it exits all of networksetup, doesnt bring you back to the main screen. [x] Wlanmodule isnt writing out wireless.opts [ ] Need a means of bringing an interface up and down (calling diff --git a/noncore/settings/networksettings/interface.cpp b/noncore/settings/networksettings/interface.cpp index 1f32093..1e01da4 100644 --- a/noncore/settings/networksettings/interface.cpp +++ b/noncore/settings/networksettings/interface.cpp @@ -8,57 +8,98 @@ #define IFCONFIG "/sbin/ifconfig" #define HDCP_INFO_DIR "/etc/dhcpc" #include <stdio.h> #include <stdlib.h> -Interface::Interface(QString name, bool newSatus): status(newSatus), attached(false), interfaceName(name), hardareName("Unknown"), moduleOwner(NULL), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ +Interface::Interface(QObject * parent, const char * name, bool newSatus): QObject(parent, name), status(newSatus), attached(false), hardareName("Unknown"), moduleOwner(NULL), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ refresh(); } /** + * Set status + * @param newStatus - the new status + * emit updateInterface + */ +void Interface::setStatus(bool newStatus){ + if(status != newStatus){ + status = newStatus; + refresh(); + } +}; + +/** + * Set if attached or not (802.11 card pulled out for example) + * @param isAttached - if attached + * emit updateInterface + */ +void Interface::setAttached(bool isAttached){ + attached = isAttached; + emit(updateInterface(this)); +}; + +/** + * Set Hardware name + * @param name - the new name + * emit updateInterface + */ +void Interface::setHardwareName(QString name){ + hardareName = name; + emit(updateInterface(this)); +}; + +/** + * Set Module owner + * @param owner - the new owner + * emit updateInterface + */ +void Interface::setModuleOwner(Module *owner){ + moduleOwner = owner; + emit(updateInterface(this)); +}; + + +/** * Try to start the interface. - * @return bool true if successfull. */ -bool Interface::start(){ +void Interface::start(){ // check to see if we are already running. - if(status) - return false; + if(true == status) + return; int ret = system(QString("%1 %2 up").arg(IFCONFIG).arg(interfaceName).latin1()); + // See if it was successfull... if(ret != 0) - return false; + return; status = true; refresh(); - return true; } /** * Try to stop the interface. - * @return bool true if successfull. */ -bool Interface::stop(){ +void Interface::stop(){ // check to see if we are already stopped. - if(status == false) - return false; + if(false == status) + return; int ret = system(QString("%1 %2 down").arg(IFCONFIG).arg(interfaceName).latin1()); if(ret != 0) - return false; + return; status = true; refresh(); - return true; } + /** * Try to restart the interface. - * @return bool true if successfull. */ -bool Interface::restart(){ - return (stop() && start()); +void Interface::restart(){ + stop(); + start(); } /** * Try to refresh the information about the interface. * First call ifconfig, then check the dhcp-info file * @return bool true if successfull. @@ -71,12 +112,13 @@ bool Interface::refresh(){ subnetMask = "0.0.0.0"; broadcast = ""; dhcp = false; dhcpServerIp = ""; leaseObtained = ""; leaseExpires = ""; + emit(updateInterface(this)); return true; } QString fileName = QString("/tmp/%1_ifconfig_info").arg(interfaceName); int ret = system(QString("%1 %2 > %3").arg(IFCONFIG).arg(interfaceName).arg(fileName).latin1()); if(ret != 0){ @@ -135,12 +177,13 @@ bool Interface::refresh(){ dhcpDirectory = "/var/run"; // See if we have QString dhcpFile(QString(dhcpDirectory+"/dhcpcd-%1.info").arg(interfaceName)); // If there is no DHCP information then exit now with no errors. if(!QFile::exists(dhcpFile)){ + emit(updateInterface(this)); return true; } file.setName(dhcpFile); if (!file.open(IO_ReadOnly)){ qDebug(QString("Interface: Can't open file: %1").arg(dhcpFile).latin1()); @@ -232,11 +275,13 @@ bool Interface::refresh(){ // Calculate the start and renew times datetime = datetime.addSecs(leaseTime); leaseExpires = datetime.toString(); dhcp = true; + + emit(updateInterface(this)); return true; } // interface.cpp diff --git a/noncore/settings/networksettings/interface.h b/noncore/settings/networksettings/interface.h index 1406e99..980171a 100644 --- a/noncore/settings/networksettings/interface.h +++ b/noncore/settings/networksettings/interface.h @@ -1,48 +1,53 @@ #ifndef INTERFACE_H #define INTERFACE_H #include <qstring.h> +#include <qobject.h> class Module; -class Interface { +class Interface : public QObject{ + Q_OBJECT +signals: + void updateInterface(Interface *i); + public: - Interface(QString name = "unknown", bool status = false); + Interface(QObject * parent=0, const char * name= "unknown", bool status = false); virtual ~Interface(){}; + virtual QString getInterfaceName(){ QString n(this->name()); return n; }; + virtual bool getStatus(){ return status; }; - virtual void setStatus(bool newSatus){ status = newSatus; refresh(); }; + virtual void setStatus(bool newStatus); virtual bool isAttached(){ return attached; }; - virtual void setAttached(bool isAttached=false){ attached = isAttached; }; - - virtual QString getInterfaceName(){ return interfaceName; }; - virtual void setInterfaceName(QString name="unknown"){ interfaceName = name; }; + virtual void setAttached(bool isAttached=false); virtual QString getHardwareName(){ return hardareName; }; - virtual void setHardwareName(QString name="Unknown"){ hardareName = name; }; + virtual void setHardwareName(QString name="Unknown"); virtual Module* getModuleOwner(){ return moduleOwner; }; - virtual void setModuleOwner(Module *owner=NULL){ moduleOwner = owner; }; + virtual 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; }; QString getLeaseObtained(){ return leaseObtained; }; QString getLeaseExpires(){ return leaseExpires; }; - + +public slots: bool refresh(); - bool start(); - bool stop(); - bool restart(); + void start(); + void stop(); + void restart(); private: // Interface information bool status; bool attached; QString interfaceName; diff --git a/noncore/settings/networksettings/interfaceadvanced.ui b/noncore/settings/networksettings/interfaceadvanced.ui index 7520abe..efe67b0 100644 --- a/noncore/settings/networksettings/interfaceadvanced.ui +++ b/noncore/settings/networksettings/interfaceadvanced.ui @@ -8,17 +8,24 @@ </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>188</width> - <height>277</height> + <width>214</width> + <height>286</height> </rect> </property> <property stdset="1"> + <name>maximumSize</name> + <size> + <width>320</width> + <height>32767</height> + </size> + </property> + <property stdset="1"> <name>caption</name> <string>Advanced Interface Information</string> </property> <grid> <property stdset="1"> <name>margin</name> diff --git a/noncore/settings/networksettings/interfaceinformationimp.cpp b/noncore/settings/networksettings/interfaceinformationimp.cpp index e37e0f8..59a6400 100644 --- a/noncore/settings/networksettings/interfaceinformationimp.cpp +++ b/noncore/settings/networksettings/interfaceinformationimp.cpp @@ -10,22 +10,28 @@ * just display's information about the interface that is passed to it. */ InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *name, Interface *i, WFlags f):InterfaceInformation(parent, name, f){ assert(i); interface = i; - updateInterface(); - connect(startButton, SIGNAL(clicked()), this, SLOT(start())); - connect(stopButton, SIGNAL(clicked()), this, SLOT(stop())); - connect(restartButton, SIGNAL(clicked()), this, SLOT(restart())); - connect(refreshButton, SIGNAL(clicked()), this, SLOT(refresh())); + connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); + updateInterface(interface); + connect(startButton, SIGNAL(clicked()), interface, SLOT(start())); + connect(stopButton, SIGNAL(clicked()), interface, SLOT(stop())); + connect(restartButton, SIGNAL(clicked()), interface, SLOT(restart())); + connect(refreshButton, SIGNAL(clicked()), interface, SLOT(refresh())); connect(advancedButton, SIGNAL(clicked()), this, SLOT(advanced())); } -void InterfaceInformationImp::updateInterface(){ +/** + * Update the interface information and buttons. + * @param Intarface *i the interface to update (should be the one we already + * know about). + */ +void InterfaceInformationImp::updateInterface(Interface *i){ if(interface->getStatus()){ startButton->setEnabled(false); stopButton->setEnabled(true); restartButton->setEnabled(true); } else{ @@ -37,45 +43,12 @@ void InterfaceInformationImp::updateInterface(){ ipAddressLabel->setText(interface->getIp()); subnetMaskLabel->setText(interface->getSubnetMask()); broadcastLabel->setText(interface->getBroadcast()); } /** - * Start the interface. Update the information if successfull - */ -void InterfaceInformationImp::start(){ - if(interface->start()){ - updateInterface(); - } -} - -/** - * Stop the interface. - */ -void InterfaceInformationImp::stop(){ - if(interface->stop()){ - updateInterface(); - } -} - -/*** - * Tell the interface to refresh its information. - **/ -void InterfaceInformationImp::refresh(){ - if(interface->refresh()) - updateInterface(); -} - -void InterfaceInformationImp::restart(){ - if(interface->restart()){ - updateInterface(); - } -} - - -/** * Create the advanced widget. Fill it with the current interface's information. * Display it. */ void InterfaceInformationImp::advanced(){ InterfaceAdvanced *a = new InterfaceAdvanced(0, "InterfaceAdvanced"); a->interfaceName->setText(interface->getInterfaceName()); diff --git a/noncore/settings/networksettings/interfaceinformationimp.h b/noncore/settings/networksettings/interfaceinformationimp.h index c8a478e..42213cc 100644 --- a/noncore/settings/networksettings/interfaceinformationimp.h +++ b/noncore/settings/networksettings/interfaceinformationimp.h @@ -10,21 +10,17 @@ Q_OBJECT public: InterfaceInformationImp(QWidget *parent=0, const char *name=0, Interface *i=0, WFlags f=0); ~InterfaceInformationImp(){}; private slots: - void start(); - void stop(); - void refresh(); - void restart(); void advanced(); + void updateInterface(Interface *i); private: Interface *interface; - void updateInterface(); }; #endif // addserviceimp.h diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp index b46362f..117bac1 100644 --- a/noncore/settings/networksettings/mainwindowimp.cpp +++ b/noncore/settings/networksettings/mainwindowimp.cpp @@ -301,39 +301,40 @@ void MainWindowImp::jobDone(KProcess *process){ line = stream.readLine();
int space = line.find(" ");
if(space > 1){
// We have found an interface
QString interfaceName = line.mid(0, space);
Interface *i;
+ // We have found an interface
+ //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
// See if we already have it
if(interfaceNames.find(interfaceName) == interfaceNames.end()){
if(fileName == TEMP_ALL)
- i = new Interface(interfaceName, false);
+ i = new Interface(this, interfaceName, false);
else
- i = new Interface(interfaceName, true);
+ i = new Interface(this, interfaceName, true);
+ i->setAttached(true);
+
+ QString hardName = "Ethernet";
+ int hardwareName = line.find("Link encap:");
+ int macAddress = line.find("HWaddr");
+ if(macAddress == -1)
+ macAddress = line.length();
+ if(hardwareName != -1)
+ i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName()));
+
+ interfaceNames.insert(i->getInterfaceName(), i);
+ updateInterface(i);
+ connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
}
+ // It was an interface we already had.
else{
i = interfaceNames[interfaceName];
if(fileName != TEMP_ALL)
i->setStatus(true);
}
-
- i->setAttached(true);
- i->setInterfaceName(interfaceName);
-
- QString hardName = "Ethernet";
- int hardwareName = line.find("Link encap:");
- int macAddress = line.find("HWaddr");
- if(macAddress == -1)
- macAddress = line.length();
- if(hardwareName != -1)
- i->setHardwareName(line.mid(hardwareName+11, macAddress-(hardwareName+11)) + QString(" (%1)").arg(i->getInterfaceName()));
- // We have found an interface
- //qDebug(QString("MainWindowImp: Found Interface: %1").arg(line).latin1());
- interfaceNames.insert(i->getInterfaceName(), i);
- updateInterface(i);
}
}
file.close();
QFile::remove(fileName);
if(threads.count() == 0){
@@ -344,18 +345,18 @@ void MainWindowImp::jobDone(KProcess *process){ bool found = false;
for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
if(it.key() == (*ni))
found = true;
}
if(!found){
- Interface *i = new Interface(*ni, false);
+ Interface *i = new Interface(this, *ni, false);
i->setAttached(false);
i->setHardwareName(QString("Disconnected (%1)").arg(*ni));
- i->setInterfaceName(*ni);
interfaceNames.insert(i->getInterfaceName(), i);
updateInterface(i);
+ connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
}
}
}
}
/**
@@ -392,13 +393,15 @@ void MainWindowImp::updateInterface(Interface *i){ if(i->getHardwareName().contains("Local Loopback"))
typeName = "lo";
if(i->getInterfaceName().contains("irda"))
typeName = "irda";
if(i->getInterfaceName().contains("wlan"))
typeName = "wlan";
-
+ if(i->getInterfaceName().contains("usb"))
+ typeName = "usb";
+
if(!i->isAttached())
typeName = "connect_no";
// Actually try to use the Module
if(i->getModuleOwner() != NULL)
typeName = i->getModuleOwner()->getPixmapName(i);
diff --git a/noncore/settings/networksettings/wlan/wlanmodule.cpp b/noncore/settings/networksettings/wlan/wlanmodule.cpp index 98d2eb6..f0394b4 100644 --- a/noncore/settings/networksettings/wlan/wlanmodule.cpp +++ b/noncore/settings/networksettings/wlan/wlanmodule.cpp @@ -21,14 +21,16 @@ QString WLANModule::getPixmapName(Interface* ){ /** * Check to see if the interface i is owned by this module. * @param Interface* interface to check against * @return bool true if i is owned by this module, false otherwise. */ bool WLANModule::isOwner(Interface *i){ - if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0") + if(i->getInterfaceName() == "eth0" || i->getInterfaceName() == "wlan0"){ + i->setHardwareName(QString("802.11b (%1)").arg(i->getInterfaceName())); return true; + } return false; } /** * Create, set tabWiget and return the WLANConfigure Module * @param tabWidget a pointer to the tab widget that this configure has. |