summaryrefslogtreecommitdiff
path: root/noncore/apps/opie-console/serialconfigwidget.cpp
Unidiff
Diffstat (limited to 'noncore/apps/opie-console/serialconfigwidget.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/apps/opie-console/serialconfigwidget.cpp135
1 files changed, 135 insertions, 0 deletions
diff --git a/noncore/apps/opie-console/serialconfigwidget.cpp b/noncore/apps/opie-console/serialconfigwidget.cpp
new file mode 100644
index 0000000..a427302
--- a/dev/null
+++ b/noncore/apps/opie-console/serialconfigwidget.cpp
@@ -0,0 +1,135 @@
1#include <qlabel.h>
2#include <qlayout.h>
3#include <qcombobox.h>
4
5#include "iolayerbase.h"
6#include "serialconfigwidget.h"
7
8namespace {
9 void setCurrent( const QString& str, QComboBox* bo ) {
10 uint b = bo->count();
11 for (uint i = 0; i < bo->count(); i++ ) {
12 if ( bo->text(i) == str ) {
13 bo->setCurrentItem( i );
14 return;
15 }
16 }
17 bo->insertItem( str );
18 bo->setCurrentItem( b );
19 }
20
21
22}
23
24SerialConfigWidget::SerialConfigWidget( const QString& name,
25 QWidget* parent,
26 const char* na )
27 : ProfileDialogConnectionWidget( name, parent, na ) {
28
29 m_lay = new QVBoxLayout(this );
30 m_device = new QLabel(tr("Device"), this );
31 m_deviceCmb = new QComboBox(this );
32 m_deviceCmb->setEditable( TRUE );
33
34 m_base = new IOLayerBase(this, "base");
35
36 m_lay->addWidget( m_device );
37 m_lay->addWidget( m_deviceCmb );
38 m_lay->addWidget( m_base );
39
40 m_deviceCmb->insertItem( "/dev/ttyS0" );
41 m_deviceCmb->insertItem( "/dev/ttyS1" );
42 m_deviceCmb->insertItem( "/dev/ttySA0");
43 m_deviceCmb->insertItem( "/dev/ttySA1");
44
45}
46SerialConfigWidget::~SerialConfigWidget() {
47
48}
49void SerialConfigWidget::load( const Profile& prof ) {
50 int rad_flow = prof.readNumEntry("Flow");
51 int rad_parity = prof.readNumEntry("Parity");
52 int speed = prof.readNumEntry("Speed");
53
54 if (rad_flow == 0)
55 m_base->setFlow( IOLayerBase::Hardware );
56 else
57 m_base->setFlow( IOLayerBase::Software );
58
59 if (rad_parity == 1)
60 m_base->setParity( IOLayerBase::Even );
61 else
62 m_base->setParity( IOLayerBase::Odd );
63
64 switch( speed ) {
65 case 115200:
66 m_base->setSpeed(IOLayerBase::Baud_115200 );
67 break;
68 case 57600:
69 m_base->setSpeed( IOLayerBase::Baud_57600 );
70 break;
71 case 38400:
72 m_base->setSpeed(IOLayerBase::Baud_38400 );
73 break;
74 case 19200:
75 m_base->setSpeed( IOLayerBase::Baud_19200 );
76 break;
77 case 9600:
78 default:
79 m_base->setSpeed(IOLayerBase::Baud_9600 );
80 break;
81 }
82
83 if ( prof.readEntry("Device").isEmpty() ) return;
84 setCurrent( prof.readEntry("Device"), m_deviceCmb );
85
86}
87/*
88 * save speed,
89 * flow,
90 * parity
91 */
92void SerialConfigWidget::save( Profile& prof ) {
93 int flow, parity, speed;
94 prof.writeEntry("Device", m_deviceCmb->currentText() );
95
96 switch( m_base->flow() ) {
97 case IOLayerBase::Software:
98 flow = 1;
99 break;
100 case IOLayerBase::Hardware:
101 flow = 0;
102 break;
103 }
104
105 switch( m_base->parity() ) {
106 case IOLayerBase::Odd:
107 parity = 2;
108 break;
109 case IOLayerBase::Even:
110 parity = 1;
111 break;
112 }
113
114 switch( m_base->speed() ) {
115 case IOLayerBase::Baud_115200:
116 speed = 115200;
117 break;
118 case IOLayerBase::Baud_57600:
119 speed = 57600;
120 break;
121 case IOLayerBase::Baud_38400:
122 speed = 38400;
123 break;
124 case IOLayerBase::Baud_19200:
125 speed = 19200;
126 break;
127 case IOLayerBase::Baud_9600:
128 speed = 9600;
129 break;
130 }
131
132 prof.writeEntry("Flow", flow);
133 prof.writeEntry("Parity", parity);
134 prof.writeEntry("Speed", speed);
135}