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