summaryrefslogtreecommitdiff
path: root/noncore/unsupported/gsmtool/gsmtool.cpp
Side-by-side diff
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
@@ -28,12 +28,17 @@ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl )
devicelocked = 0;
me = NULL;
sms_store = NULL;
setConnected(FALSE);
/* FIXME: Persistent settings for device/baudrate */
connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton()));
+ connect(SMSDeleteButton, SIGNAL(clicked()), this, SLOT(doSMSDeleteButton()));
+ connect(SMSSendButton, SIGNAL(clicked()), this, SLOT(doSMSSendButton()));
+ connect(NewSMSClearButton, SIGNAL(clicked()), this, SLOT(doNewSMSClearButton()));
+ connect(NewSMSSaveButton, SIGNAL(clicked()), this, SLOT(doNewSMSSaveButton()));
+ connect(NewSMSSendButton, SIGNAL(clicked()), this, SLOT(doNewSMSSendButton()));
connect(ScanButton, SIGNAL(clicked()), this, SLOT(doScanButton()));
connect(TabWidget2, SIGNAL(currentChanged(QWidget *)), this, SLOT(doTabChanged()));
connect(SMSStoreList, SIGNAL(activated(int)), this, SLOT(doSMSStoreChanged()));
connect(SMSViewType, SIGNAL(activated(int)), this, SLOT(doSMSTypeChanged()));
connect(SMSList, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(doSelectedSMSChanged(QListViewItem *)));
timerid = -1; // Is this not possible normally?
@@ -66,12 +71,13 @@ void GSMTool::unlockDevice( )
}
void GSMTool::setConnected( bool conn )
{
TabWidget2->setTabEnabled(tab_2, conn);
TabWidget2->setTabEnabled(tab_3, conn);
+ TabWidget2->setTabEnabled(tab_4, conn);
MfrLabel->setEnabled(conn);
MfrText->setEnabled(conn);
ModelLabel->setEnabled(conn);
ModelText->setEnabled(conn);
RevisionLabel->setEnabled(conn);
RevisionText->setEnabled(conn);
@@ -141,49 +147,56 @@ void GSMTool::doSMSStoreChanged()
{
const char *storename = SMSStoreList->currentText().ascii();
qDebug("Store Changed to '%s'", storename);
if (!strcmp(storename, "None")) {
sms_store = NULL;
} else try {
- sms_store = me->getSMSStore(storename);
+ sms_store = new SortedSMSStore(me->getSMSStore(storename));
+ sms_store->setSortOrder(ByIndex);
qDebug("got store of size %d", sms_store->size());
} catch (GsmException) {
sms_store = NULL;
qDebug("get store failed");
}
SMSList->setEnabled(!(sms_store == NULL));
+ NewSMSSaveButton->setEnabled(!(sms_store == NULL));
doSMSTypeChanged();
}
void GSMTool::doSMSTypeChanged()
{
int direction = SMSViewType->currentItem();
qDebug("direction %s\n", direction?"outgoing":"incoming");
+ if (direction)
+ SMSSendButton->setText("Send");
+ else
+ SMSSendButton->setText("Reply");
SMSList->clear();
doSelectedSMSChanged(NULL);
if (sms_store == NULL)
return;
- for (int i = 0; i < sms_store->size(); i++) {
- qDebug("Message %d", i);
- qDebug("Is%sempty", sms_store()[i].empty()?" ":" not ");
- if (sms_store()[i].empty())
+ for (SortedSMSStore::iterator e = sms_store->begin();
+ e != sms_store->end(); e++) {
+ // qDebug("Message %d", i);
+ qDebug("Is%sempty", e->empty()?" ":" not ");
+ if (e->empty())
continue;
- qDebug("Status %d", sms_store()[i].status());
- SMSMessageRef message = sms_store()[i].message();
+ qDebug("Status %d", e->status());
+ SMSMessageRef message = e->message();
qDebug("Got message.");
// qDebug(message->toString().c_str());
if (direction == message->messageType()) {
qDebug("yes\n");
char buf[3];
- snprintf(buf, 3, "%d", i);
+ snprintf(buf, 3, "%d", e->index());
new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf);
}
}
}
void GSMTool::doSelectedSMSChanged(QListViewItem *item)
@@ -204,20 +217,118 @@ void GSMTool::doSelectedSMSChanged(QListViewItem *item)
*/
qDebug("item %p\n", item);
qDebug("text(2) is %s\n", item->text(2).ascii());
int index = atoi(item->text(2).ascii());
qDebug("index %d\n", index);
- SMSMessageRef message = sms_store()[index].message();
+ SMSMessageRef message = sms_store->find(index)->message();
SMSText->setText(message->userData().c_str());
SMSText->setEnabled(TRUE);
SMSDeleteButton->setEnabled(TRUE);
SMSSendButton->setEnabled(TRUE);
}
+
+void GSMTool::doSMSSendButton()
+{
+ qDebug("SMSSendButton");
+
+ QListViewItem *item = SMSList->currentItem();
+ if (!item)
+ return;
+
+ int index = atoi(item->text(2).ascii());
+ qDebug("index %d\n", index);
+
+ int direction = SMSViewType->currentItem();
+ qDebug("direction %s\n", direction?"outgoing":"incoming");
+
+ SMSMessageRef message = sms_store->find(index)->message();
+
+ if (direction)
+ NewSMSText->setText(message->userData().c_str());
+ else
+ NewSMSText->setText("");
+ NewSMSToBox->insertItem(message->address()._number.c_str(), 0);
+ TabWidget2->setCurrentPage(3);
+
+}
+
+void GSMTool::doNewSMSClearButton()
+{
+ NewSMSText->setText("");
+}
+
+void GSMTool::doNewSMSSaveButton()
+{
+ qDebug("NewSMSSaveButton");
+ const char *msgtext = strdup(NewSMSText->text().local8Bit());
+ const char *dest = NewSMSToBox->currentText().ascii();
+
+ NewSMSStatusLabel->setText("Sending...");
+ me->setMessageService(1);
+
+ qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
+
+ SMSMessageRef m = new SMSSubmitMessage (msgtext, dest);
+ sms_store->insert(m);
+ free((void *)msgtext);
+
+}
+void GSMTool::doNewSMSSendButton()
+{
+ const char *msgtext = strdup(NewSMSText->text().local8Bit());
+ const char *dest = NewSMSToBox->currentText().ascii();
+
+ NewSMSStatusLabel->setText("Sending...");
+ me->setMessageService(1);
+
+ qDebug("NewSMSSendButton: '%s' to '%s'", msgtext, dest);
+
+ SMSSubmitMessage m(msgtext, dest);
+ try {
+ Ref<SMSMessage> ackPDU;
+ m.setAt(new GsmAt(*me));
+ m.send(ackPDU);
+
+ // print acknowledgement if available
+ if (! ackPDU.isnull())
+ cout << ackPDU->toString();
+ NewSMSStatusLabel->setText("Message sent.");
+ } catch (GsmException &ge) {
+ NewSMSStatusLabel->setText("Failed.");
+ qDebug(ge.what());
+ }
+ free((void *)msgtext);
+
+
+}
+
+
+void GSMTool::doSMSDeleteButton()
+{
+ QListViewItem *item = SMSList->currentItem();
+ if (!item)
+ return;
+
+ int index = atoi(item->text(2).ascii());
+ qDebug("delete SMS with index %d\n", index);
+
+
+
+ SortedSMSStore::iterator e = sms_store->find(index);
+
+ if (e != sms_store->end()) {
+ qDebug("message is %s\n", e->message()->userData().c_str());
+ sms_store->erase(e);
+
+ }
+ doSMSTypeChanged();
+}
+
void GSMTool::doScanButton()
{
qDebug("ScanButton");
NetworkList->setEnabled(FALSE);
AvailNetsLabel->setEnabled(FALSE);