summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/mainwindowimp.cpp
Unidiff
Diffstat (limited to 'noncore/settings/networksettings/mainwindowimp.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp44
1 files changed, 42 insertions, 2 deletions
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 4119490..0ef1e68 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,37 +1,38 @@
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#include <qpe/qcopenvelope_qws.h>
14#include <qtabwidget.h> // in order to disable the profiles tab 15#include <qtabwidget.h> // in order to disable the profiles tab
15 16
16#include <qmessagebox.h> 17#include <qmessagebox.h>
17 18
18#ifdef QWS 19#ifdef QWS
19 #include <qpe/config.h> 20 #include <qpe/config.h>
20 #include <qpe/qlibrary.h> 21 #include <qpe/qlibrary.h>
21 #include <qpe/resource.h> 22 #include <qpe/resource.h>
22 #include <qpe/qpeapplication.h> 23 #include <qpe/qpeapplication.h>
23#else 24#else
24 #include <klibloader.h> 25 #include <klibloader.h>
25 #define QLibrary KLibrary 26 #define QLibrary KLibrary
26 #include <kconfig.h> 27 #include <kconfig.h>
27 #define Config KConfig 28 #define Config KConfig
28 #include <kapplication.h> 29 #include <kapplication.h>
29 #include <kstandarddirs.h> 30 #include <kstandarddirs.h>
30 #include <kiconloader.h> 31 #include <kiconloader.h>
31 #define showMaximized show 32 #define showMaximized show
32#endif 33#endif
33 34
34#if QT_VERSION < 300 35#if QT_VERSION < 300
35#include <qlist.h> 36#include <qlist.h>
36#else 37#else
37#include <qptrlist.h> 38#include <qptrlist.h>
@@ -40,49 +41,49 @@
40#include <qfile.h> 41#include <qfile.h>
41#include <qtextstream.h> 42#include <qtextstream.h>
42#include <qregexp.h> 43#include <qregexp.h>
43 44
44#include <net/if.h> 45#include <net/if.h>
45#include <sys/ioctl.h> 46#include <sys/ioctl.h>
46#include <sys/socket.h> 47#include <sys/socket.h>
47 48
48#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme" 49#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
49#define _PROCNETDEV "/proc/net/dev" 50#define _PROCNETDEV "/proc/net/dev"
50 51
51MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name), advancedUserMode(true), scheme(DEFAULT_SCHEME){ 52MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name), advancedUserMode(true), scheme(DEFAULT_SCHEME){
52 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked())); 53 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
53 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 54 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
54 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 55 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
55 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 56 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
56 57
57 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 58 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
58 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 59 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
59 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile())); 60 connect(setCurrentProfileButton, SIGNAL(clicked()), this, SLOT(changeProfile()));
60 61
61 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&))); 62 connect(newProfile, SIGNAL(textChanged(const QString&)), this, SLOT(newProfileChanged(const QString&)));
62 63
63 //FIXME: disable profiles for the moment: 64 //FIXME: disable profiles for the moment:
64 tabWidget->setTabEnabled( tab, false ); 65// tabWidget->setTabEnabled( tab, false );
65 66
66 // Load connections. 67 // Load connections.
67 // /usr/local/kde/lib/libinterfaces.la 68 // /usr/local/kde/lib/libinterfaces.la
68#ifdef QWS 69#ifdef QWS
69 loadModules(QPEApplication::qpeDir() + "/plugins/networksettings"); 70 loadModules(QPEApplication::qpeDir() + "/plugins/networksettings");
70#else 71#else
71 loader = KLibLoader::self(); 72 loader = KLibLoader::self();
72 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib")); 73 loadModules(QString("/usr/")+KStandardDirs::kde_default("lib"));
73#endif 74#endif
74 getAllInterfaces(); 75 getAllInterfaces();
75 76
76 Interfaces i; 77 Interfaces i;
77 QStringList list = i.getInterfaceList(); 78 QStringList list = i.getInterfaceList();
78 QMap<QString, Interface*>::Iterator it; 79 QMap<QString, Interface*>::Iterator it;
79 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) { 80 for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
80 bool found = false; 81 bool found = false;
81 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){ 82 for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
82 if(it.key() == (*ni)) 83 if(it.key() == (*ni))
83 found = true; 84 found = true;
84 } 85 }
85 if(!found){ 86 if(!found){
86 if(!(*ni).contains("_")){ 87 if(!(*ni).contains("_")){
87 Interface *i = new Interface(this, *ni, false); 88 Interface *i = new Interface(this, *ni, false);
88 i->setAttached(false); 89 i->setAttached(false);
@@ -98,48 +99,49 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
98 connectionList->header()->hide(); 99 connectionList->header()->hide();
99 100
100 Config cfg("NetworkSetup"); 101 Config cfg("NetworkSetup");
101 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 102 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
102 for ( QStringList::Iterator it = profiles.begin(); 103 for ( QStringList::Iterator it = profiles.begin();
103 it != profiles.end(); ++it) 104 it != profiles.end(); ++it)
104 profilesList->insertItem((*it)); 105 profilesList->insertItem((*it));
105 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All")); 106 currentProfileLabel->setText(cfg.readEntry("CurrentProfile", "All"));
106 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false); 107 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
107 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME); 108 scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME);
108 109
109 QFile file(scheme); 110 QFile file(scheme);
110 if ( file.open(IO_ReadOnly) ) { // file opened successfully 111 if ( file.open(IO_ReadOnly) ) { // file opened successfully
111 QTextStream stream( &file ); // use a text stream 112 QTextStream stream( &file ); // use a text stream
112 while ( !stream.eof() ) { // until end of file... 113 while ( !stream.eof() ) { // until end of file...
113 QString line = stream.readLine(); // line of text excluding '\n' 114 QString line = stream.readLine(); // line of text excluding '\n'
114 if(line.contains("SCHEME")){ 115 if(line.contains("SCHEME")){
115 line = line.mid(7, line.length()); 116 line = line.mid(7, line.length());
116 currentProfileLabel->setText(line); 117 currentProfileLabel->setText(line);
117 break; 118 break;
118 } 119 }
119 } 120 }
120 file.close(); 121 file.close();
121 } 122 }
123 makeChannel();
122} 124}
123 125
124/** 126/**
125 * Deconstructor. Save profiles. Delete loaded libraries. 127 * Deconstructor. Save profiles. Delete loaded libraries.
126 */ 128 */
127MainWindowImp::~MainWindowImp(){ 129MainWindowImp::~MainWindowImp(){
128 // Save profiles. 130 // Save profiles.
129 Config cfg("NetworkSetup"); 131 Config cfg("NetworkSetup");
130 cfg.setGroup("General"); 132 cfg.setGroup("General");
131 cfg.writeEntry("Profiles", profiles.join(" ")); 133 cfg.writeEntry("Profiles", profiles.join(" "));
132 134
133 // Delete all interfaces that don't have owners. 135 // Delete all interfaces that don't have owners.
134 QMap<Interface*, QListViewItem*>::Iterator iIt; 136 QMap<Interface*, QListViewItem*>::Iterator iIt;
135 for( iIt = items.begin(); iIt != items.end(); ++iIt ){ 137 for( iIt = items.begin(); iIt != items.end(); ++iIt ){
136 if(iIt.key()->getModuleOwner() == NULL) 138 if(iIt.key()->getModuleOwner() == NULL)
137 delete iIt.key(); 139 delete iIt.key();
138 } 140 }
139 141
140#ifdef QWS 142#ifdef QWS
141 // Delete Modules and Libraries 143 // Delete Modules and Libraries
142 QMap<Module*, QLibrary*>::Iterator it; 144 QMap<Module*, QLibrary*>::Iterator it;
143 for( it = libraries.begin(); it != libraries.end(); ++it ){ 145 for( it = libraries.begin(); it != libraries.end(); ++it ){
144 delete it.key(); 146 delete it.key();
145 // I wonder why I can't delete the libraries 147 // I wonder why I can't delete the libraries
@@ -172,49 +174,50 @@ void MainWindowImp::getAllInterfaces(){
172 ifc.ifc_req = ifrs; 174 ifc.ifc_req = ifrs;
173 result = ioctl(sockfd, SIOCGIFCONF, &ifc); 175 result = ioctl(sockfd, SIOCGIFCONF, &ifc);
174 176
175 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) { 177 for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) {
176 struct ifreq *pifr = &ifrs[i]; 178 struct ifreq *pifr = &ifrs[i];
177 179
178 ifaces += pifr->ifr_name; 180 ifaces += pifr->ifr_name;
179 } 181 }
180 } else { 182 } else {
181 procFile.open(IO_ReadOnly); 183 procFile.open(IO_ReadOnly);
182 QString line; 184 QString line;
183 QTextStream procTs(&procFile); 185 QTextStream procTs(&procFile);
184 int loc = -1; 186 int loc = -1;
185 187
186 procTs.readLine(); // eat a line 188 procTs.readLine(); // eat a line
187 procTs.readLine(); // eat a line 189 procTs.readLine(); // eat a line
188 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) { 190 while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) {
189 if((loc = line.find(":")) != -1) { 191 if((loc = line.find(":")) != -1) {
190 ifaces += line.left(loc); 192 ifaces += line.left(loc);
191 } 193 }
192 } 194 }
193 } 195 }
194 196
195 for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it) { 197 for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it) {
196 int flags = 0, family; 198 int flags = 0;
199// int family;
197 i = NULL; 200 i = NULL;
198 201
199 strcpy(ifr.ifr_name, (*it).latin1()); 202 strcpy(ifr.ifr_name, (*it).latin1());
200 203
201 struct ifreq ifcopy; 204 struct ifreq ifcopy;
202 ifcopy = ifr; 205 ifcopy = ifr;
203 result = ioctl(sockfd, SIOCGIFFLAGS, &ifcopy); 206 result = ioctl(sockfd, SIOCGIFFLAGS, &ifcopy);
204 flags = ifcopy.ifr_flags; 207 flags = ifcopy.ifr_flags;
205 i = new Interface(this, ifr.ifr_name, false); 208 i = new Interface(this, ifr.ifr_name, false);
206 i->setAttached(true); 209 i->setAttached(true);
207 if ((flags & IFF_UP) == IFF_UP) 210 if ((flags & IFF_UP) == IFF_UP)
208 i->setStatus(true); 211 i->setStatus(true);
209 else 212 else
210 i->setStatus(false); 213 i->setStatus(false);
211 214
212 if ((flags & IFF_BROADCAST) == IFF_BROADCAST) 215 if ((flags & IFF_BROADCAST) == IFF_BROADCAST)
213 i->setHardwareName("Ethernet"); 216 i->setHardwareName("Ethernet");
214 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT) 217 else if ((flags & IFF_POINTOPOINT) == IFF_POINTOPOINT)
215 i->setHardwareName("Point to Point"); 218 i->setHardwareName("Point to Point");
216 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST) 219 else if ((flags & IFF_MULTICAST) == IFF_MULTICAST)
217 i->setHardwareName("Multicast"); 220 i->setHardwareName("Multicast");
218 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK) 221 else if ((flags & IFF_LOOPBACK) == IFF_LOOPBACK)
219 i->setHardwareName("Loopback"); 222 i->setHardwareName("Loopback");
220 else 223 else
@@ -603,24 +606,61 @@ void MainWindowImp::changeProfile(){
603 } 606 }
604 QString newProfile = profilesList->text(profilesList->currentItem()); 607 QString newProfile = profilesList->text(profilesList->currentItem());
605 if(newProfile != currentProfileLabel->text()){ 608 if(newProfile != currentProfileLabel->text()){
606 currentProfileLabel->setText(newProfile); 609 currentProfileLabel->setText(newProfile);
607 QFile::remove(scheme); 610 QFile::remove(scheme);
608 QFile file(scheme); 611 QFile file(scheme);
609 if ( file.open(IO_ReadWrite) ) { 612 if ( file.open(IO_ReadWrite) ) {
610 QTextStream stream( &file ); 613 QTextStream stream( &file );
611 stream << QString("SCHEME=%1").arg(newProfile); 614 stream << QString("SCHEME=%1").arg(newProfile);
612 file.close(); 615 file.close();
613 } 616 }
614 // restart all up devices? 617 // restart all up devices?
615 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){ 618 if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){
616 // Go through them one by one 619 // Go through them one by one
617 QMap<Interface*, QListViewItem*>::Iterator it; 620 QMap<Interface*, QListViewItem*>::Iterator it;
618 for( it = items.begin(); it != items.end(); ++it ){ 621 for( it = items.begin(); it != items.end(); ++it ){
619 if(it.key()->getStatus() == true) 622 if(it.key()->getStatus() == true)
620 it.key()->restart(); 623 it.key()->restart();
621 } 624 }
622 } 625 }
623 } 626 }
624 // TODO change the profile in the modules 627 // TODO change the profile in the modules
625} 628}
626 629
630
631void MainWindowImp::makeChannel()
632{
633 channel = new QCopChannel( "QPE/Application/networksettings", this );
634 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
635 this, SLOT(receive(const QCString&, const QByteArray&)) );
636}
637
638void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
639{
640 bool found = false;
641 qDebug("MainWindowImp::receive QCop msg >"+msg+"<");
642
643 QString dest = msg.left(msg.find("("));
644 QCString param = msg.right(msg.length() - msg.find("(") - 1);
645 param = param.left( param.length() - 1 );
646 qDebug("dest >%s< param >"+param+"<",dest.latin1());
647
648// if (param.contains("QString,QString,QString")) {
649// QDataStream stream(arg,IO_ReadOnly);
650// QString arg1, arg2, arg3;
651// stream >> arg1 >> arg2 >> arg3 ;
652// qDebug("args: >%s< >%s< >%s<",arg1.latin1(),arg2.latin1(),arg3.latin1());
653// }
654
655 QMap<Module*, QLibrary*>::Iterator it;
656 for( it = libraries.begin(); it != libraries.end(); ++it ){
657 qDebug("plugin >%s<", it.key()->type().latin1() );
658 if(it.key()->type() == dest){
659 it.key()->receive( param, arg );
660 found = true;
661 }
662 }
663
664
665 if (!found) qDebug("Huh what do ya want");
666}