-rw-r--r-- | noncore/net/networksetup/interface.cpp | 2 | ||||
-rw-r--r-- | noncore/net/networksetup/interface.h | 7 | ||||
-rw-r--r-- | noncore/net/networksetup/interfacesetup.ui | 258 | ||||
-rw-r--r-- | noncore/net/networksetup/mainwindow.ui | 74 | ||||
-rw-r--r-- | noncore/net/networksetup/mainwindowimp.cpp | 59 | ||||
-rw-r--r-- | noncore/net/networksetup/mainwindowimp.h | 1 | ||||
-rw-r--r-- | noncore/net/networksetup/module.h | 7 | ||||
-rw-r--r-- | noncore/net/networksetup/networksetup.pro | 4 | ||||
-rw-r--r-- | noncore/settings/networksettings/interface.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/networksettings/interface.h | 7 | ||||
-rw-r--r-- | noncore/settings/networksettings/interfacesetup.ui | 258 | ||||
-rw-r--r-- | noncore/settings/networksettings/mainwindow.ui | 74 | ||||
-rw-r--r-- | noncore/settings/networksettings/mainwindowimp.cpp | 59 | ||||
-rw-r--r-- | noncore/settings/networksettings/mainwindowimp.h | 1 | ||||
-rw-r--r-- | noncore/settings/networksettings/module.h | 7 | ||||
-rw-r--r-- | noncore/settings/networksettings/networksetup.pro | 4 |
16 files changed, 530 insertions, 294 deletions
diff --git a/noncore/net/networksetup/interface.cpp b/noncore/net/networksetup/interface.cpp index f6eed00..5b21364 100644 --- a/noncore/net/networksetup/interface.cpp +++ b/noncore/net/networksetup/interface.cpp @@ -5,17 +5,17 @@ #include <qtextstream.h> #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("Default"), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ +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){ refresh(); } /** * Try to start the interface. * @return bool true if successfull. */ bool Interface::start(){ diff --git a/noncore/net/networksetup/interface.h b/noncore/net/networksetup/interface.h index 1ad71eb..5dc95a4 100644 --- a/noncore/net/networksetup/interface.h +++ b/noncore/net/networksetup/interface.h @@ -1,13 +1,14 @@ #ifndef INTERFACE_H #define INTERFACE_H #include <qstring.h> +class Module; class Interface { public: Interface(QString name = "unknown", bool status = false); virtual ~Interface(){}; virtual bool getStatus(){ return status; }; virtual void setStatus(bool newSatus){ status = newSatus; refresh(); }; @@ -16,18 +17,18 @@ public: virtual void setAttached(bool isAttached=false){ attached = isAttached; }; virtual QString getInterfaceName(){ return interfaceName; }; virtual void setInterfaceName(QString name="unknown"){ interfaceName = name; }; virtual QString getHardwareName(){ return hardareName; }; virtual void setHardwareName(QString name="Unknown"){ hardareName = name; }; - virtual QString getModuleOwner(){ return moduleOwner; }; - virtual void setModuleOwner(QString owner="Default"){ moduleOwner = owner; }; + virtual Module* getModuleOwner(){ return moduleOwner; }; + virtual void setModuleOwner(Module *owner=NULL){ moduleOwner = owner; }; // 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; }; @@ -40,17 +41,17 @@ public: bool restart(); private: // Interface information bool status; bool attached; QString interfaceName; QString hardareName; - QString moduleOwner; + Module *moduleOwner; // Network information QString macAddress; QString ip; QString broadcast; QString subnetMask; bool dhcp; QString dhcpServerIp; diff --git a/noncore/net/networksetup/interfacesetup.ui b/noncore/net/networksetup/interfacesetup.ui index ff9810e..d367608 100644 --- a/noncore/net/networksetup/interfacesetup.ui +++ b/noncore/net/networksetup/interfacesetup.ui @@ -6,160 +6,191 @@ <name>name</name> <cstring>InterfaceSetup</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>177</width> - <height>320</height> + <width>271</width> + <height>280</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Interface Configuration</string> </property> - <grid> + <vbox> <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget row="1" column="0" rowspan="1" colspan="2" > - <class>Line</class> - <property stdset="1"> - <name>name</name> - <cstring>Line1</cstring> - </property> - <property stdset="1"> - <name>orientation</name> - <enum>Horizontal</enum> - </property> - </widget> - <widget row="0" column="0" rowspan="1" colspan="2" > + <widget> <class>QCheckBox</class> <property stdset="1"> <name>name</name> <cstring>autoStart</cstring> </property> <property stdset="1"> <name>text</name> <string>Automaticly bring up</string> </property> </widget> - <widget row="2" column="1" > - <class>QComboBox</class> - <item> - <property> - <name>text</name> - <string>All</string> - </property> - </item> + <widget> + <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>profileCombo</cstring> - </property> - </widget> - <widget row="4" column="0" > - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>leaseHoursLabel</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Requested Lease</string> - </property> - </widget> - <widget row="3" column="0" rowspan="1" colspan="2" > - <class>QCheckBox</class> - <property stdset="1"> - <name>name</name> - <cstring>dhcpCheckBox</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>DHCP</string> - </property> - <property stdset="1"> - <name>checked</name> - <bool>true</bool> - </property> - </widget> - <widget row="2" column="0" > - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel1</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Profile:</string> + <cstring>Layout8</cstring> </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Profile</string> + </property> + </widget> + <widget> + <class>QComboBox</class> + <item> + <property> + <name>text</name> + <string>All</string> + </property> + </item> + <property stdset="1"> + <name>name</name> + <cstring>profileCombo</cstring> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer20</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> </widget> - <widget row="4" column="1" > - <class>QSpinBox</class> + <widget> + <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>leaseTime</cstring> - </property> - <property stdset="1"> - <name>suffix</name> - <string> hours</string> - </property> - <property stdset="1"> - <name>maxValue</name> - <number>336</number> - </property> - <property stdset="1"> - <name>minValue</name> - <number>1</number> - </property> - <property stdset="1"> - <name>value</name> - <number>24</number> + <cstring>Layout9</cstring> </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>dhcpCheckBox</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>DHCP</string> + </property> + <property stdset="1"> + <name>checked</name> + <bool>true</bool> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>leaseHoursLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Requested Lease</string> + </property> + </widget> + <widget> + <class>QSpinBox</class> + <property stdset="1"> + <name>name</name> + <cstring>leaseTime</cstring> + </property> + <property stdset="1"> + <name>suffix</name> + <string> hours</string> + </property> + <property stdset="1"> + <name>maxValue</name> + <number>336</number> + </property> + <property stdset="1"> + <name>minValue</name> + <number>1</number> + </property> + <property stdset="1"> + <name>value</name> + <number>24</number> + </property> + </widget> + </hbox> </widget> - <spacer row="6" column="1" > - <property> - <name>name</name> - <cstring>Spacer9</cstring> - </property> - <property stdset="1"> - <name>orientation</name> - <enum>Vertical</enum> - </property> - <property stdset="1"> - <name>sizeType</name> - <enum>Expanding</enum> - </property> - <property> - <name>sizeHint</name> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - <widget row="5" column="0" rowspan="1" colspan="2" > + <widget> <class>QGroupBox</class> <property stdset="1"> <name>name</name> <cstring>staticGroupBox</cstring> </property> <property stdset="1"> <name>enabled</name> <bool>false</bool> </property> <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Sunken</enum> + </property> + <property stdset="1"> <name>title</name> <string>Static Ip Configuration</string> </property> <grid> <property stdset="1"> <name>margin</name> <number>11</number> </property> @@ -254,17 +285,38 @@ </property> <property stdset="1"> <name>text</name> <string>Second DNS</string> </property> </widget> </grid> </widget> - </grid> + <spacer> + <property> + <name>name</name> + <cstring>Spacer9</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> </widget> <connections> <connection> <sender>dhcpCheckBox</sender> <signal>toggled(bool)</signal> <receiver>leaseHoursLabel</receiver> <slot>setEnabled(bool)</slot> </connection> diff --git a/noncore/net/networksetup/mainwindow.ui b/noncore/net/networksetup/mainwindow.ui index c1fa101..a3f7bb1 100644 --- a/noncore/net/networksetup/mainwindow.ui +++ b/noncore/net/networksetup/mainwindow.ui @@ -6,17 +6,17 @@ <name>name</name> <cstring>MainWindow</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>218</width> + <width>217</width> <height>289</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Network Setup</string> </property> <vbox> @@ -189,28 +189,39 @@ <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget row="0" column="0" rowspan="1" colspan="2" > + <widget row="1" column="0" rowspan="1" colspan="3" > + <class>Line</class> + <property stdset="1"> + <name>name</name> + <cstring>Line1</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + </widget> + <widget row="0" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel1</cstring> </property> <property stdset="1"> <name>text</name> <string>Current Profile</string> </property> </widget> - <widget row="0" column="2" > + <widget row="0" column="1" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>currentProfileLabel</cstring> </property> <property stdset="1"> <name>frameShape</name> <enum>Panel</enum> @@ -219,28 +230,38 @@ <name>frameShadow</name> <enum>Sunken</enum> </property> <property stdset="1"> <name>text</name> <string>All</string> </property> </widget> - <widget row="1" column="0" > - <class>QLabel</class> - <property stdset="1"> + <spacer row="0" column="2" > + <property> <name>name</name> - <cstring>TextLabel1_2</cstring> + <cstring>Spacer2</cstring> </property> <property stdset="1"> - <name>text</name> - <string>Profiles</string> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> </property> - </widget> - <spacer row="5" column="2" > + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <spacer row="6" column="2" > <property> <name>name</name> <cstring>Spacer16</cstring> </property> <property stdset="1"> <name>orientation</name> <enum>Vertical</enum> </property> @@ -251,56 +272,67 @@ <property> <name>sizeHint</name> <size> <width>20</width> <height>20</height> </size> </property> </spacer> - <widget row="2" column="0" rowspan="3" colspan="1" > - <class>QListBox</class> - <property stdset="1"> - <name>name</name> - <cstring>profilesList</cstring> - </property> - </widget> - <widget row="4" column="1" rowspan="1" colspan="2" > + <widget row="5" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>PushButton7</cstring> </property> <property stdset="1"> <name>text</name> <string>&Set Current</string> </property> </widget> - <widget row="3" column="1" rowspan="1" colspan="2" > + <widget row="4" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>removeProfileButton</cstring> </property> <property stdset="1"> <name>text</name> <string>&Remove</string> </property> </widget> - <widget row="2" column="1" rowspan="1" colspan="2" > + <widget row="3" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>newProfileButton</cstring> </property> <property stdset="1"> <name>text</name> <string>&New</string> </property> </widget> + <widget row="2" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Profiles</string> + </property> + </widget> + <widget row="3" column="0" rowspan="3" colspan="2" > + <class>QListBox</class> + <property stdset="1"> + <name>name</name> + <cstring>profilesList</cstring> + </property> + </widget> </grid> </widget> </widget> </vbox> </widget> <customwidgets> <customwidget> <class>QWidget</class> diff --git a/noncore/net/networksetup/mainwindowimp.cpp b/noncore/net/networksetup/mainwindowimp.cpp index 0f48a4b..89dac6f 100644 --- a/noncore/net/networksetup/mainwindowimp.cpp +++ b/noncore/net/networksetup/mainwindowimp.cpp @@ -146,17 +146,17 @@ void MainWindowImp::addClicked(){ */
void MainWindowImp::removeClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL) {
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if((interfaceItems[item])->getModuleOwner() == NULL){
QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok");
}
else{
// Try to remove.
}
}
@@ -166,48 +166,75 @@ void MainWindowImp::removeClicked(){ */
void MainWindowImp::configureClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL){
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if((interfaceItems[item])->getModuleOwner() == NULL){
InterfaceSetupImp *conf = new InterfaceSetupImp(0, "InterfaceConfiguration", interfaceItems[item]);
conf->showMaximized();
conf->show();
}
else{
- InterfaceSetupImp *conf = new InterfaceSetupImp(this, "InterfaceConfiguration");
- conf->show();
+ QTabWidget *t = NULL;
+ QWidget *conf = (interfaceItems[item])->getModuleOwner()->configure(&t);
+ if(conf != NULL){
+ qDebug("Conf found");
+ if(t != NULL){
+ qDebug("Adding Interface");
+ InterfaceSetupImp *i = new InterfaceSetupImp(t, "TCPIPInformation", interfaceItems[item], true);
+ t->insertTab(i, "TCP/IP");
+ }
+ conf->showMaximized();
+ conf->show();
+ }
+ else{
+ InterfaceSetupImp *i = new InterfaceSetupImp(0, "TCPIPInformation", interfaceItems[item], true);
+ i->showMaximized();
+ i->show();
+ }
}
}
/**
* Pull up the information about the selected interface
* Report an error
*/
void MainWindowImp::informationClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL){
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if( (interfaceItems[item])->getModuleOwner() == NULL){
InterfaceInformationImp *i = new InterfaceInformationImp(0, "InterfaceInformationImp", interfaceItems[item]);
i->showMaximized();
i->show();
}
else{
- QTabWidget *t = new QTabWidget(this, "InterfaceInformationTAB");
- InterfaceInformationImp *i = new InterfaceInformationImp(t, "TCPIPInformation", interfaceItems[item], true);
- t->insertTab(i, "TCP/IP");
- t->show();
+ QTabWidget *t = NULL;
+ QWidget *conf = (interfaceItems[item])->getModuleOwner()->information(&t);
+ if(conf != NULL){
+ if(t){
+ qDebug("Adding Interface");
+ InterfaceInformationImp *i = new InterfaceInformationImp(t, "TCPIPInformation", interfaceItems[item], true);
+ t->insertTab(i, "TCP/IP");
+ }
+ conf->showMaximized();
+ conf->show();
+ }
+ else{
+ InterfaceInformationImp *i = new InterfaceInformationImp(0, "TCPIPInformation", interfaceItems[item], true);
+ i->showMaximized();
+ i->show();
+ }
}
}
/**
* Aquire the list of active interfaces from ifconfig
* Call ifconfig and ifconfig -a
*/
void MainWindowImp::getInterfaceList(){
@@ -281,20 +308,22 @@ void MainWindowImp::jobDone(KProcess *process){ void MainWindowImp::updateInterface(Interface *i){
QListViewItem *item = NULL;
// See if we already have it
if(items.find(i) == items.end()){
item = new QListViewItem(serviceList, "", "", "");
// See if you can't find a module owner for this interface
- //EmployeeMap::Iterator it;
- //for( it = map.begin(); it != map.end(); ++it )
- // printf( "%s, %s earns %d\n", it.key().latin1(), it.data().name().latin1(), it.data().salary() );
-
+ QMap<Module*, QLibrary*>::Iterator it;
+ for( it = libraries.begin(); it != libraries.end(); ++it ){
+ if(it.key()->isOwner(i))
+ i->setModuleOwner(it.key());
+ }
+
items.insert(i, item);
interfaceItems.insert(item, i);
}
else
item = items[i];
QString statusImage = "down";
if(i->getStatus())
@@ -304,16 +333,20 @@ void MainWindowImp::updateInterface(Interface *i){ QString typeName = "lan";
if(i->getHardwareName().contains("Local Loopback"))
typeName = "lo";
if(i->getInterfaceName().contains("irda"))
typeName = "irda";
if(i->getInterfaceName().contains("wlan"))
typeName = "wlan";
+ // Actually try to use the Module
+ if(i->getModuleOwner() != NULL){
+ typeName = i->getModuleOwner()->getPixmapName(i);
+ }
QPixmap type = (Resource::loadPixmap(typeName));
item->setPixmap(1, type);
item->setText(2, i->getHardwareName());
}
/**
diff --git a/noncore/net/networksetup/mainwindowimp.h b/noncore/net/networksetup/mainwindowimp.h index 8e300bf..19ebaf2 100644 --- a/noncore/net/networksetup/mainwindowimp.h +++ b/noncore/net/networksetup/mainwindowimp.h @@ -37,17 +37,16 @@ private: Module* loadPlugin(QString pluginFileName,
QString resolveString = "create_plugin");
// For our local list of names
QMap<QString, Interface*> interfaceNames;
QMap<Module*, QLibrary*> libraries;
- QMap<Interface*, Module*> modules;
QMap<Interface*, QListViewItem*> items;
QMap<QListViewItem*, Interface*> interfaceItems;
QMap<KProcess*, QString> threads;
QStringList profiles;
};
diff --git a/noncore/net/networksetup/module.h b/noncore/net/networksetup/module.h index 13fd523..c1e9488 100644 --- a/noncore/net/networksetup/module.h +++ b/noncore/net/networksetup/module.h @@ -2,32 +2,33 @@ #define NETCONF_MODULE_H #include <qobject.h> #include <qlist.h> #include <qmap.h> #include "interface.h" class QWidget; +class QTabWidget; class Module : QObject{ signals: void updateInterface(Interface *i); public: Module(){}; virtual bool isOwner(Interface *){ return false; }; - virtual QWidget *configure(){ return NULL; } ; - virtual QWidget *information(){ return NULL; }; + virtual QWidget *configure(QTabWidget **tabWidget){ return NULL; } ; + virtual QWidget *information(QTabWidget **tabWidget){ return NULL; }; virtual QList<Interface> getInterfaces() = 0; virtual QMap<QString, QString> possibleNewInterfaces() = 0; virtual Interface *addNewInterface(QString name) = 0; virtual bool remove(Interface* i) = 0; - + virtual QString getPixmapName(Interface* i) = 0; }; #endif // module.h diff --git a/noncore/net/networksetup/networksetup.pro b/noncore/net/networksetup/networksetup.pro index a01b050..0d48790 100644 --- a/noncore/net/networksetup/networksetup.pro +++ b/noncore/net/networksetup/networksetup.pro @@ -1,10 +1,10 @@ TEMPLATE = app -CONFIG = qt warn_on debug -#CONFIG = qt warn_on release +#CONFIG = qt warn_on debug +CONFIG = qt warn_on release HEADERS = mainwindowimp.h addserviceimp.h interface.h interfaceinformationimp.h interfacesetupimp.h interfaces.h defaultmodule.h kprocctrl.h module.h kprocess.h SOURCES = main.cpp mainwindowimp.cpp addserviceimp.cpp interface.cpp interfaceinformationimp.cpp interfacesetupimp.cpp kprocctrl.cpp kprocess.cpp interfaces.cpp #INCLUDEPATH += $(QPEDIR)/include #DEPENDPATH += $(QPEDIR)/include LIBS += -lqpe INTERFACES = mainwindow.ui addservice.ui interfaceinformation.ui interfaceadvanced.ui interfacesetup.ui TARGET = networksetup diff --git a/noncore/settings/networksettings/interface.cpp b/noncore/settings/networksettings/interface.cpp index f6eed00..5b21364 100644 --- a/noncore/settings/networksettings/interface.cpp +++ b/noncore/settings/networksettings/interface.cpp @@ -5,17 +5,17 @@ #include <qtextstream.h> #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("Default"), macAddress(""), ip("0.0.0.0"), broadcast(""), subnetMask("0.0.0.0"), dhcp(false){ +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){ refresh(); } /** * Try to start the interface. * @return bool true if successfull. */ bool Interface::start(){ diff --git a/noncore/settings/networksettings/interface.h b/noncore/settings/networksettings/interface.h index 1ad71eb..5dc95a4 100644 --- a/noncore/settings/networksettings/interface.h +++ b/noncore/settings/networksettings/interface.h @@ -1,13 +1,14 @@ #ifndef INTERFACE_H #define INTERFACE_H #include <qstring.h> +class Module; class Interface { public: Interface(QString name = "unknown", bool status = false); virtual ~Interface(){}; virtual bool getStatus(){ return status; }; virtual void setStatus(bool newSatus){ status = newSatus; refresh(); }; @@ -16,18 +17,18 @@ public: virtual void setAttached(bool isAttached=false){ attached = isAttached; }; virtual QString getInterfaceName(){ return interfaceName; }; virtual void setInterfaceName(QString name="unknown"){ interfaceName = name; }; virtual QString getHardwareName(){ return hardareName; }; virtual void setHardwareName(QString name="Unknown"){ hardareName = name; }; - virtual QString getModuleOwner(){ return moduleOwner; }; - virtual void setModuleOwner(QString owner="Default"){ moduleOwner = owner; }; + virtual Module* getModuleOwner(){ return moduleOwner; }; + virtual void setModuleOwner(Module *owner=NULL){ moduleOwner = owner; }; // 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; }; @@ -40,17 +41,17 @@ public: bool restart(); private: // Interface information bool status; bool attached; QString interfaceName; QString hardareName; - QString moduleOwner; + Module *moduleOwner; // Network information QString macAddress; QString ip; QString broadcast; QString subnetMask; bool dhcp; QString dhcpServerIp; diff --git a/noncore/settings/networksettings/interfacesetup.ui b/noncore/settings/networksettings/interfacesetup.ui index ff9810e..d367608 100644 --- a/noncore/settings/networksettings/interfacesetup.ui +++ b/noncore/settings/networksettings/interfacesetup.ui @@ -6,160 +6,191 @@ <name>name</name> <cstring>InterfaceSetup</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>177</width> - <height>320</height> + <width>271</width> + <height>280</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Interface Configuration</string> </property> - <grid> + <vbox> <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget row="1" column="0" rowspan="1" colspan="2" > - <class>Line</class> - <property stdset="1"> - <name>name</name> - <cstring>Line1</cstring> - </property> - <property stdset="1"> - <name>orientation</name> - <enum>Horizontal</enum> - </property> - </widget> - <widget row="0" column="0" rowspan="1" colspan="2" > + <widget> <class>QCheckBox</class> <property stdset="1"> <name>name</name> <cstring>autoStart</cstring> </property> <property stdset="1"> <name>text</name> <string>Automaticly bring up</string> </property> </widget> - <widget row="2" column="1" > - <class>QComboBox</class> - <item> - <property> - <name>text</name> - <string>All</string> - </property> - </item> + <widget> + <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>profileCombo</cstring> - </property> - </widget> - <widget row="4" column="0" > - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>leaseHoursLabel</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Requested Lease</string> - </property> - </widget> - <widget row="3" column="0" rowspan="1" colspan="2" > - <class>QCheckBox</class> - <property stdset="1"> - <name>name</name> - <cstring>dhcpCheckBox</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>DHCP</string> - </property> - <property stdset="1"> - <name>checked</name> - <bool>true</bool> - </property> - </widget> - <widget row="2" column="0" > - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel1</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Profile:</string> + <cstring>Layout8</cstring> </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Profile</string> + </property> + </widget> + <widget> + <class>QComboBox</class> + <item> + <property> + <name>text</name> + <string>All</string> + </property> + </item> + <property stdset="1"> + <name>name</name> + <cstring>profileCombo</cstring> + </property> + </widget> + <spacer> + <property> + <name>name</name> + <cstring>Spacer20</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </hbox> </widget> - <widget row="4" column="1" > - <class>QSpinBox</class> + <widget> + <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> - <cstring>leaseTime</cstring> - </property> - <property stdset="1"> - <name>suffix</name> - <string> hours</string> - </property> - <property stdset="1"> - <name>maxValue</name> - <number>336</number> - </property> - <property stdset="1"> - <name>minValue</name> - <number>1</number> - </property> - <property stdset="1"> - <name>value</name> - <number>24</number> + <cstring>Layout9</cstring> </property> + <hbox> + <property stdset="1"> + <name>margin</name> + <number>0</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>6</number> + </property> + <widget> + <class>QCheckBox</class> + <property stdset="1"> + <name>name</name> + <cstring>dhcpCheckBox</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>DHCP</string> + </property> + <property stdset="1"> + <name>checked</name> + <bool>true</bool> + </property> + </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>leaseHoursLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Requested Lease</string> + </property> + </widget> + <widget> + <class>QSpinBox</class> + <property stdset="1"> + <name>name</name> + <cstring>leaseTime</cstring> + </property> + <property stdset="1"> + <name>suffix</name> + <string> hours</string> + </property> + <property stdset="1"> + <name>maxValue</name> + <number>336</number> + </property> + <property stdset="1"> + <name>minValue</name> + <number>1</number> + </property> + <property stdset="1"> + <name>value</name> + <number>24</number> + </property> + </widget> + </hbox> </widget> - <spacer row="6" column="1" > - <property> - <name>name</name> - <cstring>Spacer9</cstring> - </property> - <property stdset="1"> - <name>orientation</name> - <enum>Vertical</enum> - </property> - <property stdset="1"> - <name>sizeType</name> - <enum>Expanding</enum> - </property> - <property> - <name>sizeHint</name> - <size> - <width>20</width> - <height>20</height> - </size> - </property> - </spacer> - <widget row="5" column="0" rowspan="1" colspan="2" > + <widget> <class>QGroupBox</class> <property stdset="1"> <name>name</name> <cstring>staticGroupBox</cstring> </property> <property stdset="1"> <name>enabled</name> <bool>false</bool> </property> <property stdset="1"> + <name>frameShape</name> + <enum>Box</enum> + </property> + <property stdset="1"> + <name>frameShadow</name> + <enum>Sunken</enum> + </property> + <property stdset="1"> <name>title</name> <string>Static Ip Configuration</string> </property> <grid> <property stdset="1"> <name>margin</name> <number>11</number> </property> @@ -254,17 +285,38 @@ </property> <property stdset="1"> <name>text</name> <string>Second DNS</string> </property> </widget> </grid> </widget> - </grid> + <spacer> + <property> + <name>name</name> + <cstring>Spacer9</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Vertical</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </vbox> </widget> <connections> <connection> <sender>dhcpCheckBox</sender> <signal>toggled(bool)</signal> <receiver>leaseHoursLabel</receiver> <slot>setEnabled(bool)</slot> </connection> diff --git a/noncore/settings/networksettings/mainwindow.ui b/noncore/settings/networksettings/mainwindow.ui index c1fa101..a3f7bb1 100644 --- a/noncore/settings/networksettings/mainwindow.ui +++ b/noncore/settings/networksettings/mainwindow.ui @@ -6,17 +6,17 @@ <name>name</name> <cstring>MainWindow</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>218</width> + <width>217</width> <height>289</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Network Setup</string> </property> <vbox> @@ -189,28 +189,39 @@ <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget row="0" column="0" rowspan="1" colspan="2" > + <widget row="1" column="0" rowspan="1" colspan="3" > + <class>Line</class> + <property stdset="1"> + <name>name</name> + <cstring>Line1</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + </widget> + <widget row="0" column="0" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>TextLabel1</cstring> </property> <property stdset="1"> <name>text</name> <string>Current Profile</string> </property> </widget> - <widget row="0" column="2" > + <widget row="0" column="1" > <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>currentProfileLabel</cstring> </property> <property stdset="1"> <name>frameShape</name> <enum>Panel</enum> @@ -219,28 +230,38 @@ <name>frameShadow</name> <enum>Sunken</enum> </property> <property stdset="1"> <name>text</name> <string>All</string> </property> </widget> - <widget row="1" column="0" > - <class>QLabel</class> - <property stdset="1"> + <spacer row="0" column="2" > + <property> <name>name</name> - <cstring>TextLabel1_2</cstring> + <cstring>Spacer2</cstring> </property> <property stdset="1"> - <name>text</name> - <string>Profiles</string> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> </property> - </widget> - <spacer row="5" column="2" > + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <spacer row="6" column="2" > <property> <name>name</name> <cstring>Spacer16</cstring> </property> <property stdset="1"> <name>orientation</name> <enum>Vertical</enum> </property> @@ -251,56 +272,67 @@ <property> <name>sizeHint</name> <size> <width>20</width> <height>20</height> </size> </property> </spacer> - <widget row="2" column="0" rowspan="3" colspan="1" > - <class>QListBox</class> - <property stdset="1"> - <name>name</name> - <cstring>profilesList</cstring> - </property> - </widget> - <widget row="4" column="1" rowspan="1" colspan="2" > + <widget row="5" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>PushButton7</cstring> </property> <property stdset="1"> <name>text</name> <string>&Set Current</string> </property> </widget> - <widget row="3" column="1" rowspan="1" colspan="2" > + <widget row="4" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>removeProfileButton</cstring> </property> <property stdset="1"> <name>text</name> <string>&Remove</string> </property> </widget> - <widget row="2" column="1" rowspan="1" colspan="2" > + <widget row="3" column="2" > <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>newProfileButton</cstring> </property> <property stdset="1"> <name>text</name> <string>&New</string> </property> </widget> + <widget row="2" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel1_2</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Profiles</string> + </property> + </widget> + <widget row="3" column="0" rowspan="3" colspan="2" > + <class>QListBox</class> + <property stdset="1"> + <name>name</name> + <cstring>profilesList</cstring> + </property> + </widget> </grid> </widget> </widget> </vbox> </widget> <customwidgets> <customwidget> <class>QWidget</class> diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp index 0f48a4b..89dac6f 100644 --- a/noncore/settings/networksettings/mainwindowimp.cpp +++ b/noncore/settings/networksettings/mainwindowimp.cpp @@ -146,17 +146,17 @@ void MainWindowImp::addClicked(){ */
void MainWindowImp::removeClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL) {
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if((interfaceItems[item])->getModuleOwner() == NULL){
QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", "Ok");
}
else{
// Try to remove.
}
}
@@ -166,48 +166,75 @@ void MainWindowImp::removeClicked(){ */
void MainWindowImp::configureClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL){
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if((interfaceItems[item])->getModuleOwner() == NULL){
InterfaceSetupImp *conf = new InterfaceSetupImp(0, "InterfaceConfiguration", interfaceItems[item]);
conf->showMaximized();
conf->show();
}
else{
- InterfaceSetupImp *conf = new InterfaceSetupImp(this, "InterfaceConfiguration");
- conf->show();
+ QTabWidget *t = NULL;
+ QWidget *conf = (interfaceItems[item])->getModuleOwner()->configure(&t);
+ if(conf != NULL){
+ qDebug("Conf found");
+ if(t != NULL){
+ qDebug("Adding Interface");
+ InterfaceSetupImp *i = new InterfaceSetupImp(t, "TCPIPInformation", interfaceItems[item], true);
+ t->insertTab(i, "TCP/IP");
+ }
+ conf->showMaximized();
+ conf->show();
+ }
+ else{
+ InterfaceSetupImp *i = new InterfaceSetupImp(0, "TCPIPInformation", interfaceItems[item], true);
+ i->showMaximized();
+ i->show();
+ }
}
}
/**
* Pull up the information about the selected interface
* Report an error
*/
void MainWindowImp::informationClicked(){
QListViewItem *item = serviceList->currentItem();
if(item == NULL){
QMessageBox::information(this, "Error","Please select an interface.", "Ok");
return;
}
- if(modules.find(interfaceItems[item]) == modules.end()){
+ if( (interfaceItems[item])->getModuleOwner() == NULL){
InterfaceInformationImp *i = new InterfaceInformationImp(0, "InterfaceInformationImp", interfaceItems[item]);
i->showMaximized();
i->show();
}
else{
- QTabWidget *t = new QTabWidget(this, "InterfaceInformationTAB");
- InterfaceInformationImp *i = new InterfaceInformationImp(t, "TCPIPInformation", interfaceItems[item], true);
- t->insertTab(i, "TCP/IP");
- t->show();
+ QTabWidget *t = NULL;
+ QWidget *conf = (interfaceItems[item])->getModuleOwner()->information(&t);
+ if(conf != NULL){
+ if(t){
+ qDebug("Adding Interface");
+ InterfaceInformationImp *i = new InterfaceInformationImp(t, "TCPIPInformation", interfaceItems[item], true);
+ t->insertTab(i, "TCP/IP");
+ }
+ conf->showMaximized();
+ conf->show();
+ }
+ else{
+ InterfaceInformationImp *i = new InterfaceInformationImp(0, "TCPIPInformation", interfaceItems[item], true);
+ i->showMaximized();
+ i->show();
+ }
}
}
/**
* Aquire the list of active interfaces from ifconfig
* Call ifconfig and ifconfig -a
*/
void MainWindowImp::getInterfaceList(){
@@ -281,20 +308,22 @@ void MainWindowImp::jobDone(KProcess *process){ void MainWindowImp::updateInterface(Interface *i){
QListViewItem *item = NULL;
// See if we already have it
if(items.find(i) == items.end()){
item = new QListViewItem(serviceList, "", "", "");
// See if you can't find a module owner for this interface
- //EmployeeMap::Iterator it;
- //for( it = map.begin(); it != map.end(); ++it )
- // printf( "%s, %s earns %d\n", it.key().latin1(), it.data().name().latin1(), it.data().salary() );
-
+ QMap<Module*, QLibrary*>::Iterator it;
+ for( it = libraries.begin(); it != libraries.end(); ++it ){
+ if(it.key()->isOwner(i))
+ i->setModuleOwner(it.key());
+ }
+
items.insert(i, item);
interfaceItems.insert(item, i);
}
else
item = items[i];
QString statusImage = "down";
if(i->getStatus())
@@ -304,16 +333,20 @@ void MainWindowImp::updateInterface(Interface *i){ QString typeName = "lan";
if(i->getHardwareName().contains("Local Loopback"))
typeName = "lo";
if(i->getInterfaceName().contains("irda"))
typeName = "irda";
if(i->getInterfaceName().contains("wlan"))
typeName = "wlan";
+ // Actually try to use the Module
+ if(i->getModuleOwner() != NULL){
+ typeName = i->getModuleOwner()->getPixmapName(i);
+ }
QPixmap type = (Resource::loadPixmap(typeName));
item->setPixmap(1, type);
item->setText(2, i->getHardwareName());
}
/**
diff --git a/noncore/settings/networksettings/mainwindowimp.h b/noncore/settings/networksettings/mainwindowimp.h index 8e300bf..19ebaf2 100644 --- a/noncore/settings/networksettings/mainwindowimp.h +++ b/noncore/settings/networksettings/mainwindowimp.h @@ -37,17 +37,16 @@ private: Module* loadPlugin(QString pluginFileName,
QString resolveString = "create_plugin");
// For our local list of names
QMap<QString, Interface*> interfaceNames;
QMap<Module*, QLibrary*> libraries;
- QMap<Interface*, Module*> modules;
QMap<Interface*, QListViewItem*> items;
QMap<QListViewItem*, Interface*> interfaceItems;
QMap<KProcess*, QString> threads;
QStringList profiles;
};
diff --git a/noncore/settings/networksettings/module.h b/noncore/settings/networksettings/module.h index 13fd523..c1e9488 100644 --- a/noncore/settings/networksettings/module.h +++ b/noncore/settings/networksettings/module.h @@ -2,32 +2,33 @@ #define NETCONF_MODULE_H #include <qobject.h> #include <qlist.h> #include <qmap.h> #include "interface.h" class QWidget; +class QTabWidget; class Module : QObject{ signals: void updateInterface(Interface *i); public: Module(){}; virtual bool isOwner(Interface *){ return false; }; - virtual QWidget *configure(){ return NULL; } ; - virtual QWidget *information(){ return NULL; }; + virtual QWidget *configure(QTabWidget **tabWidget){ return NULL; } ; + virtual QWidget *information(QTabWidget **tabWidget){ return NULL; }; virtual QList<Interface> getInterfaces() = 0; virtual QMap<QString, QString> possibleNewInterfaces() = 0; virtual Interface *addNewInterface(QString name) = 0; virtual bool remove(Interface* i) = 0; - + virtual QString getPixmapName(Interface* i) = 0; }; #endif // module.h diff --git a/noncore/settings/networksettings/networksetup.pro b/noncore/settings/networksettings/networksetup.pro index a01b050..0d48790 100644 --- a/noncore/settings/networksettings/networksetup.pro +++ b/noncore/settings/networksettings/networksetup.pro @@ -1,10 +1,10 @@ TEMPLATE = app -CONFIG = qt warn_on debug -#CONFIG = qt warn_on release +#CONFIG = qt warn_on debug +CONFIG = qt warn_on release HEADERS = mainwindowimp.h addserviceimp.h interface.h interfaceinformationimp.h interfacesetupimp.h interfaces.h defaultmodule.h kprocctrl.h module.h kprocess.h SOURCES = main.cpp mainwindowimp.cpp addserviceimp.cpp interface.cpp interfaceinformationimp.cpp interfacesetupimp.cpp kprocctrl.cpp kprocess.cpp interfaces.cpp #INCLUDEPATH += $(QPEDIR)/include #DEPENDPATH += $(QPEDIR)/include LIBS += -lqpe INTERFACES = mainwindow.ui addservice.ui interfaceinformation.ui interfaceadvanced.ui interfacesetup.ui TARGET = networksetup |