diff options
author | Andrzej Zaborowski <andrew.zaborowski@intel.com> | 2010-11-21 16:51:35 +0100 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2010-11-22 09:03:01 -0600 |
commit | 84ef9584a1060af99195e07336b40ca2dcfd10e8 (patch) | |
tree | abaccc0c59fb9edc370b96672c8f643a04086666 | |
parent | 779db3f8e7cd827b9049c91212a7e9222b354104 (diff) | |
download | phonesim-84ef9584a1060af99195e07336b40ca2dcfd10e8.tar.gz |
phonesim: Add Send Short Message commands to sim app menu.
-rw-r--r-- | src/simapplication.cpp | 148 | ||||
-rw-r--r-- | src/simapplication.h | 5 |
2 files changed, 152 insertions, 1 deletions
diff --git a/src/simapplication.cpp b/src/simapplication.cpp index 7dc580f..56471d1 100644 --- a/src/simapplication.cpp +++ b/src/simapplication.cpp @@ -21,6 +21,7 @@ #include <qatutils.h> #include <qdebug.h> #include <QTextCodec> +#include "qsmsmessage.h" class SimApplicationPrivate { @@ -258,7 +259,8 @@ void SimApplication::endSession() } DemoSimApplication::DemoSimApplication( SimRules *rules, QObject *parent ) - : SimApplication( rules, parent ) + : SimApplication( rules, parent ), smsDestNumber( "12345" ), + smsText( "Hello" ) { } @@ -284,6 +286,7 @@ const QString DemoSimApplication::getName() #define MainMenu_SendSS 11 #define MainMenu_Language 12 #define MainMenu_SendUSSD 13 +#define MainMenu_SendSMS 14 #define SportsMenu_Chess 1 #define SportsMenu_Painting 2 @@ -342,6 +345,13 @@ const QString DemoSimApplication::getName() #define SendUSSD_Error 4 #define SendUSSD_Main 5 +enum SendSMSMenuItems { + SendSMS_Unpacked = 1, + SendSMS_Packed, + SendSMS_SetDestination, + SendSMS_SetContents, +}; + void DemoSimApplication::mainMenu() { QSimCommand cmd; @@ -402,6 +412,10 @@ void DemoSimApplication::mainMenu() item.setLabel( "Send USSD" ); items += item; + item.setIdentifier( MainMenu_SendSMS ); + item.setLabel( "Send SMS request" ); + items += item; + cmd.setMenuItems( items ); command( cmd, 0, 0 ); @@ -514,6 +528,12 @@ void DemoSimApplication::mainMenuSelection( int id ) } break; + case MainMenu_SendSMS: + { + sendSMSMenu(); + } + break; + default: { // Don't know what this item is, so just re-display the main menu. @@ -1832,3 +1852,129 @@ void DemoSimApplication::USSDMenu( const QSimTerminalResponse& resp ) endSession(); } } + +void DemoSimApplication::sendSMSMenu() +{ + QSimCommand cmd; + QSimMenuItem item; + QList<QSimMenuItem> items; + + cmd.setType( QSimCommand::SelectItem ); + cmd.setTitle( "Send SMS" ); + + item.setIdentifier( SendSMS_Unpacked ); + item.setLabel( "Unpacked" ); + items += item; + + item.setIdentifier( SendSMS_Packed ); + item.setLabel( "Packed text" ); + items += item; + + item.setIdentifier( SendSMS_SetDestination ); + item.setLabel( "Set destination (" + smsDestNumber + ")" ); + items += item; + + item.setIdentifier( SendSMS_SetContents ); + item.setLabel( "Set content text" ); + items += item; + + cmd.setMenuItems( items ); + + command( cmd, this, SLOT(smsMenuResp(QSimTerminalResponse)) ); +} + +void DemoSimApplication::smsMenuResp( const QSimTerminalResponse& resp ) +{ + QSimCommand cmd; + + if ( resp.result() != QSimTerminalResponse::Success ) { + /* Unknown response - just go back to the main menu. */ + endSession(); + + return; + } + + /* Item selected. */ + switch ( resp.menuItem() ) { + case SendSMS_Unpacked: + break; + + case SendSMS_Packed: + cmd.setSmsPacking( true ); + break; + + case SendSMS_SetDestination: + cmd.setType( QSimCommand::GetInput ); + cmd.setText( "Enter recipient number" ); + cmd.setWantDigits( true ); + cmd.setMinimumLength( 2 ); + cmd.setMaximumLength( 20 ); + cmd.setDefaultText( smsDestNumber ); + command( cmd, this, SLOT(smsSetDestResp(QSimTerminalResponse)) ); + return; + + case SendSMS_SetContents: + cmd.setType( QSimCommand::GetInput ); + cmd.setText( "Enter message text" ); + cmd.setMaximumLength( 100 ); + cmd.setDefaultText( smsText ); + command( cmd, this, SLOT(smsSetTextResp(QSimTerminalResponse)) ); + return; + } + + QSMSMessage sms; + sms.setValidityPeriod( -1 ); + sms.setMessageClass( 2 ); + sms.setProtocol( 0 ); + sms.setRecipient( smsDestNumber ); + sms.setText( smsText ); + sms.setForceGsm( false ); + sms.setBestScheme( QSMS_8BitAlphabet ); + sms.setDataCodingScheme( 0xf6 ); + + cmd.setType( QSimCommand::SendSMS ); + cmd.setText( "Sending an SMS to our friends at " + smsDestNumber ); + cmd.setNumber( "123" ); + cmd.addExtensionField( 0x8b, sms.toPdu().mid( 1 ) ); + cmd.setDestinationDevice( QSimCommand::Network ); + + command( cmd, this, SLOT(endSession()) ); +} + +void DemoSimApplication::smsSetDestResp( const QSimTerminalResponse& resp ) +{ + if ( resp.result() == QSimTerminalResponse::BackwardMove ) { + sendSMSMenu(); + + return; + } + + if ( resp.result() != QSimTerminalResponse::Success ) { + /* Unknown response - just go back to the main menu. */ + endSession(); + + return; + } + + smsDestNumber = resp.text(); + sendSMSMenu(); +} + +void DemoSimApplication::smsSetTextResp( const QSimTerminalResponse& resp ) +{ + if ( resp.result() == QSimTerminalResponse::BackwardMove ) { + sendSMSMenu(); + + return; + } + + if ( resp.result() != QSimTerminalResponse::Success ) { + /* Unknown response - just go back to the main menu. */ + endSession(); + + return; + } + + smsText = resp.text(); + sendSMSMenu(); +} diff --git a/src/simapplication.h b/src/simapplication.h index 9d147ee..90551af 100644 --- a/src/simapplication.h +++ b/src/simapplication.h @@ -113,10 +113,15 @@ protected slots: void languageMenu( const QSimTerminalResponse& resp ); void sendUSSDMenu(); void USSDMenu( const QSimTerminalResponse& resp ); + void sendSMSMenu(); + void smsMenuResp( const QSimTerminalResponse& resp ); + void smsSetDestResp( const QSimTerminalResponse& resp ); + void smsSetTextResp( const QSimTerminalResponse& resp ); private: int sticksLeft; bool immediateResponse; + QString smsDestNumber, smsText; }; #endif |