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