summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/opie-console/iolayerbase.cpp102
-rw-r--r--noncore/apps/opie-console/iolayerbase.h11
-rw-r--r--noncore/apps/opie-console/modemconfigwidget.cpp62
-rw-r--r--noncore/apps/opie-console/serialconfigwidget.cpp53
4 files changed, 204 insertions, 24 deletions
diff --git a/noncore/apps/opie-console/iolayerbase.cpp b/noncore/apps/opie-console/iolayerbase.cpp
index 47f9e76..ba7c86e 100644
--- a/noncore/apps/opie-console/iolayerbase.cpp
+++ b/noncore/apps/opie-console/iolayerbase.cpp
@@ -1,169 +1,239 @@
#include <qlabel.h>
#include <qlayout.h>
#include <qcombobox.h>
#include <qbuttongroup.h>
#include <qhbuttongroup.h>
#include <qradiobutton.h>
+#include <qhbox.h>
#include "iolayerbase.h"
namespace {
enum ParityIds {
id_parity_none,
id_parity_odd,
id_parity_even
};
enum FlowIds {
id_flow_hw,
id_flow_sw,
id_flow_none,
};
enum SpeedIds {
id_baud_115200,
id_baud_57600,
id_baud_38400,
id_baud_19200,
id_baud_9600
};
+ enum DataIds {
+ id_data_5,
+ id_data_6,
+ id_data_7,
+ id_data_8
+ };
+
+ enum StopIds {
+ id_stop_1,
+ id_stop_1_5,
+ id_stop_2
+ };
+
}
IOLayerBase::IOLayerBase( QWidget* par, const char* name )
: QWidget( par, name )
{
m_speedLabel = new QLabel(tr("Speed"), this );
m_speedBox = new QComboBox(this );
- m_groupFlow = new QButtonGroup(tr("Flow control"),this );
+ m_groupFlow = new QHButtonGroup(tr("Flow control"),this );
m_flowHw = new QRadioButton(tr("Hardware"), m_groupFlow );
m_flowSw = new QRadioButton(tr("Software"), m_groupFlow );
m_flowNone = new QRadioButton( tr("None"), m_groupFlow );
- m_groupParity = new QButtonGroup(tr("Parity"), this );
+ m_groupParity = new QHButtonGroup(tr("Parity"), this );
m_parityNone = new QRadioButton(tr("None"), m_groupParity );
m_parityOdd = new QRadioButton(tr("Odd"), m_groupParity );
m_parityEven = new QRadioButton(tr("Even"), m_groupParity );
+ m_groupData = new QHButtonGroup(tr("Data Bits"), this);
+ m_data5 = new QRadioButton(tr("5"), m_groupData );
+ m_data6 = new QRadioButton(tr("6"), m_groupData );
+ m_data7 = new QRadioButton(tr("7"), m_groupData );
+ m_data8 = new QRadioButton(tr("8"), m_groupData );
+
+ m_groupStop = new QHButtonGroup(tr("Stop Bits"), this );
+ m_stop1 = new QRadioButton(tr("1"), m_groupStop );
+ m_stop15 = new QRadioButton(tr("1.5"), m_groupStop );
+ m_stop2 = new QRadioButton(tr("2"), m_groupStop );
+
+
m_lroot = new QVBoxLayout( this );
m_lroot->add(m_speedLabel );
m_lroot->add(m_speedBox );
- m_lroot->setStretchFactor(m_speedLabel, 1);
- m_lroot->setStretchFactor(m_speedBox, 1 );
-
- m_hbox = new QHBoxLayout(m_groupFlow, 2 );
- m_hbox->add(m_flowHw );
- m_hbox->add(m_flowSw );
- m_hbox->add(m_flowNone );
m_lroot->add(m_groupFlow );
- m_lroot->setStretchFactor(m_groupFlow, 2 );
-
- m_hboxPar = new QHBoxLayout( m_groupParity, 2 );
- m_hboxPar->add(m_parityOdd );
- m_hboxPar->add(m_parityEven );
- m_hboxPar->add(m_parityNone );
m_lroot->add(m_groupParity );
- m_lroot->setStretchFactor(m_groupParity, 2 );
+ m_lroot->add( m_groupData );
+ m_lroot->add( m_groupStop );
m_lroot->addStretch(2);
// profiles
m_speedBox->insertItem(tr("115200 baud"), id_baud_115200 );
m_speedBox->insertItem(tr("57600 baud"), id_baud_57600 );
m_speedBox->insertItem(tr("38400 baud"), id_baud_38400 );
m_speedBox->insertItem(tr("19200 baud"), id_baud_19200 );
m_speedBox->insertItem(tr("9600 baud"), id_baud_9600 );
};
IOLayerBase::~IOLayerBase() {
}
void IOLayerBase::setFlow( Flow flo ) {
switch ( flo ) {
case Software:
m_flowSw->setChecked( true );
break;
case Hardware:
m_flowHw->setChecked( true );
break;
case None:
m_flowNone->setChecked( true );
break;
}
}
void IOLayerBase::setParity( Parity par ) {
switch( par ) {
case NonePar:
m_parityNone->setChecked( true );
break;
case Odd:
m_parityOdd->setChecked( true );
break;
case Even:
m_parityEven->setChecked( true );
break;
}
}
void IOLayerBase::setSpeed( Speed sp ) {
int index = -1;
switch( sp ) {
case Baud_115200:
index = id_baud_115200;
break;
case Baud_57600:
index = id_baud_57600;
break;
case Baud_38400:
index = id_baud_38400;
break;
case Baud_19200:
index = id_baud_19200;
break;
default:
case Baud_9600:
index = id_baud_9600;
break;
}
m_speedBox->setCurrentItem(index );
}
+
+void IOLayerBase::setData( Data data ) {
+ switch( data ) {
+ case Data_Five:
+ m_data5->setChecked( true );
+ break;
+ case Data_Six:
+ m_data6->setChecked( true );
+ break;
+ case Data_Seven:
+ m_data7->setChecked( true );
+ break;
+ default:
+ m_data8->setChecked( true );
+ break;
+ }
+}
+
+
+void IOLayerBase::setStop( Stop stop ) {
+ switch( stop ) {
+ case Stop_Two:
+ m_stop2->setChecked( true );
+ break;
+ case Stop_OnePointFive:
+ m_stop15->setChecked( true );
+ break;
+ default:
+ m_stop1->setChecked( true );
+ break;
+ }
+}
+
+
+
IOLayerBase::Flow IOLayerBase::flow()const {
if (m_flowHw->isChecked() ) {
return Hardware;
}else if( m_flowSw->isChecked() ) {
return Software;
} else {
return None;
}
}
IOLayerBase::Parity IOLayerBase::parity()const {
if ( m_parityOdd->isChecked() ) {
return Odd;
} else if ( m_parityEven->isChecked() ) {
return Even;
} else {
return NonePar;
}
}
IOLayerBase::Speed IOLayerBase::speed()const{
switch( m_speedBox->currentItem() ) {
case id_baud_115200:
return Baud_115200;
break;
case id_baud_57600:
return Baud_57600;
break;
case id_baud_38400:
return Baud_38400;
break;
case id_baud_19200:
return Baud_19200;
break;
default:
case id_baud_9600:
return Baud_9600;
break;
}
}
+IOLayerBase::Data IOLayerBase::data()const {
+ if ( m_data5->isChecked() ) {
+ return Data_Five;
+ } else if ( m_data6->isChecked() ) {
+ return Data_Six;
+ } else if ( m_data7->isChecked() ) {
+ return Data_Seven;
+ } else {
+ return Data_Eight;
+ }
+}
+IOLayerBase::Stop IOLayerBase::stop()const {
+ if ( m_stop2->isChecked() ) {
+ return Stop_Two;
+ } else if ( m_stop15->isChecked() ) {
+ return Stop_OnePointFive;
+ } else {
+ return Stop_One;
+ }
+}
+
diff --git a/noncore/apps/opie-console/iolayerbase.h b/noncore/apps/opie-console/iolayerbase.h
index 74de46a..e1b96df 100644
--- a/noncore/apps/opie-console/iolayerbase.h
+++ b/noncore/apps/opie-console/iolayerbase.h
@@ -1,49 +1,58 @@
#ifndef OPIE_IO_LAYER_BASE_H
#define OPIE_IO_LAYER_BASE_H
#include <qwidget.h>
class QLabel;
class QComboBox;
class QVBoxLayout;
class QButtonGroup;
class QRadioButton;
class QHBoxLayout;
class IOLayerBase : public QWidget {
Q_OBJECT
public:
enum Flow { Hardware, Software, None };
enum Parity{ Odd =2 , Even =1, NonePar =0 };
enum Speed{ Baud_115200,
Baud_57600,
Baud_38400,
Baud_19200,
Baud_9600 };
+ enum Data { Data_Five =5, Data_Six =6, Data_Seven=7, Data_Eight=8 };
+ enum Stop { Stop_One =1, Stop_OnePointFive=15, Stop_Two=2 };
+
IOLayerBase( QWidget* base, const char* name = 0l);
~IOLayerBase();
void setFlow( Flow flo );
void setParity( Parity par );
void setSpeed( Speed speed );
+ void setData( Data data );
+ void setStop( Stop stop );
Flow flow()const;
Parity parity()const;
Speed speed()const;
+ Data data()const;
+ Stop stop()const;
private:
QVBoxLayout* m_lroot;
QLabel* m_speedLabel;
QComboBox* m_speedBox;
- QButtonGroup* m_groupFlow;
+ QButtonGroup* m_groupFlow, *m_groupData, *m_groupStop ;
QRadioButton *m_flowHw, *m_flowSw, *m_flowNone;
QButtonGroup* m_groupParity;
QRadioButton *m_parityOdd, *m_parityEven, *m_parityNone;
+ QRadioButton *m_data5, *m_data6, *m_data7, *m_data8;
+ QRadioButton *m_stop1, *m_stop15, *m_stop2;
QHBoxLayout* m_hbox;
QHBoxLayout* m_hboxPar;
};
#endif
diff --git a/noncore/apps/opie-console/modemconfigwidget.cpp b/noncore/apps/opie-console/modemconfigwidget.cpp
index ec83b9f..ce44dab 100644
--- a/noncore/apps/opie-console/modemconfigwidget.cpp
+++ b/noncore/apps/opie-console/modemconfigwidget.cpp
@@ -1,203 +1,255 @@
#include <qlabel.h>
#include <qlayout.h>
#include <qcombobox.h>
#include <qlineedit.h>
#include <qpushbutton.h>
#include <qhbox.h>
#include <qregexp.h>
#include "modemconfigwidget.h"
#include "dialdialog.h"
namespace {
void setCurrent( const QString& str, QComboBox* bo ) {
uint b = bo->count();
for (int i = 0; i < bo->count(); i++ ) {
if ( bo->text(i) == str ) {
bo->setCurrentItem( i );
return;
}
}
bo->insertItem( str );
bo->setCurrentItem( b );
}
}
ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent,
const char* na )
: ProfileDialogConnectionWidget( name, parent, na ) {
m_lay = new QVBoxLayout( this );
m_device = new QLabel(tr( "Modem is attached to:" ), this );
m_deviceCmb = new QComboBox(this );
m_deviceCmb->setEditable( TRUE );
QLabel* telLabel = new QLabel( this );
telLabel->setText( tr( "Enter telefon number here:" ) );
- m_telNumber = new QLineEdit( this );
+ // m_telNumber = new QLineEdit( this );
QHBox *buttonBox = new QHBox( this );
+ m_telNumber = new QLineEdit( buttonBox );
QPushButton *atButton = new QPushButton( buttonBox );
atButton->setText( tr( "AT commands" ) );
// disabled for now
atButton->hide();
connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) );
QPushButton *dialButton = new QPushButton( buttonBox );
dialButton->setText( tr( "Enter number" ) );
connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) );
-
m_base = new IOLayerBase( this, "base" );
m_lay->addWidget( m_device );
m_lay->addWidget( m_deviceCmb );
m_lay->addWidget( telLabel );
- m_lay->addWidget( m_telNumber );
m_lay->addWidget( buttonBox );
m_lay->addWidget( m_base );
+ m_lay->addStretch( 0 );
m_deviceCmb->insertItem( "/dev/ttyS0" );
m_deviceCmb->insertItem( "/dev/ttyS1" );
m_deviceCmb->insertItem( "/dev/ttyS2" );
atConf = new ATConfigDialog( this, "ATConfig", true );
}
ModemConfigWidget::~ModemConfigWidget() {
}
void ModemConfigWidget::load( const Profile& prof ) {
int rad_flow = prof.readNumEntry( "Flow" );
int rad_parity = prof.readNumEntry( "Parity" );
int speed = prof.readNumEntry( "Speed" );
+ int dbits = prof.readNumEntry("DataBits");
+ int sbits = prof.readNumEntry("StopBits");
QString number = prof.readEntry( "Number" );
if ( !number.isEmpty() ) {
m_telNumber->setText( number );
}
if ( rad_flow == 1 ) {
m_base->setFlow( IOLayerBase::Hardware );
} else if (rad_flow == 2) {
m_base->setFlow( IOLayerBase::Software );
} else if (rad_flow == 0) {
m_base->setFlow( IOLayerBase::None );
}
if ( rad_parity == 1 ) {
m_base->setParity( IOLayerBase::Even );
} else if ( rad_parity == 2 ){
m_base->setParity( IOLayerBase::Odd );
} else {
m_base->setParity( IOLayerBase::NonePar );
}
switch( speed ) {
case 115200:
m_base->setSpeed( IOLayerBase::Baud_115200 );
break;
case 57600:
m_base->setSpeed( IOLayerBase::Baud_57600 );
break;
case 38400:
m_base->setSpeed( IOLayerBase::Baud_38400 );
break;
case 19200:
m_base->setSpeed( IOLayerBase::Baud_19200 );
break;
case 9600:
default:
m_base->setSpeed( IOLayerBase::Baud_9600 );
break;
}
+
+ if ( dbits == 5) {
+ m_base->setData( IOLayerBase::Data_Five );
+ } else if (rad_flow == 6) {
+ m_base->setData( IOLayerBase::Data_Six );
+ } else if (rad_flow == 7) {
+ m_base->setData( IOLayerBase::Data_Seven );
+ } else {
+ m_base->setData( IOLayerBase::Data_Eight );
+ }
+
+ if ( sbits == 2) {
+ m_base->setStop( IOLayerBase::Stop_Two );
+ } else if ( sbits == 15 ) {
+ m_base->setStop( IOLayerBase::Stop_OnePointFive );
+ } else {
+ m_base->setStop( IOLayerBase::Stop_One );
+ }
+
+
+
if ( prof.readEntry( "Device" ).isEmpty() ) {
return;
}
setCurrent( prof.readEntry( "Device" ), m_deviceCmb );
atConf->readConfig( prof );
}
/*
* save speed,
* flow,
* parity
*/
void ModemConfigWidget::save( Profile& prof ) {
- int flow, parity, speed;
- flow = parity = speed = 0;
+ int flow, parity, speed, data, stop;
+ flow = parity = speed = data = stop = 0;
prof.writeEntry( "Device", m_deviceCmb->currentText() );
switch( m_base->flow() ) {
case IOLayerBase::None:
flow = 0;
break;
case IOLayerBase::Software:
flow = 2;
break;
case IOLayerBase::Hardware:
flow = 1;
break;
}
switch( m_base->parity() ) {
case IOLayerBase::Odd:
parity = 2;
break;
case IOLayerBase::Even:
parity = 1;
break;
case IOLayerBase::NonePar:
parity = 0;
break;
}
switch( m_base->speed() ) {
case IOLayerBase::Baud_115200:
speed = 115200;
break;
case IOLayerBase::Baud_57600:
speed = 57600;
break;
case IOLayerBase::Baud_38400:
speed = 38400;
break;
case IOLayerBase::Baud_19200:
speed = 19200;
break;
case IOLayerBase::Baud_9600:
speed = 9600;
break;
}
+ switch( m_base->data() ) {
+ case IOLayerBase::Data_Five:
+ data = 5;
+ break;
+ case IOLayerBase::Data_Six:
+ data = 6;
+ break;
+ case IOLayerBase::Data_Seven:
+ data = 7;
+ break;
+ case IOLayerBase::Data_Eight:
+ data = 8;
+ break;
+ }
+
+ switch( m_base->stop() ) {
+ case IOLayerBase::Stop_One:
+ stop = 1;
+ break;
+ case IOLayerBase::Stop_OnePointFive:
+ stop = 15;
+ break;
+ case IOLayerBase::Stop_Two:
+ stop = 2;
+ break;
+ }
+
prof.writeEntry( "Flow", flow );
prof.writeEntry( "Parity", parity );
prof.writeEntry( "Speed", speed );
+ prof.writeEntry("DataBits", data);
+ prof.writeEntry("StopBits", stop);
prof.writeEntry( "Number", m_telNumber->text() );
atConf->writeConfig(prof);
}
void ModemConfigWidget::slotAT() {
// ATConfigDialog conf( this, "ATConfig", true );
atConf->showMaximized();
if ( atConf->exec() != QDialog::Accepted ) {
// reload old settings
}
}
void ModemConfigWidget::slotDial() {
DialDialog dial( this, "DialConfig", true );
if(!m_telNumber->text().isEmpty()) {
dial.setNumber(m_telNumber->text().replace(QRegExp("[\\-\\/\\ \\.\\,]"), ""));
}
dial.showMaximized();
if ( dial.exec() == QDialog::Accepted ) {
m_telNumber->setText( dial.number() );
}
}
diff --git a/noncore/apps/opie-console/serialconfigwidget.cpp b/noncore/apps/opie-console/serialconfigwidget.cpp
index 5c6d975..3edf723 100644
--- a/noncore/apps/opie-console/serialconfigwidget.cpp
+++ b/noncore/apps/opie-console/serialconfigwidget.cpp
@@ -1,149 +1,198 @@
#include <qlabel.h>
#include <qlayout.h>
#include <qcombobox.h>
#include "iolayerbase.h"
#include "serialconfigwidget.h"
namespace {
void setCurrent( const QString& str, QComboBox* bo ) {
uint b = bo->count();
for (int i = 0; i < bo->count(); i++ ) {
if ( bo->text(i) == str ) {
bo->setCurrentItem( i );
return;
}
}
bo->insertItem( str );
bo->setCurrentItem( b );
}
}
SerialConfigWidget::SerialConfigWidget( const QString& name,
QWidget* parent,
const char* na )
: ProfileDialogConnectionWidget( name, parent, na ) {
m_lay = new QVBoxLayout(this );
m_device = new QLabel(tr("Device"), this );
m_deviceCmb = new QComboBox(this );
m_deviceCmb->setEditable( TRUE );
m_base = new IOLayerBase(this, "base");
m_lay->addWidget( m_device );
m_lay->addWidget( m_deviceCmb );
m_lay->addWidget( m_base );
m_deviceCmb->insertItem( "/dev/ttyS0" );
m_deviceCmb->insertItem( "/dev/ttyS1" );
m_deviceCmb->insertItem( "/dev/ttySA0");
m_deviceCmb->insertItem( "/dev/ttySA1");
}
SerialConfigWidget::~SerialConfigWidget() {
}
void SerialConfigWidget::load( const Profile& prof ) {
int rad_flow = prof.readNumEntry("Flow");
int rad_parity = prof.readNumEntry("Parity");
int speed = prof.readNumEntry("Speed");
+ int dbits = prof.readNumEntry("DataBits");
+ int sbits = prof.readNumEntry("StopBits");
if (rad_flow == 1) {
m_base->setFlow( IOLayerBase::Hardware );
} else if (rad_flow == 2) {
m_base->setFlow( IOLayerBase::Software );
} else {
m_base->setFlow( IOLayerBase::None );
}
if (rad_parity == 1) {
m_base->setParity( IOLayerBase::Even );
} else if ( rad_parity == 2 ) {
m_base->setParity( IOLayerBase::Odd );
} else {
m_base->setParity( IOLayerBase::NonePar );
}
switch( speed ) {
case 115200:
m_base->setSpeed(IOLayerBase::Baud_115200 );
break;
case 57600:
m_base->setSpeed( IOLayerBase::Baud_57600 );
break;
case 38400:
m_base->setSpeed(IOLayerBase::Baud_38400 );
break;
case 19200:
m_base->setSpeed( IOLayerBase::Baud_19200 );
break;
case 9600:
default:
m_base->setSpeed(IOLayerBase::Baud_9600 );
break;
}
+ if ( dbits == 5) {
+ m_base->setData( IOLayerBase::Data_Five );
+ } else if (rad_flow == 6) {
+ m_base->setData( IOLayerBase::Data_Six );
+ } else if (rad_flow == 7) {
+ m_base->setData( IOLayerBase::Data_Seven );
+ } else {
+ m_base->setData( IOLayerBase::Data_Eight );
+ }
+
+ if ( sbits == 2) {
+ m_base->setStop( IOLayerBase::Stop_Two );
+ } else if ( sbits == 15 ) {
+ m_base->setStop( IOLayerBase::Stop_OnePointFive );
+ } else {
+ m_base->setStop( IOLayerBase::Stop_One );
+ }
+
if ( prof.readEntry("Device").isEmpty() ) return;
setCurrent( prof.readEntry("Device"), m_deviceCmb );
}
/*
* save speed,
* flow,
* parity
*/
void SerialConfigWidget::save( Profile& prof ) {
- int flow, parity, speed ;
- flow = parity = speed = 0;
+ int flow, parity, speed, data, stop;
+ flow = parity = speed = data = stop = 0;
prof.writeEntry("Device", m_deviceCmb->currentText() );
switch( m_base->flow() ) {
case IOLayerBase::None:
flow = 0;
break;
case IOLayerBase::Software:
flow = 2;
break;
case IOLayerBase::Hardware:
flow = 1;
break;
}
switch( m_base->parity() ) {
case IOLayerBase::Odd:
parity = 2;
break;
case IOLayerBase::Even:
parity = 1;
break;
case IOLayerBase::NonePar:
parity = 0;
break;
}
switch( m_base->speed() ) {
case IOLayerBase::Baud_115200:
speed = 115200;
break;
case IOLayerBase::Baud_57600:
speed = 57600;
break;
case IOLayerBase::Baud_38400:
speed = 38400;
break;
case IOLayerBase::Baud_19200:
speed = 19200;
break;
default:
case IOLayerBase::Baud_9600:
speed = 9600;
break;
}
+ switch( m_base->data() ) {
+ case IOLayerBase::Data_Five:
+ data = 5;
+ break;
+ case IOLayerBase::Data_Six:
+ data = 6;
+ break;
+ case IOLayerBase::Data_Seven:
+ data = 7;
+ break;
+ case IOLayerBase::Data_Eight:
+ data = 8;
+ break;
+ }
+
+ switch( m_base->stop() ) {
+ case IOLayerBase::Stop_One:
+ stop = 1;
+ break;
+ case IOLayerBase::Stop_OnePointFive:
+ stop = 15;
+ break;
+ case IOLayerBase::Stop_Two:
+ stop = 2;
+ break;
+ }
+
prof.writeEntry("Flow", flow);
prof.writeEntry("Parity", parity);
prof.writeEntry("Speed", speed);
+ prof.writeEntry("DataBits", data);
+ prof.writeEntry("StopBits", stop);
}