telutils/phoneparser/src/CPhoneGsmParser.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
parent 0 ff3b6d0fd310
child 20 987c9837762f
equal deleted inserted replaced
18:594d59766373 19:7d48bed6ce0c
    18 
    18 
    19 
    19 
    20 // INCLUDE FILES
    20 // INCLUDE FILES
    21 #include    <bldvariant.hrh>
    21 #include    <bldvariant.hrh>
    22 
    22 
    23 #include    "CPhoneGsmParser.h"
    23 #include    "cphonegsmparser.h" 
    24 #include    "CPhoneGsmParserResult.h"
    24 #include    "cphonegsmparserresult.h" 
    25 #include    "CPhoneGsmParserBase.h"
    25 #include    "cphonegsmparserbase.h" 
    26 #include    "CPhoneGsmDummyParser.h"
    26 #include    "cphonegsmdummyparser.h" 
    27 #include    "CPhoneGsmOptionContainer.h"
    27 #include    "cphonegsmoptioncontainer.h" 
    28 #include    "CPhoneParserFeatures.h"
    28 #include    "cphoneparserfeatures.h" 
    29 #include    "CPhoneGsmOptionContainerBase.h"
    29 #include    "cphonegsmoptioncontainerbase.h" 
    30 
    30 
    31 // CONSTANTS
    31 // CONSTANTS
    32 
    32 
    33 
    33 
    34 // ============================ MEMBER FUNCTIONS ===============================
    34 // ============================ MEMBER FUNCTIONS ===============================
    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 );