telutils/phoneparser/src/CPhoneGsmParser.cpp
changeset 31 a2467631ae02
parent 13 e32024264ebb
equal deleted inserted replaced
27:7eb70891911c 31:a2467631ae02
    41         CPhoneGsmParserBase* aSsProcedure,
    41         CPhoneGsmParserBase* aSsProcedure,
    42         CPhoneGsmParserBase* aSimControlProcedure,
    42         CPhoneGsmParserBase* aSimControlProcedure,
    43         CPhoneGsmParserBase* aPhoneNumber,
    43         CPhoneGsmParserBase* aPhoneNumber,
    44         CPhoneGsmParserBase* aManufacturerSpecific,
    44         CPhoneGsmParserBase* aManufacturerSpecific,
    45         CPhoneGsmParserBase* aEmergencyNumberParser,
    45         CPhoneGsmParserBase* aEmergencyNumberParser,
    46         CPhoneGsmParserBase* aVoipNumber,
    46         CPhoneGsmParserBase* aVoipNumber)
    47         CPhoneGsmParserBase* aImeiParser )
       
    48     {
    47     {
    49     // Ownership of these instances is transferred, thus
    48     // Ownership of these instances is transferred, thus
    50     // creation of the instance must not leave. 
    49     // creation of the instance must not leave. 
    51 
    50 
    52     CPhoneGsmParser* self = 
    51     CPhoneGsmParser* self = 
    54             aSsProcedure,
    53             aSsProcedure,
    55             aSimControlProcedure,
    54             aSimControlProcedure,
    56             aPhoneNumber,
    55             aPhoneNumber,
    57             aManufacturerSpecific,
    56             aManufacturerSpecific,
    58             aEmergencyNumberParser,
    57             aEmergencyNumberParser,
    59             aVoipNumber,
    58             aVoipNumber);
    60             aImeiParser );
       
    61     
    59     
    62     if ( !self )
    60     if ( !self )
    63         {
    61         {
    64         delete aSsProcedure;
    62         delete aSsProcedure;
    65         delete aSimControlProcedure;
    63         delete aSimControlProcedure;
    66         delete aPhoneNumber;
    64         delete aPhoneNumber;
    67         delete aManufacturerSpecific;
    65         delete aManufacturerSpecific;
    68         delete aEmergencyNumberParser;
    66         delete aEmergencyNumberParser;
    69         delete aVoipNumber;
    67         delete aVoipNumber;
    70         delete aImeiParser;
       
    71         
    68         
    72         User::Leave( KErrNoMemory );
    69         User::Leave( KErrNoMemory );
    73         }
    70         }
    74 
    71 
    75     CleanupStack::PushL( self );
    72     CleanupStack::PushL( self );
    89     delete iGsmSimControlProcedure;
    86     delete iGsmSimControlProcedure;
    90     delete iGsmPhoneNumber;
    87     delete iGsmPhoneNumber;
    91     delete iGsmManufacturerProcedure;
    88     delete iGsmManufacturerProcedure;
    92     delete iGsmEmergencyNumber;
    89     delete iGsmEmergencyNumber;
    93     delete iVoipNumber;
    90     delete iVoipNumber;
    94     delete iImeiParser;
       
    95     CPhoneParserFeatures::Free();
    91     CPhoneParserFeatures::Free();
    96     }
    92     }
    97 
    93 
    98 // -----------------------------------------------------------------------------
    94 // -----------------------------------------------------------------------------
    99 // CPhoneGsmParser::CPhoneGsmParser
    95 // CPhoneGsmParser::CPhoneGsmParser
   103         CPhoneGsmParserBase* aSsProcedure,
    99         CPhoneGsmParserBase* aSsProcedure,
   104         CPhoneGsmParserBase* aSimControlProcedure,
   100         CPhoneGsmParserBase* aSimControlProcedure,
   105         CPhoneGsmParserBase* aPhoneNumber,
   101         CPhoneGsmParserBase* aPhoneNumber,
   106         CPhoneGsmParserBase* aManufacturerSpecific,
   102         CPhoneGsmParserBase* aManufacturerSpecific,
   107         CPhoneGsmParserBase* aEmergencyNumberParser,
   103         CPhoneGsmParserBase* aEmergencyNumberParser,
   108         CPhoneGsmParserBase* aVoipNumber,
   104         CPhoneGsmParserBase* aVoipNumber)
   109         CPhoneGsmParserBase* aImeiParser )
       
   110     : iGsmSsProcedure( aSsProcedure ), 
   105     : iGsmSsProcedure( aSsProcedure ), 
   111       iGsmSimControlProcedure( aSimControlProcedure ),
   106       iGsmSimControlProcedure( aSimControlProcedure ),
   112       iGsmPhoneNumber( aPhoneNumber ),
   107       iGsmPhoneNumber( aPhoneNumber ),
   113       iGsmManufacturerProcedure( aManufacturerSpecific ),
   108       iGsmManufacturerProcedure( aManufacturerSpecific ),
   114       iGsmEmergencyNumber( aEmergencyNumberParser ),
   109       iGsmEmergencyNumber( aEmergencyNumberParser ),
   115       iVoipNumber( aVoipNumber ),
   110       iVoipNumber( aVoipNumber )
   116       iImeiParser( aImeiParser )
       
   117     {
   111     {
   118     }
   112     }
   119 
   113 
   120 // -----------------------------------------------------------------------------
   114 // -----------------------------------------------------------------------------
   121 // CPhoneGsmParser::ConstructL
   115 // CPhoneGsmParser::ConstructL
   146         iGsmEmergencyNumber = CPhoneGsmDummyParser::NewL();
   140         iGsmEmergencyNumber = CPhoneGsmDummyParser::NewL();
   147         }
   141         }
   148     if ( !iVoipNumber )
   142     if ( !iVoipNumber )
   149         {
   143         {
   150         iVoipNumber = CPhoneGsmDummyParser::NewL();
   144         iVoipNumber = CPhoneGsmDummyParser::NewL();
   151         }
       
   152     if ( !iImeiParser )
       
   153         {
       
   154         iImeiParser = CPhoneGsmDummyParser::NewL();
       
   155         }
   145         }
   156     }
   146     }
   157 
   147 
   158 // -----------------------------------------------------------------------------
   148 // -----------------------------------------------------------------------------
   159 // CPhoneGsmParser::ParseL
   149 // CPhoneGsmParser::ParseL
   196         {
   186         {
   197         return EFalse;
   187         return EFalse;
   198         }
   188         }
   199 
   189 
   200     TBool sendOperation = aOptions.FindOptionStatus( KPhoneOptionSend );
   190     TBool sendOperation = aOptions.FindOptionStatus( KPhoneOptionSend );
   201 
       
   202     // Check if it is the only phone control string, show imei.
       
   203     result = iImeiParser->ParseL( aString, aResult, aOptions );
       
   204     
   191     
   205     // Check if emergency number.
   192     // Check if emergency number.
   206     if ( !result )
   193     result = iGsmEmergencyNumber->ParseL( aString, aResult, aOptions );
   207         {
       
   208         result = iGsmEmergencyNumber->ParseL( aString, aResult, aOptions );
       
   209         }
       
   210     
   194     
   211     // First check if string is GSM ss procedure supported by MS.
   195     // First check if string is GSM ss procedure supported by MS.
   212     if ( !result )
   196     if ( !result )
   213         {
   197         {
   214         result = iGsmSsProcedure->ParseL( aString, aResult, aOptions );
   198         result = iGsmSsProcedure->ParseL( aString, aResult, aOptions );