68 // |
68 // |
69 CCCEDtmf::~CCCEDtmf() |
69 CCCEDtmf::~CCCEDtmf() |
70 { |
70 { |
71 CCELOGSTRING("CCCEDtmf::~CCCEDtmf"); |
71 CCELOGSTRING("CCCEDtmf::~CCCEDtmf"); |
72 |
72 |
73 while( iObservers.Count() ) |
73 while( iObservers.Count() ) |
74 { |
74 { |
75 CCELOGSTRING("CCCEDtmf::~CCCEDtmf: There are dtmf observers in the array. Should be removed before dtor!"); |
75 CCELOGSTRING("CCCEDtmf::~CCCEDtmf: There are dtmf observers in the array. Should be removed before dtor!"); |
76 iObservers.Remove ( 0 ); |
76 iObservers.Remove ( 0 ); |
77 iObservers.Compress(); |
77 iObservers.Compress(); |
78 } |
78 } |
79 |
79 |
80 iObservers.Close(); |
80 iObservers.Close(); |
246 iObservers.AppendL( &aObserver ); |
247 iObservers.AppendL( &aObserver ); |
247 } |
248 } |
248 else |
249 else |
249 { |
250 { |
250 // already added, ignore |
251 // already added, ignore |
251 CCELOGSTRING("CCCEDtmf::AddObserverL. Observer to be added already existed. Operation ignored!"); |
252 CCELOGSTRING("CCCEDtmf::AddObserverL. Observer to be added already existed. Operation ignored!"); |
252 } |
253 } |
253 } |
254 } |
254 |
255 |
255 // ----------------------------------------------------------------------------- |
256 // ----------------------------------------------------------------------------- |
256 // CCCEDtmf::RemoveObserver( MCCEDtmfObserver& aObserver ) |
257 // CCCEDtmf::RemoveObserver( MCCEDtmfObserver& aObserver ) |
257 // ----------------------------------------------------------------------------- |
258 // ----------------------------------------------------------------------------- |
258 // |
259 // |
259 TInt CCCEDtmf::RemoveObserver( const MCCEDtmfObserver& aObserver ) |
260 TInt CCCEDtmf::RemoveObserver( const MCCEDtmfObserver& aObserver ) |
260 { |
261 { |
261 CCELOGSTRING("CCCEDtmf::RemoveObserver"); |
262 CCELOGSTRING("CCCEDtmf::RemoveObserver"); |
262 TInt index = iObservers.Find( &aObserver ); |
263 TInt index = iObservers.Find( &aObserver ); |
263 |
264 |
264 if( index!=KErrNotFound ) |
265 if( index!=KErrNotFound ) |
265 { |
266 { |
266 iObservers.Remove ( index ); |
267 iObservers.Remove ( index ); |
267 iObservers.Compress(); |
268 iObservers.Compress(); |
268 } |
269 } |
269 else |
270 else |
270 { |
271 { |
271 return KErrNotFound; |
272 return KErrNotFound; |
272 } |
273 } |
273 |
274 |
274 return KErrNone; |
275 return KErrNone; |
275 } |
276 } |
276 |
277 |
277 // --------------------------------------------------------------------------- |
278 // --------------------------------------------------------------------------- |
287 CCELOGSTRING2 (" HandleDTMFEvent, error = %d ",aError ); |
288 CCELOGSTRING2 (" HandleDTMFEvent, error = %d ",aError ); |
288 CCELOGSTRING2 (" HandleDTMFEvent, tone = %d ",(TInt)aTone ); |
289 CCELOGSTRING2 (" HandleDTMFEvent, tone = %d ",(TInt)aTone ); |
289 |
290 |
290 MCCEDtmfObserver::TCCEDtmfEvent event = (MCCEDtmfObserver::TCCEDtmfEvent)(aEvent); |
291 MCCEDtmfObserver::TCCEDtmfEvent event = (MCCEDtmfObserver::TCCEDtmfEvent)(aEvent); |
291 |
292 |
292 for( TInt i=0; i<iObservers.Count(); i++ ) |
293 for( TInt i=0; i<iObservers.Count(); i++ ) |
293 { |
294 { |
294 // notify all observers |
295 // notify all observers |
295 const_cast<MCCEDtmfObserver*>(iObservers[i])->HandleDTMFEvent( event, |
296 const_cast<MCCEDtmfObserver*>(iObservers[i])->HandleDTMFEvent( event, |
296 aError, |
297 aError, |
297 aTone ); |
298 aTone ); |
298 } |
299 } |
299 } |
300 } |