summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/.cvsignore6
-rw-r--r--noncore/settings/networksettings/addconnectionimp.cpp4
-rw-r--r--noncore/settings/networksettings/addconnectionimp.h1
-rw-r--r--noncore/settings/networksettings/mainwindow.ui22
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp103
-rw-r--r--noncore/settings/networksettings/mainwindowimp.h11
-rw-r--r--noncore/settings/networksettings/module.h4
7 files changed, 111 insertions, 40 deletions
diff --git a/noncore/settings/networksettings/.cvsignore b/noncore/settings/networksettings/.cvsignore
index 1ba7ac7..e000724 100644
--- a/noncore/settings/networksettings/.cvsignore
+++ b/noncore/settings/networksettings/.cvsignore
@@ -1,23 +1,29 @@
1*.moc 1*.moc
2*.moc.o 2*.moc.o
3*.o 3*.o
4.deps 4.deps
5.libs 5.libs
6.moc.cpp 6.moc.cpp
7.moc.o 7.moc.o
8.o 8.o
9Makefile* 9Makefile*
10addconnection.cpp 10addconnection.cpp
11addconnection.h 11addconnection.h
12interfaceadvanced.cpp 12interfaceadvanced.cpp
13interfaceadvanced.h 13interfaceadvanced.h
14interfaceinformation.cpp 14interfaceinformation.cpp
15interfaceinformation.h 15interfaceinformation.h
16interfacesetup.cpp 16interfacesetup.cpp
17interfacesetup.h 17interfacesetup.h
18mainwindow.cpp 18mainwindow.cpp
19mainwindow.h 19mainwindow.h
20moc_*.cpp 20moc_*.cpp
21networksetup 21networksetup
22systemadvanced.cpp 22systemadvanced.cpp
23systemadvanced.h 23systemadvanced.h
24hosts.h
25hosts.cpp
26vpn.h
27vpn.cpp
28dns.h
29dns.cpp
diff --git a/noncore/settings/networksettings/addconnectionimp.cpp b/noncore/settings/networksettings/addconnectionimp.cpp
index 07545f7..f18d8d1 100644
--- a/noncore/settings/networksettings/addconnectionimp.cpp
+++ b/noncore/settings/networksettings/addconnectionimp.cpp
@@ -1,35 +1,39 @@
1#include "addconnectionimp.h" 1#include "addconnectionimp.h"
2#include <qlistview.h> 2#include <qlistview.h>
3#if QT_VERSION < 300
3#include <qlist.h> 4#include <qlist.h>
5#else
6#include <qptrlist.h>
7#endif
4#include <qlabel.h> 8#include <qlabel.h>
5#include <qheader.h> 9#include <qheader.h>
6 10
7/** 11/**
8 * Constructor 12 * Constructor
9 */ 13 */
10AddConnectionImp::AddConnectionImp(QWidget *parent, const char *name, WFlags f):AddConnection(parent, name, f){ 14AddConnectionImp::AddConnectionImp(QWidget *parent, const char *name, WFlags f):AddConnection(parent, name, f){
11 connect(registeredServicesList, SIGNAL(selectionChanged()), this, SLOT(changed())); 15 connect(registeredServicesList, SIGNAL(selectionChanged()), this, SLOT(changed()));
12 registeredServicesList->header()->hide(); 16 registeredServicesList->header()->hide();
13}; 17};
14 18
15/** 19/**
16 * The current item changed, update the discription. 20 * The current item changed, update the discription.
17 */ 21 */
18void AddConnectionImp::changed(){ 22void AddConnectionImp::changed(){
19 QListViewItem *item = registeredServicesList->currentItem(); 23 QListViewItem *item = registeredServicesList->currentItem();
20 if(item) 24 if(item)
21 help->setText(list[item->text(0)]); 25 help->setText(list[item->text(0)]);
22} 26}
23 27
24/** 28/**
25 * Save a copy of newList for the discriptions and append them all to the view 29 * Save a copy of newList for the discriptions and append them all to the view
26 * @param newList the new list of possible interfaces 30 * @param newList the new list of possible interfaces
27 */ 31 */
28void AddConnectionImp::addConnections(const QMap<QString, QString> &newList){ 32void AddConnectionImp::addConnections(const QMap<QString, QString> &newList){
29 list = newList; 33 list = newList;
30 QMap<QString, QString>::Iterator it; 34 QMap<QString, QString>::Iterator it;
31 for( it = list.begin(); it != list.end(); ++it ) 35 for( it = list.begin(); it != list.end(); ++it )
32 QListViewItem *item = new QListViewItem(registeredServicesList, it.key()); 36 QListViewItem *item = new QListViewItem(registeredServicesList, it.key());
33 registeredServicesList->setCurrentItem(registeredServicesList->firstChild()); 37 registeredServicesList->setCurrentItem(registeredServicesList->firstChild());
34} 38}
35 39
diff --git a/noncore/settings/networksettings/addconnectionimp.h b/noncore/settings/networksettings/addconnectionimp.h
index 680a502..57e6b20 100644
--- a/noncore/settings/networksettings/addconnectionimp.h
+++ b/noncore/settings/networksettings/addconnectionimp.h
@@ -1,29 +1,28 @@
1#ifndef ADDCONNECTIONIMP_H 1#ifndef ADDCONNECTIONIMP_H
2#define ADDCONNECTIONIMP_H 2#define ADDCONNECTIONIMP_H
3 3
4#include "addconnection.h" 4#include "addconnection.h"
5#include <qmap.h> 5#include <qmap.h>
6#include <qlist.h>
7 6
8class QListViewItem; 7class QListViewItem;
9 8
10class AddConnectionImp : public AddConnection { 9class AddConnectionImp : public AddConnection {
11 10
12Q_OBJECT 11Q_OBJECT
13 12
14public: 13public:
15 AddConnectionImp(QWidget *parent=0, const char *name=0, WFlags f=0); 14 AddConnectionImp(QWidget *parent=0, const char *name=0, WFlags f=0);
16 void addConnections(const QMap<QString, QString> &newList); 15 void addConnections(const QMap<QString, QString> &newList);
17 16
18private slots: 17private slots:
19 void changed(); 18 void changed();
20 19
21private: 20private:
22 QMap<QString, QString> list; 21 QMap<QString, QString> list;
23 22
24}; 23};
25 24
26#endif 25#endif
27 26
28// addconectionimp.h 27// addconectionimp.h
29 28
diff --git a/noncore/settings/networksettings/mainwindow.ui b/noncore/settings/networksettings/mainwindow.ui
index dcabc52..8e17cb3 100644
--- a/noncore/settings/networksettings/mainwindow.ui
+++ b/noncore/settings/networksettings/mainwindow.ui
@@ -382,68 +382,46 @@
382 <string>New Profile</string> 382 <string>New Profile</string>
383 </property> 383 </property>
384 </widget> 384 </widget>
385 <widget> 385 <widget>
386 <class>QLineEdit</class> 386 <class>QLineEdit</class>
387 <property stdset="1"> 387 <property stdset="1">
388 <name>name</name> 388 <name>name</name>
389 <cstring>newProfile</cstring> 389 <cstring>newProfile</cstring>
390 </property> 390 </property>
391 </widget> 391 </widget>
392 <widget> 392 <widget>
393 <class>QPushButton</class> 393 <class>QPushButton</class>
394 <property stdset="1"> 394 <property stdset="1">
395 <name>name</name> 395 <name>name</name>
396 <cstring>newProfileButton</cstring> 396 <cstring>newProfileButton</cstring>
397 </property> 397 </property>
398 <property stdset="1"> 398 <property stdset="1">
399 <name>enabled</name> 399 <name>enabled</name>
400 <bool>false</bool> 400 <bool>false</bool>
401 </property> 401 </property>
402 <property stdset="1"> 402 <property stdset="1">
403 <name>text</name> 403 <name>text</name>
404 <string>&amp;Add</string> 404 <string>&amp;Add</string>
405 </property> 405 </property>
406 </widget> 406 </widget>
407 </hbox> 407 </hbox>
408 </widget> 408 </widget>
409 </grid> 409 </grid>
410 </widget> 410 </widget>
411 </widget> 411 </widget>
412 </vbox> 412 </vbox>
413</widget> 413</widget>
414<customwidgets>
415 <customwidget>
416 <class>QWidget</class>
417 <header location="local">qwidget.h</header>
418 <sizehint>
419 <width>100</width>
420 <height>100</height>
421 </sizehint>
422 <container>0</container>
423 <sizepolicy>
424 <hordata>7</hordata>
425 <verdata>7</verdata>
426 </sizepolicy>
427 <pixmap>image0</pixmap>
428 </customwidget>
429</customwidgets>
430<images>
431 <image>
432 <name>image0</name>
433 <data format="XPM.GZ" length="646">789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data>
434 </image>
435</images>
436<tabstops> 414<tabstops>
437 <tabstop>tabWidget</tabstop> 415 <tabstop>tabWidget</tabstop>
438 <tabstop>connectionList</tabstop> 416 <tabstop>connectionList</tabstop>
439 <tabstop>informationConnectionButton</tabstop> 417 <tabstop>informationConnectionButton</tabstop>
440 <tabstop>configureConnectionButton</tabstop> 418 <tabstop>configureConnectionButton</tabstop>
441 <tabstop>addConnectionButton</tabstop> 419 <tabstop>addConnectionButton</tabstop>
442 <tabstop>removeConnectionButton</tabstop> 420 <tabstop>removeConnectionButton</tabstop>
443 <tabstop>profilesList</tabstop> 421 <tabstop>profilesList</tabstop>
444 <tabstop>setCurrentProfileButton</tabstop> 422 <tabstop>setCurrentProfileButton</tabstop>
445 <tabstop>removeProfileButton</tabstop> 423 <tabstop>removeProfileButton</tabstop>
446 <tabstop>newProfile</tabstop> 424 <tabstop>newProfile</tabstop>
447 <tabstop>newProfileButton</tabstop> 425 <tabstop>newProfileButton</tabstop>
448</tabstops> 426</tabstops>
449</UI> 427</UI>
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 0ddc489..d6b708b 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,77 +1,99 @@
1#include "mainwindowimp.h" 1#include "mainwindowimp.h"
2#include "addconnectionimp.h" 2#include "addconnectionimp.h"
3#include "interfaceinformationimp.h" 3#include "interfaceinformationimp.h"
4#include "interfacesetupimp.h" 4#include "interfacesetupimp.h"
5#include "interfaces.h" 5#include "interfaces.h"
6#include "module.h" 6#include "module.h"
7 7
8#include <qpushbutton.h> 8#include <qpushbutton.h>
9#include <qlistbox.h> 9#include <qlistbox.h>
10#include <qlineedit.h> 10#include <qlineedit.h>
11#include <qlistview.h> 11#include <qlistview.h>
12#include <qheader.h> 12#include <qheader.h>
13#include <qlabel.h> 13#include <qlabel.h>
14 14
15#include <qmainwindow.h>
16#include <qmessagebox.h> 15#include <qmessagebox.h>
17 16
18#include <qpe/config.h> 17#ifdef QTE_VERSION
19#include <qpe/qlibrary.h> 18 #include <qpe/config.h>
20#include <qpe/resource.h> 19 #include <qpe/qlibrary.h>
21#include <qpe/qpeapplication.h> 20 #include <qpe/resource.h>
21 #include <qpe/qpeapplication.h>
22 #define QLibrary
23#else
24 #include <klibloader.h>
25 #define QLibrary KLibrary
26 #include <kconfig.h>
27 #define Config KConfig
28 #include <kapplication.h>
29 #include <kstandarddirs.h>
30 #include <kiconloader.h>
31 #define showMaximized show
32#endif
22 33
34#if QT_VERSION < 300
23#include <qlist.h> 35#include <qlist.h>
36#else
37#include <qptrlist.h>
38#endif
24#include <qdir.h> 39#include <qdir.h>
25#include <qfile.h> 40#include <qfile.h>
26#include <qtextstream.h> 41#include <qtextstream.h>
42#include <qregexp.h>
27 43
28#include <net/if.h> 44#include <net/if.h>
29#include <sys/ioctl.h> 45#include <sys/ioctl.h>
30 46
31#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" 47#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
32 48
33MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false), scheme(DEFAULT_SCHEME){ 49MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name), advancedUserMode(true), scheme(DEFAULT_SCHEME){
34 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 50 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
35 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 51 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
36 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 52 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
37 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 53 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
38 54
39 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 55 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
40 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 56 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
41 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 57 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
42 58
43 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 59 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
44 // Load connections. 60 // Load connections.
45 loadModules(QPEApplication::qpeDir() + "/plugins/networksettings"); 61 // /usr/local/kde/lib/libinterfaces.la
62#ifdef QTE_VERSION
63 loadModules(QPEApplication::kdeDir() + "/plugins/networksettings");
64#else
65 loader = KLibLoader::self();
66 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib"));
67#endif
46 getAllInterfaces(); 68 getAllInterfaces();
47 69
48 Interfaces i; 70 Interfaces i;
49 QStringList list = i.getInterfaceList(); 71 QStringList list = i.getInterfaceList();
50 QMap<QString, Interface*>::Iterator it; 72 QMap<QString, Interface*>::Iterator it;
51 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) { 73 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
52 bool found = false; 74 bool found = false;
53 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){ 75 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
54 if(it.key() == (*ni)) 76 if(it.key() == (*ni))
55 found = true; 77 found = true;
56 } 78 }
57 if(!found){ 79 if(!found){
58 if(!(*ni).contains("_")){ 80 if(!(*ni).contains("_")){
59 Interface *i = new Interface(this, *ni, false); 81 Interface *i = new Interface(this, *ni, false);
60 i->setAttached(false); 82 i->setAttached(false);
61 i->setHardwareName("Disconnected"); 83 i->setHardwareName("Disconnected");
62 interfaceNames.insert(i->getInterfaceName(), i); 84 interfaceNames.insert(i->getInterfaceName(), i);
63 updateInterface(i); 85 updateInterface(i);
64 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 86 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
65 } 87 }
66 } 88 }
67 } 89 }
68 90
69 //getInterfaceList(); 91 //getInterfaceList();
70 connectionList->header()->hide(); 92 connectionList->header()->hide();
71 93
72 Config cfg("NetworkSetup"); 94 Config cfg("NetworkSetup");
73 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 95 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
74 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 96 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
75 profilesList->insertItem((*it)); 97 profilesList->insertItem((*it));
76 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); 98 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
77 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 99 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
@@ -79,72 +101,76 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
79 101
80 QFile file(scheme); 102 QFile file(scheme);
81 if ( file.open(IO_ReadOnly) ) { // file opened successfully 103 if ( file.open(IO_ReadOnly) ) { // file opened successfully
82 QTextStream stream( &file ); // use a text stream 104 QTextStream stream( &file ); // use a text stream
83 while ( !stream.eof() ) { // until end of file... 105 while ( !stream.eof() ) { // until end of file...
84 QString line = stream.readLine(); // line of text excluding '\n' 106 QString line = stream.readLine(); // line of text excluding '\n'
85 if(line.contains("SCHEME")){ 107 if(line.contains("SCHEME")){
86 line = line.mid(7, line.length()); 108 line = line.mid(7, line.length());
87 currentProfileLabel->setText(line); 109 currentProfileLabel->setText(line);
88 break; 110 break;
89 } 111 }
90 } 112 }
91 file.close(); 113 file.close();
92 } 114 }
93} 115}
94 116
95/** 117/**
96 * Deconstructor. Save profiles. Delete loaded libraries. 118 * Deconstructor. Save profiles. Delete loaded libraries.
97 */ 119 */
98MainWindowImp::~MainWindowImp(){ 120MainWindowImp::~MainWindowImp(){
99 // Save profiles. 121 // Save profiles.
100 Config cfg("NetworkSetup"); 122 Config cfg("NetworkSetup");
101 cfg.setGroup("General"); 123 cfg.setGroup("General");
102 cfg.writeEntry("Profiles", profiles.join(" ")); 124 cfg.writeEntry("Profiles", profiles.join(" "));
103 125
104 // Delete all interfaces that don't have owners. 126 // Delete all interfaces that don't have owners.
105 QMap<Interface*, QListViewItem*>::Iterator iIt; 127 QMap<Interface*, QListViewItem*>::Iterator iIt;
106 for( iIt = items.begin(); iIt != items.end(); ++iIt ){ 128 for( iIt = items.begin(); iIt != items.end(); ++iIt ){
107 if(iIt.key()->getModuleOwner() == NULL) 129 if(iIt.key()->getModuleOwner() == NULL)
108 delete iIt.key(); 130 delete iIt.key();
109 } 131 }
110 132
133#ifdef QTE_VERSION
111 // Delete Modules and Libraries 134 // Delete Modules and Libraries
112 QMap<Module*, QLibrary*>::Iterator it; 135 QMap<Module*, QLibrary*>::Iterator it;
113 for( it = libraries.begin(); it != libraries.end(); ++it ){ 136 for( it = libraries.begin(); it != libraries.end(); ++it ){
114 delete it.key(); 137 delete it.key();
115 // I wonder why I can't delete the libraries 138 // I wonder why I can't delete the libraries
116 // What fucking shit this is. 139 // What fucking shit this is.
117 //delete it.data(); 140 //delete it.data();
118 } 141 }
142#else
143 // klibloader automaticly deletes the libraries for us...
144#endif
119} 145}
120 146
121/** 147/**
122 * Query the kernel for all of the interfaces. 148 * Query the kernel for all of the interfaces.
123 */ 149 */
124void MainWindowImp::getAllInterfaces(){ 150void MainWindowImp::getAllInterfaces(){
125 int sockfd = socket(AF_INET, SOCK_DGRAM, 0); 151 int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
126 if(sockfd == -1) 152 if(sockfd == -1)
127 return; 153 return;
128 154
129 char buf[8*1024]; 155 char buf[8*1024];
130 struct ifconf ifc; 156 struct ifconf ifc;
131 ifc.ifc_len = sizeof(buf); 157 ifc.ifc_len = sizeof(buf);
132 ifc.ifc_req = (struct ifreq *) buf; 158 ifc.ifc_req = (struct ifreq *) buf;
133 int result=ioctl(sockfd, SIOCGIFCONF, &ifc); 159 int result=ioctl(sockfd, SIOCGIFCONF, &ifc);
134 160
135 for (char* ptr = buf; ptr < buf + ifc.ifc_len; ){ 161 for (char* ptr = buf; ptr < buf + ifc.ifc_len; ){
136 struct ifreq *ifr =(struct ifreq *) ptr; 162 struct ifreq *ifr =(struct ifreq *) ptr;
137 int len = sizeof(struct sockaddr); 163 int len = sizeof(struct sockaddr);
138#ifdef HAVE_SOCKADDR_SA_LEN 164#ifdef HAVE_SOCKADDR_SA_LEN
139 if (ifr->ifr_addr.sa_len > len) 165 if (ifr->ifr_addr.sa_len > len)
140 len = ifr->ifr_addr.sa_len; /* length > 16 */ 166 len = ifr->ifr_addr.sa_len; /* length > 16 */
141#endif 167#endif
142 ptr += sizeof(ifr->ifr_name) + len; /* for next one in buffer */ 168 ptr += sizeof(ifr->ifr_name) + len; /* for next one in buffer */
143 169
144 int flags; 170 int flags;
145 struct sockaddr_in *sinptr; 171 struct sockaddr_in *sinptr;
146 Interface *i = NULL; 172 Interface *i = NULL;
147 switch (ifr->ifr_addr.sa_family){ 173 switch (ifr->ifr_addr.sa_family){
148 case AF_INET: 174 case AF_INET:
149 sinptr = (struct sockaddr_in *) &ifr->ifr_addr; 175 sinptr = (struct sockaddr_in *) &ifr->ifr_addr;
150 flags=0; 176 flags=0;
@@ -161,109 +187,141 @@ void MainWindowImp::getAllInterfaces(){
161 i->setStatus(false); 187 i->setStatus(false);
162 188
163 if ((flags & IFF_BROADCAST) == IFF_BROADCAST) 189 if ((flags & IFF_BROADCAST) == IFF_BROADCAST)
164 i->setHardwareName("Ethernet"); 190 i->setHardwareName("Ethernet");
165 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT) 191 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT)
166 i->setHardwareName("Point to Point"); 192 i->setHardwareName("Point to Point");
167 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST) 193 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST)
168 i->setHardwareName("Multicast"); 194 i->setHardwareName("Multicast");
169 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK) 195 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK)
170 i->setHardwareName("Loopback"); 196 i->setHardwareName("Loopback");
171 else 197 else
172 i->setHardwareName("Unknown"); 198 i->setHardwareName("Unknown");
173 199
174 interfaceNames.insert(i->getInterfaceName(), i); 200 interfaceNames.insert(i->getInterfaceName(), i);
175 updateInterface(i); 201 updateInterface(i);
176 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *))); 202 connect(i, SIGNAL(updateInterface(Interface *)), this, SLOT(updateInterface(Interface *)));
177 break; 203 break;
178 204
179 default: 205 default:
180 qDebug(ifr->ifr_name); 206 qDebug(ifr->ifr_name);
181 qDebug(QString("%1").arg(ifr->ifr_addr.sa_family).latin1()); 207 qDebug(QString("%1").arg(ifr->ifr_addr.sa_family).latin1());
182 break; 208 break;
183 } 209 }
184 } 210 }
185} 211}
186 212
187/** 213/**
188 * Load all modules that are found in the path 214 * Load all modules that are found in the path
189 * @param path a directory that is scaned for any plugins that can be loaded 215 * @param path a directory that is scaned for any plugins that can be loaded
190 * and attempts to load them 216 * and attempts to load them
191 */ 217 */
192void MainWindowImp::loadModules(const QString &path){ 218void MainWindowImp::loadModules(const QString &path){
193 //qDebug(path.latin1()); 219#ifdef DEBUG
220 qDebug("MainWindowImp::loadModules: %s", path.latin1());
221#endif
194 QDir d(path); 222 QDir d(path);
195 if(!d.exists()) 223 if(!d.exists())
196 return; 224 return;
197 225
198 // Don't want sym links 226 // Don't want sym links
199 d.setFilter( QDir::Files | QDir::NoSymLinks ); 227 d.setFilter( QDir::Files | QDir::NoSymLinks );
200 const QFileInfoList *list = d.entryInfoList(); 228 const QFileInfoList *list = d.entryInfoList();
201 QFileInfoListIterator it( *list ); 229 QFileInfoListIterator it( *list );
202 QFileInfo *fi; 230 QFileInfo *fi;
203 while ( (fi=it.current()) ) { 231 while ( (fi=it.current()) ) {
204 if(fi->fileName().contains(".so")){ 232 if(fi->fileName().contains(".so") && fi->fileName().contains("networksettings_")){
205 loadPlugin(path + "/" + fi->fileName()); 233 loadPlugin(path + "/" + fi->fileName());
206 } 234 }
207 ++it; 235 ++it;
208 } 236 }
209} 237}
210 238
211/** 239/**
212 * Attempt to load a function and resolve a function. 240 * Attempt to load a function and resolve a function.
213 * @param pluginFileName - the name of the file in which to attempt to load 241 * @param pluginFileName - the name of the file in which to attempt to load
214 * @param resolveString - function pointer to resolve 242 * @param resolveString - function pointer to resolve
215 * @return pointer to the function with name resolveString or NULL 243 * @return pointer to the function with name resolveString or NULL
216 */ 244 */
217Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){ 245Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){
218 //qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1()); 246#ifdef DEBUG
247 qDebug("MainWindowImp::loadPlugin: %s", pluginFileName.latin1());
248#endif
249#ifdef QTE_VERSION
219 QLibrary *lib = new QLibrary(pluginFileName); 250 QLibrary *lib = new QLibrary(pluginFileName);
220 void *functionPointer = lib->resolve(resolveString); 251 void *functionPointer = lib->resolve(resolveString);
221 if( !functionPointer ){ 252 if( !functionPointer ){
222 qDebug(QString("MainWindowImp: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1()); 253#ifdef DEBUG
254 qDebug("MainWindowImp::loadPlugin: File: %s is not a plugin, but though was.", pluginFileName.latin1());
255#endif
223 delete lib; 256 delete lib;
224 return NULL; 257 return NULL;
225 } 258 }
226
227 // Try to get an object. 259 // Try to get an object.
228 Module *object = ((Module* (*)()) functionPointer)(); 260 Module *object = ((Module* (*)()) functionPointer)();
229 if(object == NULL){ 261 if(object == NULL){
262#ifdef DEBUG
230 qDebug("MainWindowImp: Couldn't create object, but did load library!"); 263 qDebug("MainWindowImp: Couldn't create object, but did load library!");
264#endif
231 delete lib; 265 delete lib;
232 return NULL; 266 return NULL;
233 } 267 }
234 268
235 // Store for deletion later 269 // Store for deletion later
236 libraries.insert(object, lib); 270 libraries.insert(object, lib);
237 return object; 271 return object;
272
273#else
274 QLibrary *lib = loader->library(pluginFileName);
275 if( !lib || !lib->hasSymbol(resolveString) ){
276#ifdef DEBUG
277 qDebug(QString("MainWindowImp::loadPlugin: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
278#endif
279 return NULL;
280 }
281 // Try to get an object.
282 Module *object = ((Module* (*)()) lib->symbol(resolveString))();
283 if(object == NULL){
284#ifdef DEBUG
285 qDebug("MainWindowImp: Couldn't create object, but did load library!");
286#endif
287 return NULL;
288 }
289#ifdef DEBUG
290 qDebug("MainWindowImp::loadPlugin:: Found object, storing.");
291#endif
292 // Store for deletion later
293 libraries.insert(object, lib);
294 return object;
295#endif
238} 296}
239 297
240/** 298/**
241 * The Add button was clicked. Bring up the add dialog and if OK is hit 299 * The Add button was clicked. Bring up the add dialog and if OK is hit
242 * load the plugin and append it to the list 300 * load the plugin and append it to the list
243 */ 301 */
244void MainWindowImp::addClicked(){ 302void MainWindowImp::addClicked(){
245 QMap<Module*, QLibrary*>::Iterator it; 303 QMap<Module*, QLibrary*>::Iterator it;
246 QMap<QString, QString> list; 304 QMap<QString, QString> list;
247 QMap<QString, Module*> newInterfaceOwners; 305 QMap<QString, Module*> newInterfaceOwners;
248 //list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port"); 306 //list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port");
249 //list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port"); 307 //list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port");
250 for( it = libraries.begin(); it != libraries.end(); ++it ){ 308 for( it = libraries.begin(); it != libraries.end(); ++it ){
251 if(it.key()){ 309 if(it.key()){
252 (it.key())->possibleNewInterfaces(list); 310 (it.key())->possibleNewInterfaces(list);
253 } 311 }
254 } 312 }
255 // See if the list has anything that we can add. 313 // See if the list has anything that we can add.
256 if(list.count() == 0){ 314 if(list.count() == 0){
257 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok); 315 QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok);
258 return; 316 return;
259 } 317 }
260 AddConnectionImp addNewConnection(this, "AddConnectionImp", true); 318 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
261 addNewConnection.addConnections(list); 319 addNewConnection.addConnections(list);
262 addNewConnection.showMaximized(); 320 addNewConnection.showMaximized();
263 if(QDialog::Accepted == addNewConnection.exec()){ 321 if(QDialog::Accepted == addNewConnection.exec()){
264 QListViewItem *item = addNewConnection.registeredServicesList->currentItem(); 322 QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
265 if(!item) 323 if(!item)
266 return; 324 return;
267 325
268 for( it = libraries.begin(); it != libraries.end(); ++it ){ 326 for( it = libraries.begin(); it != libraries.end(); ++it ){
269 if(it.key()){ 327 if(it.key()){
@@ -295,148 +353,159 @@ void MainWindowImp::removeClicked(){
295 else{ 353 else{
296 if(!i->getModuleOwner()->remove(i)) 354 if(!i->getModuleOwner()->remove(i))
297 QMessageBox::information(this, "Error", "Unable to remove.", QMessageBox::Ok); 355 QMessageBox::information(this, "Error", "Unable to remove.", QMessageBox::Ok);
298 else{ 356 else{
299 QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok); 357 QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok);
300 // TODO memory managment.... 358 // TODO memory managment....
301 // who deletes the interface? 359 // who deletes the interface?
302 } 360 }
303 } 361 }
304} 362}
305 363
306/** 364/**
307 * Pull up the configure about the currently selected interface. 365 * Pull up the configure about the currently selected interface.
308 * Report an error if no interface is selected. 366 * Report an error if no interface is selected.
309 * If the interface has a module owner then request its configure. 367 * If the interface has a module owner then request its configure.
310 */ 368 */
311void MainWindowImp::configureClicked(){ 369void MainWindowImp::configureClicked(){
312 QListViewItem *item = connectionList->currentItem(); 370 QListViewItem *item = connectionList->currentItem();
313 if(!item){ 371 if(!item){
314 QMessageBox::information(this, "Sorry","Please select an interface first.", QMessageBox::Ok); 372 QMessageBox::information(this, "Sorry","Please select an interface first.", QMessageBox::Ok);
315 return; 373 return;
316 } 374 }
317 375
318 Interface *i = interfaceItems[item]; 376 Interface *i = interfaceItems[item];
319 if(i->getModuleOwner()){ 377 if(i->getModuleOwner()){
320 QWidget *moduleConfigure = i->getModuleOwner()->configure(i); 378 QWidget *moduleConfigure = i->getModuleOwner()->configure(i);
321 if(moduleConfigure != NULL){ 379 if(moduleConfigure != NULL){
322 moduleConfigure->showMaximized(); 380 moduleConfigure->showMaximized();
323 return; 381 return;
324 } 382 }
325 } 383 }
326 384
327 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(0, "InterfaceSetupImp", i, true, Qt::WDestructiveClose); 385 InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WShowModal | Qt::WDestructiveClose | Qt::WType_Dialog);
328 QString currentProfileText = currentProfileLabel->text(); 386 QString currentProfileText = currentProfileLabel->text();
329 if(currentProfileText.upper() == "ALL"); 387 if(currentProfileText.upper() == "ALL");
330 currentProfileText = ""; 388 currentProfileText = "";
331 configure->setProfile(currentProfileText); 389 configure->setProfile(currentProfileText);
332 configure->showMaximized(); 390 configure->showMaximized();
333} 391}
334 392
335/** 393/**
336 * Pull up the information about the currently selected interface. 394 * Pull up the information about the currently selected interface.
337 * Report an error if no interface is selected. 395 * Report an error if no interface is selected.
338 * If the interface has a module owner then request its configure. 396 * If the interface has a module owner then request its configure.
339 */ 397 */
340void MainWindowImp::informationClicked(){ 398void MainWindowImp::informationClicked(){
341 QListViewItem *item = connectionList->currentItem(); 399 QListViewItem *item = connectionList->currentItem();
342 if(!item){ 400 if(!item){
343 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok); 401 QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
344 return; 402 return;
345 } 403 }
346 404
347 Interface *i = interfaceItems[item]; 405 Interface *i = interfaceItems[item];
348 if(!i->isAttached()){ 406 if(!i->isAttached()){
349 QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok); 407 QMessageBox::information(this, "Sorry","No information about\na disconnected interface.", QMessageBox::Ok);
350 return; 408 return;
351 } 409 }
352 410
353 if(i->getModuleOwner()){ 411 if(i->getModuleOwner()){
354 QWidget *moduleInformation = i->getModuleOwner()->information(i); 412 QWidget *moduleInformation = i->getModuleOwner()->information(i);
355 if(moduleInformation != NULL){ 413 if(moduleInformation != NULL){
356 moduleInformation->showMaximized(); 414 moduleInformation->showMaximized();
415#ifdef DEBUG
416 qDebug("MainWindowImp::informationClicked:: Module owner has created, we showed.");
417#endif
357 return; 418 return;
358 } 419 }
359 } 420 }
360 InterfaceInformationImp information(0, "InterfaceSetupImp", i); 421 InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WShowModal | Qt::WDestructiveClose | Qt::WType_Dialog);
361 information.showMaximized(); 422 information->showMaximized();
362} 423}
363 424
364/** 425/**
365 * Update this interface. If no QListViewItem exists create one. 426 * Update this interface. If no QListViewItem exists create one.
366 * @param Interface* pointer to the interface that needs to be updated. 427 * @param Interface* pointer to the interface that needs to be updated.
367 */ 428 */
368void MainWindowImp::updateInterface(Interface *i){ 429void MainWindowImp::updateInterface(Interface *i){
369 if(!advancedUserMode){ 430 if(!advancedUserMode){
370 if(i->getInterfaceName() == "lo") 431 if(i->getInterfaceName() == "lo")
371 return; 432 return;
372 } 433 }
373 434
374 QListViewItem *item = NULL; 435 QListViewItem *item = NULL;
375 436
376 // Find the interface, making it if needed. 437 // Find the interface, making it if needed.
377 if(items.find(i) == items.end()){ 438 if(items.find(i) == items.end()){
378 item = new QListViewItem(connectionList, "", "", ""); 439 item = new QListViewItem(connectionList, "", "", "");
379 // See if you can't find a module owner for this interface 440 // See if you can't find a module owner for this interface
380 QMap<Module*, QLibrary*>::Iterator it; 441 QMap<Module*, QLibrary*>::Iterator it;
381 for( it = libraries.begin(); it != libraries.end(); ++it ){ 442 for( it = libraries.begin(); it != libraries.end(); ++it ){
382 if(it.key()->isOwner(i)) 443 if(it.key()->isOwner(i))
383 i->setModuleOwner(it.key()); 444 i->setModuleOwner(it.key());
384 } 445 }
385 items.insert(i, item); 446 items.insert(i, item);
386 interfaceItems.insert(item, i); 447 interfaceItems.insert(item, i);
387 } 448 }
388 else 449 else
389 item = items[i]; 450 item = items[i];
390 451
391 // Update the icons and information 452 // Update the icons and information
453#ifdef QTE_VERSION
392 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down"))); 454 item->setPixmap(0, (Resource::loadPixmap(i->getStatus() ? "up": "down")));
393 455#else
456 item->setPixmap(0, (SmallIcon(i->getStatus() ? "up": "down")));
457#endif
458
394 QString typeName = "lan"; 459 QString typeName = "lan";
395 if(i->getHardwareName().contains("Local Loopback")) 460 if(i->getHardwareName().contains("Local Loopback"))
396 typeName = "lo"; 461 typeName = "lo";
397 if(i->getInterfaceName().contains("irda")) 462 if(i->getInterfaceName().contains("irda"))
398 typeName = "irda"; 463 typeName = "irda";
399 if(i->getInterfaceName().contains("wlan")) 464 if(i->getInterfaceName().contains("wlan"))
400 typeName = "wlan"; 465 typeName = "wlan";
401 if(i->getInterfaceName().contains("usb")) 466 if(i->getInterfaceName().contains("usb"))
402 typeName = "usb"; 467 typeName = "usb";
403 468
404 if(!i->isAttached()) 469 if(!i->isAttached())
405 typeName = "connect_no"; 470 typeName = "connect_no";
406 // Actually try to use the Module 471 // Actually try to use the Module
407 if(i->getModuleOwner() != NULL) 472 if(i->getModuleOwner() != NULL)
408 typeName = i->getModuleOwner()->getPixmapName(i); 473 typeName = i->getModuleOwner()->getPixmapName(i);
409 474
475#ifdef QTE_VERSION
410 item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName))); 476 item->setPixmap(1, (Resource::loadPixmap(QString("networksettings/") + typeName)));
477#else
478 item->setPixmap(1, (SmallIcon(typeName)));
479#endif
411 item->setText(2, i->getHardwareName()); 480 item->setText(2, i->getHardwareName());
412 item->setText(3, QString("(%1)").arg(i->getInterfaceName())); 481 item->setText(3, QString("(%1)").arg(i->getInterfaceName()));
413 item->setText(4, (i->getStatus()) ? i->getIp() : QString("")); 482 item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
414} 483}
415 484
416void MainWindowImp::newProfileChanged(const QString& newText){ 485void MainWindowImp::newProfileChanged(const QString& newText){
417 if(newText.length() > 0) 486 if(newText.length() > 0)
418 newProfileButton->setEnabled(true); 487 newProfileButton->setEnabled(true);
419 else 488 else
420 newProfileButton->setEnabled(false); 489 newProfileButton->setEnabled(false);
421} 490}
422 491
423/** 492/**
424 * Adds a new profile to the list of profiles. 493 * Adds a new profile to the list of profiles.
425 * Don't add profiles that already exists. 494 * Don't add profiles that already exists.
426 * Appends to the list and QStringList 495 * Appends to the list and QStringList
427 */ 496 */
428void MainWindowImp::addProfile(){ 497void MainWindowImp::addProfile(){
429 QString newProfileName = newProfile->text(); 498 QString newProfileName = newProfile->text();
430 if(profiles.grep(newProfileName).count() > 0){ 499 if(profiles.grep(newProfileName).count() > 0){
431 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok); 500 QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok);
432 return; 501 return;
433 } 502 }
434 profiles.append(newProfileName); 503 profiles.append(newProfileName);
435 profilesList->insertItem(newProfileName); 504 profilesList->insertItem(newProfileName);
436} 505}
437 506
438/** 507/**
439 * Removes the currently selected profile in the combo. 508 * Removes the currently selected profile in the combo.
440 * Doesn't delete if there are less then 2 profiles. 509 * Doesn't delete if there are less then 2 profiles.
441 */ 510 */
442void MainWindowImp::removeProfile(){ 511void MainWindowImp::removeProfile(){
diff --git a/noncore/settings/networksettings/mainwindowimp.h b/noncore/settings/networksettings/mainwindowimp.h
index 4f09d6c..2ebf304 100644
--- a/noncore/settings/networksettings/mainwindowimp.h
+++ b/noncore/settings/networksettings/mainwindowimp.h
@@ -1,58 +1,69 @@
1#ifndef MAINWINOWIMP_H 1#ifndef MAINWINOWIMP_H
2#define MAINWINOWIMP_H 2#define MAINWINOWIMP_H
3 3
4#include "mainwindow.h" 4#include "mainwindow.h"
5#include <qmap.h> 5#include <qmap.h>
6#include <qstringlist.h> 6#include <qstringlist.h>
7 7
8class Module; 8class Module;
9class Interface; 9class Interface;
10class QLibrary; 10class QLibrary;
11class KProcess; 11class KProcess;
12#ifdef QTE_VERSION
13class QLibrary;
14#else
15class KLibrary;
16class KLibLoader;
17#define QLibrary KLibrary
18#endif
19
12 20
13class MainWindowImp : public MainWindow { 21class MainWindowImp : public MainWindow {
14 Q_OBJECT 22 Q_OBJECT
15 23
16public: 24public:
17 MainWindowImp(QWidget *parent=0, const char *name=0); 25 MainWindowImp(QWidget *parent=0, const char *name=0);
18 ~MainWindowImp(); 26 ~MainWindowImp();
19 27
20private slots: 28private slots:
21 void getAllInterfaces(); 29 void getAllInterfaces();
22 30
23 void addClicked(); 31 void addClicked();
24 void removeClicked(); 32 void removeClicked();
25 void configureClicked(); 33 void configureClicked();
26 void informationClicked(); 34 void informationClicked();
27 35
28 void addProfile(); 36 void addProfile();
29 void removeProfile(); 37 void removeProfile();
30 void changeProfile(); 38 void changeProfile();
31 39
32 void updateInterface(Interface *i); 40 void updateInterface(Interface *i);
33 void newProfileChanged(const QString& newText); 41 void newProfileChanged(const QString& newText);
34 42
35private: 43private:
36 void loadModules(const QString &path); 44 void loadModules(const QString &path);
37 45
38 Module* loadPlugin(const QString &pluginFileName, 46 Module* loadPlugin(const QString &pluginFileName,
39 const QString &resolveString = "create_plugin"); 47 const QString &resolveString = "create_plugin");
40 48
41 // For our local list of names 49 // For our local list of names
42 QMap<QString, Interface*> interfaceNames; 50 QMap<QString, Interface*> interfaceNames;
43 51
44 QMap<Module*, QLibrary*> libraries; 52 QMap<Module*, QLibrary*> libraries;
45 QMap<Interface*, QListViewItem*> items; 53 QMap<Interface*, QListViewItem*> items;
46 QMap<QListViewItem*, Interface*> interfaceItems; 54 QMap<QListViewItem*, Interface*> interfaceItems;
47 55
48 QMap<KProcess*, QString> threads; 56 QMap<KProcess*, QString> threads;
49 QStringList profiles; 57 QStringList profiles;
50 58
51 bool advancedUserMode; 59 bool advancedUserMode;
52 QString scheme; 60 QString scheme;
61#ifndef QTE_VERSION
62 KLibLoader *loader;
63#endif
53}; 64};
54 65
55#endif 66#endif
56 67
57// mainwindowimp.h 68// mainwindowimp.h
58 69
diff --git a/noncore/settings/networksettings/module.h b/noncore/settings/networksettings/module.h
index 2e6272b..46a3c77 100644
--- a/noncore/settings/networksettings/module.h
+++ b/noncore/settings/networksettings/module.h
@@ -1,37 +1,41 @@
1#ifndef NETCONF_MODULE_H 1#ifndef NETCONF_MODULE_H
2#define NETCONF_MODULE_H 2#define NETCONF_MODULE_H
3 3
4#include <qobject.h> 4#include <qobject.h>
5#if QT_VERSION < 300
5#include <qlist.h> 6#include <qlist.h>
7#else
8#include <qptrlist.h>
9#endif
6#include <qmap.h> 10#include <qmap.h>
7#include "interface.h" 11#include "interface.h"
8 12
9class QWidget; 13class QWidget;
10class QTabWidget; 14class QTabWidget;
11 15
12class Module : QObject{ 16class Module : QObject{
13 17
14signals: 18signals:
15 void updateInterface(Interface *i); 19 void updateInterface(Interface *i);
16 20
17public: 21public:
18 Module(){}; 22 Module(){};
19 23
20 /** 24 /**
21 * The current profile has been changed and the module should do any 25 * The current profile has been changed and the module should do any
22 * neccesary changes also. 26 * neccesary changes also.
23 * @param newProfile what the profile should be changed to. 27 * @param newProfile what the profile should be changed to.
24 */ 28 */
25 virtual void setProfile(const QString &newProfile) = 0; 29 virtual void setProfile(const QString &newProfile) = 0;
26 30
27 /** 31 /**
28 * get the icon name for this device. 32 * get the icon name for this device.
29 * @param Interface* can be used in determining the icon. 33 * @param Interface* can be used in determining the icon.
30 * @return QString the icon name (minus .png, .gif etc) 34 * @return QString the icon name (minus .png, .gif etc)
31 */ 35 */
32 virtual QString getPixmapName(Interface *) = 0; 36 virtual QString getPixmapName(Interface *) = 0;
33 37
34 /** 38 /**
35 * Check to see if the interface i is owned by this module. 39 * Check to see if the interface i is owned by this module.
36 * @param Interface* interface to check against 40 * @param Interface* interface to check against
37 * @return bool true if i is owned by this module, false otherwise. 41 * @return bool true if i is owned by this module, false otherwise.