summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/obex/obex.cc22
-rw-r--r--core/obex/obexsend.cpp141
-rw-r--r--core/obex/obexsend.h47
3 files changed, 143 insertions, 67 deletions
diff --git a/core/obex/obex.cc b/core/obex/obex.cc
index b8ed6e0..595fed9 100644
--- a/core/obex/obex.cc
+++ b/core/obex/obex.cc
@@ -1,13 +1,16 @@
1 1
2#include <qapplication.h> 2#include <qapplication.h>
3#include <qfile.h> 3#include <qfile.h>
4#include <qmessagebox.h> 4#include <qfileinfo.h>
5#include <qtextcodec.h>
6
5#include <qpe/qcopenvelope_qws.h> 7#include <qpe/qcopenvelope_qws.h>
8
6#include <opie/oprocess.h> 9#include <opie/oprocess.h>
7#include "obex.h" 10#include "obex.h"
8 11
9using namespace OpieObex; 12using namespace OpieObex;
10 13
11Obex::Obex( QObject *parent, const char* name ) 14Obex::Obex( QObject *parent, const char* name )
12 : QObject(parent, name ) 15 : QObject(parent, name )
13{ 16{
@@ -101,26 +104,39 @@ void Obex::slotExited(OProcess* proc ){
101 if (proc == m_rec ) { // receive process 104 if (proc == m_rec ) { // receive process
102 received(); 105 received();
103 }else if ( proc == m_send ) { 106 }else if ( proc == m_send ) {
104 sendEnd(); 107 sendEnd();
105 } 108 }
106} 109}
107void Obex::slotStdOut(OProcess* proc, char* buf, int len){ 110void Obex::slotStdOut(OProcess* proc, char* buf, int len){
108 if ( proc == m_rec ) { // only receive 111 if ( proc == m_rec ) { // only receive
109 QString str = QString::fromUtf8( buf, len ); 112 for (int i = 0; i < len; i++ ) {
110 m_outp.append( str ); 113 printf("%c", buf[i] );
114 }
115 printf("\n");
116 QByteArray ar( len );
117 memcpy( ar.data(), buf, len );
118 qWarning("parsed: %s", ar.data() );
119 m_outp.append( ar );
111 } 120 }
112} 121}
113 122
114void Obex::received() { 123void Obex::received() {
115 if (m_rec->normalExit() ) { 124 if (m_rec->normalExit() ) {
116 if ( m_rec->exitStatus() == 0 ) { // we got one 125 if ( m_rec->exitStatus() == 0 ) { // we got one
117 QString filename = parseOut(); 126 QString filename = parseOut();
118 qWarning("ACHTUNG %s", filename.latin1() ); 127 qWarning("ACHTUNG %s", filename.latin1() );
128 if (filename.contains( 'ö' ) || filename.contains( 'ä' ) || filename.contains('ü' ) ) {
129 qWarning("renaming!!!!");
130 QFileInfo inf( filename );
131 QString newName = "/tmp/opie-obex." + inf.extension();
132 ::rename( QFile::encodeName( filename ).data(), newName );
133 qWarning("name is %s", QFile::encodeName( filename ).data() );
134 }
119 emit receivedFile( filename ); 135 emit receivedFile( filename );
120 } 136 }
121 }else{ 137 }else{
122 emit done(false); 138 emit done(false);
123 }; 139 };
124 delete m_rec; 140 delete m_rec;
125 m_rec = 0; 141 m_rec = 0;
126 receive(); 142 receive();
diff --git a/core/obex/obexsend.cpp b/core/obex/obexsend.cpp
index d5ebd81..0da57ca 100644
--- a/core/obex/obexsend.cpp
+++ b/core/obex/obexsend.cpp
@@ -1,13 +1,14 @@
1#include <qpushbutton.h> 1#include <qpushbutton.h>
2#include <qlabel.h> 2#include <qlabel.h>
3#include <qhbox.h> 3#include <qhbox.h>
4#include <qlayout.h> 4#include <qlayout.h>
5#include <qtimer.h> 5#include <qtimer.h>
6#include <qtl.h>
6 7
7#include <qcopchannel_qws.h> 8#include <qcopchannel_qws.h>
8 9
9#include <qpe/resource.h> 10#include <qpe/resource.h>
10#include <qpe/qcopenvelope_qws.h> 11#include <qpe/qcopenvelope_qws.h>
11 12
12#include "obex.h" 13#include "obex.h"
13#include "obexsend.h" 14#include "obexsend.h"
@@ -54,18 +55,18 @@ void SendWidget::initUI() {
54 55
55 QLabel* devices = new QLabel(this); 56 QLabel* devices = new QLabel(this);
56 devices->setText("<qt><b>Devices:</b></qt>"); 57 devices->setText("<qt><b>Devices:</b></qt>");
57 devices->setAlignment( AlignLeft | AlignTop ); 58 devices->setAlignment( AlignLeft | AlignTop );
58 lay->addWidget( devices,10 ); 59 lay->addWidget( devices,10 );
59 60
60 m_devBox = new DeviceBox(this); 61 m_devBox = new DeviceBox(this);
61 lay->addWidget( m_devBox, 50 ); 62 lay->addWidget( m_devBox, 50 );
62 connect(m_devBox, SIGNAL(selectedDevice(const QString&, int ) ), 63 connect(m_devBox, SIGNAL(selectedDevice(int, int ) ),
63 this, SLOT(slotSelectedDevice(const QString&, int) ) ); 64 this, SLOT(slotSelectedDevice(int, int) ) );
64 65
65 QPushButton *but = new QPushButton(this); 66 QPushButton *but = new QPushButton(this);
66 but->setText(tr("Done") ); 67 but->setText(tr("Done") );
67 connect(but, SIGNAL(clicked() ), 68 connect(but, SIGNAL(clicked() ),
68 this, SLOT(slotDone() ) ); 69 this, SLOT(slotDone() ) );
69 70
70 lay->addWidget( but ); 71 lay->addWidget( but );
71 m_lay = lay; 72 m_lay = lay;
@@ -81,92 +82,93 @@ void SendWidget::initUI() {
81 */ 82 */
82void SendWidget::send( const QString& file, const QString& desc ) { 83void SendWidget::send( const QString& file, const QString& desc ) {
83 m_file = file; 84 m_file = file;
84 m_irDa.clear(); 85 m_irDa.clear();
85 m_start = 0; 86 m_start = 0;
86 m_lblFile->setText(desc.isEmpty() ? file : desc ); 87 m_lblFile->setText(desc.isEmpty() ? file : desc );
87 88
88 if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) { 89 if ( !QCopChannel::isRegistered("QPE/IrDaApplet") ) {
89 m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error ); 90 m_irDeSearch = m_devBox->addDevice( tr("IrDa is not enabled!"), DeviceBox::Error );
90 m_start++; 91 m_start++;
91 }else 92 }else
92 m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search ); 93 m_irDeSearch = m_devBox->addDevice( tr("Searching for IrDa Devices."), DeviceBox::Search );
93 94
94 if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) { 95 if ( !QCopChannel::isRegistered("QPE/Bluetooth") ) {
95 m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error ); 96 m_btDeSearch = m_devBox->addDevice( tr("Bluetooth is not available"), DeviceBox::Error );
96 m_start++; 97 m_start++;
97 }else 98 }else
98 m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search ); 99 m_btDeSearch = m_devBox->addDevice( tr("Searching for bluetooth Devices."), DeviceBox::Search );
99 100
100 if (m_start != 2 ) { 101 if (m_start != 2 ) {
101 QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()"); 102 QCopEnvelope e0("QPE/IrDaApplet", "enableIrda()");
102 QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()"); 103 QCopEnvelope e1("QPE/Bluetooth", "enableBluetooth()");
103 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); 104 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()");
104 QCopEnvelope e3("QPE/Bluetooth", "listDevices()"); 105 QCopEnvelope e3("QPE/Bluetooth", "listDevices()");
105 } 106 }
106} 107}
107void SendWidget::slotIrDaDevices( const QStringList& list) { 108void SendWidget::slotIrDaDevices( const QStringList& list) {
108 qWarning("slot it irda devices "); 109 qWarning("slot it irda devices ");
109 m_irDa = list; 110 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) {
110 m_start = 0; 111 int id = m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") );
111 for (QStringList::ConstIterator it = list.begin(); it != list.end(); ++it ) 112 m_irDa.insert( id, (*it) );
112 m_devBox->addDevice( (*it), DeviceBox::IrDa, tr("Scheduling for beam.") ); 113 }
113 114 m_devBox->removeDevice( m_irDeSearch );
114 m_devBox->removeDevice( tr("Searching for IrDa Devices.") ); 115 m_irDaIt = m_irDa.begin();
115 116
116 slotStartIrda(); 117 slotStartIrda();
117} 118}
119
118void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) { 120void SendWidget::slotBTDevices( const QMap<QString, QString>& str ) {
119 m_bt = str;
120 for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) { 121 for(QMap<QString, QString>::ConstIterator it = str.begin(); it != str.end(); ++it ) {
121 m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") ); 122 int id = m_devBox->addDevice( it.key(), DeviceBox::BT, tr("Click to beam") );
123 m_bt.insert( id, Pair( it.key(), it.data() ) );
122 } 124 }
123 m_devBox->removeDevice( tr("Searching for bluetooth Devices.") ); 125 m_devBox->removeDevice( m_btDeSearch );
124} 126}
125void SendWidget::slotSelectedDevice( const QString& name, int dev ) { 127void SendWidget::slotSelectedDevice( int name, int dev ) {
126 qWarning("Start beam? %s %d", name.latin1(), dev ); 128 qWarning("Start beam? %d %d", name, dev );
127 if ( name == tr("Search again for IrDa.") ) { 129 if ( name == m_irDeSearch ) {
128 for (QStringList::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it ) 130 for (QMap<int, QString>::Iterator it= m_irDa.begin(); it != m_irDa.end(); ++it )
129 m_devBox->removeDevice( (*it) ); 131 m_devBox->removeDevice( it.key() );
130 132
131 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()"); 133 QCopEnvelope e2("QPE/IrDaApplet", "listDevices()");
132 } 134 }
133} 135}
134void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) { 136void SendWidget::dispatchIrda( const QCString& str, const QByteArray& ar ) {
135 qWarning("dispatch irda %s", str.data() ); 137 qWarning("dispatch irda %s", str.data() );
136 if ( str == "devices(QStringList)" ) { 138 if ( str == "devices(QStringList)" ) {
137 QDataStream stream( ar, IO_ReadOnly ); 139 QDataStream stream( ar, IO_ReadOnly );
138 QStringList list; 140 QStringList list;
139 stream >> list; 141 stream >> list;
140 slotIrDaDevices( list ); 142 slotIrDaDevices( list );
141 } 143 }
142} 144}
143void SendWidget::dispatchBt( const QCString& str, const QByteArray& ar ) { 145void SendWidget::dispatchBt( const QCString&, const QByteArray& ) {
144 146
145} 147}
146void SendWidget::slotIrError( int ) { 148void SendWidget::slotIrError( int ) {
147 149
148} 150}
149void SendWidget::slotIrSent( bool b) { 151void SendWidget::slotIrSent( bool b) {
150 qWarning("irda sent!!"); 152 qWarning("irda sent!!");
151 QString text = b ? tr("Sent") : tr("Failure"); 153 QString text = b ? tr("Sent") : tr("Failure");
152// m_devBox->setStatus( m_irDa[m_start], text ); 154 m_devBox->setStatus( m_irDaIt.key(), text );
153 m_start++; 155 ++m_irDaIt;
154 slotStartIrda(); 156 slotStartIrda();
155} 157}
156void SendWidget::slotIrTry(unsigned int trI) { 158void SendWidget::slotIrTry(unsigned int trI) {
157// m_devBox->setStatus( m_irDa[m_start], tr("Try %1").arg( QString::number( trI ) ) ); 159 m_devBox->setStatus( m_irDaIt.key(), tr("Try %1").arg( QString::number( trI ) ) );
158} 160}
159void SendWidget::slotStartIrda() { 161void SendWidget::slotStartIrda() {
160 if (m_start >= m_irDa.count() ) { 162 if (m_irDaIt == m_irDa.end() ) {
161 m_devBox->addDevice(tr("Search again for IrDa."), DeviceBox::Search ); 163 m_irDeSearch = m_devBox->addDevice(tr("Search again for IrDa."), DeviceBox::Search );
162 return; 164 return;
163 } 165 }
164// m_devBox->setStatus( m_irDa[m_start], tr("Start sending") ); 166 m_devBox->setStatus( m_irDaIt.key(), tr("Start sending") );
165 m_obex->send( m_file ); 167 m_obex->send( m_file );
166} 168}
167void SendWidget::slotDone() { 169void SendWidget::slotDone() {
168 QCopEnvelope e0("QPE/IrDaApplet", "disableIrda()"); 170 QCopEnvelope e0("QPE/IrDaApplet", "disableIrda()");
169 QCopEnvelope e1("QPE/Bluetooth", "disableBluetooth()"); 171 QCopEnvelope e1("QPE/Bluetooth", "disableBluetooth()");
170 emit done(); 172 emit done();
171} 173}
172QString SendWidget::file()const { 174QString SendWidget::file()const {
@@ -174,53 +176,88 @@ QString SendWidget::file()const {
174} 176}
175DeviceBox::DeviceBox( QWidget* parent ) 177DeviceBox::DeviceBox( QWidget* parent )
176 : QTextBrowser( parent ) { 178 : QTextBrowser( parent ) {
177 179
178} 180}
179DeviceBox::~DeviceBox() { 181DeviceBox::~DeviceBox() {
180 182
181} 183}
182void DeviceBox::addDevice( const QString& name, int dev, const QString& status ) { 184int DeviceBox::addDevice( const QString& name, int dev, const QString& status ) {
183 QString tex; 185 /* return a id for a range of devices */
184 DeviceItem item( name, status, dev ); 186 int id = idFor ( dev );
185 m_dev.insert( name, item ); 187 DeviceItem item( name, status, dev,id );
186 tex = item.toString(); 188 m_dev.insert( id, item );
187 m_devices.prepend(tex); 189 setText( allText() );
188 setText( text()+ "<br>"+tex );
189}
190void DeviceBox::removeDevice( const QString& name ) {
191 if (!m_dev.contains(name) ) return;
192 m_devices.remove( m_dev[name].toString() );
193 190
194 m_dev.remove(name); 191 return id;
195 setText( m_devices.join("<br>") ); 192}
193void DeviceBox::removeDevice( int id ) {
194 if (!m_dev.contains(id) ) return;
196 195
196 m_dev.remove( id );
197 setText( allText() );
197} 198}
198void DeviceBox::setStatus( const QString& name, const QString& status ) { 199void DeviceBox::setStatus( int id, const QString& status ) {
199 if ( !m_dev.contains(name) ) return; 200 if ( !m_dev.contains(id) ) return;
200 DeviceItem dev = m_dev[name]; 201 m_dev[id].setStatus(status );
201 QString ole = dev.toString(); 202 setText( allText() );
202 dev.setStatus( status );
203 int index = m_devices.findIndex( ole );
204 m_devices[index] = dev.toString();
205 setText( m_devices.join("<br>") );
206} 203}
207void DeviceBox::setSource( const QString& str ) { 204void DeviceBox::setSource( const QString& str ) {
208 qWarning("SetSource:%s", str.latin1() ); 205 qWarning("SetSource:%d", str.toInt() );
209 emit selectedDevice( str, m_dev[str].device() ); 206 int id = str.toInt();
207 emit selectedDevice( id, m_dev[id].device() );
208}
209int DeviceBox::idFor ( int id ) {
210 static int irId = 1501;
211 static int irBT = 1001;
212 static int irSr = 501;
213 static int irEr = 0;
214
215 int ret = -1;
216 switch(id ) {
217 case IrDa:
218 ret = irId;
219 irId++;
220 break;
221 case BT:
222 ret = irBT;
223 irBT++;
224 break;
225 case Search:
226 ret = irSr;
227 irSr++;
228 break;
229 case Error:
230 ret = irEr;
231 irEr++;
232 break;
233 }
234 return ret;
210} 235}
236QString DeviceBox::allText() {
237 QString str;
238 typedef QMap<int, DeviceItem> DeviceMap;
211 239
240 for (QMap<int, DeviceItem>::Iterator it = m_dev.begin(); it != m_dev.end(); ++it ) {
241 str += it.data().toString() + "<br>";
242 }
243 return str;
244}
212 245
213DeviceItem::DeviceItem( const QString& name, 246DeviceItem::DeviceItem( const QString& name,
214 const QString& status, int dev) 247 const QString& status, int dev, int id)
215{ 248{
216 m_name = name; 249 m_name = name;
217 m_status = status; 250 m_status = status;
218 m_dev = dev; 251 m_dev = dev;
252 m_id = id;
253}
254int DeviceItem::id()const {
255 return m_id;
219} 256}
220QString DeviceItem::name()const { 257QString DeviceItem::name()const {
221 return m_name; 258 return m_name;
222} 259}
223QString DeviceItem::status()const { 260QString DeviceItem::status()const {
224 return m_status; 261 return m_status;
225} 262}
226int DeviceItem::device()const { 263int DeviceItem::device()const {
@@ -245,10 +282,10 @@ QString DeviceItem::pixmap()const{
245 return str; 282 return str;
246} 283}
247DeviceItem::~DeviceItem() { 284DeviceItem::~DeviceItem() {
248} 285}
249void DeviceItem::setStatus(const QString& status ) { 286void DeviceItem::setStatus(const QString& status ) {
250 m_status = status; 287 m_status = status;
251} 288}
252QString DeviceItem::toString()const { 289QString DeviceItem::toString()const {
253 return "<p><a href=\""+m_name +"\" ><img src=\""+pixmap()+"\" >"+m_name+" "+m_status+" </a></p>" ; 290 return "<p><a href=\""+QString::number(m_id) +"\" ><img src=\""+pixmap()+"\" >"+m_name+" "+m_status+" </a></p>" ;
254} 291}
diff --git a/core/obex/obexsend.h b/core/obex/obexsend.h
index fd819bc..02100f7 100644
--- a/core/obex/obexsend.h
+++ b/core/obex/obexsend.h
@@ -14,16 +14,28 @@ class QVBoxLayout;
14 * This is the new sending widget for Obex 14 * This is the new sending widget for Obex
15 * It will attemp to smart and be able to send 15 * It will attemp to smart and be able to send
16 * it to multiple devices. 16 * it to multiple devices.
17 * It'll support BT + IrDa 17 * It'll support BT + IrDa
18 */ 18 */
19namespace OpieObex { 19namespace OpieObex {
20 class DeviceBox; 20 class DeviceBox;
21 class Obex; 21 class Obex;
22
23 struct Pair {
24 Pair(const QString& first = QString::null,
25 const QString& second = QString::null)
26 : m_first(first), m_second(second ) {
27 }
28 QString first()const{ return m_first; }
29 QString second()const { return m_second; }
30 private:
31 QString m_first;
32 QString m_second;
33 };
22 class SendWidget : public QWidget{ 34 class SendWidget : public QWidget{
23 Q_OBJECT 35 Q_OBJECT
24 public: 36 public:
25 SendWidget( QWidget* parent = 0, const char* name = 0); 37 SendWidget( QWidget* parent = 0, const char* name = 0);
26 ~SendWidget(); 38 ~SendWidget();
27 39
28 QString file()const; 40 QString file()const;
29 41
@@ -33,67 +45,78 @@ namespace OpieObex {
33 signals: 45 signals:
34 void done(); 46 void done();
35 47
36 private slots: // QCOP slots 48 private slots: // QCOP slots
37 /* IrDa Names*/ 49 /* IrDa Names*/
38 void slotIrDaDevices( const QStringList& ); 50 void slotIrDaDevices( const QStringList& );
39 /* Bt Names + BD-Addr */ 51 /* Bt Names + BD-Addr */
40 void slotBTDevices( const QMap<QString, QString>& ); 52 void slotBTDevices( const QMap<QString, QString>& );
41 void slotSelectedDevice( const QString& name, int dev ); 53 void slotSelectedDevice( int id, int dev );
42 void dispatchIrda( const QCString& str, const QByteArray& ar ); 54 void dispatchIrda( const QCString& str, const QByteArray& ar );
43 void dispatchBt( const QCString& str, const QByteArray& ar ); 55 void dispatchBt( const QCString& str, const QByteArray& ar );
44 56
45 void slotIrError( int ); 57 void slotIrError( int );
46 void slotIrSent(bool); 58 void slotIrSent(bool);
47 void slotIrTry(unsigned int ); 59 void slotIrTry(unsigned int );
48 void slotStartIrda(); 60 void slotStartIrda();
49 void slotDone(); 61 void slotDone();
50 private: 62 private:
51 void initUI(); 63 void initUI();
52 QLabel* m_lblFile; 64 QLabel* m_lblFile;
53 DeviceBox* m_devBox; 65 DeviceBox* m_devBox;
54 QVBoxLayout* m_lay; 66 QVBoxLayout* m_lay;
55 int m_start; 67 int m_start;
56 QStringList m_irDa; 68 QMap<int, QString> m_irDa;
57 QMap<QString, QString> m_bt; 69 QMap<int, QString>::Iterator m_irDaIt;
70 QMap<int, Pair > m_bt;
58 QString m_file; 71 QString m_file;
59 Obex* m_obex; 72 Obex* m_obex;
73 int m_irDeSearch; // search of irda and bt devices
74 int m_btDeSearch;
60 }; 75 };
61 class DeviceItem { 76 class DeviceItem {
62 public: 77 public:
63 DeviceItem( const QString& name = QString::null, 78 DeviceItem( const QString& name = QString::null,
64 const QString& status = QString::null, int dev = 3); 79 const QString& status = QString::null, int dev = 3, int id = -1);
65 ~DeviceItem(); 80 ~DeviceItem();
66 void setStatus( const QString& text ); 81 void setStatus( const QString& text );
67 82
68 QString name()const; 83 QString name()const;
69 QString status()const; 84 QString status()const;
70 QString pixmap()const; 85 QString pixmap()const;
71 int device()const; 86 int device()const;
87 int id()const;
72 QString toString()const; 88 QString toString()const;
73 private: 89 private:
74 QString m_name; 90 QString m_name;
75 QString m_status; 91 QString m_status;
76 int m_dev; 92 int m_dev;
93 int m_id;
77 }; 94 };
95
96 /*
97 * The text field which contains the information about sending...
98 *
99 */
78 class DeviceBox : public QTextBrowser { 100 class DeviceBox : public QTextBrowser {
79 Q_OBJECT 101 Q_OBJECT
80 public: 102 public:
81 enum Device { IrDa, BT, Search, Error }; 103 enum Device { IrDa, BT, Search, Error };
82 DeviceBox( QWidget* parent ); 104 DeviceBox( QWidget* parent );
83 ~DeviceBox(); 105 ~DeviceBox();
84 106
85 void setSource( const QString& str ); 107 void setSource( const QString& str );
86 void addDevice( const QString& name, int dev, 108 int addDevice( const QString& name, int dev,
87 const QString& status = QString::null ); 109 const QString& status = QString::null );
88 void removeDevice( const QString& name ); 110 void removeDevice( int );
89 void setStatus( const QString& name, const QString& ); 111 void setStatus( int, const QString& );
90 signals: 112 signals:
91 void selectedDevice( const QString& name, int dev ); 113 void selectedDevice( int id, int dev );
92 private: 114 private:
93 QMap<QString, DeviceItem> m_dev; 115 /* returns a id for a device from a device range */
94 QStringList m_devices; 116 int idFor (int deviceType );
95 117 QString allText();
118 QMap<int, DeviceItem> m_dev;
96 }; 119 };
97} 120}
98 121
99#endif 122#endif