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.cpp205
1 files changed, 106 insertions, 99 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,8 +1,8 @@
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
@@ -27,5 +27,2 @@
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"
@@ -33,7 +30,7 @@
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
@@ -43,18 +40,6 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
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
@@ -65,2 +50,3 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
65 profilesList->insertItem((*it)); 50 profilesList->insertItem((*it));
51 advancedUserMode = cfg.readBoolEntry("AdvancedUserMode", false);
66} 52}
@@ -68,5 +54,6 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name) : MainWindow(par
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){
@@ -75,12 +62,22 @@ MainWindowImp::~MainWindowImp(){
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 );
@@ -91,4 +88,3 @@ void MainWindowImp::loadModules(QString path){
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 }
@@ -105,3 +101,3 @@ void MainWindowImp::loadModules(QString path){
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);
@@ -122,3 +118,3 @@ Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString)
122 118
123 // Store for reference 119 // Store for deletion later
124 libraries.insert(object, lib); 120 libraries.insert(object, lib);
@@ -132,10 +128,21 @@ Module* MainWindowImp::loadPlugin(QString pluginFileName, QString resolveString)
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}
@@ -147,3 +154,3 @@ void MainWindowImp::addClicked(){
147void MainWindowImp::removeClicked(){ 154void MainWindowImp::removeClicked(){
148 QListViewItem *item = serviceList->currentItem(); 155 QListViewItem *item = connectionList->currentItem();
149 if(item == NULL) { 156 if(item == NULL) {
@@ -163,36 +170,32 @@ void MainWindowImp::removeClicked(){
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);
178 } 187 if(moduleConfigure != NULL){
179 else{ 188 if(tabWidget != NULL){
180 QTabWidget *t = NULL; 189 InterfaceSetupImp *configure = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i, true);
181 QWidget *conf = (interfaceItems[item])->getModuleOwner()->configure(&t); 190 tabWidget->insertTab(configure, "TCP/IP");
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 } 191 }
189 conf->showMaximized(); 192 moduleConfigure->showMaximized();
190 conf->show(); 193 moduleConfigure->show();
191 } 194 return;
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}
@@ -200,35 +203,32 @@ void MainWindowImp::configureClicked(){
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);
215 } 220 if(moduleInformation != NULL){
216 else{ 221 if(tabWidget != NULL){
217 QTabWidget *t = NULL; 222 InterfaceInformationImp *information = new InterfaceInformationImp(tabWidget, "InterfaceSetupImp", i, true);
218 QWidget *conf = (interfaceItems[item])->getModuleOwner()->information(&t); 223 tabWidget->insertTab(information, "TCP/IP");
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 } 224 }
225 conf->showMaximized(); 225 moduleInformation->showMaximized();
226 conf->show(); 226 moduleInformation->show();
227 return;
227 } 228 }
228 else{ 229 }
229 InterfaceInformationImp *i = new InterfaceInformationImp(0, "TCPIPInformation", interfaceItems[item], true); 230
230 i->showMaximized(); 231 InterfaceInformationImp *information = new InterfaceInformationImp(0, "InterfaceSetupImp", i, true);
231 i->show(); 232 information->showMaximized();
232 } 233 information->show();
233 }
234} 234}
@@ -274,2 +274,6 @@ void MainWindowImp::jobDone(KProcess *process){
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;
@@ -308,2 +312,5 @@ void MainWindowImp::jobDone(KProcess *process){
308 312
313/**
314 *
315 */
309void MainWindowImp::updateInterface(Interface *i){ 316void MainWindowImp::updateInterface(Interface *i){
@@ -313,3 +320,3 @@ void MainWindowImp::updateInterface(Interface *i){
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