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 ); |