summaryrefslogtreecommitdiff
path: root/noncore/settings
authorbenmeyer <benmeyer>2002-10-17 16:30:44 (UTC)
committer benmeyer <benmeyer>2002-10-17 16:30:44 (UTC)
commit18cc7321db186865629a5c4702074211e42b92fd (patch) (side-by-side diff)
treebeb15112009c1cc966115904a322b32d465e47e6 /noncore/settings
parent75f078ec92376db2c90a327bbc50d9bb5c1fb57a (diff)
downloadopie-18cc7321db186865629a5c4702074211e42b92fd.zip
opie-18cc7321db186865629a5c4702074211e42b92fd.tar.gz
opie-18cc7321db186865629a5c4702074211e42b92fd.tar.bz2
interface is now a qobject
Diffstat (limited to 'noncore/settings') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/TODO2
-rw-r--r--noncore/settings/networksettings/interface.cpp77
-rw-r--r--noncore/settings/networksettings/interface.h31
-rw-r--r--noncore/settings/networksettings/interfaceadvanced.ui11
-rw-r--r--noncore/settings/networksettings/interfaceinformationimp.cpp51
-rw-r--r--noncore/settings/networksettings/interfaceinformationimp.h6
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp43
-rw-r--r--noncore/settings/networksettings/wlan/wlanmodule.cpp4
8 files changed, 129 insertions, 96 deletions
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,3 +1,5 @@
+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
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
@@ -11,51 +11,92 @@
#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();
}
/**
@@ -74,6 +115,7 @@ bool Interface::refresh(){
dhcpServerIp = "";
leaseObtained = "";
leaseExpires = "";
+ emit(updateInterface(this));
return true;
}
@@ -138,6 +180,7 @@ bool Interface::refresh(){
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;
}
@@ -235,6 +278,8 @@ bool Interface::refresh(){
leaseExpires = datetime.toString();
dhcp = true;
+
+ emit(updateInterface(this));
return true;
}
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
@@ -2,29 +2,33 @@
#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; };
@@ -35,11 +39,12 @@ public:
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
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
@@ -11,11 +11,18 @@
<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>
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
@@ -13,16 +13,22 @@ InterfaceInformationImp::InterfaceInformationImp(QWidget *parent, const char *na
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);
@@ -40,39 +46,6 @@ void InterfaceInformationImp::updateInterface(){
}
/**
- * 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.
*/
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
@@ -13,15 +13,11 @@ public:
~InterfaceInformationImp(){};
private slots:
- void start();
- void stop();
- void refresh();
- void restart();
void advanced();
+ void updateInterface(Interface *i);
private:
Interface *interface;
- void updateInterface();
};
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
@@ -304,33 +304,34 @@ void MainWindowImp::jobDone(KProcess *process){
// 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();
@@ -347,12 +348,12 @@ void MainWindowImp::jobDone(KProcess *process){
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 *)));
}
}
}
@@ -395,7 +396,9 @@ void MainWindowImp::updateInterface(Interface *i){
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
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
@@ -24,8 +24,10 @@ QString WLANModule::getPixmapName(Interface* ){
* @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;
}