-rw-r--r-- | noncore/settings/networksettings/ppp/connect.cpp | 4 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/general.cpp | 34 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/general.h | 4 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/modem.cpp | 16 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/pppdata.cpp | 12 | ||||
-rw-r--r-- | noncore/settings/networksettings/ppp/pppdata.h | 19 |
6 files changed, 45 insertions, 44 deletions
diff --git a/noncore/settings/networksettings/ppp/connect.cpp b/noncore/settings/networksettings/ppp/connect.cpp index 128877a..8981e01 100644 --- a/noncore/settings/networksettings/ppp/connect.cpp +++ b/noncore/settings/networksettings/ppp/connect.cpp @@ -1210,18 +1210,18 @@ bool ConnectWidget::execppp() { if(_ifaceppp->data()->gateway() != "0.0.0.0") command += _ifaceppp->data()->gateway(); } if(_ifaceppp->data()->subnetmask() != "0.0.0.0") command += " netmask " + _ifaceppp->data()->subnetmask(); - if(_ifaceppp->data()->flowcontrol() != "None") { - if(_ifaceppp->data()->flowcontrol() == "CRTSCTS") + if(_ifaceppp->data()->flowcontrol() != PPPData::FlowNone) { + if(_ifaceppp->data()->flowcontrol() == PPPData::FlowHardware) command += " crtscts"; else command += " xonxoff"; } if(_ifaceppp->data()->defaultroute()) command += " defaultroute"; diff --git a/noncore/settings/networksettings/ppp/general.cpp b/noncore/settings/networksettings/ppp/general.cpp index 5e2a04f..9457173 100644 --- a/noncore/settings/networksettings/ppp/general.cpp +++ b/noncore/settings/networksettings/ppp/general.cpp @@ -187,27 +187,20 @@ ModemWidget::ModemWidget( PPPData *pd, QWidget *parent, const char *name ) "the default of 38400 bits/sec. If everything\n" "works you can try to increase this value, but to\n" "no more than 115200 bits/sec (unless you know\n" "that your serial port supports higher speeds)."); QWhatsThis::add(baud_label,tmp); QWhatsThis::add(baud_c,tmp); - for(int i=0; i <= enter->count()-1; i++) - { - if(_pppdata->enter() == enter->text(i)) - enter->setCurrentItem(i); - } - tl->addRowSpacing(5, 10); //Modem Lock File modemlockfile = new QCheckBox(tr("&Use lock file"), this); - modemlockfile->setChecked(_pppdata->modemLockFile()); // connect(modemlockfile, SIGNAL(toggled(bool)), // SLOT(modemlockfilechanged(bool))); tl->addMultiCellWidget(modemlockfile, 6, 6, 0, 1); // l12->addStretch(1); QWhatsThis::add(modemlockfile, tr("<p>To prevent other programs from accessing the\n" "modem while a connection is established, a\n" @@ -235,34 +228,25 @@ ModemWidget::ModemWidget( PPPData *pd, QWidget *parent, const char *name ) tl->addMultiCellLayout(timeoutLayout, 7, 7, 0, 1); QWhatsThis::add(modemtimeout, tr("This specifies how long <i>kppp</i> waits for a\n" "<i>CONNECT</i> response from your modem. The\n" "recommended value is 30 seconds.")); //set stuff from gpppdata - for(int i=0; i <= enter->count()-1; i++) - { - if(_pppdata->enter() == enter->text(i)) - enter->setCurrentItem(i); - } + enter->setCurrentItem( static_cast<int>(_pppdata->enter()) ); + flowcontrol->setCurrentItem( static_cast<int>( _pppdata->flowcontrol() ) ); for(int i=0; i <= modemdevice->count()-1; i++) { if(_pppdata->modemDevice() == modemdevice->text(i)) modemdevice->setCurrentItem(i); } - for(int i=0; i <= flowcontrol->count()-1; i++) - { - if(_pppdata->flowcontrol() == flowcontrol->text(i)) - flowcontrol->setCurrentItem(i); - } - //set the modem speed for(int i=0; i < baud_c->count(); i++) if(baud_c->text(i) == _pppdata->speed()) baud_c->setCurrentItem(i); tl->setRowStretch(1, 1); } @@ -333,47 +317,49 @@ bool ModemWidget::save() { //first check to make sure that the device name is unique! if(modemname->text().isEmpty() || !_pppdata->isUniqueDevname(modemname->text())) return false; _pppdata->setDevname( modemname->text() ); _pppdata->setModemDevice( modemdevice->currentText() ); - _pppdata->setFlowcontrol(flowcontrol->currentText()); - _pppdata->setFlowcontrol(flowcontrol->currentText()); + _pppdata->setFlowcontrol(static_cast<PPPData::FlowControl>(flowcontrol->currentItem())); + _pppdata->setEnter( static_cast<PPPData::LineTermination>(enter->currentItem())); _pppdata->setSpeed(baud_c->currentText()); _pppdata->setModemLockFile( modemlockfile->isChecked()); _pppdata->setModemTimeout( modemtimeout->value() ); return true; } void ModemWidget::slotBeforeModemQuery() { m_oldModemDev = _pppdata->modemDevice(); - m_oldFlowControl = _pppdata->flowcontrol(); + m_oldFlowControl = static_cast<int>( _pppdata->flowcontrol() ); m_oldSpeed = _pppdata->speed(); m_oldModemLock = _pppdata->modemLockFile(); m_oldModemTimeout = _pppdata->modemTimeout(); + m_oldLineEnd = static_cast<int>( _pppdata->enter() ); _pppdata->setModemDevice( modemdevice->currentText() ); - _pppdata->setFlowcontrol(flowcontrol->currentText()); - _pppdata->setFlowcontrol(flowcontrol->currentText()); + _pppdata->setFlowcontrol(static_cast<PPPData::FlowControl>(flowcontrol->currentItem())); + _pppdata->setEnter(static_cast<PPPData::LineTermination>(enter->currentItem())); _pppdata->setSpeed(baud_c->currentText()); _pppdata->setModemLockFile( modemlockfile->isChecked()); _pppdata->setModemTimeout( modemtimeout->value() ); } void ModemWidget::slotAfterModemQuery() { _pppdata->setModemDevice( m_oldModemDev ); - _pppdata->setFlowcontrol( m_oldFlowControl ); + _pppdata->setFlowcontrol( static_cast<PPPData::FlowControl>(m_oldFlowControl) ); + _pppdata->setEnter( static_cast<PPPData::LineTermination>(m_oldLineEnd) ); _pppdata->setSpeed( m_oldSpeed ); _pppdata->setModemLockFile( m_oldModemLock ); _pppdata->setModemTimeout( m_oldModemTimeout ); } ModemWidget2::ModemWidget2( PPPData *pd, InterfacePPP *ip, QWidget *parent, const char *name) diff --git a/noncore/settings/networksettings/ppp/general.h b/noncore/settings/networksettings/ppp/general.h index a4dece4..0bb3136 100644 --- a/noncore/settings/networksettings/ppp/general.h +++ b/noncore/settings/networksettings/ppp/general.h @@ -76,19 +76,19 @@ private: QComboBox *baud_c; QLabel *baud_label; QSpinBox *modemtimeout; QCheckBox *modemlockfile; PPPData *_pppdata; private: - QString m_oldModemDev, m_oldFlowControl, m_oldSpeed; + QString m_oldModemDev, m_oldSpeed; bool m_oldModemLock; - int m_oldModemTimeout; + int m_oldModemTimeout, m_oldFlowControl, m_oldLineEnd; }; class ModemWidget2 : public QWidget { Q_OBJECT public: ModemWidget2( PPPData*, InterfacePPP*, QWidget *parent=0, const char *name=0 ); bool save(); diff --git a/noncore/settings/networksettings/ppp/modem.cpp b/noncore/settings/networksettings/ppp/modem.cpp index 79f015b..7b2e2a3 100644 --- a/noncore/settings/networksettings/ppp/modem.cpp +++ b/noncore/settings/networksettings/ppp/modem.cpp @@ -220,18 +220,18 @@ bool Modem::opentty() { tty.c_cflag &= ~(CSIZE | CSTOPB | PARENB); tty.c_cflag |= CS8 | CREAD; tty.c_cflag |= CLOCAL; // ignore modem status lines tty.c_iflag = IGNBRK | IGNPAR /* | ISTRIP */ ; tty.c_lflag &= ~ICANON; // non-canonical mode tty.c_lflag &= ~(ECHO|ECHOE|ECHOK|ECHOKE); - if(_pppdata->flowcontrol() != "None") { - if(_pppdata->flowcontrol() == "CRTSCTS") { + if(_pppdata->flowcontrol() != PPPData::FlowNone) { + if(_pppdata->flowcontrol() == PPPData::FlowHardware) { tty.c_cflag |= CRTSCTS; } else { tty.c_iflag |= IXON | IXOFF; tty.c_cc[VSTOP] = 0x13; /* DC3 = XOFF = ^S */ tty.c_cc[VSTART] = 0x11; /* DC1 = XON = ^Q */ } } @@ -350,25 +350,29 @@ bool Modem::writeChar(unsigned char c) { } bool Modem::writeLine(const char *buf) { int len = strlen(buf); char *b = new char[len+2]; memcpy(b, buf, len); // different modems seem to need different line terminations - QString term = _pppdata->enter(); - if(term == "LF") + switch( _pppdata->enter() ) { + case PPPData::EndLF: b[len++]='\n'; - else if(term == "CR") + break; + case PPPData::EndCR: b[len++]='\r'; - else if(term == "CR/LF") { + break; + case PPPData::EndCRLF: b[len++]='\r'; b[len++]='\n'; + break; } + int l = len; while(l) { int wr = write(modemfd, &b[len-l], l); if(wr < 0) { // TODO do something meaningful with the error code (or ignore it oerr << "write() in Modem::writeLine failed" << oendl; delete[] b; return false; diff --git a/noncore/settings/networksettings/ppp/pppdata.cpp b/noncore/settings/networksettings/ppp/pppdata.cpp index eb03ef4..1491ea2 100644 --- a/noncore/settings/networksettings/ppp/pppdata.cpp +++ b/noncore/settings/networksettings/ppp/pppdata.cpp @@ -382,22 +382,22 @@ const QString PPPData::modemDevice() { bool PPPData::setModemDevice(const QString &n) { odebug << "Setting modem dev to >" << n.latin1() << "<" << oendl; writeConfig(modemGroup(), MODEMDEV_KEY, n); return true; //FIXME } -const QString PPPData::flowcontrol() { - return readConfig(modemGroup(), FLOWCONTROL_KEY, "CRTSCTS"); +enum PPPData::FlowControl PPPData::flowcontrol() { + return static_cast<FlowControl>(readNumConfig(modemGroup(), FLOWCONTROL_KEY, FlowHardware)); } -void PPPData::setFlowcontrol(const QString &n) { +void PPPData::setFlowcontrol(enum FlowControl 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 @@ -715,22 +715,22 @@ const QString PPPData::modemAnswerResp() { } void PPPData::setModemAnswerResp(const QString &n) { writeConfig(modemGroup(), ANSWERRESP_KEY, n); } -const QString PPPData::enter() { - return readConfig(modemGroup(), ENTER_KEY, "CR"); +enum PPPData::LineTermination PPPData::enter(){ + return static_cast<PPPData::LineTermination>(readNumConfig(modemGroup(), ENTER_KEY, EndCR)); } -void PPPData::setEnter(const QString &n) { +void PPPData::setEnter(enum PPPData::LineTermination n) { writeConfig(modemGroup(), ENTER_KEY, n); } // // functions to set/return account information // diff --git a/noncore/settings/networksettings/ppp/pppdata.h b/noncore/settings/networksettings/ppp/pppdata.h index d1cbeb5..d731b62 100644 --- a/noncore/settings/networksettings/ppp/pppdata.h +++ b/noncore/settings/networksettings/ppp/pppdata.h @@ -160,16 +160,27 @@ class Config; #define DEVICES_LIST_SEP ',' class PPPData { public: PPPData(); ~PPPData() {}; enum { NumInitStrings = 2 }; + enum LineTermination { + EndCR, + EndLF, + EndCRLF + }; + + enum FlowControl { + FlowHardware, + FlowSoftware, + FlowNone + }; // general functions void save(); void cancel(); QStringList getAccountList(); static QMap<QString,QString> getConfiguredInterfaces(); @@ -217,18 +228,18 @@ public: 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 &); + enum LineTermination enter(); + void setEnter(enum LineTermination); QString pppdVersion(); bool pppdVersionMin(int ver, int mod, int patch); int pppdTimeout(); void setpppdTimeout(int); int busyWait(); @@ -248,18 +259,18 @@ public: // const QString modemName(); // bool setModemName(const QString &); // bool changeModemName(const QString &); const QString modemDevice(); bool setModemDevice(const QString &); - const QString flowcontrol(); - void setFlowcontrol(const QString &); + enum FlowControl flowcontrol(); + void setFlowcontrol(enum FlowControl); int modemTimeout(); void setModemTimeout(int); int modemToneDuration(); void setModemToneDuration(int); QString volumeInitString(); |