summaryrefslogtreecommitdiff
path: root/noncore/unsupported/gsmtool/gsmtool.cpp
Unidiff
Diffstat (limited to 'noncore/unsupported/gsmtool/gsmtool.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.cpp129
1 files changed, 120 insertions, 9 deletions
diff --git a/noncore/unsupported/gsmtool/gsmtool.cpp b/noncore/unsupported/gsmtool/gsmtool.cpp
index 8273461..6fea596 100644
--- a/noncore/unsupported/gsmtool/gsmtool.cpp
+++ b/noncore/unsupported/gsmtool/gsmtool.cpp
@@ -31,6 +31,11 @@ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl )
31 setConnected(FALSE); 31 setConnected(FALSE);
32 /* FIXME: Persistent settings for device/baudrate */ 32 /* FIXME: Persistent settings for device/baudrate */
33 connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton())); 33 connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton()));
34 connect(SMSDeleteButton, SIGNAL(clicked()), this, SLOT(doSMSDeleteButton()));
35 connect(SMSSendButton, SIGNAL(clicked()), this, SLOT(doSMSSendButton()));
36 connect(NewSMSClearButton, SIGNAL(clicked()), this, SLOT(doNewSMSClearButton()));
37 connect(NewSMSSaveButton, SIGNAL(clicked()), this, SLOT(doNewSMSSaveButton()));
38 connect(NewSMSSendButton, SIGNAL(clicked()), this, SLOT(doNewSMSSendButton()));
34 connect(ScanButton, SIGNAL(clicked()), this, SLOT(doScanButton())); 39 connect(ScanButton, SIGNAL(clicked()), this, SLOT(doScanButton()));
35 connect(TabWidget2, SIGNAL(currentChanged(QWidget *)), this, SLOT(doTabChanged())); 40 connect(TabWidget2, SIGNAL(currentChanged(QWidget *)), this, SLOT(doTabChanged()));
36 connect(SMSStoreList, SIGNAL(activated(int)), this, SLOT(doSMSStoreChanged())); 41 connect(SMSStoreList, SIGNAL(activated(int)), this, SLOT(doSMSStoreChanged()));
@@ -69,6 +74,7 @@ void GSMTool::setConnected( bool conn )
69{ 74{
70 TabWidget2->setTabEnabled(tab_2, conn); 75 TabWidget2->setTabEnabled(tab_2, conn);
71 TabWidget2->setTabEnabled(tab_3, conn); 76 TabWidget2->setTabEnabled(tab_3, conn);
77 TabWidget2->setTabEnabled(tab_4, conn);
72 MfrLabel->setEnabled(conn); 78 MfrLabel->setEnabled(conn);
73 MfrText->setEnabled(conn); 79 MfrText->setEnabled(conn);
74 ModelLabel->setEnabled(conn); 80 ModelLabel->setEnabled(conn);
@@ -144,7 +150,8 @@ void GSMTool::doSMSStoreChanged()
144 if (!strcmp(storename, "None")) { 150 if (!strcmp(storename, "None")) {
145 sms_store = NULL; 151 sms_store = NULL;
146 } else try { 152 } else try {
147 sms_store = me->getSMSStore(storename); 153 sms_store = new SortedSMSStore(me->getSMSStore(storename));
154 sms_store->setSortOrder(ByIndex);
148 155
149 qDebug("got store of size %d", sms_store->size()); 156 qDebug("got store of size %d", sms_store->size());
150 } catch (GsmException) { 157 } catch (GsmException) {
@@ -153,6 +160,7 @@ void GSMTool::doSMSStoreChanged()
153 } 160 }
154 161
155 SMSList->setEnabled(!(sms_store == NULL)); 162 SMSList->setEnabled(!(sms_store == NULL));
163 NewSMSSaveButton->setEnabled(!(sms_store == NULL));
156 doSMSTypeChanged(); 164 doSMSTypeChanged();
157} 165}
158 166
@@ -160,27 +168,32 @@ void GSMTool::doSMSTypeChanged()
160{ 168{
161 int direction = SMSViewType->currentItem(); 169 int direction = SMSViewType->currentItem();
162 qDebug("direction %s\n", direction?"outgoing":"incoming"); 170 qDebug("direction %s\n", direction?"outgoing":"incoming");
171 if (direction)
172 SMSSendButton->setText("Send");
173 else
174 SMSSendButton->setText("Reply");
163 175
164 SMSList->clear(); 176 SMSList->clear();
165 doSelectedSMSChanged(NULL); 177 doSelectedSMSChanged(NULL);
166 178
167 if (sms_store == NULL) 179 if (sms_store == NULL)
168 return; 180 return;
169 for (int i = 0; i < sms_store->size(); i++) { 181 for (SortedSMSStore::iterator e = sms_store->begin();
170 qDebug("Message %d", i); 182 e != sms_store->end(); e++) {
171 qDebug("Is%sempty", sms_store()[i].empty()?" ":" not "); 183 // qDebug("Message %d", i);
172 if (sms_store()[i].empty()) 184 qDebug("Is%sempty", e->empty()?" ":" not ");
185 if (e->empty())
173 continue; 186 continue;
174 187
175 qDebug("Status %d", sms_store()[i].status()); 188 qDebug("Status %d", e->status());
176 SMSMessageRef message = sms_store()[i].message(); 189 SMSMessageRef message = e->message();
177 qDebug("Got message."); 190 qDebug("Got message.");
178 191
179 // qDebug(message->toString().c_str()); 192 // qDebug(message->toString().c_str());
180 if (direction == message->messageType()) { 193 if (direction == message->messageType()) {
181 qDebug("yes\n"); 194 qDebug("yes\n");
182 char buf[3]; 195 char buf[3];
183 snprintf(buf, 3, "%d", i); 196 snprintf(buf, 3, "%d", e->index());
184 new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf); 197 new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf);
185 } 198 }
186 } 199 }
@@ -207,7 +220,7 @@ void GSMTool::doSelectedSMSChanged(QListViewItem *item)
207 qDebug("text(2) is %s\n", item->text(2).ascii()); 220 qDebug("text(2) is %s\n", item->text(2).ascii());
208 int index = atoi(item->text(2).ascii()); 221 int index = atoi(item->text(2).ascii());
209 qDebug("index %d\n", index); 222 qDebug("index %d\n", index);
210 SMSMessageRef message = sms_store()[index].message(); 223 SMSMessageRef message = sms_store->find(index)->message();
211 224
212 SMSText->setText(message->userData().c_str()); 225 SMSText->setText(message->userData().c_str());
213 SMSText->setEnabled(TRUE); 226 SMSText->setEnabled(TRUE);
@@ -215,6 +228,104 @@ void GSMTool::doSelectedSMSChanged(QListViewItem *item)
215 SMSSendButton->setEnabled(TRUE); 228 SMSSendButton->setEnabled(TRUE);
216 229
217} 230}
231
232void GSMTool::doSMSSendButton()
233{
234 qDebug("SMSSendButton");
235
236 QListViewItem *item = SMSList->currentItem();
237 if (!item)
238 return;
239
240 int index = atoi(item->text(2).ascii());
241 qDebug("index %d\n", index);
242
243 int direction = SMSViewType->currentItem();
244 qDebug("direction %s\n", direction?"outgoing":"incoming");
245
246 SMSMessageRef message = sms_store->find(index)->message();
247
248 if (direction)
249 NewSMSText->setText(message->userData().c_str());
250 else
251 NewSMSText->setText("");
252 NewSMSToBox->insertItem(message->address()._number.c_str(), 0);
253 TabWidget2->setCurrentPage(3);
254
255}
256
257void GSMTool::doNewSMSClearButton()
258{
259 NewSMSText->setText("");
260}
261
262void GSMTool::doNewSMSSaveButton()
263{
264 qDebug("NewSMSSaveButton");
265 const char *msgtext = strdup(NewSMSText->text().local8Bit());
266 const char *dest = NewSMSToBox->currentText().ascii();
267
268 NewSMSStatusLabel->setText("Sending...");
269 me->setMessageService(1);
270
271 qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
272
273 SMSMessageRef m = new SMSSubmitMessage (msgtext, dest);
274 sms_store->insert(m);
275 free((void *)msgtext);
276
277}
278void GSMTool::doNewSMSSendButton()
279{
280 const char *msgtext = strdup(NewSMSText->text().local8Bit());
281 const char *dest = NewSMSToBox->currentText().ascii();
282
283 NewSMSStatusLabel->setText("Sending...");
284 me->setMessageService(1);
285
286 qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
287
288 SMSSubmitMessage m(msgtext, dest);
289 try {
290 Ref<SMSMessage> ackPDU;
291 m.setAt(new GsmAt(*me));
292 m.send(ackPDU);
293
294 // print acknowledgement if available
295 if (! ackPDU.isnull())
296 cout << ackPDU->toString();
297 NewSMSStatusLabel->setText("Message sent.");
298 } catch (GsmException &ge) {
299 NewSMSStatusLabel->setText("Failed.");
300 qDebug(ge.what());
301 }
302 free((void *)msgtext);
303
304
305}
306
307
308void GSMTool::doSMSDeleteButton()
309{
310 QListViewItem *item = SMSList->currentItem();
311 if (!item)
312 return;
313
314 int index = atoi(item->text(2).ascii());
315 qDebug("delete SMS with index %d\n", index);
316
317
318
319 SortedSMSStore::iterator e = sms_store->find(index);
320
321 if (e != sms_store->end()) {
322 qDebug("message is %s\n", e->message()->userData().c_str());
323 sms_store->erase(e);
324
325 }
326 doSMSTypeChanged();
327}
328
218void GSMTool::doScanButton() 329void GSMTool::doScanButton()
219{ 330{
220 qDebug("ScanButton"); 331 qDebug("ScanButton");