102 if ( deleteOldState ) |
97 if ( deleteOldState ) |
103 { |
98 { |
104 // Possible that derived class has been deleted iState, |
99 // Possible that derived class has been deleted iState, |
105 // so this delete statement may be useless. |
100 // so this delete statement may be useless. |
106 delete iState; |
101 delete iState; |
107 iState = NULL; |
102 iState = NULL; |
108 } |
103 } |
109 |
104 |
110 // State transition need to be made - construct new state and |
105 // State transition need to be made - construct new state and |
111 // destruct old |
106 // destruct old |
112 switch( iNewStateId ) |
107 switch( iNewStateId ) |
113 { |
108 { |
114 case EPhoneStateCallSetup: |
109 case EPhoneStateCallSetup: |
115 TRAP( err, iState = CPhoneCallSetup::NewL( |
110 TRAP( err, iState = CPhoneCallSetup::NewL( |
116 this, iViewCommandHandle, iCustomization )); |
111 this, iViewCommandHandle, iCustomization )); |
117 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
112 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
118 madeStateTransition = ETrue; |
113 madeStateTransition = ETrue; |
119 break; |
114 break; |
120 |
115 |
121 case EPhoneStateAlerting: |
116 case EPhoneStateAlerting: |
122 TRAP( err, iState = CPhoneAlerting::NewL( |
117 TRAP( err, iState = CPhoneAlerting::NewL( |
123 this, iViewCommandHandle, iCustomization )); |
118 this, iViewCommandHandle, iCustomization )); |
124 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
119 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
125 madeStateTransition = ETrue; |
120 madeStateTransition = ETrue; |
126 break; |
121 break; |
127 |
122 |
128 case EPhoneStateSingle: |
123 case EPhoneStateSingle: |
129 TRAP( err, iState = CPhoneSingleCall::NewL( |
124 TRAP( err, iState = CPhoneSingleCall::NewL( |
130 this, iViewCommandHandle, iCustomization )); |
125 this, iViewCommandHandle, iCustomization )); |
131 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
126 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
132 madeStateTransition = ETrue; |
127 madeStateTransition = ETrue; |
133 break; |
128 break; |
134 |
129 |
135 case EPhoneStateWaitingInSingle: |
130 case EPhoneStateWaitingInSingle: |
136 TRAP( err, iState = CPhoneSingleAndWaiting::NewL( |
131 TRAP( err, iState = CPhoneSingleAndWaiting::NewL( |
137 this, iViewCommandHandle, iCustomization )); |
132 this, iViewCommandHandle, iCustomization )); |
138 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
133 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
139 madeStateTransition = ETrue; |
134 madeStateTransition = ETrue; |
140 break; |
135 break; |
141 |
136 |
142 case EPhoneStateTwoSingles: |
137 case EPhoneStateTwoSingles: |
143 TRAP( err, iState = CPhoneTwoSingles::NewL( |
138 TRAP( err, iState = CPhoneTwoSingles::NewL( |
144 this, iViewCommandHandle, iCustomization )); |
139 this, iViewCommandHandle, iCustomization )); |
145 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
140 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
146 madeStateTransition = ETrue; |
141 madeStateTransition = ETrue; |
147 break; |
142 break; |
148 |
143 |
149 case EPhoneStateCallSetupInSingle: |
144 case EPhoneStateCallSetupInSingle: |
150 TRAP( err, iState = CPhoneSingleAndCallSetup::NewL( |
145 TRAP( err, iState = CPhoneSingleAndCallSetup::NewL( |
151 this, iViewCommandHandle, iCustomization )); |
146 this, iViewCommandHandle, iCustomization )); |
152 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
147 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
153 madeStateTransition = ETrue; |
148 madeStateTransition = ETrue; |
154 break; |
149 break; |
155 |
150 |
156 case EPhoneStateAlertingInSingle: |
151 case EPhoneStateAlertingInSingle: |
157 TRAP( err, iState = CPhoneSingleAndAlerting::NewL( |
152 TRAP( err, iState = CPhoneSingleAndAlerting::NewL( |
158 this, iViewCommandHandle, iCustomization )); |
153 this, iViewCommandHandle, iCustomization )); |
159 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
154 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
160 madeStateTransition = ETrue; |
155 madeStateTransition = ETrue; |
161 break; |
156 break; |
162 |
157 |
163 case EPhoneStateConference: |
158 case EPhoneStateConference: |
164 TRAP( err, iState = CPhoneConference::NewL( |
159 TRAP( err, iState = CPhoneConference::NewL( |
165 this, iViewCommandHandle, iCustomization )); |
160 this, iViewCommandHandle, iCustomization )); |
166 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
161 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
167 madeStateTransition = ETrue; |
162 madeStateTransition = ETrue; |
168 break; |
163 break; |
169 |
164 |
170 case EPhoneStateConferenceAndCallSetup: |
165 case EPhoneStateConferenceAndCallSetup: |
171 TRAP( err, iState = CPhoneConferenceAndCallSetup::NewL( |
166 TRAP( err, iState = CPhoneConferenceAndCallSetup::NewL( |
172 this, iViewCommandHandle, iCustomization ) ); |
167 this, iViewCommandHandle, iCustomization ) ); |
173 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
168 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
174 madeStateTransition = ETrue; |
169 madeStateTransition = ETrue; |
175 break; |
170 break; |
176 |
171 |
177 case EPhoneStateConferenceAndSingle: |
172 case EPhoneStateConferenceAndSingle: |
178 TRAP( err, iState = CPhoneConferenceAndSingle::NewL( |
173 TRAP( err, iState = CPhoneConferenceAndSingle::NewL( |
179 this, iViewCommandHandle, iCustomization ) ); |
174 this, iViewCommandHandle, iCustomization ) ); |
180 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
175 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
181 madeStateTransition = ETrue; |
176 madeStateTransition = ETrue; |
182 break; |
177 break; |
183 |
178 |
184 case EPhoneStateConferenceAndWaiting: |
179 case EPhoneStateConferenceAndWaiting: |
185 TRAP( err, iState = CPhoneConferenceAndWaiting::NewL( |
180 TRAP( err, iState = CPhoneConferenceAndWaiting::NewL( |
186 this, iViewCommandHandle, iCustomization ) ); |
181 this, iViewCommandHandle, iCustomization ) ); |
187 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
182 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
188 madeStateTransition = ETrue; |
183 madeStateTransition = ETrue; |
189 break; |
184 break; |
190 |
185 |
191 case EPhoneStateSingleAndCallSetupAndWaiting: |
186 case EPhoneStateSingleAndCallSetupAndWaiting: |
192 TRAP( err, iState = CPhoneSingleAndCallSetupAndWaiting::NewL( |
187 TRAP( err, iState = CPhoneSingleAndCallSetupAndWaiting::NewL( |
193 this, iViewCommandHandle, iCustomization ) ); |
188 this, iViewCommandHandle, iCustomization ) ); |
194 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
189 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
195 madeStateTransition = ETrue; |
190 madeStateTransition = ETrue; |
196 break; |
191 break; |
197 |
192 |
198 case EPhoneStateCallSetupAndWaiting: |
193 case EPhoneStateCallSetupAndWaiting: |
199 TRAP( err, iState = CPhoneCallSetupAndWaiting::NewL( |
194 TRAP( err, iState = CPhoneCallSetupAndWaiting::NewL( |
200 this, iViewCommandHandle, iCustomization ) ); |
195 this, iViewCommandHandle, iCustomization ) ); |
201 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
196 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
202 madeStateTransition = ETrue; |
197 madeStateTransition = ETrue; |
203 break; |
198 break; |
204 |
199 |
205 case EPhoneStateTwoSinglesAndWaiting: |
200 case EPhoneStateTwoSinglesAndWaiting: |
206 TRAP( err, iState = CPhoneTwoSinglesAndWaiting::NewL( |
201 TRAP( err, iState = CPhoneTwoSinglesAndWaiting::NewL( |
207 this, iViewCommandHandle, iCustomization ) ); |
202 this, iViewCommandHandle, iCustomization ) ); |
208 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
203 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
209 madeStateTransition = ETrue; |
204 madeStateTransition = ETrue; |
210 break; |
205 break; |
211 |
206 |
212 case EPhoneStateConferenceAndSingleAndWaiting: |
207 case EPhoneStateConferenceAndSingleAndWaiting: |
213 TRAP( err, iState = CPhoneConferenceAndSingleAndWaiting::NewL( |
208 TRAP( err, iState = CPhoneConferenceAndSingleAndWaiting::NewL( |
214 this, iViewCommandHandle, iCustomization )); |
209 this, iViewCommandHandle, iCustomization )); |
215 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
210 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
216 madeStateTransition = ETrue; |
211 madeStateTransition = ETrue; |
217 break; |
212 break; |
218 |
213 |
219 case EPhoneStateEmergency: |
214 case EPhoneStateEmergency: |
220 if( !iEmergencyStateConstructed ) |
215 if( !iEmergencyStateConstructed ) |
221 { |
216 { |
222 TRAP( err, iEmergencyState = CPhoneEmergency::NewL( |
217 TRAP( err, iEmergencyState = CPhoneEmergency::NewL( |
223 this, iViewCommandHandle, iCustomization ) ); |
218 this, iViewCommandHandle, iCustomization ) ); |
224 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
219 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
225 iEmergencyStateConstructed = ETrue; |
220 iEmergencyStateConstructed = ETrue; |
226 } |
221 } |
227 static_cast< CPhoneEmergency* >( iEmergencyState )-> |
222 static_cast< CPhoneEmergency* >( iEmergencyState )-> |
228 SetStartupInterrupted( iOldStateId == EPhoneStateStartup ); |
223 SetStartupInterrupted( iOldStateId == EPhoneStateStartup ); |
229 iState = iEmergencyState; |
224 iState = iEmergencyState; |
230 madeStateTransition = ETrue; |
225 madeStateTransition = ETrue; |
231 break; |
226 break; |
232 |
227 |
233 case EPhoneStateConferenceAndWaitingAndCallSetup: |
228 case EPhoneStateConferenceAndWaitingAndCallSetup: |
234 TRAP( err, iState = |
229 TRAP( err, iState = |
235 CPhoneConferenceAndWaitingAndCallSetup::NewL( |
230 CPhoneConferenceAndWaitingAndCallSetup::NewL( |
236 this, iViewCommandHandle, iCustomization ) ); |
231 this, iViewCommandHandle, iCustomization ) ); |
237 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
232 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
238 madeStateTransition = ETrue; |
233 madeStateTransition = ETrue; |
239 break; |
234 break; |
240 |
235 |
241 case EPhoneStateIdle: |
236 case EPhoneStateIdle: |
242 if ( iOldStateId != EPhoneStateEmergency ) |
237 if ( iOldStateId != EPhoneStateEmergency ) |
243 { |
238 { |
244 if( !iEmergencyStateConstructed ) |
239 if( !iEmergencyStateConstructed ) |
245 { |
240 { |
246 TRAP( err, iEmergencyState = CPhoneEmergency::NewL( |
241 TRAP( err, iEmergencyState = CPhoneEmergency::NewL( |
247 this, iViewCommandHandle, iCustomization ) ); |
242 this, iViewCommandHandle, iCustomization ) ); |
248 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
243 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
249 iEmergencyStateConstructed = ETrue; |
244 iEmergencyStateConstructed = ETrue; |
250 } |
245 } |
251 } |
246 } |
252 if( iIdleState == NULL ) |
247 if( iIdleState == NULL ) |
253 { |
248 { |
254 TRAP( err, iIdleState = |
249 TRAP( err, iIdleState = |
255 CPhoneIdle::NewL( this, iViewCommandHandle, iCustomization ) ); |
250 CPhoneIdle::NewL( this, iViewCommandHandle, iCustomization ) ); |
256 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
251 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
257 } |
252 } |
258 iState = iIdleState; |
253 iState = iIdleState; |
259 madeStateTransition = ETrue; |
254 madeStateTransition = ETrue; |
260 break; |
255 break; |
261 |
256 |
262 case EPhoneStateIncoming: |
257 case EPhoneStateIncoming: |
263 TRAP( err, iState = |
258 TRAP( err, iState = |
264 CPhoneIncoming::NewL( this, iViewCommandHandle, iCustomization ) ); |
259 CPhoneIncoming::NewL( this, iViewCommandHandle, iCustomization ) ); |
265 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
260 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
266 madeStateTransition = ETrue; |
261 madeStateTransition = ETrue; |
267 break; |
262 break; |
268 |
263 |
269 case EPhoneStateStartup: |
264 case EPhoneStateStartup: |
270 |
265 TRAP( err, iState = |
271 if( IsSimlockStartupStateCreated() ) |
266 CPhoneStartup::NewL( this, iViewCommandHandle, |
272 { |
267 iOldStateId == EPhoneStateEmergency ) ); |
273 TRAP( err, iState = |
|
274 CPhoneStartupSimlockUi::NewL( this, iViewCommandHandle, |
|
275 iOldStateId == EPhoneStateEmergency ) ); |
|
276 } |
|
277 else |
|
278 { |
|
279 TRAP( err, iState = |
|
280 CPhoneStartup::NewL( this, iViewCommandHandle, |
|
281 iOldStateId == EPhoneStateEmergency ) ); |
|
282 } |
|
283 |
|
284 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
268 __ASSERT_ALWAYS( KErrNone == err, User::Invariant() ); |
285 madeStateTransition = ETrue; |
269 madeStateTransition = ETrue; |
286 break; |
270 break; |
287 |
271 |
288 default: |
272 default: |