summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/networksettings/ppp/TODO6
-rw-r--r--noncore/settings/networksettings/ppp/accounts.cpp42
-rw-r--r--noncore/settings/networksettings/ppp/pppconfig.cpp8
-rw-r--r--noncore/settings/networksettings/ppp/pppdata.cpp54
-rw-r--r--noncore/settings/networksettings/ppp/pppdata.h23
-rw-r--r--noncore/settings/networksettings/ppp/pppmodule.cpp23
6 files changed, 78 insertions, 78 deletions
diff --git a/noncore/settings/networksettings/ppp/TODO b/noncore/settings/networksettings/ppp/TODO
new file mode 100644
index 0000000..2410880
--- a/dev/null
+++ b/noncore/settings/networksettings/ppp/TODO
@@ -0,0 +1,6 @@
+- impl. PPPData::copyaccount & PPPData::deleteAccount
+- update modem attribute inputs when modem has changed
+- fix layout of edit account
+- save pppd arguments in edit account
+- popup configure modem with the correct account prselected
+ not quite shure why it does not work... IMHO it should work
diff --git a/noncore/settings/networksettings/ppp/accounts.cpp b/noncore/settings/networksettings/ppp/accounts.cpp
index 19db9ef..11d4739 100644
--- a/noncore/settings/networksettings/ppp/accounts.cpp
+++ b/noncore/settings/networksettings/ppp/accounts.cpp
@@ -8,248 +8,222 @@
*
* based on EzPPP:
* Copyright (C) 1997 Jay Painter
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <qdir.h>
#include <stdlib.h>
#include <qlayout.h>
#include <qtabwidget.h>
#include <qtabdialog.h>
#include <qwhatsthis.h>
#include <qmessagebox.h>
#include <qapplication.h>
#include <qbuttongroup.h>
#include <qmessagebox.h>
//#include <klocale.h>
#define i18n QObject::tr
//#include <kglobal.h>
//#include <kwin.h>
//#include <kdialogbase.h>
#include <qvgroupbox.h>
#include "pppdata.h"
#include "accounts.h"
//#include "accounting.h"
//#include "providerdb.h"
#include "edit.h"
void parseargs(char* buf, char** args);
AccountWidget::AccountWidget( QWidget *parent, const char *name )
: QWidget( parent, name )
{
-// int min = 0;
QVBoxLayout *l1 = new QVBoxLayout(this, 10, 10);
-
- // add a hbox
-// QHBoxLayout *l11 = new QHBoxLayout;
-// l1->addLayout(l11);
-
accountlist_l = new QListBox(this);
-// accountlist_l->setMinimumSize(160, 128);
+
connect(accountlist_l, SIGNAL(highlighted(int)),
this, SLOT(slotListBoxSelect(int)));
connect(accountlist_l, SIGNAL(selected(int)),
this, SLOT(editaccount()));
l1->addWidget(accountlist_l, 10);
-// QVBoxLayout *l111 = new QVBoxLayout(this);
-// l11->addLayout(l111, 1);
edit_b = new QPushButton(i18n("&Edit..."), this);
connect(edit_b, SIGNAL(clicked()), SLOT(editaccount()));
QWhatsThis::add(edit_b, i18n("Allows you to modify the selected account"));
-
-// min = edit_b->sizeHint().width();
-// min = QMAX(70,min);
-// edit_b->setMinimumWidth(min);
-
l1->addWidget(edit_b);
new_b = new QPushButton(i18n("&New..."), this);
connect(new_b, SIGNAL(clicked()), SLOT(newaccount()));
l1->addWidget(new_b);
QWhatsThis::add(new_b, i18n("Create a new dialup connection\n"
"to the Internet"));
copy_b = new QPushButton(i18n("Co&py"), this);
connect(copy_b, SIGNAL(clicked()), SLOT(copyaccount()));
l1->addWidget(copy_b);
QWhatsThis::add(copy_b,
i18n("Makes a copy of the selected account. All\n"
"settings of the selected account are copied\n"
"to a new account, that you can modify to fit your\n"
"needs"));
delete_b = new QPushButton(i18n("De&lete"), this);
connect(delete_b, SIGNAL(clicked()), SLOT(deleteaccount()));
l1->addWidget(delete_b);
QWhatsThis::add(delete_b,
i18n("<p>Deletes the selected account\n\n"
"<font color=\"red\"><b>Use with care!</b></font>"));
QHBoxLayout *l12 = new QHBoxLayout;
l1->addStretch(1);
l1->addLayout(l12);
// QVBoxLayout *l121 = new QVBoxLayout;
// l12->addLayout(l121);
// l121->addStretch(1);
// costlabel = new QLabel(i18n("Phone costs:"), parent);
// costlabel->setEnabled(FALSE);
// l121->addWidget(costlabel);
// costedit = new QLineEdit(parent);
// costedit->setFocusPolicy(QWidget::NoFocus);
// costedit->setFixedHeight(costedit->sizeHint().height());
// costedit->setEnabled(FALSE);
// l121->addWidget(costedit);
// l121->addStretch(1);
// QString tmp = i18n("<p>This shows the accumulated phone costs\n"
// "for the selected account.\n"
// "\n"
// "<b>Important</b>: If you have more than one \n"
// "account - beware, this is <b>NOT</b> the sum \n"
// "of the phone costs of all your accounts!");
// QWhatsThis::add(costlabel, tmp);
// QWhatsThis::add(costedit, tmp);
// vollabel = new QLabel(i18n("Volume:"), parent);
// vollabel->setEnabled(FALSE);
// l121->addWidget(vollabel);
// voledit = new QLineEdit(parent,"voledit");
// voledit->setFocusPolicy(QWidget::NoFocus);
// voledit->setFixedHeight(voledit->sizeHint().height());
// voledit->setEnabled(FALSE);
// l121->addWidget(voledit);
// tmp = i18n("<p>This shows the number of bytes transferred\n"
// "for the selected account (not for all of your\n"
// "accounts. You can select what to display in\n"
// "the accounting dialog.\n"
// "\n"
// "<a href=\"#volaccounting\">More on volume accounting</a>");
// QWhatsThis::add(vollabel,tmp);
// QWhatsThis::add(voledit, tmp);
// QVBoxLayout *l122 = new QVBoxLayout;
// l12->addStretch(1);
// l12->addLayout(l122);
// l122->addStretch(1);
// reset = new QPushButton(i18n("&Reset..."), parent);
// reset->setEnabled(FALSE);
// connect(reset, SIGNAL(clicked()),
// this, SLOT(resetClicked()));
// l122->addWidget(reset);
// log = new QPushButton(i18n("&View Logs"), this);
// connect(log, SIGNAL(clicked()),
// this, SLOT(viewLogClicked()));
// l122->addWidget(log);
// l122->addStretch(1);
//load up account list from gppdata to the list box
if(PPPData::data()->count() > 0) {
for(int i=0; i <= PPPData::data()->count()-1; i++) {
PPPData::data()->setAccountbyIndex(i);
accountlist_l->insertItem(PPPData::data()->accname());
}
}
- slotListBoxSelect(accountlist_l->currentItem());
+// slotListBoxSelect(accountlist_l->currentItem());
+ qDebug("setting listview index to %i",PPPData::data()->currentAccountID() );
+ accountlist_l->setCurrentItem( PPPData::data()->currentAccountID() );
+// slotListBoxSelect( PPPData::data()->currentAccountID());
l1->activate();
}
void AccountWidget::slotListBoxSelect(int idx) {
delete_b->setEnabled((bool)(idx != -1));
edit_b->setEnabled((bool)(idx != -1));
copy_b->setEnabled((bool)(idx != -1));
if(idx!=-1) {
+ qDebug("setting account to %i", idx);
QString account = PPPData::data()->accname();
PPPData::data()->setAccountbyIndex(accountlist_l->currentItem());
-// reset->setEnabled(TRUE);
-// costlabel->setEnabled(TRUE);
-// costedit->setEnabled(TRUE);
-// costedit->setText(AccountingBase::getCosts(accountlist_l->text(accountlist_l->currentItem())));
-
-// vollabel->setEnabled(TRUE);
-// voledit->setEnabled(TRUE);
-// int bytes = PPPData::data()->totalBytes();
-// voledit->setText(prettyPrintVolume(bytes));
- PPPData::data()->setAccount(account);
- } else{
- // reset->setEnabled(FALSE);
-// costlabel->setEnabled(FALSE);
-// costedit->setText("");
-// costedit->setEnabled(FALSE);
-// vollabel->setEnabled(FALSE);
-// voledit->setText("");
-// voledit->setEnabled(FALSE);
- }
+ // PPPData::data()->setAccount(account);
+ }
}
// void AccountWidget::viewLogClicked(){
// QApplication::flushX();
// if(fork() == 0) {
// setgid(getgid());
// setuid(getuid());
// system("kppplogview -kppp");
// _exit(0);
// }
// }
// void AccountWidget::resetClicked(){
// if(accountlist_l->currentItem() == -1)
// return;
// // QueryReset dlg(this);
// // int what = dlg.exec();
// // if(what && QueryReset::COSTS) {
// // emit resetCosts(accountlist_l->text(accountlist_l->currentItem()));
// // costedit->setText("0");
// // }
// // if(what && QueryReset::VOLUME) {
// // emit resetVolume(accountlist_l->text(accountlist_l->currentItem()));
// // voledit->setText(prettyPrintVolume(0));
// // }
// }
void AccountWidget::editaccount() {
PPPData::data()->setAccount(accountlist_l->text(accountlist_l->currentItem()));
int result = doTab();
if(result == QDialog::Accepted) {
accountlist_l->changeItem(PPPData::data()->accname(),accountlist_l->currentItem());
// emit resetaccounts();
PPPData::data()->save();
}
}
void AccountWidget::newaccount() {
diff --git a/noncore/settings/networksettings/ppp/pppconfig.cpp b/noncore/settings/networksettings/ppp/pppconfig.cpp
index e2521a6..4c5f7aa 100644
--- a/noncore/settings/networksettings/ppp/pppconfig.cpp
+++ b/noncore/settings/networksettings/ppp/pppconfig.cpp
@@ -1,69 +1,77 @@
#include <qlayout.h>
#include <qmessagebox.h>
#include <qtabwidget.h>
#include "accounts.h"
#include "general.h"
#include "interface.h"
#include "modem.h"
#include "pppconfig.h"
#include "pppdata.h"
#include "runtests.h"
PPPConfigWidget::PPPConfigWidget( Interface* iface, QWidget *parent,
const char *name,
bool modal, WFlags fl )
: QDialog(parent, name, modal, fl)
{
setCaption(tr("Configure Modem"));
int result = runTests();
if(result == TEST_CRITICAL){
QMessageBox::critical(0, tr("Modem failure"), tr("A critical failure appeard while testing the modem") );
return;
}
interface = iface;
if (!PPPData::data()->setModemDevice( interface->getInterfaceName() ))
PPPData::data()->setModemDevice("/dev/modem");
+ qDebug("PPPConfigWidget::PPPConfigWidget");
+ qDebug(" interface->getHardwareName >%s<", interface->getHardwareName().latin1());
if (!PPPData::data()->setAccount( interface->getHardwareName() ))
PPPData::data()->setAccount( 0 );
+
+ qDebug(" PPPData::data()->accname >%s<",PPPData::data()->accname().latin1());
+ qDebug(" PPPData::data()->currentAccountID() >%i<",PPPData::data()->currentAccountID());
(void)new Modem;
QVBoxLayout *layout = new QVBoxLayout( this );
layout->setSpacing( 0 );
layout->setMargin( 1 );
tabWindow = new QTabWidget( this, "tabWidget" );
layout->addWidget( tabWindow );
accounts = new AccountWidget( tabWindow, "accounts" );
tabWindow->addTab( accounts, tr("&Accounts") );
modem1 = new ModemWidget( tabWindow, "modem1" );
tabWindow->addTab( modem1, tr("&Device") );
modem2 = new ModemWidget2( tabWindow, "modem2" );
tabWindow->addTab( modem2, tr("&Modem") );
// graph = new GraphSetup( tabWindow->addPage( tr("&Graph"), tr("Throughput Graph" ) ) );
// general = new GeneralWidget( tabWindow->addPage( tr("M&isc"), tr("Miscellaneous Settings") ) );
}
PPPConfigWidget::~PPPConfigWidget()
{
}
void PPPConfigWidget::accept()
{
+ qDebug("PPPConfigWidget::accept");
+ qDebug(" PPPData::data()->accname >%s<",PPPData::data()->accname().latin1());
+ qDebug(" interface->getHardwareName >%s<", interface->getHardwareName().latin1());
interface->setInterfaceName( PPPData::data()->modemDevice() );
interface->setHardwareName( PPPData::data()->accname() );
PPPData::data()->save();
QDialog::accept();
}
void PPPConfigWidget::reject()
{
PPPData::data()->cancel();
QDialog::reject();
}
diff --git a/noncore/settings/networksettings/ppp/pppdata.cpp b/noncore/settings/networksettings/ppp/pppdata.cpp
index 109e3b7..3f1675c 100644
--- a/noncore/settings/networksettings/ppp/pppdata.cpp
+++ b/noncore/settings/networksettings/ppp/pppdata.cpp
@@ -10,103 +10,102 @@
* Copyright (C) 1997 Jay Painter
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include "pppdata.h"
#include "runtests.h"
#include "devices.h"
//#include <klocale.h>
#define i18n QObject::tr
#include <qpe/config.h>
#include <qmessagebox.h>
#include <qapplication.h>
// #include <klocale.h>
// #include <kconfig.h>
// #include <kmessagebox.h>
// #include <kapplication.h>
#include <assert.h>
PPPData *PPPData::_data = 0;
Config *PPPData::config = 0;
PPPData* PPPData::data()
{
if (!_data){
qDebug("PPPData::data() creates new Instance");
_data = new PPPData();
}
if (!_data->config){
qDebug("PPPData::data() opens conffile");
_data->open();
}
return _data;
}
PPPData::PPPData()
- : //config(0L),
+ : modemDeviceGroup(-1),
highcount(-1), // start out with no entries
caccount(-1), // set the current account index also
suidprocessid(-1), // process ID of setuid child
pppdisrunning(false),
- pppderror(0),
- modemDeviceGroup(-1)
+ pppderror(0)
{
}
//
// open configuration file
//
bool PPPData::open() {
qDebug("opening configfile NetworkSetupPPP");
if (config) return true;
config = new Config("NetworkSetupPPP");
highcount = readNumConfig(GENERAL_GRP, NUMACCOUNTS_KEY, 0) - 1;
if (highcount > MAX_ACCOUNTS)
highcount = MAX_ACCOUNTS;
if(highcount >= 0 && defaultAccount().isEmpty()) {
setAccountbyIndex(0);
setDefaultAccount(accname());
} else if(!setAccount(defaultAccount()))
setDefaultAccount(accname());
// start out with internal debugging disabled
// the user is still free to specify `debug' on his own
setPPPDebug(false);
::pppdVersion(&pppdVer, &pppdMod, &pppdPatch);
return true;
}
//
// save configuration
//
void PPPData::save() {
if (config) {
writeConfig(GENERAL_GRP, NUMACCOUNTS_KEY, count());
delete config;
config = 0;
qDebug("worte confi NetworkSetupPPP");
}
if (_data){
delete _data;
_data = 0;
}
@@ -284,97 +283,96 @@ void PPPData::set_automatic_redial(bool set) {
bool PPPData::get_iconify_on_connect() {
return (bool) readNumConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, TRUE);
}
void PPPData::set_iconify_on_connect(bool set) {
writeConfig(GENERAL_GRP, ICONIFY_ON_CONNECT_KEY, (int) set);
}
bool PPPData::get_dock_into_panel() {
return (bool) readNumConfig(GENERAL_GRP, DOCKING_KEY, false);
}
void PPPData::set_dock_into_panel(bool set) {
writeConfig(GENERAL_GRP, DOCKING_KEY, (int) set);
}
QString PPPData::pppdVersion() {
return QString("%1.%2.%3").arg(pppdVer).arg(pppdMod).arg(pppdPatch);
}
bool PPPData::pppdVersionMin(int ver, int mod, int patch) {
// check if pppd version fulfills minimum requirement
return (pppdVer > ver
|| (pppdVer == ver && pppdMod > mod)
|| (pppdVer == ver && pppdMod == mod && pppdPatch >= patch));
}
int PPPData::pppdTimeout() {
return readNumConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, PPPD_TIMEOUT);
}
void PPPData::setpppdTimeout(int n) {
writeConfig(GENERAL_GRP, PPPDTIMEOUT_KEY, n);
}
const QString PPPData::modemDevice() {
return readConfig (modemGroup(), MODEMDEV_KEY, devices[DEV_DEFAULT]);
}
bool PPPData::setModemDevice(const QString &n) {
- //FIXME: change modem group
bool ret = false;
for (int i = 0; devices[i]; i++)
if (devices[i] == n){
modemDeviceGroup = i;
writeConfig(modemGroup(), MODEMDEV_KEY, n);
ret = true;
}
return ret;
}
const QString PPPData::flowcontrol() {
return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS");
}
void PPPData::setFlowcontrol(const QString &n) {
writeConfig(modemGroup(), FLOWCONTROL_KEY, n);
}
const QString PPPData::speed() {
QString s = readConfig(modemGroup(), SPEED_KEY, "57600");
// undo the damage of a bug in former versions. It left an empty Speed=
// entry in kppprc. kppp did set the serial port to 57600 as default but
// pppd wouldn't receive the speed via the command line.
if(s.toUInt() == 0)
s = "57600";
return s;
}
void PPPData::setSpeed(const QString &n) {
writeConfig(modemGroup(), SPEED_KEY, n);
}
#if 0
void PPPData::setUseCDLine(const int n) {
writeConfig(modemGroup(),USECDLINE_KEY,n);
}
int PPPData::UseCDLine() {
return readNumConfig(modemGroup(),USECDLINE_KEY,0);
}
#endif
@@ -759,97 +757,97 @@ bool PPPData::deleteAccount() {
// }
// }
// // make sure the top account is cleared
// setAccountbyIndex(highcount);
// map = config->entryMap(cgroup);
// it = map.begin();
// config->setGroup(cgroup);
// while (it.key() != QString::null) {
// config->writeEntry(it.key(), "");
// it++;
// }
// highcount--;
// if(caccount > highcount)
// caccount = highcount;
// setAccountbyIndex(caccount);
// return true;
}
bool PPPData::deleteAccount(const QString &aname) {
if(!setAccount(aname))
return false;
deleteAccount();
return true;
}
int PPPData::newaccount() {
qDebug("PPPData::newaccount highcount %i/%i",highcount,MAX_ACCOUNTS);
if(!config) open();
if (highcount >= MAX_ACCOUNTS) return -1;
highcount++;
setAccountbyIndex(highcount);
setpppdArgumentDefaults();
qDebug("PPPData::newaccount -> %i",caccount);
return caccount;
}
int PPPData::copyaccount(int i) {
-
+// FIXME
// if(highcount >= MAX_ACCOUNTS)
return -1;
// setAccountbyIndex(i);
// QMap <QString, QString> map = config->entryMap(cgroup);
// QMap <QString, QString>::ConstIterator it = map.begin();
// QString newname = i18n("%1_copy").arg(accname());
// newaccount();
// while (it != map.end()) {
// config->writeEntry(it.key(), *it);
// it++;
// }
// setAccname(newname);
// return caccount;
}
const QString PPPData::accname() {
return readConfig(cgroup, NAME_KEY);
}
void PPPData::setAccname(const QString &n) {
if(!cgroup.isNull()) {
// are we manipulating the default account's name ? then change it, too.
bool def = accname() == defaultAccount();
writeConfig(cgroup, NAME_KEY, n);
if (def)
setDefaultAccount(n);
}
}
#define SEPARATOR_CHAR '&'
QStringList &PPPData::phonenumbers() {
readListConfig(cgroup, PHONENUMBER_KEY, phonelist, SEPARATOR_CHAR);
return phonelist;
}
const QString PPPData::phonenumber() {
@@ -1176,73 +1174,79 @@ void PPPData::setpppdArgumentDefaults() {
// QColor &in,
// QColor &out)
// {
// QColor c;
// if(config) {
// config->setGroup(GRAPH_GRP);
// enable = config->readBoolEntry(GENABLED, true);
// bg = Qt::white;
// //bg = config->readColorEntry(GCOLOR_BG, &c);
// text = Qt::black;
// //text = config->readColorEntry(GCOLOR_TEXT, &c);
// in = Qt::blue;
// //in = config->readColorEntry(GCOLOR_IN, &c);
// out = Qt::red;
// //out = config->readColorEntry(GCOLOR_OUT, &c);
// }
// }
// bool PPPData::graphingEnabled() {
// return (bool) readNumConfig(GRAPH_GRP, GENABLED, true);
// }
//
//functions to change/set the child pppd process info
//
bool PPPData::pppdRunning() const {
return pppdisrunning;
}
void PPPData::setpppdRunning(bool set) {
pppdisrunning = set;
}
int PPPData::pppdError() const {
return pppderror;
}
void PPPData::setpppdError(int err) {
pppderror = err;
}
QString PPPData::modemGroup()
{
if (modemDeviceGroup<0)qFatal("wrong modem %i",modemDeviceGroup);
- return QString("MODEM_GRP_%1").arg(modemDeviceGroup);
+ return QString("%1_%1").arg(MODEM_GRP).arg(modemDeviceGroup);
}
-// //
-// // window position
-// //
-// void PPPData::winPosConWin(int& p_x, int& p_y) {
-// p_x = readNumConfig(WINPOS_GRP, WINPOS_CONWIN_X, QApplication::desktop()->width()/2-160);
-// p_y = readNumConfig(WINPOS_GRP, WINPOS_CONWIN_Y, QApplication::desktop()->height()/2-55);
-// }
-// void PPPData::setWinPosConWin(int p_x, int p_y) {
-// writeConfig(WINPOS_GRP, WINPOS_CONWIN_X, p_x);
-// writeConfig(WINPOS_GRP, WINPOS_CONWIN_Y, p_y);
-// }
+QMap<QString,QString> PPPData::getConfiguredInterfaces()
+{
+ QMap<QString,QString> ifaces;
+ int count = readNumConfig( ACCLIST_GRP, ACCOUNTS_COUNT, -1 );
+ QString accGrp;
+ for (int i = 0; i < count; i++){
+ accGrp = QString("%1_%1").arg(ACCLIST_GRP).arg(i);
+ ifaces.insert( readConfig( accGrp, ACOUNTS_DEV, "error" ),
+ readConfig( accGrp, ACOUNTS_ACC, "error" ) );
+ }
-// void PPPData::winPosStatWin(int& p_x, int& p_y) {
-// p_x = readNumConfig(WINPOS_GRP, WINPOS_STATWIN_X, QApplication::desktop()->width()/2-160);
-// p_y = readNumConfig(WINPOS_GRP, WINPOS_STATWIN_Y, QApplication::desktop()->height()/2-55);
-// }
+ return ifaces;
+}
-// void PPPData::setWinPosStatWin(int p_x, int p_y) {
-// writeConfig(WINPOS_GRP, WINPOS_STATWIN_X, p_x);
-// writeConfig(WINPOS_GRP, WINPOS_STATWIN_Y, p_y);
-// }
+void PPPData::setConfiguredInterfaces( QMap<QString,QString> ifaces )
+{
+ QMap<QString,QString>::Iterator it;
+ QString accGrp;
+ int i = 0;
+ for( it = ifaces.begin(); it != ifaces.end(); ++it, ++i ){
+ accGrp = QString("%1_%1").arg(ACCLIST_GRP).arg(i);
+ writeConfig( accGrp, ACOUNTS_DEV, it.key() );
+ writeConfig( accGrp, ACOUNTS_ACC, it.data() );
+ }
+ writeConfig( ACCLIST_GRP, ACCOUNTS_COUNT, i );
+
+}
diff --git a/noncore/settings/networksettings/ppp/pppdata.h b/noncore/settings/networksettings/ppp/pppdata.h
index 41dfbd8..c1c7e69 100644
--- a/noncore/settings/networksettings/ppp/pppdata.h
+++ b/noncore/settings/networksettings/ppp/pppdata.h
@@ -1,239 +1,236 @@
/* -*- C++ -*-
*
* kPPP: A pppd front end for the KDE project
*
* $Id$
*
* Copyright (C) 1997 Bernd Johannes Wuebben
* wuebben@math.cornell.edu
*
* based on EzPPP:
* Copyright (C) 1997 Jay Painter
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef _PPPDATA_H_
#define _PPPDATA_H_
#include <unistd.h>
#include <sys/types.h>
+#include <qcolor.h>
+#include <qmap.h>
#include <qstring.h>
#include <qstringlist.h>
-#include <qcolor.h>
#include "kpppconfig.h"
class Config;
// string lengths
#define PATH_SIZE 120
#define MODEMSTR_SIZE 80
#define ACCNAME_SIZE 50
#define PHONENUMBER_SIZE 60
#define COMMAND_SIZE 255
#define IPADDR_SIZE 15
#define DOMAIN_SIZE 50
#define TIMEOUT_SIZE 60
//
// keys for config file
//
// groups
#define GENERAL_GRP "PPP_General"
#define MODEM_GRP "PPP_Modem"
#define ACCOUNT_GRP "PPP_Account"
+#define ACCLIST_GRP "PPP_Accounts_List"
//#define GRAPH_GRP "Graph"
//#define WINPOS_GRP "WindowPosition"
// general
#define DEFAULTACCOUNT_KEY "DefaultAccount"
#define PPPDVERSION_KEY "pppdVersion"
#define PPPDTIMEOUT_KEY "pppdTimeout"
#define SHOWCLOCK_KEY "ShowClock"
#define SHOWLOGWIN_KEY "ShowLogWindow"
#define AUTOREDIAL_KEY "AutomaticRedial"
#define DISCONNECT_KEY "DisconnectOnXServerExit"
#define QUITONDISCONNECT_KEY "QuitOnDisconnect"
#define NUMACCOUNTS_KEY "NumberOfAccounts"
#define ID_KEY "ID"
// modem
#define MODEMDEV_KEY "Device"
#define LOCKFILE_KEY "UseLockFile"
#define FLOWCONTROL_KEY "FlowControl"
#define SPEED_KEY "Speed"
#define TIMEOUT_KEY "Timeout"
#define TONEDURATION_KEY "ToneDuration"
#define BUSYWAIT_KEY "BusyWait"
#define INITSTR_KEY "InitString"
#define INITRESP_KEY "InitResponse"
#define PREINITDELAY_KEY "PreInitDelay"
#define INITDELAY_KEY "InitDelay"
#define NODTDETECT_KEY "NoDialToneDetection"
#define DIALTONEWAIT_KEY "WaitForDialTone"
#define DIALSTR_KEY "DialString"
#define CONNECTRESP_KEY "ConnectResponse"
#define BUSYRESP_KEY "BusyResponse"
#define NOCARRIERRESP_KEY "NoCarrierResponse"
#define NODIALTONERESP_KEY "NoDialToneResp"
#define HANGUPSTR_KEY "HangupString"
#define HANGUPRESP_KEY "HangUpResponse"
#define ANSWERSTR_KEY "AnswerString"
#define RINGRESP_KEY "RingResponse"
#define ANSWERRESP_KEY "AnswerResponse"
#define ENTER_KEY "Enter"
#define ESCAPESTR_KEY "EscapeString"
#define ESCAPERESP_KEY "EscapeResponse"
#define ESCAPEGUARDTIME_KEY "EscapeGuardTime"
#define USECDLINE_KEY "UseCDLine"
#define VOLUME_HIGH "VolumeHigh"
#define VOLUME_MEDIUM "VolumeMedium"
#define VOLUME_OFF "VolumeOff"
#define VOLUME_KEY "Volume"
// account
#define NAME_KEY "Name"
#define PHONENUMBER_KEY "Phonenumber"
#define DIAL_PREFIX_KEY "DialPrefix"
#define AUTH_KEY "Authentication"
#define STORED_PASSWORD_KEY "Password"
#define STORED_USERNAME_KEY "Username"
#define STORE_PASSWORD_KEY "StorePassword"
#define BEFORE_CONNECT_KEY "BeforeConnect"
#define COMMAND_KEY "Command"
#define DISCONNECT_COMMAND_KEY "DisconnectCommand"
#define BEFORE_DISCONNECT_KEY "BeforeDisconnect"
#define IPADDR_KEY "IPAddr"
#define SUBNETMASK_KEY "SubnetMask"
#define ACCTENABLED_KEY "AccountingEnabled"
#define VOLACCTENABLED_KEY "VolumeAccountingEnabled"
#define ACCTFILE_KEY "AccountingFile"
#define AUTONAME_KEY "AutoName"
#define GATEWAY_KEY "Gateway"
#define DEFAULTROUTE_KEY "DefaultRoute"
#define DOMAIN_KEY "Domain"
#define DNS_KEY "DNS"
#define AUTODNS_KEY "AutoDNS"
#define EXDNSDISABLED_KEY "ExDNSDisabled"
#define SCRIPTCOM_KEY "ScriptCommands"
#define SCRIPTARG_KEY "ScriptArguments"
#define PPPDARG_KEY "pppdArguments"
#define PPP_DEBUG_OPTION "PPPDebug"
#define ICONIFY_ON_CONNECT_KEY "iconifyOnConnect"
#define DOCKING_KEY "DockIntoPanel"
#define TOTALCOSTS_KEY "TotalCosts"
#define TOTALBYTES_KEY "TotalBytes"
-// graph colors
-#define GENABLED "Enabled"
-#define GCOLOR_BG "Background"
-#define GCOLOR_TEXT "Text"
-#define GCOLOR_IN "InBytes"
-#define GCOLOR_OUT "OutBytes"
-
// pppd errors
#define E_IF_TIMEOUT 1
#define E_PPPD_DIED 2
-// window position
-#define WINPOS_CONWIN_X "WindowPositionConWinX"
-#define WINPOS_CONWIN_Y "WindowPositionConWinY"
-#define WINPOS_STATWIN_X "WindowPositionStatWinX"
-#define WINPOS_STATWIN_Y "WindowPositionStatWinY"
+// account list
+#define ACCOUNTS_COUNT "Accounts_Count"
+#define ACOUNTS_DEV "Accounts_Modem"
+#define ACOUNTS_ACC "Accounts_Account"
class PPPData {
public:
PPPData();
~PPPData() {};
static PPPData* data();
enum { NumInitStrings = 2 };
// general functions
bool open();
void save();
void cancel();
+ QMap<QString,QString> getConfiguredInterfaces();
+ void setConfiguredInterfaces( QMap<QString,QString> );
// function to read/write date to configuration file
QString readConfig(const QString &, const QString &, const QString &);
int readNumConfig(const QString &, const QString &, int);
bool readListConfig(const QString &, const QString &,
QStringList &, char sep = ',');
void writeConfig(const QString &, const QString &, const QString &);
void writeConfig(const QString &, const QString &, int);
void writeListConfig(const QString &, const QString &,
QStringList &, char sep = ',');
// return the current account group
QString currentGroup() { return cgroup; }
QString modemGroup();
// functions to set/get general kppp info
QString password() const;
void setPassword(const QString &);
+ int currentAccountID() { return caccount; };
const QString defaultAccount();
void setDefaultAccount(const QString &);
void set_xserver_exit_disconnect(bool set);
bool get_xserver_exit_disconnect();
void setPPPDebug(bool set);
bool getPPPDebug();
void set_quit_on_disconnect(bool);
bool quit_on_disconnect();
void set_show_clock_on_caption(bool set);
bool get_show_clock_on_caption();
void set_show_log_window(bool set);
bool get_show_log_window();
void set_automatic_redial(bool set);
bool automatic_redial();
void set_iconify_on_connect(bool set);
bool get_iconify_on_connect();
void set_dock_into_panel(bool set);
bool get_dock_into_panel();
const QString enter();
void setEnter(const QString &);
QString pppdVersion();
bool pppdVersionMin(int ver, int mod, int patch);
int pppdTimeout();
void setpppdTimeout(int);
int busyWait();
void setbusyWait(int);
bool modemLockFile();
void setModemLockFile(bool set);
int modemEscapeGuardTime();
void setModemEscapeGuardTime(int i);
void setModemEscapeStr(const QString &);
const QString modemEscapeStr();
diff --git a/noncore/settings/networksettings/ppp/pppmodule.cpp b/noncore/settings/networksettings/ppp/pppmodule.cpp
index 3a97535..7cbccc2 100644
--- a/noncore/settings/networksettings/ppp/pppmodule.cpp
+++ b/noncore/settings/networksettings/ppp/pppmodule.cpp
@@ -1,73 +1,84 @@
#include "pppconfig.h"
#include "pppmodule.h"
#include "pppdata.h"
#include "kpppwidget.h"
#include "interfaceinformationimp.h"
//#include "devices.h"
/**
* Constructor, find all of the possible interfaces
*/
PPPModule::PPPModule() : Module()
{
+ QMap<QString,QString> ifaces = PPPData::data()->getConfiguredInterfaces();
+ QMap<QString,QString>::Iterator it;
Interface *iface;
- iface = new Interface( 0, "device" );
- iface->setHardwareName( "account" );
- list.append( iface );
+ qDebug("getting interfaces");
+ for( it = ifaces.begin(); it != ifaces.end(); ++it ){
+ qDebug("ifaces %s", it.key().latin1());
+ iface = new Interface( 0, it.key() );
+ iface->setHardwareName( it.data() );
+ list.append( iface );
+ }
}
/**
* Delete any interfaces that we own.
*/
PPPModule::~PPPModule(){
- Interface *i;
- for ( i=list.first(); i != 0; i=list.next() )
- delete i;
+ QMap<QString,QString> ifaces;
+ Interface *i;
+ for ( i=list.first(); i != 0; i=list.next() ){
+ ifaces.insert( i->getInterfaceName(), i->getHardwareName() );
+ delete i;
+ }
+ PPPData::data()->setConfiguredInterfaces( ifaces );
+ PPPData::data()->save();
}
/**
* Change the current profile
*/
void PPPModule::setProfile(const QString &newProfile){
profile = newProfile;
}
/**
* get the icon name for this device.
* @param Interface* can be used in determining the icon.
* @return QString the icon name (minus .png, .gif etc)
*/
QString PPPModule::getPixmapName(Interface* ){
return "ppp";
}
/**
* Check to see if the interface i is owned by this module.
* @param Interface* interface to check against
* @return bool true if i is owned by this module, false otherwise.
*/
bool PPPModule::isOwner(Interface *i){
return list.find( i ) != -1;
}
/**
* Create, and return the WLANConfigure Module
* @return QWidget* pointer to this modules configure.
*/
QWidget *PPPModule::configure(Interface *i){
qDebug("return ModemWidget");
PPPConfigWidget *pppconfig = new PPPConfigWidget( i, 0, "PPPConfig",
false,
Qt::WDestructiveClose );
return pppconfig;
}
/**
* Create, and return the Information Module
* @return QWidget* pointer to this modules info.
*/
QWidget *PPPModule::information(Interface *i){
// We don't have any advanced pppd information widget yet :-D
// TODO ^
qDebug("return PPPModule::information");
InterfaceInformationImp *information = new InterfaceInformationImp( 0, "InterfaceSetupImp", i);