From 205926ec86ffd582f795b649179291626e504830 Mon Sep 17 00:00:00 2001 From: harlekin Date: Wed, 09 Oct 2002 16:33:36 +0000 Subject: flow now has mode none too .-), irda config widget and beginning of layer, first sweep, rest later --- (limited to 'noncore/apps') diff --git a/noncore/apps/opie-console/btconfigwidget.cpp b/noncore/apps/opie-console/btconfigwidget.cpp new file mode 100644 index 0000000..acc4811 --- a/dev/null +++ b/noncore/apps/opie-console/btconfigwidget.cpp @@ -0,0 +1,140 @@ +#include +#include +#include + +#include "iolayerbase.h" +#include "btconfigwidget.h" + +namespace { + void setCurrent( const QString& str, QComboBox* bo ) { + uint b = bo->count(); + for (uint i = 0; i < bo->count(); i++ ) { + if ( bo->text(i) == str ) { + bo->setCurrentItem( i ); + return; + } + } + bo->insertItem( str ); + bo->setCurrentItem( b ); + } +} + +BTConfigWidget::BTConfigWidget( 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/ttyU0" ); + m_deviceCmb->insertItem( "/dev/ttyU1" ); +} + +BTConfigWidget::~BTConfigWidget() { + +} +void BTConfigWidget::load( const Profile& prof ) { + int rad_flow = prof.readNumEntry("Flow"); + int rad_parity = prof.readNumEntry("Parity"); + int speed = prof.readNumEntry("Speed"); + + + 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 { + m_base->setParity( IOLayerBase::Odd ); + } + + 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 ( prof.readEntry("Device").isEmpty() ) return; + setCurrent( prof.readEntry("Device"), m_deviceCmb ); + +} +/* + * save speed, + * flow, + * parity + */ +void BTConfigWidget::save( Profile& prof ) { + int flow, parity, speed; + 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; + } + + 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; + } + + prof.writeEntry("Flow", flow); + prof.writeEntry("Parity", parity); + prof.writeEntry("Speed", speed); +} diff --git a/noncore/apps/opie-console/btconfigwidget.h b/noncore/apps/opie-console/btconfigwidget.h new file mode 100644 index 0000000..64190ad --- a/dev/null +++ b/noncore/apps/opie-console/btconfigwidget.h @@ -0,0 +1,29 @@ +#ifndef OPIE_BT_CONFIG_WIDGET_H +#define OPIE_BT_CONFIG_WIDGET_H + +#include "profiledialogwidget.h" + +class QVBoxLayout; +class QLabel; +class QComboBox; +class IOLayerBase; +class BTConfigWidget : public ProfileDialogConnectionWidget { + + Q_OBJECT + +public: + BTConfigWidget( const QString& name, QWidget* parent, const char* name = 0l ); + ~BTConfigWidget(); + + void load( const Profile& ); + void save( Profile& ); +private: + QVBoxLayout* m_lay; + QLabel* m_device; + QComboBox* m_deviceCmb; + IOLayerBase* m_base; + +}; + + +#endif diff --git a/noncore/apps/opie-console/default.cpp b/noncore/apps/opie-console/default.cpp index da6f3e2..62f02f5 100644 --- a/noncore/apps/opie-console/default.cpp +++ b/noncore/apps/opie-console/default.cpp @@ -1,6 +1,8 @@ #include "io_serial.h" #include "sz_transfer.h" #include "serialconfigwidget.h" +#include "irdaconfigwidget.h" +#include "btconfigwidget.h" #include "terminalwidget.h" #include "vt102emulation.h" @@ -30,14 +32,14 @@ extern "C" { } // Connection Widgets - ProfileDialogWidget* newSerialWidget(const QString& str, QWidget* wid) { - return new SerialConfigWidget(str, wid ); + ProfileDialogWidget* newSerialWidget( const QString& str, QWidget* wid ) { + return new SerialConfigWidget( str, wid ); } - ProfileDialogWidget* newIrDaWidget( const QString& str, QWidget* wid) { - return newSerialWidget(str, wid); + ProfileDialogWidget* newIrDaWidget( const QString& str, QWidget* wid ) { + return new IrdaConfigWidget( str, wid ); } - ProfileDialogWidget* newBTWidget( const QString& str, QWidget* wid) { - return newSerialWidget(str, wid ); + ProfileDialogWidget* newBTWidget( const QString& str, QWidget* wid ) { + return new BTConfigWidget(str, wid ); } // Terminal Widget(s) diff --git a/noncore/apps/opie-console/io_irda.cpp b/noncore/apps/opie-console/io_irda.cpp new file mode 100644 index 0000000..8e31e82 --- a/dev/null +++ b/noncore/apps/opie-console/io_irda.cpp @@ -0,0 +1,60 @@ + +#include "io_irda.h" + +IOIrda::IOIrda( const Profile &config ) : IOSerial( config ) { + m_attach = 0; +} + + +IOIrda::~IOIrda() { + if ( m_attach ) { + delete m_attach; + } +} + + +void IOIrda::close() { + + IOSerial::close(); + // still need error handling + delete m_attach; +} + +bool IOIrda::open() { + + // irdaattach here + m_attach = new OProcess(); + *m_attach << "irattach /dev/ttyS2 -s"; + + connect( m_attach, SIGNAL( processExited( OProcess* ) ), + this, SLOT( slotExited( OProcess* ) ) ); + + if ( m_attach->start() ) { + IOSerial::open(); + } else { + qWarning("could not attach to device"); + delete m_attach; + } +} + +void IOIrda::reload( const Profile &config ) { + m_device = config.readEntry("Device", IRDA_DEFAULT_DEVICE); + m_baud = config.readNumEntry("Baud", IRDA_DEFAULT_BAUD); + m_parity = config.readNumEntry("Parity", IRDA_DEFAULT_PARITY); + m_dbits = config.readNumEntry("DataBits", IRDA_DEFAULT_DBITS); + m_sbits = config.readNumEntry("StopBits", IRDA_DEFAULT_SBITS); + m_flow = config.readNumEntry("Flow", IRDA_DEFAULT_FLOW); +} + + +QString IOIrda::identifier() const { + return "irda"; +} + +QString IOIrda::name() const { + return "Irda IO Layer"; +} + +void IOIrda::slotExited(OProcess* proc ){ + close(); +} diff --git a/noncore/apps/opie-console/io_irda.h b/noncore/apps/opie-console/io_irda.h new file mode 100644 index 0000000..3aee951 --- a/dev/null +++ b/noncore/apps/opie-console/io_irda.h @@ -0,0 +1,46 @@ +#ifndef OPIE_IO_IRDA +#define OPIE_IO_IRDA + +#include +#include "io_serial.h" + +/* Default values to be used if the profile information is incomplete */ +#define IRDA_DEFAULT_DEVICE "/dev/ircomm0" +#define IRDA_DEFAULT_BAUD 9600 +#define IRDA_DEFAULT_PARITY 0 +#define IRDA_DEFAULT_DBITS 8 +#define IRDA_DEFAULT_SBITS 1 +#define IRDA_DEFAULT_FLOW 0 + +/* IOSerial implements a RS232 IO Layer */ + +class IOIrda : public IOSerial { + + Q_OBJECT + +public: + + IOIrda(const Profile &); + ~IOIrda(); + + QString identifier() const; + QString name() const; + +signals: + void received(const QByteArray &); + void error(int, const QString &); + +public slots: + bool open(); + void close(); + void reload(const Profile &); + +private: + OProcess *m_attach; + +private slots: + void slotExited(OProcess* proc); + +}; + +#endif /* OPIE_IO_IRDA */ diff --git a/noncore/apps/opie-console/iolayerbase.cpp b/noncore/apps/opie-console/iolayerbase.cpp index 99b6cc1..ec88b49 100644 --- a/noncore/apps/opie-console/iolayerbase.cpp +++ b/noncore/apps/opie-console/iolayerbase.cpp @@ -15,7 +15,8 @@ namespace { enum FlowIds { id_flow_hw, - id_flow_sw + id_flow_sw, + id_flow_none, }; enum SpeedIds { @@ -38,12 +39,13 @@ IOLayerBase::IOLayerBase( QWidget* par, const char* name ) m_groupFlow = new QButtonGroup(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_parityOdd = new QRadioButton(tr("Odd"), m_groupParity ); m_parityEven = new QRadioButton(tr("Even"), m_groupParity ); - m_lroot = new QVBoxLayout(this ); + m_lroot = new QVBoxLayout( this ); m_lroot->add(m_speedLabel ); m_lroot->add(m_speedBox ); m_lroot->setStretchFactor(m_speedLabel, 1); @@ -52,6 +54,7 @@ IOLayerBase::IOLayerBase( QWidget* par, const char* name ) 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 ); @@ -79,8 +82,12 @@ void IOLayerBase::setFlow( Flow flo ) { case Hardware: m_flowHw->setChecked( true ); break; + case None: + m_flowNone->setChecked( true ); + break; } } + void IOLayerBase::setParity( Parity par ) { switch( par ) { case Odd: @@ -116,9 +123,12 @@ IOLayerBase::Flow IOLayerBase::flow()const { if (m_flowHw->isChecked() ) { qWarning("Hardware flow"); return Hardware; - }else { + }else if( m_flowSw->isChecked() ) { qWarning("Software"); return Software; + } else { + qWarning("None"); + return None; } } IOLayerBase::Parity IOLayerBase::parity()const { diff --git a/noncore/apps/opie-console/iolayerbase.h b/noncore/apps/opie-console/iolayerbase.h index 151a04b..d14f334 100644 --- a/noncore/apps/opie-console/iolayerbase.h +++ b/noncore/apps/opie-console/iolayerbase.h @@ -13,7 +13,7 @@ class QHBoxLayout; class IOLayerBase : public QWidget { Q_OBJECT public: - enum Flow { Hardware, Software }; + enum Flow { Hardware, Software, None }; enum Parity{ Odd =2 , Even =1 }; enum Speed{ Baud_115200, Baud_57600, @@ -35,7 +35,7 @@ private: QLabel* m_speedLabel; QComboBox* m_speedBox; QButtonGroup* m_groupFlow; - QRadioButton *m_flowHw, *m_flowSw; + QRadioButton *m_flowHw, *m_flowSw, *m_flowNone; QButtonGroup* m_groupParity; QRadioButton *m_parityOdd, *m_parityEven; diff --git a/noncore/apps/opie-console/irdaconfigwidget.cpp b/noncore/apps/opie-console/irdaconfigwidget.cpp new file mode 100644 index 0000000..1cc041b --- a/dev/null +++ b/noncore/apps/opie-console/irdaconfigwidget.cpp @@ -0,0 +1,141 @@ +#include +#include +#include + +#include "iolayerbase.h" +#include "irdaconfigwidget.h" + +namespace { + void setCurrent( const QString& str, QComboBox* bo ) { + uint b = bo->count(); + for (uint i = 0; i < bo->count(); i++ ) { + if ( bo->text(i) == str ) { + bo->setCurrentItem( i ); + return; + } + } + bo->insertItem( str ); + bo->setCurrentItem( b ); + } + + +} + +IrdaConfigWidget::IrdaConfigWidget( 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/ircomm0" ); + m_deviceCmb->insertItem( "/dev/ircomm1" ); +} + +IrdaConfigWidget::~IrdaConfigWidget() { + +} +void IrdaConfigWidget::load( const Profile& prof ) { + int rad_flow = prof.readNumEntry("Flow"); + int rad_parity = prof.readNumEntry("Parity"); + int speed = prof.readNumEntry("Speed"); + + 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 { + m_base->setParity( IOLayerBase::Odd ); + } + + 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 ( prof.readEntry("Device").isEmpty() ) return; + setCurrent( prof.readEntry("Device"), m_deviceCmb ); + +} +/* + * save speed, + * flow, + * parity + */ +void IrdaConfigWidget::save( Profile& prof ) { + int flow, parity, speed; + 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; + } + + 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; + } + + prof.writeEntry("Flow", flow); + prof.writeEntry("Parity", parity); + prof.writeEntry("Speed", speed); +} diff --git a/noncore/apps/opie-console/irdaconfigwidget.h b/noncore/apps/opie-console/irdaconfigwidget.h new file mode 100644 index 0000000..56d8089 --- a/dev/null +++ b/noncore/apps/opie-console/irdaconfigwidget.h @@ -0,0 +1,29 @@ +#ifndef OPIE_IRDA_CONFIG_WIDGET_H +#define OPIE_IRDA_CONFIG_WIDGET_H + +#include "profiledialogwidget.h" + +class QVBoxLayout; +class QLabel; +class QComboBox; +class IOLayerBase; +class IrdaConfigWidget : public ProfileDialogConnectionWidget { + + Q_OBJECT + +public: + IrdaConfigWidget( const QString& name, QWidget* parent, const char* name = 0l ); + ~IrdaConfigWidget(); + + void load( const Profile& ); + void save( Profile& ); +private: + QVBoxLayout* m_lay; + QLabel* m_device; + QComboBox* m_deviceCmb; + IOLayerBase* m_base; + +}; + + +#endif diff --git a/noncore/apps/opie-console/opie-console.pro b/noncore/apps/opie-console/opie-console.pro index ea6d759..e1e5248 100644 --- a/noncore/apps/opie-console/opie-console.pro +++ b/noncore/apps/opie-console/opie-console.pro @@ -2,7 +2,7 @@ TEMPLATE = app #CONFIG = qt warn_on release CONFIG = qt debug DESTDIR = $(OPIEDIR)/bin -HEADERS = io_layer.h io_serial.h \ +HEADERS = io_layer.h io_serial.h io_irda.h io_bt.h \ file_layer.h sz_transfer.h \ metafactory.h \ session.h \ @@ -27,9 +27,10 @@ HEADERS = io_layer.h io_serial.h \ default.h \ terminalwidget.h \ iolayerbase.h \ - serialconfigwidget.h + serialconfigwidget.h irdaconfigwidget.h btconfigwidget.h \ -SOURCES = io_layer.cpp io_serial.cpp \ + +SOURCES = io_layer.cpp io_serial.cpp io_irda.cpp io_bt.cpp \ file_layer.cpp sz_transfer.cpp \ main.cpp \ metafactory.cpp \ @@ -53,7 +54,7 @@ SOURCES = io_layer.cpp io_serial.cpp \ default.cpp \ terminalwidget.cpp \ iolayerbase.cpp \ - serialconfigwidget.cpp + serialconfigwidget.cpp irdaconfigwidget.cpp btconfigwidget.cpp \ INTERFACES = configurebase.ui editbase.ui INCLUDEPATH += $(OPIEDIR)/include diff --git a/noncore/apps/opie-console/profileeditordialog.cpp b/noncore/apps/opie-console/profileeditordialog.cpp index faf9c39..914fd25 100644 --- a/noncore/apps/opie-console/profileeditordialog.cpp +++ b/noncore/apps/opie-console/profileeditordialog.cpp @@ -179,7 +179,7 @@ void ProfileEditorDialog::slotConActivated( const QString& str ) { m_con = m_fact->newConnectionPlugin( str, m_tabCon ); if (m_con ) { - m_con->load(m_prof ); + m_con->load( m_prof ); m_layCon->addWidget( m_con ); } } diff --git a/noncore/apps/opie-console/profileeditorplugins.cpp b/noncore/apps/opie-console/profileeditorplugins.cpp index c11c854..937516c 100644 --- a/noncore/apps/opie-console/profileeditorplugins.cpp +++ b/noncore/apps/opie-console/profileeditorplugins.cpp @@ -194,15 +194,18 @@ QWidget *ProfileEditorPlugin::terminal_widget() void ProfileEditorPlugin::slotConnFlow(int id) { - switch(id) - { - case id_flow_hw: - m_profile->writeEntry("Flow", IOSerial::FlowHW); - break; - case id_flow_sw: - m_profile->writeEntry("Flow", IOSerial::FlowSW); - break; - } + switch(id) + { + case id_flow_hw: + m_profile->writeEntry("Flow", IOSerial::FlowHW); + break; + case id_flow_sw: + m_profile->writeEntry("Flow", IOSerial::FlowSW); + break; + case id_flow_sw: + m_profile->writeEntry("None", IOSerial::None); + break; + } } void ProfileEditorPlugin::slotConnParity(int id) diff --git a/noncore/apps/opie-console/serialconfigwidget.cpp b/noncore/apps/opie-console/serialconfigwidget.cpp index a427302..b1ec408 100644 --- a/noncore/apps/opie-console/serialconfigwidget.cpp +++ b/noncore/apps/opie-console/serialconfigwidget.cpp @@ -51,10 +51,13 @@ void SerialConfigWidget::load( const Profile& prof ) { int rad_parity = prof.readNumEntry("Parity"); int speed = prof.readNumEntry("Speed"); - if (rad_flow == 0) + if (rad_flow == 1) { m_base->setFlow( IOLayerBase::Hardware ); - else + } 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 ); @@ -94,11 +97,14 @@ void SerialConfigWidget::save( Profile& prof ) { prof.writeEntry("Device", m_deviceCmb->currentText() ); switch( m_base->flow() ) { + case IOLayerBase::None: + flow = 0; + break; case IOLayerBase::Software: - flow = 1; + flow = 2; break; case IOLayerBase::Hardware: - flow = 0; + flow = 1; break; } diff --git a/noncore/apps/opie-console/widget_layer.h b/noncore/apps/opie-console/widget_layer.h index c91a957..6e2e61e 100644 --- a/noncore/apps/opie-console/widget_layer.h +++ b/noncore/apps/opie-console/widget_layer.h @@ -87,7 +87,7 @@ public: * @param QString text, the text to be inserted */ void insertText( QString text ); - + /** * set selection (clipboard) to text * @param const QString &text, the text to be selected @@ -103,7 +103,7 @@ public: /** * reload configuration */ - virtual void reloadConfig(); + virtual void reloadConfig() = 0; signals: -- cgit v0.9.0.2