--- src/qsimcommand.cpp | 11 ++++++++ src/simapplication.cpp | 68 ++++++++++++++++++++++++++++++++++++++++++++++++ src/simapplication.h | 2 + 3 files changed, 81 insertions(+), 0 deletions(-) diff --git a/src/qsimcommand.cpp b/src/qsimcommand.cpp index 9a9a169..9746592 100644 --- a/src/qsimcommand.cpp +++ b/src/qsimcommand.cpp @@ -3280,6 +3280,17 @@ QByteArray QSimCommand::toPdu( QSimCommand::ToPduOptions options ) const } break; + case LanguageNotification: + { + if ( qualifier & 0x01 ) { + data += (char)0xAD; + data += (char)0x02; + data += (char)0x73; + data += (char)0x65; + } + } + break; + default: break; } diff --git a/src/simapplication.cpp b/src/simapplication.cpp index 4af510b..a54ec10 100644 --- a/src/simapplication.cpp +++ b/src/simapplication.cpp @@ -281,6 +281,7 @@ const QString DemoSimApplication::getName() #define MainMenu_Browser 9 #define MainMenu_DTMF 10 #define MainMenu_SendSS 11 +#define MainMenu_Language 12 #define SportsMenu_Chess 1 #define SportsMenu_Painting 2 @@ -329,6 +330,10 @@ const QString DemoSimApplication::getName() #define CoLRMenu_Interrogation 2 #define CoLRMenu_Deactivation 3 +#define Language_Specific 1 +#define Language_Non_Specific 2 +#define Language_Main 3 + void DemoSimApplication::mainMenu() { QSimCommand cmd; @@ -381,6 +386,10 @@ void DemoSimApplication::mainMenu() item.setLabel( "Send SS" ); items += item; + item.setIdentifier( MainMenu_Language ); + item.setLabel( "Language Notification" ); + items += item; + cmd.setMenuItems( items ); command( cmd, 0, 0 ); @@ -481,6 +490,12 @@ void DemoSimApplication::mainMenuSelection( int id ) } break; + case MainMenu_Language: + { + sendLanguageMenu(); + } + break; + default: { // Don't know what this item is, so just re-display the main menu. @@ -1642,3 +1657,56 @@ void DemoSimApplication::CoLRMenu( const QSimTerminalResponse& resp ) endSession(); } } + +void DemoSimApplication::sendLanguageMenu() +{ + QSimCommand cmd; + QSimMenuItem item; + QList items; + + cmd.setType( QSimCommand::SelectItem ); + cmd.setTitle( "Language Notification" ); + + item.setIdentifier( Language_Specific ); + item.setLabel( "Specific Language" ); + items += item; + + item.setIdentifier( Language_Non_Specific ); + item.setLabel( "Non-Specific Language" ); + items += item; + + item.setIdentifier( Language_Main ); + item.setLabel( "Return to main menu" ); + items += item; + + cmd.setMenuItems( items ); + + command( cmd, this, SLOT(languageMenu(QSimTerminalResponse)) ); +} + +void DemoSimApplication::languageMenu( const QSimTerminalResponse& resp ) +{ + QSimCommand cmd; + + if ( resp.result() == QSimTerminalResponse::Success ) { + cmd.setDestinationDevice( QSimCommand::ME ); + cmd.setSourceDevice( QSimCommand::SIM ); + cmd.setType( QSimCommand::LanguageNotification ); + + // Item selected. + switch ( resp.menuItem() ) { + case Language_Specific: + cmd.setQualifier( 1 ); + command( cmd, this, SLOT(sendLanguageMenu()) ); + break; + case Language_Non_Specific: + cmd.setQualifier( 0 ); + command( cmd, this, SLOT(sendLanguageMenu()) ); + break; + default: + endSession(); + break; + } + } else + endSession(); +} diff --git a/src/simapplication.h b/src/simapplication.h index 0f67317..fc57423 100644 --- a/src/simapplication.h +++ b/src/simapplication.h @@ -109,6 +109,8 @@ protected slots: void CoLPMenu( const QSimTerminalResponse& resp ); void sendCoLRMenu(); void CoLRMenu( const QSimTerminalResponse& resp ); + void sendLanguageMenu(); + void languageMenu( const QSimTerminalResponse& resp ); private: int sticksLeft; -- 1.7.0.4