Diffstat (limited to 'noncore/unsupported/gsmtool/gsmtool.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtool.cpp | 51 |
1 files changed, 44 insertions, 7 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,20 +1,22 @@ | |||
1 | #include "gsmtool.h" | 1 | #include "gsmtool.h" |
2 | #include <qpushbutton.h> | 2 | #include <qpushbutton.h> |
3 | #include <qcombobox.h> | 3 | #include <qcombobox.h> |
4 | #include <qlineedit.h> | 4 | #include <qlineedit.h> |
5 | #include <qlabel.h> | 5 | #include <qlabel.h> |
6 | #include <qtabwidget.h> | 6 | #include <qtabwidget.h> |
7 | #include <qlistview.h> | 7 | #include <qlistview.h> |
8 | #include <qtextbrowser.h> | 8 | #include <qtextbrowser.h> |
9 | #include <qmultilineedit.h> | ||
10 | |||
9 | #include <termios.h> | 11 | #include <termios.h> |
10 | 12 | ||
11 | #include <gsmlib/gsm_me_ta.h> | 13 | #include <gsmlib/gsm_me_ta.h> |
12 | #include <gsmlib/gsm_unix_serial.h> | 14 | #include <gsmlib/gsm_unix_serial.h> |
13 | #include <gsmlib/gsm_sms.h> | 15 | #include <gsmlib/gsm_sms.h> |
14 | #include <gsmlib/gsm_sorted_sms_store.h> | 16 | #include <gsmlib/gsm_sorted_sms_store.h> |
15 | 17 | ||
16 | using namespace gsmlib; | 18 | using namespace gsmlib; |
17 | 19 | ||
18 | 20 | ||
19 | /* | 21 | /* |
20 | * Constructs a GSMTool which is a child of 'parent', with the | 22 | * Constructs a GSMTool which is a child of 'parent', with the |
@@ -24,25 +26,25 @@ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl ) | |||
24 | : GSMToolBase( parent, name, fl ) | 26 | : GSMToolBase( parent, name, fl ) |
25 | { | 27 | { |
26 | devicelocked = 0; | 28 | devicelocked = 0; |
27 | me = NULL; | 29 | me = NULL; |
28 | sms_store = NULL; | 30 | sms_store = NULL; |
29 | setConnected(FALSE); | 31 | setConnected(FALSE); |
30 | /* FIXME: Persistent settings for device/baudrate */ | 32 | /* FIXME: Persistent settings for device/baudrate */ |
31 | connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton())); | 33 | connect(ConnectButton, SIGNAL(clicked()), this, SLOT(doConnectButton())); |
32 | connect(ScanButton, SIGNAL(clicked()), this, SLOT(doScanButton())); | 34 | connect(ScanButton, SIGNAL(clicked()), this, SLOT(doScanButton())); |
33 | connect(TabWidget2, SIGNAL(currentChanged(QWidget *)), this, SLOT(doTabChanged())); | 35 | connect(TabWidget2, SIGNAL(currentChanged(QWidget *)), this, SLOT(doTabChanged())); |
34 | connect(SMSStoreList, SIGNAL(activated(int)), this, SLOT(doSMSStoreChanged())); | 36 | connect(SMSStoreList, SIGNAL(activated(int)), this, SLOT(doSMSStoreChanged())); |
35 | connect(SMSViewType, SIGNAL(activated(int)), this, SLOT(doSMSTypeChanged())); | 37 | connect(SMSViewType, SIGNAL(activated(int)), this, SLOT(doSMSTypeChanged())); |
36 | 38 | connect(SMSList, SIGNAL(selectionChanged(QListViewItem *)), this, SLOT(doSelectedSMSChanged(QListViewItem *))); | |
37 | timerid = -1; // Is this not possible normally? | 39 | timerid = -1; // Is this not possible normally? |
38 | } | 40 | } |
39 | 41 | ||
40 | /* | 42 | /* |
41 | * Destroys the object and frees any allocated resources | 43 | * Destroys the object and frees any allocated resources |
42 | */ | 44 | */ |
43 | GSMTool::~GSMTool() | 45 | GSMTool::~GSMTool() |
44 | { | 46 | { |
45 | // no need to delete child widgets, Qt does it all for us | 47 | // no need to delete child widgets, Qt does it all for us |
46 | if (devicelocked) | 48 | if (devicelocked) |
47 | unlockDevice(); | 49 | unlockDevice(); |
48 | } | 50 | } |
@@ -130,63 +132,98 @@ void GSMTool::timerEvent( QTimerEvent * ) | |||
130 | sprintf(buf, "%d", -113 + (2*csq)); | 132 | sprintf(buf, "%d", -113 + (2*csq)); |
131 | SigStrText->setText(buf); | 133 | SigStrText->setText(buf); |
132 | dB->setEnabled(TRUE); | 134 | dB->setEnabled(TRUE); |
133 | SigStrLabel->setEnabled(TRUE); | 135 | SigStrLabel->setEnabled(TRUE); |
134 | } | 136 | } |
135 | } | 137 | } |
136 | } | 138 | } |
137 | 139 | ||
138 | void GSMTool::doSMSStoreChanged() | 140 | void GSMTool::doSMSStoreChanged() |
139 | { | 141 | { |
140 | const char *storename = SMSStoreList->currentText().ascii(); | 142 | const char *storename = SMSStoreList->currentText().ascii(); |
141 | qDebug("Store Changed to '%s'", storename); | 143 | qDebug("Store Changed to '%s'", storename); |
142 | try { | 144 | if (!strcmp(storename, "None")) { |
145 | sms_store = NULL; | ||
146 | } else try { | ||
143 | sms_store = me->getSMSStore(storename); | 147 | sms_store = me->getSMSStore(storename); |
144 | 148 | ||
145 | qDebug("got store of size %d", sms_store->size()); | 149 | qDebug("got store of size %d", sms_store->size()); |
146 | } catch (GsmException) { | 150 | } catch (GsmException) { |
147 | sms_store = NULL; | 151 | sms_store = NULL; |
148 | qDebug("get store failed"); | 152 | qDebug("get store failed"); |
149 | } | 153 | } |
154 | |||
155 | SMSList->setEnabled(!(sms_store == NULL)); | ||
150 | doSMSTypeChanged(); | 156 | doSMSTypeChanged(); |
151 | } | 157 | } |
152 | 158 | ||
153 | void GSMTool::doSMSTypeChanged() | 159 | void GSMTool::doSMSTypeChanged() |
154 | { | 160 | { |
155 | int direction = SMSViewType->currentItem(); | 161 | int direction = SMSViewType->currentItem(); |
156 | qDebug("direction %s\n", direction?"outgoing":"incoming"); | 162 | qDebug("direction %s\n", direction?"outgoing":"incoming"); |
157 | 163 | ||
158 | SMSList->clear(); | 164 | SMSList->clear(); |
165 | doSelectedSMSChanged(NULL); | ||
166 | |||
159 | if (sms_store == NULL) | 167 | if (sms_store == NULL) |
160 | return; | 168 | return; |
161 | for (int i = 0; i < sms_store->size(); i++) { | 169 | for (int i = 0; i < sms_store->size(); i++) { |
162 | qDebug("Message %d", i); | 170 | qDebug("Message %d", i); |
163 | qDebug("Is%sempty", sms_store()[i].empty()?" ":" not "); | 171 | qDebug("Is%sempty", sms_store()[i].empty()?" ":" not "); |
164 | if (sms_store()[i].empty()) | 172 | if (sms_store()[i].empty()) |
165 | continue; | 173 | continue; |
166 | 174 | ||
167 | qDebug("Status %d", sms_store()[i].status()); | 175 | qDebug("Status %d", sms_store()[i].status()); |
168 | SMSMessageRef message = sms_store()[i].message(); | 176 | SMSMessageRef message = sms_store()[i].message(); |
169 | qDebug("Got message."); | 177 | qDebug("Got message."); |
170 | 178 | ||
171 | #if 0 // WTF does this die? Did I mention that gsmlib needs rewriting in a sane language? | 179 | // qDebug(message->toString().c_str()); |
172 | qDebug(message->toString().c_str()); | ||
173 | if (direction == message->messageType()) { | 180 | if (direction == message->messageType()) { |
174 | qDebug("yes\n"); | 181 | qDebug("yes\n"); |
175 | new QListViewItem(SMSList, "xx", message->address()._number.c_str()); | 182 | char buf[3]; |
176 | } else qDebug("no. dir %d, type %d\n", direction, message->messageType()); | 183 | snprintf(buf, 3, "%d", i); |
177 | #endif | 184 | new QListViewItem(SMSList, message->address()._number.c_str(), message->serviceCentreTimestamp().toString().c_str(), buf); |
185 | } | ||
178 | } | 186 | } |
179 | } | 187 | } |
180 | 188 | ||
189 | void GSMTool::doSelectedSMSChanged(QListViewItem *item) | ||
190 | { | ||
191 | qDebug("message changed\n"); | ||
192 | |||
193 | if (!item || sms_store == NULL) { | ||
194 | SMSText->setText(""); | ||
195 | SMSText->setEnabled(FALSE); | ||
196 | SMSDeleteButton->setEnabled(FALSE); | ||
197 | SMSSendButton->setEnabled(FALSE); | ||
198 | return; | ||
199 | } | ||
200 | /* ARGH. This sucks. Surely there's an app-private pointer in the | ||
201 | QListViewItem that I've failed to notice? | ||
202 | |||
203 | SMSMessageRef message = *(SMSMessageRef*)item->private; | ||
204 | */ | ||
205 | qDebug("item %p\n", item); | ||
206 | |||
207 | qDebug("text(2) is %s\n", item->text(2).ascii()); | ||
208 | int index = atoi(item->text(2).ascii()); | ||
209 | qDebug("index %d\n", index); | ||
210 | SMSMessageRef message = sms_store()[index].message(); | ||
211 | |||
212 | SMSText->setText(message->userData().c_str()); | ||
213 | SMSText->setEnabled(TRUE); | ||
214 | SMSDeleteButton->setEnabled(TRUE); | ||
215 | SMSSendButton->setEnabled(TRUE); | ||
216 | |||
217 | } | ||
181 | void GSMTool::doScanButton() | 218 | void GSMTool::doScanButton() |
182 | { | 219 | { |
183 | qDebug("ScanButton"); | 220 | qDebug("ScanButton"); |
184 | 221 | ||
185 | NetworkList->setEnabled(FALSE); | 222 | NetworkList->setEnabled(FALSE); |
186 | AvailNetsLabel->setEnabled(FALSE); | 223 | AvailNetsLabel->setEnabled(FALSE); |
187 | NetworkList->clear(); | 224 | NetworkList->clear(); |
188 | new QListViewItem(NetworkList, "Scanning..."); | 225 | new QListViewItem(NetworkList, "Scanning..."); |
189 | 226 | ||
190 | vector<OPInfo> opis; | 227 | vector<OPInfo> opis; |
191 | 228 | ||
192 | try { | 229 | try { |