summaryrefslogtreecommitdiff
authordwmw2 <dwmw2>2002-04-02 00:02:59 (UTC)
committer dwmw2 <dwmw2>2002-04-02 00:02:59 (UTC)
commit2314955ff0127a570e25e7e7a10ce4d17a2de0e2 (patch) (side-by-side diff)
treec19c960b4efa48c2238fefe743a28de418d382da
parentdd9e49cca8cd9a32a52edfc6b6a0683579612a75 (diff)
downloadopie-2314955ff0127a570e25e7e7a10ce4d17a2de0e2.zip
opie-2314955ff0127a570e25e7e7a10ce4d17a2de0e2.tar.gz
opie-2314955ff0127a570e25e7e7a10ce4d17a2de0e2.tar.bz2
Start of GSM app. Still not decided what to do with gsmlib. Needs icon.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.cpp208
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.h41
-rw-r--r--noncore/unsupported/gsmtool/gsmtool.pro13
-rw-r--r--noncore/unsupported/gsmtool/gsmtoolbase.ui887
-rw-r--r--noncore/unsupported/gsmtool/main.cpp12
-rw-r--r--noncore/unsupported/gsmtool/opie-gsmtool.control10
-rw-r--r--pics/gsmtool/gsmtool.pngbin0 -> 1262 bytes
7 files changed, 1171 insertions, 0 deletions
diff --git a/noncore/unsupported/gsmtool/gsmtool.cpp b/noncore/unsupported/gsmtool/gsmtool.cpp
new file mode 100644
index 0000000..14ef368
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/gsmtool.cpp
@@ -0,0 +1,208 @@
+#include "gsmtool.h"
+#include <qpushbutton.h>
+#include <qcombobox.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qtabwidget.h>
+
+#include <termios.h>
+
+#include <gsmlib/gsm_me_ta.h>
+#include <gsmlib/gsm_unix_serial.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;
+ port = 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()));
+ 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);
+ 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::doScanButton()
+{
+ qDebug("ScanButton");
+}
+/*
+ * A simple slot... not very interesting.
+ */
+void GSMTool::doConnectButton()
+{
+ 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) {
+ // delete me;
+ me = NULL;
+ }
+ if (port) {
+ // delete port;
+ port = NULL;
+ }
+
+ if (lockDevice()) {
+ qDebug("lockDevice() failed\n");
+ };
+
+ qDebug("Device name is %s\n", devicename);
+
+ try {
+ port = new UnixSerialPort(devicename, rate, DEFAULT_INIT_STRING, 0);
+ } catch (GsmException) {
+ qDebug("port failed");
+ return;
+ }
+ MfrText->setText("Initialising...");
+ qDebug("got port");
+ try {
+ me = new MeTa(port);
+ } catch (GsmException) {
+ qDebug("meta failed");
+ delete port;
+ port = NULL;
+ unlockDevice();
+ return;
+ }
+
+ qDebug("Opened");
+
+ MEInfo ifo;
+
+ MfrText->setText("Querying...");
+
+ try {
+ ifo = me->getMEInfo();
+ } catch (GsmException) {
+ qDebug("getMEInfo failed");
+ delete me;
+ me = NULL;
+ delete port;
+ port = NULL;
+ unlockDevice();
+ return;
+ }
+
+ MfrText->setText(ifo._manufacturer.c_str());
+ ModelText->setText(ifo._model.c_str());
+ RevisionText->setText(ifo._revision.c_str());
+ SerialText->setText(ifo._serialNumber.c_str());
+ setConnected(TRUE);
+}
diff --git a/noncore/unsupported/gsmtool/gsmtool.h b/noncore/unsupported/gsmtool/gsmtool.h
new file mode 100644
index 0000000..cb19f54
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/gsmtool.h
@@ -0,0 +1,41 @@
+#ifndef EXAMPLE_H
+#define EXAMPLE_H
+#include "gsmtoolbase.h"
+
+#include <termios.h>
+
+#include <gsmlib/gsm_me_ta.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();
+private:
+ static const speed_t baudrates[];
+ int devicelocked;
+ int timerid;
+
+ gsmlib::MeTa *me;
+ gsmlib::Port *port;
+
+ char *devicename;
+ speed_t baudrate;
+
+ int lockDevice( );
+ void unlockDevice( );
+
+ void setConnected( bool conn );
+};
+
+#endif // EXAMPLE_H
diff --git a/noncore/unsupported/gsmtool/gsmtool.pro b/noncore/unsupported/gsmtool/gsmtool.pro
new file mode 100644
index 0000000..0f5fb43
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/gsmtool.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+#CONFIG = qt warn_on debug
+CONFIG = qt warn_on release
+DESTDIR = $(OPIEDIR)/bin
+HEADERS = gsmtool.h
+SOURCES = main.cpp gsmtool.cpp
+CXXFLAGS += -fexceptions
+INCLUDEPATH += $(OPIEDIR)/include
+INCLUDEPATH += $(GSMLIBDIR)
+DEPENDPATH += $(OPIEDIR)/include
+LIBS += -lqpe -L$(GSMLIBDIR)/gsmlib/.libs -lgsmme
+INTERFACES = gsmtoolbase.ui
+TARGET = gsmtool
diff --git a/noncore/unsupported/gsmtool/gsmtoolbase.ui b/noncore/unsupported/gsmtool/gsmtoolbase.ui
new file mode 100644
index 0000000..36a3d8e
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/gsmtoolbase.ui
@@ -0,0 +1,887 @@
+<!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>272</width>
+ <height>366</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>
+ <property stdset="1">
+ <name>margin</name>
+ <number>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>1</number>
+ </property>
+ <widget>
+ <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>
+ </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>
+ </property>
+ </item>
+ <item>
+ <property>
+ <name>text</name>
+ <string>460800</string>
+ </property>
+ </item>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>BaudRate</cstring>
+ </property>
+ <property stdset="1">
+ <name>editable</name>
+ <bool>false</bool>
+ </property>
+ <property stdset="1">
+ <name>currentItem</name>
+ <number>6</number>
+ </property>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer5</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>ConnectButton</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>1</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Connect</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>Line</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Line1</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Horizontal</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>MfrLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Manufacturer:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>MfrText</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>1</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string></string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ModelLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Model:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ModelText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>RevisionLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Revision:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>RevisionText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>SerialLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Serial Number:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>SerialText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer6</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Vertical</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>
+ </vbox>
+ </widget>
+ <widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>tab</cstring>
+ </property>
+ <attribute>
+ <name>title</name>
+ <string>Network</string>
+ </attribute>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>1</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NetStatLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Network Status:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NetStatText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NetworkLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Current Network:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>NetworkText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout7</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>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>SigStrLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Signal Strength:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>SigStrText</cstring>
+ </property>
+ <property stdset="1">
+ <name>focusPolicy</name>
+ <enum>NoFocus</enum>
+ </property>
+ </widget>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>dB</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>dBm</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout9</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>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>AltNetsLabel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Alternative Networks:</string>
+ </property>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer13</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>ScanButton</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Scan</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget>
+ <class>QListView</class>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Network Name</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>Status</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>No.</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>Shortname</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>NetworkList</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>7</vsizetype>
+ </sizepolicy>
+ </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>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>2</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>1</number>
+ </property>
+ <widget row="0" column="1" >
+ <class>QComboBox</class>
+ <item>
+ <property>
+ <name>text</name>
+ <string>None</string>
+ </property>
+ </item>
+ <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>ComboBox11</cstring>
+ </property>
+ <property stdset="1">
+ <name>enabled</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel4</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Message Collection:</string>
+ </property>
+ </widget>
+ <widget row="1" column="0" rowspan="1" colspan="2" >
+ <class>QListView</class>
+ <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>
+ <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>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ListView3</cstring>
+ </property>
+ </widget>
+ <widget row="3" column="0" rowspan="1" colspan="2" >
+ <class>QMultiLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>MultiLineEdit3</cstring>
+ </property>
+ <property stdset="1">
+ <name>readOnly</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ <widget row="2" column="0" rowspan="1" colspan="2" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout15</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>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>PushButton11</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Delete</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>PushButton12</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Send</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>PushButton13</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>New</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </grid>
+ </widget>
+ </widget>
+ </vbox>
+</widget>
+</UI>
diff --git a/noncore/unsupported/gsmtool/main.cpp b/noncore/unsupported/gsmtool/main.cpp
new file mode 100644
index 0000000..8f68713
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/main.cpp
@@ -0,0 +1,12 @@
+#include "gsmtool.h"
+#include <qpe/qpeapplication.h>
+
+int main( int argc, char ** argv )
+{
+ QPEApplication a( argc, argv );
+
+ GSMTool mw;
+ a.showMainWidget( &mw );
+
+ return a.exec();
+}
diff --git a/noncore/unsupported/gsmtool/opie-gsmtool.control b/noncore/unsupported/gsmtool/opie-gsmtool.control
new file mode 100644
index 0000000..5db0450
--- a/dev/null
+++ b/noncore/unsupported/gsmtool/opie-gsmtool.control
@@ -0,0 +1,10 @@
+Files: bin/gsmtool apps/Applications/gsmtool.desktop pics/gsmtool
+Priority: optional
+Section: opie/applications
+Maintainer: David Woodhouse <dwmw2@infradead.org>
+Architecture: arm
+Version: 1.0.0
+Depends: qpe-base ($QPE_VERSION)
+License: Public Domain
+Description: GSMTool program
+ An GSM phone utility program for the Opie environment.
diff --git a/pics/gsmtool/gsmtool.png b/pics/gsmtool/gsmtool.png
new file mode 100644
index 0000000..f63d0bc
--- a/dev/null
+++ b/pics/gsmtool/gsmtool.png
Binary files differ