summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.cpp51
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.h1
-rw-r--r--noncore/unsupported/gsmtool/gsmtoolbase.ui44
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
@@ -1,16 +1,18 @@
#include "gsmtool.h"
#include <qpushbutton.h>
#include <qcombobox.h>
#include <qlineedit.h>
#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>
#include <gsmlib/gsm_sms.h>
#include <gsmlib/gsm_sorted_sms_store.h>
using namespace gsmlib;
@@ -28,17 +30,17 @@ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl )
sms_store = NULL;
setConnected(FALSE);
/* FIXME: Persistent settings for device/baudrate */
connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton()));
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?
}
/*
* Destroys the object and frees any allocated resources
*/
GSMTool::~GSMTool()
{
@@ -134,55 +136,90 @@ 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()
{
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);
qDebug("Is%sempty", sms_store()[i].empty()?" ":" not ");
if (sms_store()[i].empty())
continue;
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");
NetworkList->setEnabled(FALSE);
AvailNetsLabel->setEnabled(FALSE);
NetworkList->clear();
new QListViewItem(NetworkList, "Scanning...");
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
@@ -18,16 +18,17 @@ protected:
void timerEvent(QTimerEvent *te );
private slots:
void doConnectButton();
void doScanButton();
void doTabChanged();
void doSMSStoreChanged();
void doSMSTypeChanged();
+ void doSelectedSMSChanged(QListViewItem *);
private:
static const speed_t baudrates[];
int devicelocked;
int timerid;
gsmlib::MeTa *me;
gsmlib::SMSStoreRef sms_store;
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
@@ -6,17 +6,17 @@
<name>name</name>
<cstring>GSM Tool</cstring>
</property>
<property stdset="1">
<name>geometry</name>
<rect>
<x>0</x>
<y>0</y>
- <width>309</width>
+ <width>371</width>
<height>390</height>
</rect>
</property>
<property stdset="1">
<name>caption</name>
<string>GSM Tool</string>
</property>
<property>
@@ -661,16 +661,20 @@
</property>
<property stdset="1">
<name>sizePolicy</name>
<sizepolicy>
<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">
<name>name</name>
<cstring>Layout11</cstring>
</property>
<hbox>
@@ -734,26 +738,26 @@
<property stdset="1">
<name>name</name>
<cstring>tab</cstring>
</property>
<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>
</property>
<hbox>
<property stdset="1">
<name>margin</name>
@@ -818,52 +822,60 @@
</item>
<property stdset="1">
<name>name</name>
<cstring>SMSViewType</cstring>
</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>
</property>
<property>
<name>resizeable</name>
<bool>true</bool>
</property>
</column>
<column>
<property>
<name>text</name>
- <string>Number</string>
+ <string>Date</string>
</property>
<property>
<name>clickable</name>
<bool>true</bool>
</property>
<property>
<name>resizeable</name>
<bool>true</bool>
</property>
</column>
<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>
</property>
<property>
<name>layoutMargin</name>
</property>
@@ -906,21 +918,33 @@
</property>
<property stdset="1">
<name>text</name>
<string>New</string>
</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>
</UI>