summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/networksetup/interfaces/interfacesetupimp.cpp7
-rw-r--r--noncore/net/networksetup/interfaces/interfacesetupimp.h7
-rw-r--r--noncore/net/networksetup/wlan/wlanimp.cpp4
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.cpp7
-rw-r--r--noncore/settings/networksettings/interfaces/interfacesetupimp.h7
-rw-r--r--noncore/settings/networksettings/wlan/wlanimp.cpp4
6 files changed, 20 insertions, 16 deletions
diff --git a/noncore/net/networksetup/interfaces/interfacesetupimp.cpp b/noncore/net/networksetup/interfaces/interfacesetupimp.cpp
index 550e909..a19aaeb 100644
--- a/noncore/net/networksetup/interfaces/interfacesetupimp.cpp
+++ b/noncore/net/networksetup/interfaces/interfacesetupimp.cpp
@@ -1,151 +1,152 @@
#include "interfacesetupimp.h"
#include "interface.h"
#include "interfaces.h"
#include <qdialog.h>
#include <qcombobox.h>
#include <qcheckbox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qgroupbox.h>
#include <qlabel.h>
#include <qmessagebox.h>
#include <assert.h>
#define DNSSCRIPT "changedns"
/**
* Constuctor. Set up the connection and load the first profile.
*/
InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, WFlags fl) : InterfaceSetup(parent, name, fl){
assert(parent);
assert(i);
interface = i;
interfaces = new Interfaces();
bool error = false;
if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
staticGroupBox->hide();
dhcpCheckBox->hide();
leaseTime->hide();
leaseHoursLabel->hide();
}
}
/**
* Save the current settings, then write out the interfaces file and close.
*/
-void InterfaceSetupImp::saveChanges(){
+bool InterfaceSetupImp::saveChanges(){
if(!saveSettings())
- return;
+ return false;
interfaces->write();
+ return true;
}
/**
* Save the settings for the current Interface.
* @return bool true if successfull, false otherwise
*/
bool InterfaceSetupImp::saveSettings(){
// eh can't really do anything about it other then return. :-D
if(!interfaces->isInterfaceSet())
return true;
bool error = false;
// Loopback case
if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
return true;
}
if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){
- QMessageBox::information(this, "Not Saved.", "Please fill in address, subnet,\n and gateway entries.", "Ok");
+ QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", "Ok");
return false;
}
interfaces->removeAllInterfaceOptions();
// DHCP
if(dhcpCheckBox->isChecked()){
interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value()));
interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60));
}
else{
interfaces->setInterfaceMethod("static");
interfaces->setInterfaceOption("address", ipAddressEdit->text());
interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
interfaces->setInterfaceOption("gateway", gatewayEdit->text());
if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){
QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns);
interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns);
}
}
// IP Information
interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
return true;
}
/**
* The Profile has changed.
* @profile the new profile.
*/
void InterfaceSetupImp::setProfile(const QString &profile){
QString newInterfaceName = interface->getInterfaceName();
if(profile.length() > 0)
newInterfaceName += "_" + profile;
qDebug("InterfaceSetupImp::setProfile");
// See if we have to make a interface.
if(!interfaces->setInterface(newInterfaceName)){
// Add making for this new interface if need too
if(profile != ""){
interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName);
if(!interfaces->setMapping(interface->getInterfaceName())){
interfaces->addMapping(interface->getInterfaceName());
if(!interfaces->setMapping(interface->getInterfaceName())){
qDebug("InterfaceSetupImp: Added Mapping, but still can't set.");
return;
}
}
interfaces->setMap("map", newInterfaceName);
interfaces->setScript("getprofile.sh");
}
else{
interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
if(!interfaces->setInterface(newInterfaceName)){
qDebug("InterfaceSetupImp: Added interface, but still can't set.");
return;
}
}
}
// We must have a valid interface to get this far so read some settings.
// DHCP
bool error = false;
if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
dhcpCheckBox->setChecked(true);
else
dhcpCheckBox->setChecked(false);
leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt());
if(error)
leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60);
if(error)
leaseTime->setValue(24);
// IP Information
autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error);
if(dns.contains(" ")){
firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
}
ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
}
// interfacesetup.cpp
diff --git a/noncore/net/networksetup/interfaces/interfacesetupimp.h b/noncore/net/networksetup/interfaces/interfacesetupimp.h
index 3bbf34e..a88e190 100644
--- a/noncore/net/networksetup/interfaces/interfacesetupimp.h
+++ b/noncore/net/networksetup/interfaces/interfacesetupimp.h
@@ -1,55 +1,56 @@
#ifndef INTERFACESETUPIMP_H
#define INTERFACESETUPIMP_H
#include "interfacesetup.h"
#include <qdialog.h>
class Interface;
class Interfaces;
class InterfaceSetupImp : public InterfaceSetup {
Q_OBJECT
public:
InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, WFlags fl = 0);
- void saveChanges();
+ bool saveChanges();
public slots:
void setProfile(const QString &profile);
bool saveSettings();
+
private:
Interfaces *interfaces;
Interface *interface;
};
#include <qlayout.h>
class InterfaceSetupImpDialog : public QDialog {
Q_OBJECT
public:
InterfaceSetupImpDialog(QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = false, WFlags fl = 0) : QDialog(parent, name, modal, fl){
QVBoxLayout *InterfaceSetupLayout = new QVBoxLayout( this );
setCaption("Interface Setup");
interfaceSetup = new InterfaceSetupImp(this, "InterfaceSetup",i,fl);
InterfaceSetupLayout->addWidget( interfaceSetup );
};
void setProfile(QString &profile){ interfaceSetup->setProfile(profile);};
private:
InterfaceSetupImp *interfaceSetup;
protected slots:
void accept(){
- interfaceSetup->saveChanges();
- QDialog::accept();
+ if(interfaceSetup->saveChanges())
+ QDialog::accept();
};
};
#endif
// interfacesetupimp.h
diff --git a/noncore/net/networksetup/wlan/wlanimp.cpp b/noncore/net/networksetup/wlan/wlanimp.cpp
index 74bf390..01d7e36 100644
--- a/noncore/net/networksetup/wlan/wlanimp.cpp
+++ b/noncore/net/networksetup/wlan/wlanimp.cpp
@@ -1,247 +1,247 @@
#include "wlanimp.h"
/* Config class */
#include <qpe/config.h>
/* Global namespace */
#include <qpe/global.h>
/* system() */
#include <stdlib.h>
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qregexp.h>
#include <qpe/config.h>
#include <qtabwidget.h>
#include "interfacesetupimp.h"
WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl):WLAN(parent, name, modal, fl){
config = new Config("wireless");
interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i);//, Qt::WDestructiveClose);
//configure->setProfile(currentProfile);
tabWidget->insertTab(interfaceSetup, "TCP/IP");
readConfig();
}
WLANImp::~WLANImp( ){
delete config;
}
void WLANImp::setProfile(QString &profile){
interfaceSetup->setProfile(profile);
}
void WLANImp::readConfig()
{
qWarning( "WLANImp::readConfig() called." );
config->setGroup( "Properties" );
QString ssid = config->readEntry( "SSID", "any" );
if( ssid == "any" || ssid == "ANY" ){
essNon->setChecked( true );
} else {
essSpecific->setChecked( true );
essSpecificLineEdit->setText( ssid );
}
QString mode = config->readEntry( "Mode", "Managed" );
if( mode == "adhoc" ) {
network802->setChecked( true );
} else {
networkInfrastructure->setChecked( true );
}
networkChannel->setValue( config->readNumEntry( "CHANNEL", 1 ) );
// config->readEntry( "RATE", "auto" );
config->readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false );
config->readEntry( "AuthType", "opensystem" );
config->readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true );
int defaultkey = config->readNumEntry( "dot11WEPDefaultKeyID", 0 );
switch( defaultkey ){
case 0:
keyRadio0->setChecked( true );
break;
case 1:
keyRadio1->setChecked( true );
break;
case 2:
keyRadio2->setChecked( true );
break;
case 3:
keyRadio3->setChecked( true );
break;
}
keyLineEdit0->setText(config->readEntry( "dot11WEPDefaultKey0" ));
keyLineEdit1->setText(config->readEntry( "dot11WEPDefaultKey1" ));
keyLineEdit2->setText(config->readEntry( "dot11WEPDefaultKey2" ));
keyLineEdit3->setText(config->readEntry( "dot11WEPDefaultKey3" ));
return;
}
bool WLANImp::writeConfig()
{
qWarning( "WLANImp::writeConfig() called." );
config->setGroup( "Properties" );
if( essNon->isChecked() ) {
config->writeEntry( "SSID", "any" );
} else {
config->writeEntry( "SSID", essSpecificLineEdit->text() );
}
if( networkInfrastructure->isChecked() ){
config->writeEntry( "Mode", "Managed" );
} else if( network802->isChecked() ){
config->writeEntry( "Mode", "adhoc" );
}
config->writeEntry( "CHANNEL", networkChannel->value() );
// config->readEntry( "RATE", "auto" );
wepEnabled->isChecked() ? config->writeEntry( "dot11PrivacyInvoked", "true" ) : config->writeEntry( "dot11PrivacyInvoked", "false" );
authOpen->isChecked() ? config->writeEntry( "AuthType", "opensystem" ) : config->writeEntry( "AuthType", "sharedkey" );
key40->isChecked() ? config->writeEntry( "PRIV_KEY128", "false" ) : config->writeEntry( "PRIV_KEY128", "true" );
if( keyRadio0->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 0 );
} else if( keyRadio1->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 1 );
} else if( keyRadio2->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 2 );
} else if( keyRadio3->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 3 );
}
config->writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() );
config->writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() );
config->writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() );
config->writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() );
return writeWirelessOpts( );
}
/**
*/
void WLANImp::accept()
{
if ( writeConfig() ){
- interfaceSetup->saveChanges();
- QDialog::accept();
+ if(interfaceSetup->saveChanges())
+ QDialog::accept();
}
}
bool WLANImp::writeWirelessOpts( QString scheme )
{
qWarning( "WLANImp::writeWirelessOpts entered." );
QString prev = "/etc/pcmcia/wireless.opts";
QFile prevFile(prev);
if ( !prevFile.open( IO_ReadOnly ) )
return false;
QString tmp = "/etc/pcmcia/wireless.opts-qpe-new";
QFile tmpFile(tmp);
if ( !tmpFile.open( IO_WriteOnly ) )
return false;
bool retval = true;
QTextStream in( &prevFile );
QTextStream out( &tmpFile );
config->setGroup("Properties");
QString line;
bool found=false;
bool done=false;
while ( !in.atEnd() ) {
QString line = in.readLine();
QString wline = line.simplifyWhiteSpace();
if ( !done ) {
if ( found ) {
// skip existing entry for this scheme, and write our own.
if ( wline == ";;" ) {
found = false;
continue;
} else {
continue;
}
} else {
if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) {
found=true;
continue; // skip this line
} else if ( wline == "esac" || wline == "*,*,*,*)" ) {
// end - add new entry
// Not all fields have a GUI, but all are supported
// in the letwork configuration files.
static const char* txtfields[] = {
0
};
QString readmode = config->readEntry( "Mode", "Managed" );
QString mode;
if( readmode == "Managed" ){
mode = readmode;
} else if( readmode == "adhoc" ){
mode = "Ad-Hoc";
}
QString key;
if( wepEnabled->isChecked() ){
int defaultkey = config->readNumEntry( "dot11WEPDefaultKeyID", 0 );
switch( defaultkey ){
case 0:
key += keyLineEdit0->text();
break;
case 1:
key += keyLineEdit1->text();
break;
case 2:
key += keyLineEdit2->text();
break;
case 3:
key += keyLineEdit3->text();
break;
}
if( config->readEntry( "AuthType", "opensystem" ) == "opensystem")
key += " open";
}
out << scheme << ",*,*,*)" << "\n"
<< " ESSID=" << Global::shellQuote( config->readEntry( "SSID", "any" ) ) << "\n"
<< " MODE=" << mode << "\n"
<< " KEY=" << Global::shellQuote( key ) << "\n"
<< " RATE=" << "auto" << "\n"
;
if( mode != "Managed" )
out << " CHANNEL=" << config->readNumEntry( "CHANNEL", 1 ) << "\n";
const char** f = txtfields;
while (*f) {
out << " " << *f << "=" << config->readEntry(*f,"") << "\n";
++f;
}
out << " ;;\n";
done = true;
}
}
}
out << line << "\n";
}
prevFile.close();
tmpFile.close();
QString initpath;
//system("cardctl suspend");
if( QDir("/etc/rc.d/init.d").exists() ){
initpath = "/etc/rc.d/init.d";
} else if( QDir("/etc/init.d").exists() ){
initpath = "/etc/init.d";
}
if( initpath )
system(QString("%1/pcmcia stop").arg(initpath));
if( system( "mv " + tmp + " " + prev ) )
retval = false;
//#ifdef USE_SCHEMES
// if ( retval )
// SchemeChanger::changeScheme(scheme);
//#endif
//system("cardctl resume");
if( initpath )
system(QString("%1/pcmcia start").arg(initpath));
return retval;
}
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
index 550e909..a19aaeb 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
+++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.cpp
@@ -1,151 +1,152 @@
#include "interfacesetupimp.h"
#include "interface.h"
#include "interfaces.h"
#include <qdialog.h>
#include <qcombobox.h>
#include <qcheckbox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qgroupbox.h>
#include <qlabel.h>
#include <qmessagebox.h>
#include <assert.h>
#define DNSSCRIPT "changedns"
/**
* Constuctor. Set up the connection and load the first profile.
*/
InterfaceSetupImp::InterfaceSetupImp(QWidget* parent, const char* name, Interface *i, WFlags fl) : InterfaceSetup(parent, name, fl){
assert(parent);
assert(i);
interface = i;
interfaces = new Interfaces();
bool error = false;
if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
staticGroupBox->hide();
dhcpCheckBox->hide();
leaseTime->hide();
leaseHoursLabel->hide();
}
}
/**
* Save the current settings, then write out the interfaces file and close.
*/
-void InterfaceSetupImp::saveChanges(){
+bool InterfaceSetupImp::saveChanges(){
if(!saveSettings())
- return;
+ return false;
interfaces->write();
+ return true;
}
/**
* Save the settings for the current Interface.
* @return bool true if successfull, false otherwise
*/
bool InterfaceSetupImp::saveSettings(){
// eh can't really do anything about it other then return. :-D
if(!interfaces->isInterfaceSet())
return true;
bool error = false;
// Loopback case
if(interfaces->getInterfaceMethod(error) == INTERFACES_LOOPBACK){
interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
return true;
}
if(!dhcpCheckBox->isChecked() && (ipAddressEdit->text().isEmpty() || subnetMaskEdit->text().isEmpty())){
- QMessageBox::information(this, "Not Saved.", "Please fill in address, subnet,\n and gateway entries.", "Ok");
+ QMessageBox::information(this, "Not Saved.", "Please fill in the IP address and\n subnet entries.", "Ok");
return false;
}
interfaces->removeAllInterfaceOptions();
// DHCP
if(dhcpCheckBox->isChecked()){
interfaces->setInterfaceMethod(INTERFACES_METHOD_DHCP);
interfaces->setInterfaceOption("leasehours", QString("%1").arg(leaseTime->value()));
interfaces->setInterfaceOption("leasetime", QString("%1").arg(leaseTime->value()*60*60));
}
else{
interfaces->setInterfaceMethod("static");
interfaces->setInterfaceOption("address", ipAddressEdit->text());
interfaces->setInterfaceOption("netmask", subnetMaskEdit->text());
interfaces->setInterfaceOption("gateway", gatewayEdit->text());
if(!firstDNSLineEdit->text().isEmpty() || !secondDNSLineEdit->text().isEmpty()){
QString dns = firstDNSLineEdit->text() + " " + secondDNSLineEdit->text();
interfaces->setInterfaceOption("up "DNSSCRIPT" -a ", dns);
interfaces->setInterfaceOption("down "DNSSCRIPT" -r ", dns);
}
}
// IP Information
interfaces->setAuto(interface->getInterfaceName(), autoStart->isChecked());
return true;
}
/**
* The Profile has changed.
* @profile the new profile.
*/
void InterfaceSetupImp::setProfile(const QString &profile){
QString newInterfaceName = interface->getInterfaceName();
if(profile.length() > 0)
newInterfaceName += "_" + profile;
qDebug("InterfaceSetupImp::setProfile");
// See if we have to make a interface.
if(!interfaces->setInterface(newInterfaceName)){
// Add making for this new interface if need too
if(profile != ""){
interfaces->copyInterface(interface->getInterfaceName(), newInterfaceName);
if(!interfaces->setMapping(interface->getInterfaceName())){
interfaces->addMapping(interface->getInterfaceName());
if(!interfaces->setMapping(interface->getInterfaceName())){
qDebug("InterfaceSetupImp: Added Mapping, but still can't set.");
return;
}
}
interfaces->setMap("map", newInterfaceName);
interfaces->setScript("getprofile.sh");
}
else{
interfaces->addInterface(newInterfaceName, INTERFACES_FAMILY_INET, INTERFACES_METHOD_DHCP);
if(!interfaces->setInterface(newInterfaceName)){
qDebug("InterfaceSetupImp: Added interface, but still can't set.");
return;
}
}
}
// We must have a valid interface to get this far so read some settings.
// DHCP
bool error = false;
if(interfaces->getInterfaceMethod(error) == INTERFACES_METHOD_DHCP)
dhcpCheckBox->setChecked(true);
else
dhcpCheckBox->setChecked(false);
leaseTime->setValue(interfaces->getInterfaceOption("leasehours", error).toInt());
if(error)
leaseTime->setValue(interfaces->getInterfaceOption("leasetime", error).toInt()/60/60);
if(error)
leaseTime->setValue(24);
// IP Information
autoStart->setChecked(interfaces->isAuto(interface->getInterfaceName()));
QString dns = interfaces->getInterfaceOption("up "DNSSCRIPT" -a", error);
if(dns.contains(" ")){
firstDNSLineEdit->setText(dns.mid(0, dns.find(" ")));
secondDNSLineEdit->setText(dns.mid(dns.find(" ")+1, dns.length()));
}
ipAddressEdit->setText(interfaces->getInterfaceOption("address", error));
subnetMaskEdit->setText(interfaces->getInterfaceOption("netmask", error));
gatewayEdit->setText(interfaces->getInterfaceOption("gateway", error));
}
// interfacesetup.cpp
diff --git a/noncore/settings/networksettings/interfaces/interfacesetupimp.h b/noncore/settings/networksettings/interfaces/interfacesetupimp.h
index 3bbf34e..a88e190 100644
--- a/noncore/settings/networksettings/interfaces/interfacesetupimp.h
+++ b/noncore/settings/networksettings/interfaces/interfacesetupimp.h
@@ -1,55 +1,56 @@
#ifndef INTERFACESETUPIMP_H
#define INTERFACESETUPIMP_H
#include "interfacesetup.h"
#include <qdialog.h>
class Interface;
class Interfaces;
class InterfaceSetupImp : public InterfaceSetup {
Q_OBJECT
public:
InterfaceSetupImp( QWidget* parent = 0, const char* name = 0, Interface *i=0, WFlags fl = 0);
- void saveChanges();
+ bool saveChanges();
public slots:
void setProfile(const QString &profile);
bool saveSettings();
+
private:
Interfaces *interfaces;
Interface *interface;
};
#include <qlayout.h>
class InterfaceSetupImpDialog : public QDialog {
Q_OBJECT
public:
InterfaceSetupImpDialog(QWidget* parent = 0, const char* name = 0, Interface *i=0, bool modal = false, WFlags fl = 0) : QDialog(parent, name, modal, fl){
QVBoxLayout *InterfaceSetupLayout = new QVBoxLayout( this );
setCaption("Interface Setup");
interfaceSetup = new InterfaceSetupImp(this, "InterfaceSetup",i,fl);
InterfaceSetupLayout->addWidget( interfaceSetup );
};
void setProfile(QString &profile){ interfaceSetup->setProfile(profile);};
private:
InterfaceSetupImp *interfaceSetup;
protected slots:
void accept(){
- interfaceSetup->saveChanges();
- QDialog::accept();
+ if(interfaceSetup->saveChanges())
+ QDialog::accept();
};
};
#endif
// interfacesetupimp.h
diff --git a/noncore/settings/networksettings/wlan/wlanimp.cpp b/noncore/settings/networksettings/wlan/wlanimp.cpp
index 74bf390..01d7e36 100644
--- a/noncore/settings/networksettings/wlan/wlanimp.cpp
+++ b/noncore/settings/networksettings/wlan/wlanimp.cpp
@@ -1,247 +1,247 @@
#include "wlanimp.h"
/* Config class */
#include <qpe/config.h>
/* Global namespace */
#include <qpe/global.h>
/* system() */
#include <stdlib.h>
#include <qfile.h>
#include <qdir.h>
#include <qtextstream.h>
#include <qmessagebox.h>
#include <qlineedit.h>
#include <qspinbox.h>
#include <qradiobutton.h>
#include <qcheckbox.h>
#include <qregexp.h>
#include <qpe/config.h>
#include <qtabwidget.h>
#include "interfacesetupimp.h"
WLANImp::WLANImp( QWidget* parent, const char* name, Interface *i, bool modal, WFlags fl):WLAN(parent, name, modal, fl){
config = new Config("wireless");
interfaceSetup = new InterfaceSetupImp(tabWidget, "InterfaceSetupImp", i);//, Qt::WDestructiveClose);
//configure->setProfile(currentProfile);
tabWidget->insertTab(interfaceSetup, "TCP/IP");
readConfig();
}
WLANImp::~WLANImp( ){
delete config;
}
void WLANImp::setProfile(QString &profile){
interfaceSetup->setProfile(profile);
}
void WLANImp::readConfig()
{
qWarning( "WLANImp::readConfig() called." );
config->setGroup( "Properties" );
QString ssid = config->readEntry( "SSID", "any" );
if( ssid == "any" || ssid == "ANY" ){
essNon->setChecked( true );
} else {
essSpecific->setChecked( true );
essSpecificLineEdit->setText( ssid );
}
QString mode = config->readEntry( "Mode", "Managed" );
if( mode == "adhoc" ) {
network802->setChecked( true );
} else {
networkInfrastructure->setChecked( true );
}
networkChannel->setValue( config->readNumEntry( "CHANNEL", 1 ) );
// config->readEntry( "RATE", "auto" );
config->readEntry( "dot11PrivacyInvoked" ) == "true" ? wepEnabled->setChecked( true ) : wepEnabled->setChecked( false );
config->readEntry( "AuthType", "opensystem" );
config->readEntry( "PRIV_KEY128", "false" ) == "false" ? key40->setChecked( true ) : key128->setChecked( true );
int defaultkey = config->readNumEntry( "dot11WEPDefaultKeyID", 0 );
switch( defaultkey ){
case 0:
keyRadio0->setChecked( true );
break;
case 1:
keyRadio1->setChecked( true );
break;
case 2:
keyRadio2->setChecked( true );
break;
case 3:
keyRadio3->setChecked( true );
break;
}
keyLineEdit0->setText(config->readEntry( "dot11WEPDefaultKey0" ));
keyLineEdit1->setText(config->readEntry( "dot11WEPDefaultKey1" ));
keyLineEdit2->setText(config->readEntry( "dot11WEPDefaultKey2" ));
keyLineEdit3->setText(config->readEntry( "dot11WEPDefaultKey3" ));
return;
}
bool WLANImp::writeConfig()
{
qWarning( "WLANImp::writeConfig() called." );
config->setGroup( "Properties" );
if( essNon->isChecked() ) {
config->writeEntry( "SSID", "any" );
} else {
config->writeEntry( "SSID", essSpecificLineEdit->text() );
}
if( networkInfrastructure->isChecked() ){
config->writeEntry( "Mode", "Managed" );
} else if( network802->isChecked() ){
config->writeEntry( "Mode", "adhoc" );
}
config->writeEntry( "CHANNEL", networkChannel->value() );
// config->readEntry( "RATE", "auto" );
wepEnabled->isChecked() ? config->writeEntry( "dot11PrivacyInvoked", "true" ) : config->writeEntry( "dot11PrivacyInvoked", "false" );
authOpen->isChecked() ? config->writeEntry( "AuthType", "opensystem" ) : config->writeEntry( "AuthType", "sharedkey" );
key40->isChecked() ? config->writeEntry( "PRIV_KEY128", "false" ) : config->writeEntry( "PRIV_KEY128", "true" );
if( keyRadio0->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 0 );
} else if( keyRadio1->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 1 );
} else if( keyRadio2->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 2 );
} else if( keyRadio3->isChecked() ){
config->writeEntry( "dot11WEPDefaultKeyID", 3 );
}
config->writeEntry( "dot11WEPDefaultKey0", keyLineEdit0->text() );
config->writeEntry( "dot11WEPDefaultKey1", keyLineEdit1->text() );
config->writeEntry( "dot11WEPDefaultKey2", keyLineEdit2->text() );
config->writeEntry( "dot11WEPDefaultKey3", keyLineEdit3->text() );
return writeWirelessOpts( );
}
/**
*/
void WLANImp::accept()
{
if ( writeConfig() ){
- interfaceSetup->saveChanges();
- QDialog::accept();
+ if(interfaceSetup->saveChanges())
+ QDialog::accept();
}
}
bool WLANImp::writeWirelessOpts( QString scheme )
{
qWarning( "WLANImp::writeWirelessOpts entered." );
QString prev = "/etc/pcmcia/wireless.opts";
QFile prevFile(prev);
if ( !prevFile.open( IO_ReadOnly ) )
return false;
QString tmp = "/etc/pcmcia/wireless.opts-qpe-new";
QFile tmpFile(tmp);
if ( !tmpFile.open( IO_WriteOnly ) )
return false;
bool retval = true;
QTextStream in( &prevFile );
QTextStream out( &tmpFile );
config->setGroup("Properties");
QString line;
bool found=false;
bool done=false;
while ( !in.atEnd() ) {
QString line = in.readLine();
QString wline = line.simplifyWhiteSpace();
if ( !done ) {
if ( found ) {
// skip existing entry for this scheme, and write our own.
if ( wline == ";;" ) {
found = false;
continue;
} else {
continue;
}
} else {
if ( wline.left(scheme.length()+7) == scheme + ",*,*,*)" ) {
found=true;
continue; // skip this line
} else if ( wline == "esac" || wline == "*,*,*,*)" ) {
// end - add new entry
// Not all fields have a GUI, but all are supported
// in the letwork configuration files.
static const char* txtfields[] = {
0
};
QString readmode = config->readEntry( "Mode", "Managed" );
QString mode;
if( readmode == "Managed" ){
mode = readmode;
} else if( readmode == "adhoc" ){
mode = "Ad-Hoc";
}
QString key;
if( wepEnabled->isChecked() ){
int defaultkey = config->readNumEntry( "dot11WEPDefaultKeyID", 0 );
switch( defaultkey ){
case 0:
key += keyLineEdit0->text();
break;
case 1:
key += keyLineEdit1->text();
break;
case 2:
key += keyLineEdit2->text();
break;
case 3:
key += keyLineEdit3->text();
break;
}
if( config->readEntry( "AuthType", "opensystem" ) == "opensystem")
key += " open";
}
out << scheme << ",*,*,*)" << "\n"
<< " ESSID=" << Global::shellQuote( config->readEntry( "SSID", "any" ) ) << "\n"
<< " MODE=" << mode << "\n"
<< " KEY=" << Global::shellQuote( key ) << "\n"
<< " RATE=" << "auto" << "\n"
;
if( mode != "Managed" )
out << " CHANNEL=" << config->readNumEntry( "CHANNEL", 1 ) << "\n";
const char** f = txtfields;
while (*f) {
out << " " << *f << "=" << config->readEntry(*f,"") << "\n";
++f;
}
out << " ;;\n";
done = true;
}
}
}
out << line << "\n";
}
prevFile.close();
tmpFile.close();
QString initpath;
//system("cardctl suspend");
if( QDir("/etc/rc.d/init.d").exists() ){
initpath = "/etc/rc.d/init.d";
} else if( QDir("/etc/init.d").exists() ){
initpath = "/etc/init.d";
}
if( initpath )
system(QString("%1/pcmcia stop").arg(initpath));
if( system( "mv " + tmp + " " + prev ) )
retval = false;
//#ifdef USE_SCHEMES
// if ( retval )
// SchemeChanger::changeScheme(scheme);
//#endif
//system("cardctl resume");
if( initpath )
system(QString("%1/pcmcia start").arg(initpath));
return retval;
}