summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings/mainwindowimp.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/networksettings/mainwindowimp.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings/mainwindowimp.cpp272
1 files changed, 171 insertions, 101 deletions
diff --git a/noncore/settings/networksettings/mainwindowimp.cpp b/noncore/settings/networksettings/mainwindowimp.cpp
index d9752ce..b0a1dd9 100644
--- a/noncore/settings/networksettings/mainwindowimp.cpp
+++ b/noncore/settings/networksettings/mainwindowimp.cpp
@@ -1,3 +1,4 @@
+
#include "mainwindowimp.h"
#include "addconnectionimp.h"
#include "interfaceinformationimp.h"
@@ -5,33 +6,23 @@
#include "interfaces.h"
#include "module.h"
+/* OPIE */
+#include <qpe/qcopenvelope_qws.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/config.h>
+#include <qpe/qlibrary.h>
+#include <qpe/resource.h>
+
+/* QT */
#include <qpushbutton.h>
#include <qlistbox.h>
#include <qlineedit.h>
#include <qlistview.h>
#include <qheader.h>
#include <qlabel.h>
-#include <qpe/qcopenvelope_qws.h>
#include <qtabwidget.h> // in order to disable the profiles tab
-#include <qpe/qpeapplication.h>
-
#include <qmessagebox.h>
-#ifdef QWS
- #include <qpe/config.h>
- #include <qpe/qlibrary.h>
- #include <qpe/resource.h>
- #include <qpe/qpeapplication.h>
-#else
- #include <klibloader.h>
- #define QLibrary KLibrary
- #include <kconfig.h>
- #define Config KConfig
- #include <kapplication.h>
- #include <kstandarddirs.h>
- #include <kiconloader.h>
- #define showMaximized show
-#endif
#if QT_VERSION < 300
#include <qlist.h>
@@ -43,6 +34,7 @@
#include <qtextstream.h>
#include <qregexp.h>
+/* STD */
#include <net/if.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
@@ -50,7 +42,8 @@
#define DEFAULT_SCHEME "/var/lib/pcmcia/scheme"
#define _PROCNETDEV "/proc/net/dev"
-MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME){
+MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWindow(parent, name, Qt::WStyle_ContextHelp), advancedUserMode(true), scheme(DEFAULT_SCHEME)
+{
connect(addConnectionButton, SIGNAL(clicked()), this, SLOT(addClicked()));
connect(removeConnectionButton, SIGNAL(clicked()), this, SLOT(removeClicked()));
connect(informationConnectionButton, SIGNAL(clicked()), this, SLOT(informationClicked()));
@@ -78,22 +71,27 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWi
Interfaces i;
QStringList list = i.getInterfaceList();
QMap<QString, Interface*>::Iterator it;
- for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni ) {
+ for ( QStringList::Iterator ni = list.begin(); ni != list.end(); ++ni )
+ {
/*
* we skipped it in getAllInterfaces now
* we need to ignore it as well
*/
- if (m_handledIfaces.contains( *ni) ) {
+ if (m_handledIfaces.contains( *ni) )
+ {
qDebug("Not up iface handled by module");
continue;
}
bool found = false;
- for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it ){
+ for( it = interfaceNames.begin(); it != interfaceNames.end(); ++it )
+ {
if(it.key() == (*ni))
found = true;
}
- if(!found){
- if(!(*ni).contains("_")){
+ if(!found)
+ {
+ if(!(*ni).contains("_"))
+ {
Interface *i = new Interface(this, *ni, false);
i->setAttached(false);
i->setHardwareName(tr("Disconnected"));
@@ -117,11 +115,14 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWi
scheme = cfg.readEntry("SchemeFile", DEFAULT_SCHEME);
QFile file(scheme);
- if ( file.open(IO_ReadOnly) ) { // file opened successfully
+ if ( file.open(IO_ReadOnly) )
+ { // file opened successfully
QTextStream stream( &file ); // use a text stream
- while ( !stream.eof() ) { // until end of file...
+ while ( !stream.eof() )
+ { // until end of file...
QString line = stream.readLine(); // line of text excluding '\n'
- if(line.contains("SCHEME")){
+ if(line.contains("SCHEME"))
+ {
line = line.mid(7, line.length());
currentProfileLabel->setText(line);
break;
@@ -135,7 +136,8 @@ MainWindowImp::MainWindowImp(QWidget *parent, const char *name, WFlags) : MainWi
/**
* Deconstructor. Save profiles. Delete loaded libraries.
*/
-MainWindowImp::~MainWindowImp(){
+MainWindowImp::~MainWindowImp()
+{
// Save profiles.
Config cfg("NetworkSetup");
cfg.setGroup("General");
@@ -143,7 +145,8 @@ MainWindowImp::~MainWindowImp(){
// Delete all interfaces that don't have owners.
QMap<Interface*, QListViewItem*>::Iterator iIt;
- for( iIt = items.begin(); iIt != items.end(); ++iIt ){
+ for( iIt = items.begin(); iIt != items.end(); ++iIt )
+ {
if(iIt.key()->getModuleOwner() == NULL)
delete iIt.key();
}
@@ -151,7 +154,8 @@ MainWindowImp::~MainWindowImp(){
#ifdef QWS
// Delete Modules and Libraries
QMap<Module*, QLibrary*>::Iterator it;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
delete it.key();
// I wonder why I can't delete the libraries
// What fucking shit this is.
@@ -165,7 +169,8 @@ MainWindowImp::~MainWindowImp(){
/**
* Query the kernel for all of the interfaces.
*/
-void MainWindowImp::getAllInterfaces(){
+void MainWindowImp::getAllInterfaces()
+{
int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
if(sockfd == -1)
return;
@@ -176,19 +181,23 @@ void MainWindowImp::getAllInterfaces(){
int result;
Interface *i;
- if (! procFile.exists()) {
+ if (! procFile.exists())
+ {
struct ifreq ifrs[100];
struct ifconf ifc;
ifc.ifc_len = sizeof(ifrs);
ifc.ifc_req = ifrs;
result = ioctl(sockfd, SIOCGIFCONF, &ifc);
- for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++) {
+ for (unsigned int i = 0; i < ifc.ifc_len / sizeof(struct ifreq); i++)
+ {
struct ifreq *pifr = &ifrs[i];
ifaces += pifr->ifr_name;
}
- } else {
+ }
+ else
+ {
procFile.open(IO_ReadOnly);
QString line;
QTextStream procTs(&procFile);
@@ -196,16 +205,20 @@ void MainWindowImp::getAllInterfaces(){
procTs.readLine(); // eat a line
procTs.readLine(); // eat a line
- while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null) {
- if((loc = line.find(":")) != -1) {
+ while((line = procTs.readLine().simplifyWhiteSpace()) != QString::null)
+ {
+ if((loc = line.find(":")) != -1)
+ {
ifaces += line.left(loc);
}
}
}
- for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it) {
+ for (QStringList::Iterator it = ifaces.begin(); it != ifaces.end(); ++it)
+ {
int flags = 0;
- if ( m_handledIfaces.contains( (*it) ) ) {
+ if ( m_handledIfaces.contains( (*it) ) )
+ {
qDebug(" %s is handled by a module", (*it).latin1() );
continue;
}
@@ -245,10 +258,13 @@ void MainWindowImp::getAllInterfaces(){
// now lets ask the plugins too ;)
QMap<Module*, QLibrary*>::Iterator it;
QList<Interface> ilist;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
- if(it.key()){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
+ if(it.key())
+ {
ilist = it.key()->getInterfaces();
- for( i = ilist.first(); i != 0; i = ilist.next() ){
+ for( i = ilist.first(); i != 0; i = ilist.next() )
+ {
qWarning("Adding interface %s to interfaceNames\n", i->getInterfaceName().latin1() );
interfaceNames.insert(i->getInterfaceName(), i);
updateInterface(i);
@@ -264,7 +280,8 @@ void MainWindowImp::getAllInterfaces(){
* @param path a directory that is scaned for any plugins that can be loaded
* and attempts to load them
*/
-void MainWindowImp::loadModules(const QString &path){
+void MainWindowImp::loadModules(const QString &path)
+{
#ifdef DEBUG
qDebug("MainWindowImp::loadModules: %s", path.latin1());
#endif
@@ -277,11 +294,14 @@ void MainWindowImp::loadModules(const QString &path){
const QFileInfoList *list = d.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
- while ( (fi=it.current()) ) {
+ while ( (fi=it.current()) )
+ {
#ifdef QWS
- if(fi->fileName().contains(".so")){
+ if(fi->fileName().contains(".so"))
+ {
#else
- if(fi->fileName().contains(".so") && fi->fileName().contains("networksettings_")){
+ if(fi->fileName().contains(".so") && fi->fileName().contains("networksettings_"))
+ {
#endif
loadPlugin(path + "/" + fi->fileName());
qDebug("loaded plugin: >%s< ",QString(path + "/" + fi->fileName()).latin1());
@@ -296,14 +316,16 @@ void MainWindowImp::loadModules(const QString &path){
* @param resolveString - function pointer to resolve
* @return pointer to the function with name resolveString or NULL
*/
-Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString){
+Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &resolveString)
+{
#ifdef DEBUG
qDebug("MainWindowImp::loadPlugin: %s: resolving %s", pluginFileName.latin1(), resolveString.latin1());
#endif
#ifdef QWS
QLibrary *lib = new QLibrary(pluginFileName);
void *functionPointer = lib->resolve(resolveString);
- if( !functionPointer ){
+ if( !functionPointer )
+ {
#ifdef DEBUG
qDebug("MainWindowImp::loadPlugin: Warning: %s is not a plugin", pluginFileName.latin1());
#endif
@@ -312,7 +334,8 @@ Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &
}
// Try to get an object.
Module *object = ((Module* (*)()) functionPointer)();
- if(object == NULL){
+ if(object == NULL)
+ {
#ifdef DEBUG
qDebug("MainWindowImp: Couldn't create object, but did load library!");
#endif
@@ -327,13 +350,15 @@ Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &
#else
QLibrary *lib = loader->library(pluginFileName);
- if( !lib || !lib->hasSymbol(resolveString) ){
+ if( !lib || !lib->hasSymbol(resolveString) )
+ {
qDebug(QString("MainWindowImp::loadPlugin: File: %1 is not a plugin, but though was.").arg(pluginFileName).latin1());
return NULL;
}
// Try to get an object.
Module *object = ((Module* (*)()) lib->symbol(resolveString))();
- if(object == NULL){
+ if(object == NULL)
+ {
#ifdef DEBUG
qDebug("MainWindowImp: Couldn't create object, but did load library!");
#endif
@@ -352,33 +377,40 @@ Module* MainWindowImp::loadPlugin(const QString &pluginFileName, const QString &
* The Add button was clicked. Bring up the add dialog and if OK is hit
* load the plugin and append it to the list
*/
-void MainWindowImp::addClicked(){
+void MainWindowImp::addClicked()
+{
QMap<Module*, QLibrary*>::Iterator it;
QMap<QString, QString> list;
QMap<QString, Module*> newInterfaceOwners;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
- if(it.key()){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
+ if(it.key())
+ {
(it.key())->possibleNewInterfaces(list);
}
}
// See if the list has anything that we can add.
- if(list.count() == 0){
+ if(list.count() == 0)
+ {
QMessageBox::information(this, "Sorry", "Nothing to add.", QMessageBox::Ok);
return;
}
AddConnectionImp addNewConnection(this, "AddConnectionImp", true);
addNewConnection.addConnections(list);
- addNewConnection.showMaximized();
- if(QDialog::Accepted == addNewConnection.exec()){
+ if( QDialog::Accepted == QPEApplication::execDialog( &addNewConnection ) )
+ {
QListViewItem *item = addNewConnection.registeredServicesList->currentItem();
if(!item)
return;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
- if(it.key()){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
+ if(it.key())
+ {
Interface *i = (it.key())->addNewInterface(item->text(0));
- if(i){
+ if(i)
+ {
qDebug("iface name %s",i->getInterfaceName().latin1());
interfaceNames.insert(i->getInterfaceName(), i);
updateInterface(i);
@@ -392,21 +424,26 @@ void MainWindowImp::addClicked(){
* Prompt the user to see if they really want to do this.
* If they do then remove from the list and unload.
*/
-void MainWindowImp::removeClicked(){
+void MainWindowImp::removeClicked()
+{
QListViewItem *item = connectionList->currentItem();
- if(!item) {
+ if(!item)
+ {
QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
return;
}
Interface *i = interfaceItems[item];
- if(i->getModuleOwner() == NULL){
+ if(i->getModuleOwner() == NULL)
+ {
QMessageBox::information(this, "Can't remove interface.", "Interface is built in.", QMessageBox::Ok);
}
- else{
+ else
+ {
if(!i->getModuleOwner()->remove(i))
QMessageBox::information(this, tr("Error"), tr("Unable to remove."), QMessageBox::Ok);
- else{
+ else
+ {
delete item;
// QMessageBox::information(this, "Success", "Interface was removed.", QMessageBox::Ok);
}
@@ -418,9 +455,11 @@ void MainWindowImp::removeClicked(){
* Report an error if no interface is selected.
* If the interface has a module owner then request its configure.
*/
-void MainWindowImp::configureClicked(){
+void MainWindowImp::configureClicked()
+{
QListViewItem *item = connectionList->currentItem();
- if(!item){
+ if(!item)
+ {
QMessageBox::information(this, tr("Sorry"),tr("Please select an interface first."), QMessageBox::Ok);
return;
}
@@ -431,18 +470,20 @@ void MainWindowImp::configureClicked(){
Interface *i = interfaceItems[item];
- if(i->getModuleOwner()){
+ if(i->getModuleOwner())
+ {
QWidget *moduleConfigure = i->getModuleOwner()->configure(i);
- if(moduleConfigure != NULL){
+ if(moduleConfigure != NULL)
+ {
i->getModuleOwner()->setProfile(currentProfileText);
- moduleConfigure->showMaximized();
+ QPEApplication::showWidget( moduleConfigure );
return;
}
}
InterfaceSetupImpDialog *configure = new InterfaceSetupImpDialog(this, "InterfaceSetupImp", i, true, Qt::WDestructiveClose | Qt::WStyle_ContextHelp );
configure->setProfile(currentProfileText);
- configure->showMaximized();
+ QPEApplication::showDialog( configure );
}
/**
@@ -450,9 +491,11 @@ void MainWindowImp::configureClicked(){
* Report an error if no interface is selected.
* If the interface has a module owner then request its configure.
*/
-void MainWindowImp::informationClicked(){
+void MainWindowImp::informationClicked()
+{
QListViewItem *item = connectionList->currentItem();
- if(!item){
+ if(!item)
+ {
QMessageBox::information(this, "Sorry","Please select an interface First.", QMessageBox::Ok);
return;
}
@@ -463,10 +506,12 @@ void MainWindowImp::informationClicked(){
// return;
// }
- if(i->getModuleOwner()){
+ if(i->getModuleOwner())
+ {
QWidget *moduleInformation = i->getModuleOwner()->information(i);
- if(moduleInformation != NULL){
- moduleInformation->showMaximized();
+ if(moduleInformation != NULL)
+ {
+ QPEApplication::showWidget( moduleInformation );
#ifdef DEBUG
qDebug("MainWindowImp::informationClicked:: Module owner has created, we showed.");
#endif
@@ -474,15 +519,17 @@ void MainWindowImp::informationClicked(){
}
}
InterfaceInformationImp *information = new InterfaceInformationImp(this, "InterfaceSetupImp", i, Qt::WType_Modal | Qt::WDestructiveClose | Qt::WStyle_Dialog | Qt::WStyle_ContextHelp);
- information->showMaximized();
+ QPEApplication::showWidget( information );
}
/**
* Update this interface. If no QListViewItem exists create one.
* @param Interface* pointer to the interface that needs to be updated.
*/
-void MainWindowImp::updateInterface(Interface *i){
- if(!advancedUserMode){
+void MainWindowImp::updateInterface(Interface *i)
+{
+ if(!advancedUserMode)
+ {
if(i->getInterfaceName() == "lo")
return;
}
@@ -490,11 +537,13 @@ void MainWindowImp::updateInterface(Interface *i){
QListViewItem *item = NULL;
// Find the interface, making it if needed.
- if(items.find(i) == items.end()){
+ if(items.find(i) == items.end())
+ {
item = new QListViewItem(connectionList, "", "", "");
// See if you can't find a module owner for this interface
QMap<Module*, QLibrary*>::Iterator it;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
if(it.key()->isOwner(i))
i->setModuleOwner(it.key());
}
@@ -537,7 +586,8 @@ void MainWindowImp::updateInterface(Interface *i){
item->setText(4, (i->getStatus()) ? i->getIp() : QString(""));
}
-void MainWindowImp::newProfileChanged(const QString& newText){
+void MainWindowImp::newProfileChanged(const QString& newText)
+{
if(newText.length() > 0)
newProfileButton->setEnabled(true);
else
@@ -549,9 +599,11 @@ void MainWindowImp::newProfileChanged(const QString& newText){
* Don't add profiles that already exists.
* Appends to the list and QStringList
*/
-void MainWindowImp::addProfile(){
+void MainWindowImp::addProfile()
+{
QString newProfileName = newProfile->text();
- if(profiles.grep(newProfileName).count() > 0){
+ if(profiles.grep(newProfileName).count() > 0)
+ {
QMessageBox::information(this, "Can't Add","Profile already exists.", QMessageBox::Ok);
return;
}
@@ -563,24 +615,29 @@ void MainWindowImp::addProfile(){
* Removes the currently selected profile in the combo.
* Doesn't delete if there are less then 2 profiles.
*/
-void MainWindowImp::removeProfile(){
- if(profilesList->count() <= 1){
+void MainWindowImp::removeProfile()
+{
+ if(profilesList->count() <= 1)
+ {
QMessageBox::information(this, "Can't remove.","At least one profile\nis needed.", QMessageBox::Ok);
return;
}
QString profileToRemove = profilesList->currentText();
- if(profileToRemove == "All"){
+ if(profileToRemove == "All")
+ {
QMessageBox::information(this, "Can't remove.","Can't remove default.", QMessageBox::Ok);
return;
}
// Can't remove the curent profile
- if(profileToRemove == currentProfileLabel->text()){
+ if(profileToRemove == currentProfileLabel->text())
+ {
QMessageBox::information(this, "Can't remove.",QString("%1 is the current profile.").arg(profileToRemove), QMessageBox::Ok);
return;
}
- if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok){
+ if(QMessageBox::information(this, "Question",QString("Remove profile: %1").arg(profileToRemove), QMessageBox::Ok, QMessageBox::Cancel) == QMessageBox::Ok)
+ {
profiles = QStringList::split(" ", profiles.join(" ").replace(QRegExp(profileToRemove), ""));
profilesList->clear();
for ( QStringList::Iterator it = profiles.begin(); it != profiles.end(); ++it)
@@ -590,15 +647,19 @@ void MainWindowImp::removeProfile(){
Interfaces interfaces;
// Go through them one by one
QMap<Interface*, QListViewItem*>::Iterator it;
- for( it = items.begin(); it != items.end(); ++it ){
+ for( it = items.begin(); it != items.end(); ++it )
+ {
QString interfaceName = it.key()->getInterfaceName();
qDebug(interfaceName.latin1());
- if(interfaces.setInterface(interfaceName + "_" + profileToRemove)){
+ if(interfaces.setInterface(interfaceName + "_" + profileToRemove))
+ {
interfaces.removeInterface();
- if(interfaces.setMapping(interfaceName)){
+ if(interfaces.setMapping(interfaceName))
+ {
if(profilesList->count() == 1)
interfaces.removeMapping();
- else{
+ else
+ {
interfaces.removeMap("map", interfaceName + "_" + profileToRemove);
}
}
@@ -613,26 +674,32 @@ void MainWindowImp::removeProfile(){
* A new profile has been selected, change.
* @param newProfile the new profile.
*/
-void MainWindowImp::changeProfile(){
- if(profilesList->currentItem() == -1){
+void MainWindowImp::changeProfile()
+{
+ if(profilesList->currentItem() == -1)
+ {
QMessageBox::information(this, "Can't Change.","Please select a profile.", QMessageBox::Ok);
return;
}
QString newProfile = profilesList->text(profilesList->currentItem());
- if(newProfile != currentProfileLabel->text()){
+ if(newProfile != currentProfileLabel->text())
+ {
currentProfileLabel->setText(newProfile);
QFile::remove(scheme);
QFile file(scheme);
- if ( file.open(IO_ReadWrite) ) {
+ if ( file.open(IO_ReadWrite) )
+ {
QTextStream stream( &file );
stream << QString("SCHEME=%1").arg(newProfile);
file.close();
}
// restart all up devices?
- if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok){
+ if(QMessageBox::information(this, "Question","Restart all running interfaces?", QMessageBox::Ok, QMessageBox::No) == QMessageBox::Ok)
+ {
// Go through them one by one
QMap<Interface*, QListViewItem*>::Iterator it;
- for( it = items.begin(); it != items.end(); ++it ){
+ for( it = items.begin(); it != items.end(); ++it )
+ {
if(it.key()->getStatus() == true)
it.key()->restart();
}
@@ -653,7 +720,8 @@ void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
{
bool found = false;
qDebug("MainWindowImp::receive QCop msg >"+msg+"<");
- if (msg == "raise") {
+ if (msg == "raise")
+ {
raise();
return;
}
@@ -664,9 +732,11 @@ void MainWindowImp::receive(const QCString &msg, const QByteArray &arg)
qDebug("dest >%s< param >"+param+"<",dest.latin1());
QMap<Module*, QLibrary*>::Iterator it;
- for( it = libraries.begin(); it != libraries.end(); ++it ){
+ for( it = libraries.begin(); it != libraries.end(); ++it )
+ {
qDebug("plugin >%s<", it.key()->type().latin1() );
- if(it.key()->type() == dest){
+ if(it.key()->type() == dest)
+ {
it.key()->receive( param, arg );
found = true;
}