summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/mainwindowimp.cpp
authorbenmeyer <benmeyer>2002-10-02 17:22:50 (UTC)
committer benmeyer <benmeyer>2002-10-02 17:22:50 (UTC)
commit527e77d8244fb25d0bab39857eebbdfbcbfb807a (patch) (unidiff)
treef3ec7cee3573ef83d8d86f859c7c3de3a8b06b9f /noncore/settings/networksettings/mainwindowimp.cpp
parent6e50141595ec2159d384c2cb9aaee4758eb720ea (diff)
downloadopie-527e77d8244fb25d0bab39857eebbdfbcbfb807a.zip
opie-527e77d8244fb25d0bab39857eebbdfbcbfb807a.tar.gz
opie-527e77d8244fb25d0bab39857eebbdfbcbfb807a.tar.bz2
Add Connection function more filled in
Diffstat (limited to 'noncore/settings/networksettings/mainwindowimp.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp195
1 files changed, 101 insertions, 94 deletions
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index 89dac6f..66ec8b5 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,10 +1,10 @@
1#include "mainwindowimp.h" 1#include "mainwindowimp.h"
2#include "addserviceimp.h" 2#include "addconnectionimp.h"
3#include "interfaceinformationimp.h" 3#include "interfaceinformationimp.h"
4#include "interfacesetupimp.h" 4#include "interfacesetupimp.h"
5#include "kprocess.h"
6#include "module.h" 5#include "module.h"
7 6
7#include "kprocess.h"
8 8
9#include <qpushbutton.h> 9#include <qpushbutton.h>
10#include <qtabwidget.h> 10#include <qtabwidget.h>
@@ -25,72 +25,68 @@
25#include <qfile.h> 25#include <qfile.h>
26#include <qtextstream.h> 26#include <qtextstream.h>
27 27
28// For library loading.
29#include <dlfcn.h>
30
31#define TEMP_ALL "/tmp/ifconfig-a" 28#define TEMP_ALL "/tmp/ifconfig-a"
32#define TEMP_UP "/tmp/ifconfig" 29#define TEMP_UP "/tmp/ifconfig"
33 30
34MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true) { 31MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(parent, name, true), advancedUserMode(false){
35 connect(addServiceButton, SIGNAL(clicked()), this, SLOT(addClicked())); 32 connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
36 connect(removeServiceButton, SIGNAL(clicked()), this, SLOT(removeClicked())); 33 connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
37 connect(informationServiceButton, SIGNAL(clicked()), this, SLOT(informationClicked())); 34 connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
38 connect(configureServiceButton, SIGNAL(clicked()), this, SLOT(configureClicked())); 35 connect(configureConnectionButton, SIGNAL(clicked()), this, SLOT(configureClicked()));
39 36
40 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile())); 37 connect(newProfileButton, SIGNAL(clicked()), this, SLOT(addProfile()));
41 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile())); 38 connect(removeProfileButton, SIGNAL(clicked()), this, SLOT(removeProfile()));
42 connect(profilesList, SIGNAL(highlighted(const QString&)), this, SLOT(changeProfile(const QString&))); 39 connect(profilesList, SIGNAL(highlighted(const QString&)), this, SLOT(changeProfile(const QString&)));
43 40
44 // Make sure we have a plugin directory to scan. 41 // Load connections.
45 QString DirStr = QDir::homeDirPath() + "/.networksetup/" ; 42 loadModules(QDir::homeDirPath() + "/.networksetup/plugins");
46 QDir pluginDir( DirStr );
47 pluginDir.mkdir( DirStr );
48 pluginDir.mkdir( ( DirStr + "plugins/" ) );
49 QString path = DirStr + "plugins";
50 pluginDir.setPath(path);
51 if(!pluginDir.exists()){
52 qDebug(QString("MainWindowImp: ERROR: %1 %2").arg(__FILE__).arg(__LINE__).latin1());
53 return;
54 }
55
56 // Load any saved services.
57 loadModules(path);
58 getInterfaceList(); 43 getInterfaceList();
59 serviceList->header()->hide(); 44 connectionList->header()->hide();
60 45
61 46
62 Config cfg("NetworkSetup"); 47 Config cfg("NetworkSetup");
63 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All")); 48 profiles = QStringList::split(" ", cfg.readEntry("Profiles", "All"));
64 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it) 49 for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
65 profilesList->insertItem((*it)); 50 profilesList->insertItem((*it));
51 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
66} 52}
67 53
68/** 54/**
69 * Deconstructor. Unload libraries and save profile list. 55 * Deconstructor. Save profiles. Delete loaded libraries.
70 */ 56 */
71MainWindowImp::~MainWindowImp(){ 57MainWindowImp::~MainWindowImp(){
58 // Save profiles.
72 if(profiles.count() > 1){ 59 if(profiles.count() > 1){
73 Config cfg("NetworkSetup"); 60 Config cfg("NetworkSetup");
74 cfg.writeEntry("Profiles", profiles.join(" ")); 61 cfg.writeEntry("Profiles", profiles.join(" "));
75 } 62 }
63 // Delete Modules and Libraries
64 QMap<Module*, QLibrary*>::Iterator it;
65 for( it = libraries.begin(); it != libraries.end(); ++it ){
66 delete it.key();
67 delete it.data();
68 }
76} 69}
77 70
71/**
72 * Load all modules that are found in the path
73 * @param path a directory that is scaned for any plugins that can be loaded
74 * and attempts to load them
75 */
78void MainWindowImp::loadModules(QString path){ 76void MainWindowImp::loadModules(QString path){
79 qDebug(path.latin1()); 77 qDebug(path.latin1());
80 QDir d; 78 QDir d(path);
81 d.setPath(path); 79 if(!d.exists())
82 if(!d.exists()){
83 qDebug("MainWindowImp:: Path doesn't exists");
84 return; 80 return;
85 } 81
82 // Don't want sym links
86 d.setFilter( QDir::Files | QDir::NoSymLinks ); 83 d.setFilter( QDir::Files | QDir::NoSymLinks );
87 const QFileInfoList *list = d.entryInfoList(); 84 const QFileInfoList *list = d.entryInfoList();
88 QFileInfoListIterator it( *list ); 85 QFileInfoListIterator it( *list );
89 QFileInfo *fi; 86 QFileInfo *fi;
90 while ( (fi=it.current()) ) { 87 while ( (fi=it.current()) ) {
91 if(fi->fileName().contains(".so")){ 88 if(fi->fileName().contains(".so")){
92 qDebug("Found"); 89 loadPlugin(path + "/" + fi->fileName());
93 Module *foo = loadPlugin(path + "/" + fi->fileName());
94 } 90 }
95 ++it; 91 ++it;
96 } 92 }
@@ -103,7 +99,7 @@ void MainWindowImp::loadModules(QString path){
103 * @return pointer to the function with name resolveString or NULL 99 * @return pointer to the function with name resolveString or NULL
104 */ 100 */
105Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){ 101Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString){
106 qDebug(pluginFileName.latin1()); 102 qDebug(QString("MainWindowImp::loadPlugin: %1").arg(pluginFileName).latin1());
107 QLibrary *lib = new QLibrary(pluginFileName); 103 QLibrary *lib = new QLibrary(pluginFileName);
108 void *functionPointer = lib->resolve(resolveString); 104 void *functionPointer = lib->resolve(resolveString);
109 if( !functionPointer ){ 105 if( !functionPointer ){
@@ -120,7 +116,7 @@ Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString)
120 return NULL; 116 return NULL;
121 } 117 }
122 118
123 // Store for reference 119 // Store for deletion later
124 libraries.insert(object, lib); 120 libraries.insert(object, lib);
125 return object; 121 return object;
126} 122}
@@ -130,14 +126,25 @@ Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString)
130 * load the plugin and append it to the list 126 * load the plugin and append it to the list
131 */ 127 */
132void MainWindowImp::addClicked(){ 128void MainWindowImp::addClicked(){
133 // Now that we have a list of all of the protocals, list them. 129 QMap<Module*, QLibrary*>::Iterator it;
134 { 130 QMap<QString, QString> list;
135 QMessageBox::information(this, "No Modules", "Nothing to add.", "Ok"); 131 list.insert("USB (PPP) / (ADD_TEST)", "A dialup connection over the USB port");
132 list.insert("IrDa (PPP) / (ADD_TEST)", "A dialup connection over the IdDa port");
133 for( it = libraries.begin(); it != libraries.end(); ++it ){
134 if(it.key())
135 (it.key())->possibleNewInterfaces(list);
136 }
137 // See if the list has anything that we can add.
138 if(list.count() == 0){
139 QMessageBox::information(this, "Sorry", "Nothing to add.", "Ok");
136 return; 140 return;
137 } 141 }
138 AddServiceImp service(this, "AddService", true); 142 AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
139 service.showMaximized(); 143 addNewConnection.addConnections(list);
140 service.exec(); 144 addNewConnection.showMaximized();
145 if(QDialog::Accepted == addNewConnection.exec()){
146
147 }
141} 148}
142 149
143/** 150/**
@@ -145,7 +152,7 @@ void MainWindowImp::addClicked(){
145 * If they do then remove from the list and unload. 152 * If they do then remove from the list and unload.
146 */ 153 */
147void MainWindowImp::removeClicked(){ 154void MainWindowImp::removeClicked(){
148 QListViewItem *item = serviceList->currentItem(); 155 QListViewItem *item = connectionList->currentItem();
149 if(item == NULL) { 156 if(item == NULL) {
150 QMessageBox::information(this, "Error","Please select an interface.", "Ok"); 157 QMessageBox::information(this, "Error","Please select an interface.", "Ok");
151 return; 158 return;
@@ -161,76 +168,69 @@ void MainWindowImp::removeClicked(){
161} 168}
162 169
163/** 170/**
164 * See if there is a configuration for the selected protocal. 171 * Pull up the configure about the currently selected interface.
165 * Prompt with errors. 172 * Report an error if no interface is selected.
173 * If the interface has a module owner then request its configure with a empty
174 * tab. If tab is !NULL then append the interfaces setup widget to it.
166 */ 175 */
167void MainWindowImp::configureClicked(){ 176void MainWindowImp::configureClicked(){
168 QListViewItem *item = serviceList->currentItem(); 177 QListViewItem *item = connectionList->currentItem();
169 if(item == NULL){ 178 if(!item){
170 QMessageBox::information(this, "Error","Please select an interface.", "Ok"); 179 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
171 return; 180 return;
172 } 181 }
173 182
174 if((interfaceItems[item])->getModuleOwner() == NULL){ 183 Interface *i = interfaceItems[item];
175 InterfaceSetupImp *conf = new InterfaceSetupImp(0, "InterfaceConfiguration", interfaceItems[item]); 184 if(i->getModuleOwner()){
176 conf->showMaximized(); 185 QTabWidget *tabWidget = NULL;
177 conf->show(); 186 QWidget *moduleConfigure = i->getModuleOwner()->configure(&tabWidget);
187 if(moduleConfigure != NULL){
188 if(tabWidget != NULL){
189 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true);
190 tabWidget->insertTab(configure, "TCP/IP");
178 } 191 }
179 else{ 192 moduleConfigure->showMaximized();
180 QTabWidget *t = NULL; 193 moduleConfigure->show();
181 QWidget *conf = (interfaceItems[item])->getModuleOwner()->configure(&t); 194 return;
182 if(conf != NULL){
183 qDebug("Conf found");
184 if(t != NULL){
185 qDebug("Adding Interface");
186 InterfaceSetupImp *i = new InterfaceSetupImp(t, "TCPIPInformation", interfaceItems[item], true);
187 t->insertTab(i, "TCP/IP");
188 }
189 conf->showMaximized();
190 conf->show();
191 }
192 else{
193 InterfaceSetupImp *i = new InterfaceSetupImp(0, "TCPIPInformation", interfaceItems[item], true);
194 i->showMaximized();
195 i->show();
196 } 195 }
197 } 196 }
197
198 InterfaceSetupImp *configure = new InterfaceSetupImp(0, "InterfaceSetupImp", i, true);
199 configure->showMaximized();
200 configure->show();
198} 201}
199 202
200/** 203/**
201 * Pull up the information about the selected interface 204 * Pull up the information about the currently selected interface.
202 * Report an error 205 * Report an error if no interface is selected.
206 * If the interface has a module owner then request its configure with a empty
207 * tab. If tab is !NULL then append the interfaces setup widget to it.
203 */ 208 */
204void MainWindowImp::informationClicked(){ 209void MainWindowImp::informationClicked(){
205 QListViewItem *item = serviceList->currentItem(); 210 QListViewItem *item = connectionList->currentItem();
206 if(item == NULL){ 211 if(!item){
207 QMessageBox::information(this, "Error","Please select an interface.", "Ok"); 212 QMessageBox::information(this, "Error","Please select an interface.", QMessageBox::Ok);
208 return; 213 return;
209 } 214 }
210 215
211 if( (interfaceItems[item])->getModuleOwner() == NULL){ 216 Interface *i = interfaceItems[item];
212 InterfaceInformationImp *i = new InterfaceInformationImp(0, "InterfaceInformationImp", interfaceItems[item]); 217 if(i->getModuleOwner()){
213 i->showMaximized(); 218 QTabWidget *tabWidget = NULL;
214 i->show(); 219 QWidget *moduleInformation = i->getModuleOwner()->information(&tabWidget);
220 if(moduleInformation != NULL){
221 if(tabWidget != NULL){
222 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true);
223 tabWidget->insertTab(information, "TCP/IP");
215 } 224 }
216 else{ 225 moduleInformation->showMaximized();
217 QTabWidget *t = NULL; 226 moduleInformation->show();
218 QWidget *conf = (interfaceItems[item])->getModuleOwner()->information(&t); 227 return;
219 if(conf != NULL){
220 if(t){
221 qDebug("Adding Interface");
222 InterfaceInformationImp *i = new InterfaceInformationImp(t, "TCPIPInformation", interfaceItems[item], true);
223 t->insertTab(i, "TCP/IP");
224 }
225 conf->showMaximized();
226 conf->show();
227 }
228 else{
229 InterfaceInformationImp *i = new InterfaceInformationImp(0, "TCPIPInformation", interfaceItems[item], true);
230 i->showMaximized();
231 i->show();
232 } 228 }
233 } 229 }
230
231 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true);
232 information->showMaximized();
233 information->show();
234} 234}
235 235
236/** 236/**
@@ -272,6 +272,10 @@ void MainWindowImp::jobDone(KProcess *process){
272 if(space > 1){ 272 if(space > 1){
273 // We have found an interface 273 // We have found an interface
274 QString interfaceName = line.mid(0, space); 274 QString interfaceName = line.mid(0, space);
275 if(!advancedUserMode){
276 if(interfaceName == "lo")
277 break;
278 }
275 Interface *i; 279 Interface *i;
276 // See if we already have it 280 // See if we already have it
277 if(interfaceNames.find(interfaceName) == interfaceNames.end()){ 281 if(interfaceNames.find(interfaceName) == interfaceNames.end()){
@@ -306,12 +310,15 @@ void MainWindowImp::jobDone(KProcess *process){
306 QFile::remove(fileName); 310 QFile::remove(fileName);
307} 311}
308 312
313/**
314 *
315 */
309void MainWindowImp::updateInterface(Interface *i){ 316void MainWindowImp::updateInterface(Interface *i){
310 QListViewItem *item = NULL; 317 QListViewItem *item = NULL;
311 318
312 // See if we already have it 319 // See if we already have it
313 if(items.find(i) == items.end()){ 320 if(items.find(i) == items.end()){
314 item = new QListViewItem(serviceList, "", "", ""); 321 item = new QListViewItem(connectionList, "", "", "");
315 // See if you can't find a module owner for this interface 322 // See if you can't find a module owner for this interface
316 QMap<Module*, QLibrary*>::Iterator it; 323 QMap<Module*, QLibrary*>::Iterator it;
317 for( it = libraries.begin(); it != libraries.end(); ++it ){ 324 for( it = libraries.begin(); it != libraries.end(); ++it ){