Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

irdaconfigwidget.cpp

Go to the documentation of this file.
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  * save speed,
00102  * flow,
00103  * parity
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 }

Generated on Sat Nov 5 16:16:50 2005 for OPIE by  doxygen 1.4.2