author | dwmw2 <dwmw2> | 2002-04-04 14:08:17 (UTC) |
---|---|---|
committer | dwmw2 <dwmw2> | 2002-04-04 14:08:17 (UTC) |
commit | d3ef7996a0c857451395fcdd2eed63399100586a (patch) (side-by-side diff) | |
tree | 054563aae8769f9bf584fab3beee2c63f880c869 | |
parent | 351f962d07ad32ab3cc3442f85b9fd20fe621b4c (diff) | |
download | opie-d3ef7996a0c857451395fcdd2eed63399100586a.zip opie-d3ef7996a0c857451395fcdd2eed63399100586a.tar.gz opie-d3ef7996a0c857451395fcdd2eed63399100586a.tar.bz2 |
SMS sending
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtool.cpp | 129 | ||||
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtool.h | 9 | ||||
-rw-r--r-- | noncore/unsupported/gsmtool/gsmtoolbase.ui | 237 |
3 files changed, 307 insertions, 68 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 @@ -1,313 +1,424 @@ #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; /* * Constructs a GSMTool which is a child of 'parent', with the * name 'name' and widget flags set to 'f' */ GSMTool::GSMTool( QWidget* parent, const char* name, WFlags fl ) : GSMToolBase( parent, name, 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? } /* * Destroys the object and frees any allocated resources */ GSMTool::~GSMTool() { // no need to delete child widgets, Qt does it all for us if (devicelocked) unlockDevice(); } const speed_t GSMTool::baudrates[12] = { B300, B600, B1200, B2400, B4800, B9600, B19200, B38400, B57600, B115200, B230400, B460800 }; int GSMTool::lockDevice( ) { devicelocked = 1; /* FIXME */ return 0; } void GSMTool::unlockDevice( ) { devicelocked = 0; } 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); SerialLabel->setEnabled(conn); SerialText->setEnabled(conn); } void GSMTool::doTabChanged() { int index = TabWidget2->currentPageIndex(); qDebug("tab changed to %d", index); if (index == 1) { timerid = startTimer(5000); timerEvent(NULL); } else if (timerid != -1) { killTimer(timerid); timerid = -1; } } void GSMTool::timerEvent( QTimerEvent * ) { OPInfo opi; opi = me->getCurrentOPInfo(); if (opi._numericName == NOT_SET) { NetStatText->setText("No network"); NetworkLabel->setEnabled(FALSE); NetworkText->setEnabled(FALSE); NetworkText->setText(""); SigStrText->setEnabled(FALSE); SigStrText->setText(""); dB->setEnabled(FALSE); SigStrLabel->setEnabled(FALSE); } else { // FIXME: Add 'roaming' info from AT+CFUN qDebug("network"); NetStatText->setText("Registered"); NetworkLabel->setEnabled(TRUE); NetworkText->setEnabled(TRUE); NetworkText->setText(opi._longName.c_str()); SigStrText->setEnabled(TRUE); qDebug("get sig str"); int csq = me->getSignalStrength(); if (csq == 0) { SigStrText->setText("<= -113"); dB->setEnabled(TRUE); SigStrLabel->setEnabled(TRUE); } else if (csq == 99) { SigStrText->setText("Unknown"); dB->setEnabled(FALSE); SigStrLabel->setEnabled(FALSE); } else { char buf[6]; sprintf(buf, "%d", -113 + (2*csq)); SigStrText->setText(buf); dB->setEnabled(TRUE); SigStrLabel->setEnabled(TRUE); } } } 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) { 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(); + 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); NetworkList->clear(); new QListViewItem(NetworkList, "Scanning..."); vector<OPInfo> opis; try { opis = me->getAvailableOPInfo(); } catch (GsmException) { NetworkList->clear(); new QListViewItem(NetworkList, "Scan failed..."); return; } NetworkList->clear(); for (vector<OPInfo>::iterator i = opis.begin(); i != opis.end(); ++i) { char *statustext; switch (i->_status) { case UnknownOPStatus: statustext = "unknown"; break; case CurrentOPStatus: statustext = "current"; break; case AvailableOPStatus: statustext = "available"; break; case ForbiddenOPStatus: statustext = "forbidden"; break; default: statustext = "(ERROR)"; } char num[7]; snprintf(num, 6, "%d", i->_numericName); new QListViewItem(NetworkList, i->_longName.c_str(), statustext, num, i->_shortName.c_str()); } NetworkList->setEnabled(TRUE); AvailNetsLabel->setEnabled(TRUE); } /* * A simple slot... not very interesting. */ void GSMTool::doConnectButton() { gsmlib::Port *port; speed_t rate; devicename = strdup(DeviceName->currentText().local8Bit().data()); rate = baudrates[BaudRate->currentItem()]; qDebug("Connect Button Pressed"); MfrText->setText("Opening..."); ModelText->setText(""); RevisionText->setText(""); SerialText->setText(""); setConnected(FALSE); if (me) { me = NULL; } if (lockDevice()) { qDebug("lockDevice() failed\n"); MfrText->setText("Lock port failed"); }; qDebug("Device name is %s\n", devicename); try { port = new UnixSerialPort(devicename, rate, DEFAULT_INIT_STRING, 0); } catch (GsmException) { qDebug("port failed"); MfrText->setText("Open port failed"); return; } MfrText->setText("Initialising..."); qDebug("got port"); try { me = new MeTa(port); } catch (GsmException) { qDebug("meta failed"); MfrText->setText("Initialise GSM unit failed"); me = NULL; unlockDevice(); return; diff --git a/noncore/unsupported/gsmtool/gsmtool.h b/noncore/unsupported/gsmtool/gsmtool.h index b8d9a86..b38ff88 100644 --- a/noncore/unsupported/gsmtool/gsmtool.h +++ b/noncore/unsupported/gsmtool/gsmtool.h @@ -1,45 +1,50 @@ #ifndef EXAMPLE_H #define EXAMPLE_H #include "gsmtoolbase.h" #include <termios.h> #include <gsmlib/gsm_me_ta.h> +#include <gsmlib/gsm_sorted_sms_store.h> class GSMTool : public GSMToolBase { Q_OBJECT public: GSMTool( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); ~GSMTool(); protected: void timerEvent(QTimerEvent *te ); private slots: void doConnectButton(); void doScanButton(); void doTabChanged(); void doSMSStoreChanged(); void doSMSTypeChanged(); void doSelectedSMSChanged(QListViewItem *); - + void doSMSSendButton(); + void doSMSDeleteButton(); + void doNewSMSClearButton(); + void doNewSMSSaveButton(); + void doNewSMSSendButton(); private: static const speed_t baudrates[]; int devicelocked; int timerid; gsmlib::MeTa *me; - gsmlib::SMSStoreRef sms_store; + gsmlib::SortedSMSStoreRef sms_store; char *devicename; speed_t baudrate; int lockDevice( ); void unlockDevice( ); void setConnected( bool conn ); }; #endif // EXAMPLE_H diff --git a/noncore/unsupported/gsmtool/gsmtoolbase.ui b/noncore/unsupported/gsmtool/gsmtoolbase.ui index 2cca852..65e75ec 100644 --- a/noncore/unsupported/gsmtool/gsmtoolbase.ui +++ b/noncore/unsupported/gsmtool/gsmtoolbase.ui @@ -1,217 +1,221 @@ <!DOCTYPE UI><UI> <class>GSMToolBase</class> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>GSM Tool</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>371</width> + <width>404</width> <height>390</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>GSM Tool</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> - <vbox> + <grid> <property stdset="1"> <name>margin</name> <number>2</number> </property> <property stdset="1"> <name>spacing</name> <number>1</number> </property> - <widget> + <widget row="0" column="0" > <class>QTabWidget</class> <property stdset="1"> <name>name</name> <cstring>TabWidget2</cstring> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>7</hsizetype> <vsizetype>7</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>focusPolicy</name> <enum>NoFocus</enum> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> </property> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>tab</cstring> </property> <attribute> <name>title</name> <string>Device</string> </attribute> <vbox> <property stdset="1"> <name>margin</name> <number>2</number> </property> <property stdset="1"> <name>spacing</name> <number>1</number> </property> <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>DeviceLabel</cstring> </property> <property stdset="1"> <name>text</name> <string>Modem Device:</string> </property> </widget> <widget> <class>QComboBox</class> <item> <property> <name>text</name> <string>/dev/ircomm0</string> </property> </item> <item> <property> <name>text</name> <string>/dev/ttySA0</string> </property> </item> <item> <property> <name>text</name> <string>/dev/ttyS0</string> </property> </item> <property stdset="1"> <name>name</name> <cstring>DeviceName</cstring> </property> <property stdset="1"> <name>editable</name> <bool>true</bool> </property> <property stdset="1"> <name>currentItem</name> <number>0</number> </property> + <property stdset="1"> + <name>duplicatesEnabled</name> + <bool>false</bool> + </property> </widget> <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>BaudLabel</cstring> </property> <property stdset="1"> <name>text</name> <string>Baud Rate:</string> </property> </widget> <widget> <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout8</cstring> </property> <property> <name>layoutMargin</name> </property> <hbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>1</number> </property> <widget> <class>QComboBox</class> <item> <property> <name>text</name> <string>300</string> </property> </item> <item> <property> <name>text</name> <string>600</string> </property> </item> <item> <property> <name>text</name> <string>1200</string> </property> </item> <item> <property> <name>text</name> <string>2400</string> </property> </item> <item> <property> <name>text</name> <string>4800</string> </property> </item> <item> <property> <name>text</name> <string>9600</string> </property> </item> <item> <property> <name>text</name> <string>19200</string> </property> </item> <item> <property> <name>text</name> <string>38400</string> </property> </item> <item> <property> <name>text</name> <string>57600</string> </property> </item> <item> <property> <name>text</name> <string>115200</string> </property> </item> <item> <property> <name>text</name> <string>230400</string> @@ -653,305 +657,424 @@ </column> <property stdset="1"> <name>name</name> <cstring>NetworkList</cstring> </property> <property stdset="1"> <name>enabled</name> <bool>false</bool> </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> <property stdset="1"> <name>margin</name> <number>2</number> </property> <property stdset="1"> <name>spacing</name> <number>1</number> </property> <spacer> <property> <name>name</name> <cstring>Spacer14</cstring> </property> <property stdset="1"> <name>orientation</name> <enum>Horizontal</enum> </property> <property stdset="1"> <name>sizeType</name> <enum>Expanding</enum> </property> <property> <name>sizeHint</name> <size> <width>20</width> <height>20</height> </size> </property> </spacer> <widget> <class>QPushButton</class> <property stdset="1"> <name>name</name> <cstring>RegisterButton</cstring> </property> <property stdset="1"> <name>enabled</name> <bool>false</bool> </property> <property stdset="1"> <name>sizePolicy</name> <sizepolicy> <hsizetype>7</hsizetype> <vsizetype>0</vsizetype> </sizepolicy> </property> <property stdset="1"> <name>text</name> <string>Register</string> </property> </widget> </hbox> </widget> </vbox> </widget> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>tab</cstring> </property> <attribute> <name>title</name> <string>SMS</string> </attribute> <grid> <property stdset="1"> <name>margin</name> - <number>-1</number> + <number>2</number> </property> <property stdset="1"> <name>spacing</name> - <number>-1</number> + <number>1</number> </property> - <widget row="0" column="0" > + <widget row="0" column="0" rowspan="1" colspan="3" > <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout6</cstring> </property> <property> <name>layoutSpacing</name> </property> <hbox> <property stdset="1"> <name>margin</name> <number>0</number> </property> <property stdset="1"> <name>spacing</name> <number>6</number> </property> <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>SMSStoreLabel</cstring> </property> <property stdset="1"> <name>text</name> <string>Store:</string> </property> </widget> <widget> <class>QComboBox</class> <item> <property> <name>text</name> <string>None</string> </property> </item> <property stdset="1"> <name>name</name> <cstring>SMSStoreList</cstring> </property> <property stdset="1"> <name>enabled</name> <bool>true</bool> </property> </widget> <widget> <class>QLabel</class> <property stdset="1"> <name>name</name> <cstring>SMSTypeLabel</cstring> </property> <property stdset="1"> <name>text</name> <string>Type:</string> </property> </widget> <widget> <class>QComboBox</class> <item> <property> <name>text</name> <string>Incoming</string> </property> </item> <item> <property> <name>text</name> <string>Outgoing</string> </property> </item> <property stdset="1"> <name>name</name> <cstring>SMSViewType</cstring> </property> </widget> </hbox> </widget> - <widget row="1" column="0" > + <widget row="1" column="0" rowspan="1" colspan="3" > <class>QListView</class> <column> <property> <name>text</name> <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>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 row="3" column="0" rowspan="1" colspan="3" > + <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>hMargin</name> + <number>1</number> + </property> + <property stdset="1"> + <name>wordWrap</name> + <enum>WidgetWidth</enum> + </property> + <property stdset="1"> + <name>readOnly</name> + <bool>true</bool> + </property> + </widget> <widget row="2" column="0" > - <class>QLayoutWidget</class> + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>SMSDeleteButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Delete</string> + </property> + </widget> + <widget row="2" column="2" > + <class>QPushButton</class> <property stdset="1"> <name>name</name> - <cstring>Layout15</cstring> + <cstring>SMSSendButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Send</string> </property> + </widget> + <spacer row="2" column="1" > <property> - <name>layoutMargin</name> + <name>name</name> + <cstring>Spacer6_2</cstring> + </property> + <property stdset="1"> + <name>orientation</name> + <enum>Horizontal</enum> + </property> + <property stdset="1"> + <name>sizeType</name> + <enum>Expanding</enum> + </property> + <property> + <name>sizeHint</name> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </grid> + </widget> + <widget> + <class>QWidget</class> + <property stdset="1"> + <name>name</name> + <cstring>tab</cstring> + </property> + <attribute> + <name>title</name> + <string>New</string> + </attribute> + <grid> + <property stdset="1"> + <name>margin</name> + <number>2</number> + </property> + <property stdset="1"> + <name>spacing</name> + <number>1</number> + </property> + <widget row="0" column="0" rowspan="1" colspan="3" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSMessageLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Message:</string> </property> - <hbox> - <property stdset="1"> - <name>margin</name> - <number>0</number> - </property> - <property stdset="1"> - <name>spacing</name> - <number>1</number> - </property> - <widget> - <class>QPushButton</class> - <property stdset="1"> - <name>name</name> - <cstring>SMSDeleteButton</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Delete</string> - </property> - </widget> - <widget> - <class>QPushButton</class> - <property stdset="1"> - <name>name</name> - <cstring>SMSSendButton</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>Send</string> - </property> - </widget> - <widget> - <class>QPushButton</class> - <property stdset="1"> - <name>name</name> - <cstring>SMSNewButton</cstring> - </property> - <property stdset="1"> - <name>text</name> - <string>New</string> - </property> - </widget> - </hbox> </widget> <widget row="3" column="0" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSToLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>To:</string> + </property> + </widget> + <widget row="3" column="1" rowspan="1" colspan="4" > + <class>QComboBox</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSToBox</cstring> + </property> + <property stdset="1"> + <name>editable</name> + <bool>true</bool> + </property> + <property stdset="1"> + <name>duplicatesEnabled</name> + <bool>false</bool> + </property> + </widget> + <widget row="1" column="0" rowspan="1" colspan="5" > <class>QMultiLineEdit</class> <property stdset="1"> <name>name</name> - <cstring>SMSText</cstring> + <cstring>NewSMSText</cstring> </property> <property stdset="1"> <name>enabled</name> - <bool>false</bool> + <bool>true</bool> </property> <property stdset="1"> <name>hMargin</name> <number>1</number> </property> <property stdset="1"> <name>wordWrap</name> <enum>WidgetWidth</enum> </property> <property stdset="1"> <name>readOnly</name> - <bool>true</bool> + <bool>false</bool> + </property> + </widget> + <widget row="4" column="4" > + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSSendButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Send</string> + </property> + </widget> + <widget row="0" column="3" rowspan="1" colspan="2" > + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSStatusLabel</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string></string> + </property> + </widget> + <widget row="4" column="2" rowspan="1" colspan="2" > + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSSaveButton</cstring> + </property> + <property stdset="1"> + <name>enabled</name> + <bool>false</bool> + </property> + <property stdset="1"> + <name>text</name> + <string>Save</string> + </property> + </widget> + <widget row="4" column="0" rowspan="1" colspan="2" > + <class>QPushButton</class> + <property stdset="1"> + <name>name</name> + <cstring>NewSMSClearButton</cstring> + </property> + <property stdset="1"> + <name>text</name> + <string>Clear</string> </property> </widget> </grid> </widget> </widget> - </vbox> + </grid> </widget> </UI> |