summaryrefslogtreecommitdiff
path: root/noncore/net/opietooth/manager/rfcommconfhandler.cpp
Unidiff
Diffstat (limited to 'noncore/net/opietooth/manager/rfcommconfhandler.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/opietooth/manager/rfcommconfhandler.cpp98
1 files changed, 71 insertions, 27 deletions
diff --git a/noncore/net/opietooth/manager/rfcommconfhandler.cpp b/noncore/net/opietooth/manager/rfcommconfhandler.cpp
index f82d2c8..054b446 100644
--- a/noncore/net/opietooth/manager/rfcommconfhandler.cpp
+++ b/noncore/net/opietooth/manager/rfcommconfhandler.cpp
@@ -12,10 +12,11 @@ using namespace OpieTooth;
12 12
13 13
14RfCommConfObject::RfCommConfObject( int number, QString mac, int channel, QString comment ) { 14RfCommConfObject::RfCommConfObject(int number, QString mac, int channel,
15 QString comment, bool bind) {
15 m_number = number; 16 m_number = number;
16 m_mac = mac; 17 m_mac = mac;
17 m_channel = channel; 18 m_channel = channel;
18 m_comment = comment; 19 m_comment = comment;
19 // m_foundEntries = 0; 20 m_doBind = bind;
20} 21}
21 22
@@ -42,5 +43,4 @@ RfCommConfObject::~RfCommConfObject() {
42 43
43RfCommConfHandler::RfCommConfHandler( const QString & filename ) { 44RfCommConfHandler::RfCommConfHandler( const QString & filename ) {
44
45 m_filename = filename; 45 m_filename = filename;
46 load(); 46 load();
@@ -53,17 +53,30 @@ RfCommConfHandler::~RfCommConfHandler() {
53void RfCommConfHandler::save( QMap<QString, RfCommConfObject*> devices ) { 53void RfCommConfHandler::save( QMap<QString, RfCommConfObject*> devices ) {
54 54
55 QFile rfCommConf( "/tmp/test" ); 55//// For debugging purposes
56//// QFile rfCommConf( "/mnt/net/opie/bin/rfcomm.conf" );
57 QFile rfCommConf( m_filename );
56 QTextStream outStream( &rfCommConf ); 58 QTextStream outStream( &rfCommConf );
57 if ( rfCommConf.open( IO_WriteOnly ) ) { 59 if ( rfCommConf.open( IO_WriteOnly ) ) {
58
59 QMap<QString, RfCommConfObject*>::Iterator it; 60 QMap<QString, RfCommConfObject*>::Iterator it;
61 outStream << "#\n";
62 outStream << "# RFCOMM configuration file.\n";
63 outStream << "#\n";
64 outStream << "# $Id$\n";
65 outStream << "#\n\n";
60 for( it = devices.begin(); it != devices.end(); ++it ) { 66 for( it = devices.begin(); it != devices.end(); ++it ) {
61 outStream << "rfcomm" + QString("%1").arg( it.data()->number() ) + " {\n"; 67 outStream << "rfcomm" + QString("%1").arg( it.data()->number() ) + " {\n";
62 outStream << " device " + it.data()->mac() + ";\n"; 68 outStream << "\t# Automatically bind the device at startup\n";
63 outStream << " channel " + QString( "%1" ).arg( it.data()->channel() ) + ";\n"; 69 outStream << "\tbind " << ((it.data()->isBind())? "yes": "no") << ";\n";
64 outStream << " comment \"" + it.data()->comment() + "\";\n"; 70 outStream << "\n";
71 outStream << "\t# Bluetooth address of the device\n";
72 outStream << "\tdevice " + it.data()->mac() + ";\n";
73 outStream << "\n";
74 outStream << "\t# RFCOMM channel for the connection\n";
75 outStream << "\tchannel\t" + QString( "%1" ).arg( it.data()->channel() ) + ";\n";
76 outStream << "\n";
77 outStream << "\t# Description of the connection\n";
78 outStream << "\tcomment \"" + it.data()->comment() + "\";\n";
65 outStream << "}\n\n"; 79 outStream << "}\n\n";
66 } 80 }
67
68 rfCommConf.close(); 81 rfCommConf.close();
69 } 82 }
@@ -76,7 +89,14 @@ QMap<QString, RfCommConfObject*> RfCommConfHandler::foundEntries() {
76 89
77void RfCommConfHandler::load() { 90void RfCommConfHandler::load() {
91 //Keywords
92 QCString k_rfcomm("rfcomm");
93 QCString k_device("device ");
94 QCString k_channel("channel ");
95 QCString k_comment("comment ");
96 QCString k_bind("bind ");
78 97
79 QFile rfCommConf( m_filename ); 98 m_foundEntries.clear();
80 if ( rfCommConf.open( IO_ReadOnly ) ) { 99 QFile rfCommConf(m_filename); //File we read
100 if (rfCommConf.open(IO_ReadOnly)) {
81 101
82 QStringList list; 102 QStringList list;
@@ -84,33 +104,57 @@ void RfCommConfHandler::load() {
84 list = QStringList::split( "\n", inStream.read() ); 104 list = QStringList::split( "\n", inStream.read() );
85 105
86 QString number;
87 QString mac; 106 QString mac;
88 QString channel; 107 QString channel;
89 QString comment; 108 QString comment;
109 QString bind;
110 bool bbind;
111 QString number;
90 112
91 for ( QStringList::Iterator line=list.begin(); line != list.end(); line++ ) { 113 for (QStringList::Iterator line = list.begin();
114 line != list.end(); line++) {
92 115
93 QString tmpLine = ( *line ).stripWhiteSpace(); 116 QString tmpLine = (*line).simplifyWhiteSpace();
94 117
95 if ( tmpLine.startsWith("rfcomm") ) { 118 if (tmpLine.startsWith(k_rfcomm)) {
96 QString number = tmpLine.mid( 6,1 ); 119 number = tmpLine.mid( k_rfcomm.length(), 1 );
97 odebug << tmpLine << oendl; 120 odebug << tmpLine << oendl;
98 odebug << "TEST " + number << oendl; 121 odebug << "device " << number << oendl;
99 } else if ( tmpLine.startsWith( "}" ) ) { 122 } else if ( tmpLine.startsWith( "}" ) ) {
100 m_foundEntries.insert( number, new RfCommConfObject( number.toInt(), mac, channel.toInt(), comment ) ); 123 m_foundEntries.insert(number,
101 } else if ( tmpLine.startsWith( "device" ) ) { 124 new RfCommConfObject(number.toInt(), mac, channel.toInt(),
102 mac = tmpLine.mid( 7, 17 ); 125 comment, bbind));
103 odebug << "mac" + mac << oendl; 126 } else if ( tmpLine.startsWith(k_device) ) {
104 } else if ( tmpLine.startsWith( "channel" ) ) { 127 mac = tmpLine.mid(k_device.length(),
105 channel = tmpLine.mid( 8, 1 ); 128 tmpLine.find(';') - k_device.length());
106 odebug << "Channel :" << channel << oendl; 129 odebug << "mac " + mac << oendl;
107 } else if ( tmpLine.startsWith( "comment" ) ) { 130 } else if ( tmpLine.startsWith(k_channel) ) {
108 comment = tmpLine.mid( 9, tmpLine.find( ';' ) - 9 - 1 ); 131 channel = tmpLine.mid(k_channel.length(),
132 tmpLine.find(';') - k_channel.length());
133 odebug << "Channel: " << channel << oendl;
134 } else if ( tmpLine.startsWith(k_comment) ) {
135 comment = tmpLine.mid(k_comment.length(),
136 tmpLine.find(';') - k_comment.length());
137 if (comment.left(1) == "\"")
138 comment.remove(0, 1);
139 if (comment.right(1) == "\"")
140 comment.remove(comment.length() - 1, 1);
109 odebug << "Comment: " + comment << oendl; 141 odebug << "Comment: " + comment << oendl;
142 } else if ( tmpLine.startsWith(k_bind) ) {
143 bind = tmpLine.mid(k_bind.length(),
144 tmpLine.find(';') - k_bind.length());
145 if (bind == "no")
146 bbind = false;
147 else if (bind == "yes")
148 bbind = true;
149 else
150 bbind = true;
151 odebug << "bind: " + bind << oendl;
110 } 152 }
111 } 153 }
112 rfCommConf.close(); 154 rfCommConf.close();
113 } 155 }
114 save( m_foundEntries ); 156 save(m_foundEntries);
115 odebug << QString( "ENTries: %1").arg( m_foundEntries.count() ) << oendl; 157 odebug << QString( "ENTries: %1").arg( m_foundEntries.count() ) << oendl;
116} 158}
159
160//eof