-rw-r--r-- | noncore/unsupported/gsmtool/gsmtool.cpp | 51 | ||||
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtool.h | 1 | ||||
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtoolbase.ui | 44 |
3 files changed, 79 insertions, 17 deletions
diff --git a/noncore/unsupported/gsmtool/gsmtool.cpp b/noncore/unsupported/gsmtool/gsmtool.cpp index c3f9482..8273461 100644 --- a/noncore/unsupported/gsmtool/gsmtool.cpp +++ b/noncore/unsupported/gsmtool/gsmtool.cpp @@ -5,8 +5,10 @@ #include <qlabel.h> #include <qtabwidget.h> #include <qlistview.h> #include <qtextbrowser.h> +#include <qmultilineedit.h> + #include <termios.h> #include <gsmlib/gsm_me_ta.h> #include <gsmlib/gsm_unix_serial.h> @@ -32,9 +34,9 @@ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl ) 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? } /* @@ -138,16 +140,20 @@ void GSMTool::timerEvent( QTimerEvent * ) void GSMTool::doSMSStoreChanged() { const char *storename = SMSStoreList->currentText().ascii(); qDebug("Store Changed to '%s'", storename); - try { + if (!strcmp(storename, "None")) { + sms_store = NULL; + } else try { sms_store = me->getSMSStore(storename); qDebug("got store of size %d", sms_store->size()); } catch (GsmException) { sms_store = NULL; qDebug("get store failed"); } + + SMSList->setEnabled(!(sms_store == NULL)); doSMSTypeChanged(); } void GSMTool::doSMSTypeChanged() @@ -155,8 +161,10 @@ void GSMTool::doSMSTypeChanged() int direction = SMSViewType->currentItem(); qDebug("direction %s\n", direction?"outgoing":"incoming"); SMSList->clear(); + doSelectedSMSChanged(NULL); + if (sms_store == NULL) return; for (int i = 0; i < sms_store->size(); i++) { qDebug("Message %d", i); @@ -167,18 +175,47 @@ void GSMTool::doSMSTypeChanged() qDebug("Status %d", sms_store()[i].status()); SMSMessageRef message = sms_store()[i].message(); qDebug("Got message."); -#if 0 // WTF does this die? Did I mention that gsmlib needs rewriting in a sane language? - qDebug(message->toString().c_str()); + // qDebug(message->toString().c_str()); if (direction == message->messageType()) { qDebug("yes\n"); - new QListViewItem(SMSList, "xx", message->address()._number.c_str()); - } else qDebug("no. dir %d, type %d\n", direction, message->messageType()); -#endif + char buf[3]; + snprintf(buf, 3, "%d", i); + new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf); + } } } +void GSMTool::doSelectedSMSChanged(QListViewItem *item) +{ + qDebug("message changed\n"); + + if (!item || sms_store == NULL) { + SMSText->setText(""); + SMSText->setEnabled(FALSE); + SMSDeleteButton->setEnabled(FALSE); + SMSSendButton->setEnabled(FALSE); + return; + } + /* ARGH. This sucks. Surely there's an app-private pointer in the + QListViewItem that I've failed to notice? + + SMSMessageRef message = *(SMSMessageRef*)item->private; + */ + 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(); + + SMSText->setText(message->userData().c_str()); + SMSText->setEnabled(TRUE); + SMSDeleteButton->setEnabled(TRUE); + SMSSendButton->setEnabled(TRUE); + +} void GSMTool::doScanButton() { qDebug("ScanButton"); diff --git a/noncore/unsupported/gsmtool/gsmtool.h b/noncore/unsupported/gsmtool/gsmtool.h index 49387d9..b8d9a86 100644 --- a/noncore/unsupported/gsmtool/gsmtool.h +++ b/noncore/unsupported/gsmtool/gsmtool.h @@ -22,8 +22,9 @@ private slots: void doScanButton(); void doTabChanged(); void doSMSStoreChanged(); void doSMSTypeChanged(); + void doSelectedSMSChanged(QListViewItem *); private: static const speed_t baudrates[]; int devicelocked; diff --git a/noncore/unsupported/gsmtool/gsmtoolbase.ui b/noncore/unsupported/gsmtool/gsmtoolbase.ui index 340f26c..69480cd 100644 --- a/noncore/unsupported/gsmtool/gsmtoolbase.ui +++ b/noncore/unsupported/gsmtool/gsmtoolbase.ui @@ -10,9 +10,9 @@ <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>309</width> + <width>371</width> <height>390</height> </rect> </property> <property stdset="1"> @@ -665,8 +665,12 @@ <hsizetype>7</hsizetype> <vsizetype>7</vsizetype> </sizepolicy> </property> + <property stdset="1"> + <name>allColumnsShowFocus</name> + <bool>true</bool> + </property> </widget> <widget> <class>QLayoutWidget</class> <property stdset="1"> @@ -738,18 +742,18 @@ <attribute> <name>title</name> <string>SMS</string> </attribute> - <vbox> + <grid> <property stdset="1"> <name>margin</name> <number>11</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> - <widget> + <widget row="0" column="0" > <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout6</cstring> @@ -822,14 +826,14 @@ </property> </widget> </hbox> </widget> - <widget> + <widget row="1" column="0" > <class>QListView</class> <column> <property> <name>text</name> - <string>Date</string> + <string>Number</string> </property> <property> <name>clickable</name> <bool>true</bool> @@ -841,9 +845,9 @@ </column> <column> <property> <name>text</name> - <string>Number</string> + <string>Date</string> </property> <property> <name>clickable</name> <bool>true</bool> @@ -856,10 +860,18 @@ <property stdset="1"> <name>name</name> <cstring>SMSList</cstring> </property> + <property stdset="1"> + <name>enabled</name> + <bool>false</bool> + </property> + <property stdset="1"> + <name>allColumnsShowFocus</name> + <bool>true</bool> + </property> </widget> - <widget> + <widget row="2" column="0" > <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout15</cstring> @@ -910,16 +922,28 @@ </property> </widget> </hbox> </widget> - <widget> - <class>QTextBrowser</class> + <widget row="3" column="0" > + <class>QMultiLineEdit</class> <property stdset="1"> <name>name</name> <cstring>SMSText</cstring> </property> + <property stdset="1"> + <name>enabled</name> + <bool>false</bool> + </property> + <property stdset="1"> + <name>wordWrap</name> + <enum>WidgetWidth</enum> + </property> + <property stdset="1"> + <name>readOnly</name> + <bool>true</bool> + </property> </widget> - </vbox> + </grid> </widget> </widget> </vbox> </widget> |