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

modemconfigwidget.cpp

Go to the documentation of this file.
00001 #include "modemconfigwidget.h"
00002 #include "dialdialog.h"
00003 #include "comboboxhelper.h"
00004 
00005 /* OPIE */
00006 #include <qpe/qpeapplication.h>
00007 
00008 /* QT */
00009 #include <qlabel.h>
00010 #include <qlayout.h>
00011 #include <qcombobox.h>
00012 #include <qpushbutton.h>
00013 #include <qhbox.h>
00014 
00015 
00016 ModemConfigWidget::ModemConfigWidget( const QString& name, QWidget* parent,
00017                                 const char* na )
00018     : ProfileDialogConnectionWidget( name, parent, na ) {
00019 
00020     m_lay = new QVBoxLayout( this );
00021     m_device = new QLabel(tr( "Modem is attached to:" ), this );
00022     m_deviceCmb = new QComboBox(this );
00023     m_deviceCmb->setEditable( TRUE );
00024 
00025     QLabel* telLabel = new QLabel( this );
00026     telLabel->setText( tr( "Enter telefon number here:" ) );
00027     QHBox *buttonBox = new QHBox( this );
00028     m_telNumber = new QLineEdit( buttonBox );
00029     QPushButton *atButton = new QPushButton( buttonBox );
00030     atButton->setText( tr( "AT commands" ) );
00031     connect( atButton, SIGNAL( clicked() ), this, SLOT( slotAT() ) );
00032 
00033     QPushButton *dialButton = new QPushButton( buttonBox );
00034     dialButton->setText( tr( "Enter number" ) );
00035     connect( dialButton, SIGNAL( clicked() ), this, SLOT( slotDial() ) );
00036 
00037     m_base = new IOLayerBase( this, "base" );
00038 
00039     m_lay->addWidget( m_device );
00040     m_lay->addWidget( m_deviceCmb );
00041     m_lay->addWidget( telLabel );
00042     m_lay->addWidget( buttonBox );
00043     m_lay->addWidget( m_base );
00044     m_lay->addStretch( 0 );
00045 
00046     m_deviceCmb->insertItem( "/dev/ttyS0" );
00047     m_deviceCmb->insertItem( "/dev/ttyS1" );
00048     m_deviceCmb->insertItem( "/dev/ttyS2" );
00049 
00050     atConf = new  ATConfigDialog( this, "ATConfig", true );
00051 }
00052 
00053 ModemConfigWidget::~ModemConfigWidget() {
00054 
00055 }
00056 void ModemConfigWidget::load( const Profile& prof ) {
00057 
00058     int rad_flow = prof.readNumEntry( "Flow" );
00059     int rad_parity = prof.readNumEntry( "Parity" );
00060     int speed = prof.readNumEntry( "Speed" );
00061     int dbits = prof.readNumEntry("DataBits");
00062     int sbits = prof.readNumEntry("StopBits");
00063     QString number = prof.readEntry( "Number" );
00064 
00065     if ( !number.isEmpty() ) {
00066         m_telNumber->setText( number );
00067     }
00068 
00069     if ( rad_flow == 1 ) {
00070         m_base->setFlow( IOLayerBase::Hardware );
00071     } else if (rad_flow == 2) {
00072         m_base->setFlow( IOLayerBase::Software );
00073     } else if (rad_flow == 0) {
00074          m_base->setFlow( IOLayerBase::None );
00075     }
00076 
00077 
00078     if ( rad_parity == 1 ) {
00079         m_base->setParity( IOLayerBase::Even );
00080     } else if ( rad_parity == 2 ){
00081         m_base->setParity( IOLayerBase::Odd );
00082     } else {
00083         m_base->setParity( IOLayerBase::NonePar );
00084     }
00085 
00086     switch( speed ) {
00087     case 115200:
00088         m_base->setSpeed( IOLayerBase::Baud_115200 );
00089         break;
00090     case 57600:
00091         m_base->setSpeed( IOLayerBase::Baud_57600 );
00092         break;
00093     case 38400:
00094         m_base->setSpeed( IOLayerBase::Baud_38400 );
00095         break;
00096     case 19200:
00097         m_base->setSpeed( IOLayerBase::Baud_19200 );
00098         break;
00099     case 4800:
00100         m_base->setSpeed( IOLayerBase::Baud_4800 );
00101         break;
00102     case 2400:
00103         m_base->setSpeed( IOLayerBase::Baud_2400 );
00104         break;
00105     case 1200:
00106         m_base->setSpeed( IOLayerBase::Baud_1200 );
00107     case 9600:
00108     default:
00109         m_base->setSpeed( IOLayerBase::Baud_9600 );
00110         break;
00111     }
00112 
00113 
00114     if ( dbits == 5) {
00115         m_base->setData( IOLayerBase::Data_Five );
00116     } else if (rad_flow == 6) {
00117         m_base->setData( IOLayerBase::Data_Six );
00118     } else if (rad_flow == 7) {
00119         m_base->setData( IOLayerBase::Data_Seven );
00120     } else {
00121         m_base->setData( IOLayerBase::Data_Eight );
00122     }
00123 
00124     if ( sbits == 2) {
00125         m_base->setStop( IOLayerBase::Stop_Two );
00126     } else if ( sbits == 15 ) {
00127         m_base->setStop( IOLayerBase::Stop_OnePointFive );
00128     } else {
00129         m_base->setStop( IOLayerBase::Stop_One );
00130     }
00131 
00132 
00133     atConf->readConfig( prof );
00134     if ( prof.readEntry( "Device" ).isEmpty() ) {
00135         return;
00136     }
00137     ComboboxHelper::setCurrent( prof.readEntry( "Device" ), m_deviceCmb );
00138 
00139 
00140 }
00141 
00142 /*
00143  * save speed,
00144  * flow,
00145  * parity
00146  */
00147 void ModemConfigWidget::save( Profile& prof ) {
00148     int flow, parity, speed, data, stop;
00149     flow = parity = speed = data = stop = 0;
00150     prof.writeEntry( "Device", m_deviceCmb->currentText() );
00151 
00152 
00153     switch( m_base->flow() ) {
00154     case IOLayerBase::None:
00155         flow = 0;
00156         break;
00157     case IOLayerBase::Software:
00158         flow = 2;
00159         break;
00160     case IOLayerBase::Hardware:
00161         flow = 1;
00162         break;
00163     }
00164 
00165     switch( m_base->parity() ) {
00166     case IOLayerBase::Odd:
00167         parity = 2;
00168         break;
00169     case IOLayerBase::Even:
00170         parity = 1;
00171         break;
00172     case IOLayerBase::NonePar:
00173         parity = 0;
00174         break;
00175     }
00176 
00177     switch( m_base->speed() ) {
00178     case IOLayerBase::Baud_115200:
00179         speed = 115200;
00180         break;
00181     case IOLayerBase::Baud_57600:
00182         speed = 57600;
00183         break;
00184     case IOLayerBase::Baud_38400:
00185         speed = 38400;
00186         break;
00187     case IOLayerBase::Baud_19200:
00188         speed = 19200;
00189         break;
00190     case IOLayerBase::Baud_9600:
00191         speed = 9600;
00192         break;
00193     case IOLayerBase::Baud_4800:
00194         speed = 4800;
00195         break;
00196     case IOLayerBase::Baud_2400:
00197         speed = 2400;
00198         break;
00199     case IOLayerBase::Baud_1200:
00200         speed = 1200;
00201         break;
00202     }
00203 
00204     switch( m_base->data() ) {
00205     case IOLayerBase::Data_Five:
00206         data = 5;
00207         break;
00208     case IOLayerBase::Data_Six:
00209         data = 6;
00210         break;
00211     case IOLayerBase::Data_Seven:
00212         data = 7;
00213         break;
00214     case IOLayerBase::Data_Eight:
00215         data = 8;
00216         break;
00217     }
00218 
00219     switch( m_base->stop() ) {
00220     case IOLayerBase::Stop_One:
00221         stop = 1;
00222         break;
00223     case IOLayerBase::Stop_OnePointFive:
00224         stop = 15;
00225         break;
00226     case IOLayerBase::Stop_Two:
00227         stop = 2;
00228         break;
00229     }
00230 
00231     prof.writeEntry( "Flow", flow );
00232     prof.writeEntry( "Parity", parity );
00233     prof.writeEntry( "Speed", speed );
00234     prof.writeEntry("DataBits", data);
00235     prof.writeEntry("StopBits", stop);
00236     prof.writeEntry( "Number", m_telNumber->text() );
00237 
00238 
00239     atConf->writeConfig(prof);
00240 }
00241 
00242 void ModemConfigWidget::slotAT() {
00243     //  ATConfigDialog conf( this, "ATConfig", true );
00244     // josef/Max I know why don't you create the stuff on the stack
00245     // but making it a TopLevel Dialog and ignoring
00246     // cancel is not fun either...
00247     // what to do? FIXME!!! -zecke
00248     if ( QPEApplication::execDialog( atConf ) != QDialog::Accepted ) {
00249         // reload old settings
00250     }
00251 }
00252 
00253 void ModemConfigWidget::slotDial() {
00254     DialDialog dial( this, "DialConfig", true );
00255     if(!m_telNumber->text().isEmpty()) {
00256         dial.setNumber(m_telNumber->text().replace(QRegExp("[\\-\\/\\ \\.\\,]"), ""));
00257     }
00258     if ( QPEApplication::execDialog( &dial ) == QDialog::Accepted ) {
00259         m_telNumber->setText( dial.number() );
00260     }
00261 }

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