00001 #include <qlabel.h>
00002 #include <qlayout.h>
00003 #include <qcombobox.h>
00004
00005 #include "iolayerbase.h"
00006 #include "irdaconfigwidget.h"
00007
00008 namespace {
00009 void setCurrent( const QString& str, QComboBox* bo ) {
00010 uint b = bo->count();
00011 for (int i = 0; i < bo->count(); i++ ) {
00012 if ( bo->text(i) == str ) {
00013 bo->setCurrentItem( i );
00014 return;
00015 }
00016 }
00017 bo->insertItem( str );
00018 bo->setCurrentItem( b );
00019 }
00020
00021
00022 }
00023
00024 IrdaConfigWidget::IrdaConfigWidget( const QString& name,
00025 QWidget* parent,
00026 const char* na )
00027 : ProfileDialogConnectionWidget( name, parent, na ) {
00028
00029 m_lay = new QVBoxLayout(this );
00030 m_device = new QLabel(tr("Device"), this );
00031 m_deviceCmb = new QComboBox(this );
00032 m_deviceCmb->setEditable( TRUE );
00033
00034 m_base = new IOLayerBase(this, "base");
00035
00036 m_lay->addWidget( m_device );
00037 m_lay->addWidget( m_deviceCmb );
00038 m_lay->addWidget( m_base );
00039
00040 m_deviceCmb->insertItem( "/dev/ircomm0" );
00041 m_deviceCmb->insertItem( "/dev/ircomm1" );
00042 }
00043
00044 IrdaConfigWidget::~IrdaConfigWidget() {
00045
00046 }
00047 void IrdaConfigWidget::load( const Profile& prof ) {
00048 int rad_flow = prof.readNumEntry("Flow");
00049 int rad_parity = prof.readNumEntry("Parity");
00050 int speed = prof.readNumEntry("Speed");
00051
00052 if (rad_flow == 1) {
00053 m_base->setFlow( IOLayerBase::Hardware );
00054 } else if (rad_flow == 2) {
00055 m_base->setFlow( IOLayerBase::Software );
00056 } else {
00057 m_base->setFlow( IOLayerBase::None );
00058 }
00059
00060 if (rad_parity == 1) {
00061 m_base->setParity( IOLayerBase::Even );
00062 } else if ( rad_parity == 2 ) {
00063 m_base->setParity( IOLayerBase::Odd );
00064 } else {
00065 m_base->setParity( IOLayerBase::NonePar );
00066 }
00067
00068 switch( speed ) {
00069 case 115200:
00070 m_base->setSpeed(IOLayerBase::Baud_115200 );
00071 break;
00072 case 57600:
00073 m_base->setSpeed( IOLayerBase::Baud_57600 );
00074 break;
00075 case 38400:
00076 m_base->setSpeed(IOLayerBase::Baud_38400 );
00077 break;
00078 case 19200:
00079 m_base->setSpeed( IOLayerBase::Baud_19200 );
00080 break;
00081 case 4800:
00082 m_base->setSpeed( IOLayerBase::Baud_4800 );
00083 break;
00084 case 2400:
00085 m_base->setSpeed( IOLayerBase::Baud_2400 );
00086 break;
00087 case 1200:
00088 m_base->setSpeed( IOLayerBase::Baud_1200 );
00089 break;
00090 case 9600:
00091 default:
00092 m_base->setSpeed(IOLayerBase::Baud_9600 );
00093 break;
00094 }
00095
00096 if ( prof.readEntry("Device").isEmpty() ) return;
00097 setCurrent( prof.readEntry("Device"), m_deviceCmb );
00098
00099 }
00100
00101
00102
00103
00104
00105 void IrdaConfigWidget::save( Profile& prof ) {
00106 int flow, parity, speed;
00107 flow = parity = speed = 0;
00108 prof.writeEntry("Device", m_deviceCmb->currentText() );
00109
00110 switch( m_base->flow() ) {
00111 case IOLayerBase::None:
00112 flow = 0;
00113 break;
00114 case IOLayerBase::Software:
00115 flow = 2;
00116 break;
00117 case IOLayerBase::Hardware:
00118 flow = 1;
00119 break;
00120 }
00121
00122
00123 switch( m_base->parity() ) {
00124 case IOLayerBase::Odd:
00125 parity = 2;
00126 break;
00127 case IOLayerBase::Even:
00128 parity = 1;
00129 break;
00130 case IOLayerBase::NonePar:
00131 parity = 0;
00132 break;
00133 }
00134
00135 switch( m_base->speed() ) {
00136 case IOLayerBase::Baud_115200:
00137 speed = 115200;
00138 break;
00139 case IOLayerBase::Baud_57600:
00140 speed = 57600;
00141 break;
00142 case IOLayerBase::Baud_38400:
00143 speed = 38400;
00144 break;
00145 case IOLayerBase::Baud_19200:
00146 speed = 19200;
00147 break;
00148 case IOLayerBase::Baud_4800:
00149 speed = 4800;
00150 break;
00151 case IOLayerBase::Baud_2400:
00152 speed = 2400;
00153 break;
00154 case IOLayerBase::Baud_1200:
00155 speed = 2400;
00156 break;
00157 default:
00158 case IOLayerBase::Baud_9600:
00159 speed = 9600;
00160 break;
00161 }
00162
00163 prof.writeEntry("Flow", flow);
00164 prof.writeEntry("Parity", parity);
00165 prof.writeEntry("Speed", speed);
00166 }