|
1 /* |
|
2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies). |
|
3 * All rights reserved. |
|
4 * This component and the accompanying materials are made available |
|
5 * under the terms of "Eclipse Public License v1.0" |
|
6 * which accompanies this distribution, and is available |
|
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
8 * |
|
9 * Initial Contributors: |
|
10 * Nokia Corporation - initial contribution. |
|
11 * |
|
12 * Contributors: |
|
13 * |
|
14 * Description: |
|
15 * Logs "AoC & CT list" view container class implementation |
|
16 * |
|
17 */ |
|
18 |
|
19 // INCLUDE FILES |
|
20 #include <aknnotedialog.h> // Note popup window. |
|
21 #include <AknIconArray.h> // icon array |
|
22 #include <aknnavide.h> |
|
23 #include <akntabgrp.h> // tab group |
|
24 #include <aknPopup.h> // als query popup |
|
25 #include <AknsConstants.h> //for skinned icons |
|
26 |
|
27 #include <Logs.rsg> // note structure |
|
28 #include <logs.mbg> // Logs own icons |
|
29 |
|
30 #include <csxhelp/log.hlp.hrh> |
|
31 |
|
32 #include "CCtControlContainer.h" |
|
33 #include "CCtView.h" |
|
34 #include "CLogsCtAdapter.h" |
|
35 #include "CLogsEngine.h" |
|
36 #include "MLogsSharedData.h" |
|
37 #include "MLogsSystemAgent.h" |
|
38 |
|
39 #include "CLogsAocObjFactory.h" |
|
40 #include "MLogsCallStatus.h" |
|
41 #include "MLogsAocUtil.h" |
|
42 #include "CLogsNaviDecoratorWrapper.h" |
|
43 |
|
44 #include "LogsIcons.hrh" |
|
45 #include "Logs.hrh" |
|
46 |
|
47 #include "LogsUID.h" |
|
48 |
|
49 |
|
50 // EXTERNAL DATA STRUCTURES |
|
51 |
|
52 // EXTERNAL FUNCTION PROTOTYPES |
|
53 |
|
54 // CONSTANTS |
|
55 const TInt KTimeLen = 20; //Chars needed for time string (same as in CLogsCtAdapter.cpp) |
|
56 |
|
57 // Timer timeout, used to refresh view when in call timers view. Needs to be quite short |
|
58 // in order provide perception of even time refreshments to display. |
|
59 const TInt KDelay = 250000; |
|
60 |
|
61 // ================= MEMBER FUNCTIONS ======================= |
|
62 |
|
63 // ---------------------------------------------------------------------------- |
|
64 // CCtControlContainer::NewL |
|
65 // ---------------------------------------------------------------------------- |
|
66 // |
|
67 CCtControlContainer* CCtControlContainer::NewL( |
|
68 CLogsBaseView* aAppView, |
|
69 const TRect& aRect ) |
|
70 { |
|
71 CCtControlContainer* self = new( ELeave ) CCtControlContainer( |
|
72 aAppView ); |
|
73 self->SetMopParent( aAppView ); |
|
74 CleanupStack::PushL( self ); |
|
75 self->ConstructL( aRect ); |
|
76 CleanupStack::Pop(); // self |
|
77 return self; |
|
78 } |
|
79 |
|
80 // ---------------------------------------------------------------------------- |
|
81 // CCtControlContainer::ConstructL |
|
82 // ---------------------------------------------------------------------------- |
|
83 // |
|
84 void CCtControlContainer::ConstructL( const TRect& aRect) |
|
85 { |
|
86 BaseConstructL(); |
|
87 |
|
88 CAknNavigationDecorator* decoratedTabGroup = NavigationTabGroupL( R_LOGS_SUB_APP_PANE_TAB_GROUP, |
|
89 CLogsNaviDecoratorWrapper::InstanceL() ); |
|
90 |
|
91 CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>( decoratedTabGroup-> |
|
92 DecoratedControl() ); |
|
93 |
|
94 MakeTitleL( R_AOCCT_TITLE_TEXT_CT ); |
|
95 tabGroup->SetActiveTabById( ESubAppTimersTabId ); |
|
96 |
|
97 // Listbox & Adapter |
|
98 iListBox = new ( ELeave ) CAknDoubleLargeStyleListBox; |
|
99 iListBox->ConstructL( this, EAknListBoxSelectionList ); |
|
100 |
|
101 iAocUtil = CLogsAocObjFactory::AocUtilL(); |
|
102 |
|
103 iCallStatus = CLogsAocObjFactory::CallStatusLC(); |
|
104 CleanupStack::Pop(); |
|
105 |
|
106 iCallStatus->SetObserver( this ); //In order to receive status change notifications |
|
107 //through MLineStatusObserver |
|
108 |
|
109 CCtView* view = static_cast<CCtView*>( iAppView ); |
|
110 CLogsCtAdapter* adapter = CLogsCtAdapter::NewL( iAppView-> |
|
111 Engine()->SharedDataL(), |
|
112 view->AlsLine(), //Default EAllLines |
|
113 *iCallStatus); |
|
114 iListBox->Model()->SetItemTextArray(adapter); |
|
115 |
|
116 iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray ); |
|
117 MakeScrollArrowsL( iListBox ); |
|
118 |
|
119 AddControlContainerIconsL(); |
|
120 |
|
121 // Update data in listbox |
|
122 UpdateListBoxContentL(); |
|
123 |
|
124 // Activate the control and all subcontrols |
|
125 SetRect( aRect ); |
|
126 ActivateL(); |
|
127 } |
|
128 |
|
129 |
|
130 // ---------------------------------------------------------------------------- |
|
131 // CCtControlContainer::CCtControlContainer |
|
132 // ---------------------------------------------------------------------------- |
|
133 // |
|
134 CCtControlContainer::CCtControlContainer( |
|
135 CLogsBaseView* aAppView ) : |
|
136 CLogsBaseControlContainer( aAppView ), |
|
137 iAppView( aAppView ) |
|
138 { |
|
139 } |
|
140 |
|
141 // ---------------------------------------------------------------------------- |
|
142 // CCtControlContainer::~CCtControlContainer |
|
143 // ---------------------------------------------------------------------------- |
|
144 // |
|
145 CCtControlContainer::~CCtControlContainer() |
|
146 { |
|
147 delete iAocUtil; |
|
148 delete iCallStatus; |
|
149 delete iPeriodic; |
|
150 delete iListBox; |
|
151 } |
|
152 |
|
153 |
|
154 // ---------------------------------------------------------------------------- |
|
155 // CCtControlContainer::ComponentControl |
|
156 // ---------------------------------------------------------------------------- |
|
157 // |
|
158 CCoeControl* CCtControlContainer::ComponentControl( |
|
159 TInt /*aIndex*/) const |
|
160 { |
|
161 return iListBox; |
|
162 } |
|
163 |
|
164 // ---------------------------------------------------------------------------- |
|
165 // CCtControlContainer::SizeChanged |
|
166 // ---------------------------------------------------------------------------- |
|
167 // |
|
168 void CCtControlContainer::SizeChanged() |
|
169 { |
|
170 if( iListBox ) |
|
171 { |
|
172 iListBox->SetRect( Rect() ); |
|
173 } |
|
174 } |
|
175 |
|
176 |
|
177 //Called by timer every KDelay interval to update list box content |
|
178 // ---------------------------------------------------------------------------- |
|
179 // CCtControlContainer::TimerLaunchedL |
|
180 // ---------------------------------------------------------------------------- |
|
181 // |
|
182 TInt CCtControlContainer::TimerLaunchedL(TAny* aContainer) |
|
183 { |
|
184 CCtControlContainer* container = |
|
185 static_cast<CCtControlContainer*>( aContainer ); |
|
186 container->UpdateListBoxContentL(); |
|
187 return 0; // needs to return just something. |
|
188 } |
|
189 |
|
190 |
|
191 // Returns the iListBox. |
|
192 // ---------------------------------------------------------------------------- |
|
193 // CCtControlContainer::ListBox |
|
194 // ---------------------------------------------------------------------------- |
|
195 // |
|
196 CAknDoubleLargeStyleListBox* CCtControlContainer::ListBox() |
|
197 { |
|
198 return iListBox; |
|
199 } |
|
200 |
|
201 |
|
202 // Checks updates for listbox. Launches timer to do update every KDelay interval |
|
203 // ---------------------------------------------------------------------------- |
|
204 // CCtControlContainer::UpdateListBoxContentL |
|
205 // ---------------------------------------------------------------------------- |
|
206 // |
|
207 void CCtControlContainer::UpdateListBoxContentL() |
|
208 { |
|
209 TBool activeCall( EFalse ); |
|
210 TBool showCallDuration( EFalse ); |
|
211 iCallStatus->CallIsActive( activeCall ); |
|
212 showCallDuration = iAppView->Engine()->SharedDataL()->ShowCallDurationLogsL(); |
|
213 |
|
214 if ( activeCall && showCallDuration ) |
|
215 { |
|
216 if( ! iPeriodic ) |
|
217 { |
|
218 iPeriodic = CPeriodic::NewL( EPriorityMore ); |
|
219 iPeriodic->Start( KDelay, KDelay, TCallBack(TimerLaunchedL, this) ); |
|
220 } |
|
221 } |
|
222 else |
|
223 { |
|
224 delete iPeriodic; |
|
225 iPeriodic = NULL; |
|
226 } |
|
227 |
|
228 CLogsCtAdapter* adapter = static_cast<CLogsCtAdapter*>( |
|
229 iListBox->Model()->ItemTextArray() ); |
|
230 |
|
231 if( adapter->UpdateDataL() ) //To avoid excessive flicker, update only when |
|
232 { // values have changed |
|
233 iListBox->HandleItemAdditionL(); |
|
234 } |
|
235 } |
|
236 |
|
237 |
|
238 // ---------------------------------------------------------------------------- |
|
239 // CCtControlContainer::ShowDurationDetailsL |
|
240 // ---------------------------------------------------------------------------- |
|
241 // |
|
242 void CCtControlContainer::ShowDurationDetailsL( TInt aCommandId ) |
|
243 { |
|
244 // Pop-up listbox construction |
|
245 CAknSingleHeadingPopupMenuStyleListBox* tmpPopUpListBox = new ( ELeave ) CAknSingleHeadingPopupMenuStyleListBox; |
|
246 CleanupStack::PushL( tmpPopUpListBox ); |
|
247 |
|
248 // Creation of the popupList, to which the text will be inserted |
|
249 CAknPopupList* popupFrame = CAknPopupList::NewL( tmpPopUpListBox, R_AVKON_SOFTKEYS_OK_EMPTY__OK ); |
|
250 CleanupStack::PushL( popupFrame ); |
|
251 tmpPopUpListBox->ConstructL( popupFrame, CEikListBox::ELeftDownInViewRect ); //tmpPopUpListBox->ConstructL( popupFrame, EAknListBoxViewerFlags ); |
|
252 |
|
253 // Disable highlight for the popup listbox. |
|
254 tmpPopUpListBox->ItemDrawer()->SetFlags( CListItemDrawer::EDisableHighlight ); |
|
255 |
|
256 // Creation of one item, to which the temporary text will be inserted |
|
257 CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( 4 ); |
|
258 CleanupStack::PushL( items ); |
|
259 |
|
260 // Creation of the model, which handles the text items |
|
261 CTextListBoxModel* model = tmpPopUpListBox->Model(); |
|
262 model->SetItemTextArray( items ); |
|
263 model->SetOwnershipType( ELbmOwnsItemArray ); |
|
264 CleanupStack::Pop( items ); |
|
265 tmpPopUpListBox->HandleItemAdditionL(); |
|
266 |
|
267 // Title of the Pop-Up window |
|
268 HBufC* textFromResourceFile; |
|
269 TAlsEnum line = EAllLines; |
|
270 TVoipEnum voip = EVoipIncluded; |
|
271 |
|
272 if ( aCommandId == EAocCtCmdMenuDetailsVoip) |
|
273 { |
|
274 textFromResourceFile = CCoeEnv::Static()->AllocReadResourceLC( R_CT_QTL_VOIP_DURATION ); |
|
275 line = EVoiceLinesExcluded; //No voice data added, |
|
276 voip = EVoipIncluded; // only voip |
|
277 } |
|
278 else |
|
279 { |
|
280 textFromResourceFile = CCoeEnv::Static()->AllocReadResourceLC( R_CT_QTL_CS_DURATION ); |
|
281 CCtView* view = static_cast<CCtView*>( iAppView ); |
|
282 line = view->AlsLine(); //User's selected ALS line |
|
283 voip = EVoipExcluded; // no voip |
|
284 } |
|
285 |
|
286 popupFrame->SetTitleL( *textFromResourceFile ); |
|
287 CleanupStack::PopAndDestroy( textFromResourceFile ); |
|
288 |
|
289 DurationDetailLineL( *items, R_AOCCT_LAST_CALL_TIMER_TEXT, line, voip ); |
|
290 DurationDetailLineL( *items, R_AOCCT_DIALLED_CALLS_TIMER_TEXT, line, voip ); |
|
291 DurationDetailLineL( *items, R_AOCCT_RECEIVED_CALLS_TIMER_TEXT,line, voip ); |
|
292 DurationDetailLineL( *items, R_AOCCT_ALL_CALLS_TIMER_TEXT, line, voip ); |
|
293 |
|
294 tmpPopUpListBox->SetCurrentItemIndex( 0 ); // Set focus & top index |
|
295 tmpPopUpListBox->SetTopItemIndex( 0 ); // to first line. |
|
296 |
|
297 //Publish the listbow for content updates too: Call counters may be updated while listbox is shown to user. |
|
298 iDurationDetailsPopupListBox = tmpPopUpListBox; //Now listbow is ready to update it's contents |
|
299 // if needed while shown to user |
|
300 popupFrame->ExecuteLD(); |
|
301 |
|
302 CleanupStack::Pop( popupFrame ); |
|
303 CleanupStack::PopAndDestroy( iDurationDetailsPopupListBox ); |
|
304 iDurationDetailsPopupListBox = 0; //Hide listbox (no content updates anymore possible to listbox) |
|
305 } |
|
306 |
|
307 // ---------------------------------------------------------------------------- |
|
308 // CCtControlContainer::DurationDetailLineL |
|
309 // ---------------------------------------------------------------------------- |
|
310 // |
|
311 void CCtControlContainer::DurationDetailLineL( |
|
312 CDesCArrayFlat& aItems, |
|
313 TInt aResource, |
|
314 TAlsEnum aLine, |
|
315 TVoipEnum aVoip ) |
|
316 { |
|
317 //CLogsCtAdapter provides functionality to retrieve duration details. No need to optimise the below |
|
318 CLogsCtAdapter* adapter = CLogsCtAdapter::NewL( iAppView->Engine()->SharedDataL(), |
|
319 aLine, |
|
320 *iCallStatus); |
|
321 CleanupStack::PushL( adapter ); |
|
322 |
|
323 HBufC* text = iCoeEnv->AllocReadResourceLC( aResource ); |
|
324 text = text->ReAllocL( text->Length() + KTimeLen ); //deletes original descriptor |
|
325 CleanupStack::Pop( ); //pop original text from cleanupstack |
|
326 CleanupStack::PushL( text ); //push new text to cleanupstack |
|
327 |
|
328 TPtr ptr = text->Des(); |
|
329 ptr.Insert( 0, KTab ); |
|
330 |
|
331 TBuf<KTimeLen> buf; |
|
332 buf.Zero(); |
|
333 |
|
334 switch ( aResource ) |
|
335 { |
|
336 case R_AOCCT_LAST_CALL_TIMER_TEXT: |
|
337 adapter->LastCallTimeStringL( buf, aLine, aVoip ); |
|
338 break; |
|
339 case R_AOCCT_DIALLED_CALLS_TIMER_TEXT: |
|
340 adapter->DialledCallsTimeStringL( buf, aLine, aVoip ); |
|
341 break; |
|
342 case R_AOCCT_RECEIVED_CALLS_TIMER_TEXT: |
|
343 adapter->ReceivedCallsTimeStringL( buf, aLine, aVoip ); |
|
344 break; |
|
345 case R_AOCCT_ALL_CALLS_TIMER_TEXT: |
|
346 adapter->AllCallsTimeStringL( buf, aLine, aVoip ); |
|
347 break; |
|
348 } |
|
349 |
|
350 ptr.Insert( 0, buf ); |
|
351 aItems.AppendL( *text ); |
|
352 |
|
353 CleanupStack::PopAndDestroy( text ); |
|
354 CleanupStack::PopAndDestroy( adapter ); |
|
355 } |
|
356 |
|
357 |
|
358 // ---------------------------------------------------------------------------- |
|
359 // CCtControlContainer::AlsSettingQueryL |
|
360 // ---------------------------------------------------------------------------- |
|
361 // |
|
362 TBool CCtControlContainer::AlsSettingQueryL( TAlsEnum& aAlsSetting ) |
|
363 { |
|
364 // Pop-up listbox construction |
|
365 CAknSinglePopupMenuStyleListBox* popupListBox = new ( ELeave ) |
|
366 CAknSinglePopupMenuStyleListBox; |
|
367 CleanupStack::PushL( popupListBox ); |
|
368 |
|
369 // Creation of the popupList, to which the text will be inserted |
|
370 CAknPopupList* popupFrame = CAknPopupList::NewL( popupListBox, |
|
371 R_AVKON_SOFTKEYS_SELECT_CANCEL ); |
|
372 CleanupStack::PushL( popupFrame ); |
|
373 popupListBox->ConstructL( popupFrame, CEikListBox::ELeftDownInViewRect ); |
|
374 |
|
375 // Creation of one item, to which the temporary text will be inserted |
|
376 CDesCArrayFlat* items = new ( ELeave ) CDesCArrayFlat( 1 ); |
|
377 CleanupStack::PushL( items ); |
|
378 |
|
379 // ALS: Both lines logging ON |
|
380 MakeOneLineL( *items, R_CT_ALS_BOTH_LINES_TEXT ); |
|
381 // ALS: Line 1 logging ON |
|
382 MakeOneLineL( *items, R_CT_ALS_LINE_ONE_TEXT ); |
|
383 // ALS: Line 2 logging ON |
|
384 MakeOneLineL( *items, R_CT_ALS_LINE_TWO_TEXT ); |
|
385 |
|
386 // Creation of the model, which handles the text items |
|
387 CTextListBoxModel* model = popupListBox->Model(); |
|
388 model->SetItemTextArray( items ); |
|
389 model->SetOwnershipType( ELbmOwnsItemArray ); |
|
390 CleanupStack::Pop( items ); |
|
391 popupListBox->HandleItemAdditionL(); |
|
392 |
|
393 // Title of the Pop-Up window |
|
394 HBufC* textFromResourceFile; |
|
395 textFromResourceFile = CCoeEnv::Static()->AllocReadResourceLC( |
|
396 R_CT_ALS_SELECTION_HEADER ); |
|
397 popupFrame->SetTitleL( *textFromResourceFile ); |
|
398 CleanupStack::PopAndDestroy( textFromResourceFile ); |
|
399 |
|
400 // set focus & top index |
|
401 popupListBox->SetCurrentItemIndex( aAlsSetting ); // focus to seleted als-line |
|
402 popupListBox->SetTopItemIndex( 0 ); // show list from top |
|
403 |
|
404 TAlsEnum selectedAls = aAlsSetting; |
|
405 // Focus comes here after anything else, but "CANCEL" softkey |
|
406 if( popupFrame->ExecuteLD() ) |
|
407 { |
|
408 selectedAls = TAlsEnum(popupListBox->CurrentItemIndex()) ; |
|
409 } |
|
410 else |
|
411 // Filter was not selected. |
|
412 { |
|
413 CleanupStack::Pop( popupFrame ); |
|
414 CleanupStack::PopAndDestroy( popupListBox ); |
|
415 return EFalse; |
|
416 } |
|
417 CleanupStack::Pop( popupFrame ); |
|
418 CleanupStack::PopAndDestroy( popupListBox ); |
|
419 |
|
420 if( selectedAls >= EAllLines && selectedAls <= ELineTwo ) //First three enums can be selected here (LogsAlsEnum.hrh) |
|
421 { |
|
422 aAlsSetting = selectedAls; |
|
423 return ETrue; |
|
424 } |
|
425 return EFalse; |
|
426 } |
|
427 |
|
428 // Makes one listbox line |
|
429 // ---------------------------------------------------------------------------- |
|
430 // CCtControlContainer::MakeOneLineL |
|
431 // ---------------------------------------------------------------------------- |
|
432 // |
|
433 void CCtControlContainer::MakeOneLineL( |
|
434 CDesCArrayFlat& aItems, |
|
435 TInt aResource ) |
|
436 { |
|
437 HBufC* text = iCoeEnv->AllocReadResourceLC( aResource ); |
|
438 aItems.AppendL( *text ); |
|
439 CleanupStack::PopAndDestroy(); // text |
|
440 } |
|
441 |
|
442 //Called when call status has changed (e.g. call ended) |
|
443 // ---------------------------------------------------------------------------- |
|
444 // CCtControlContainer::LineStatusChangedL |
|
445 // ---------------------------------------------------------------------------- |
|
446 // |
|
447 void CCtControlContainer::LineStatusChangedL() |
|
448 { |
|
449 UpdateListBoxContentL(); //This calls adapter->UpdateDataL() |
|
450 |
|
451 //If duration details popup happens to be just now open, update it also. |
|
452 if( iDurationDetailsPopupListBox ) |
|
453 { |
|
454 |
|
455 //FIXME: Add here also updating the listbox contents |
|
456 iDurationDetailsPopupListBox->HandleItemAdditionL(); |
|
457 } |
|
458 } |
|
459 |
|
460 // ---------------------------------------------------------------------------- |
|
461 // CCtControlContainer::SimInfoNotificationL |
|
462 // ---------------------------------------------------------------------------- |
|
463 // |
|
464 void CCtControlContainer::SimInfoNotificationL() |
|
465 { |
|
466 UpdateListBoxContentL(); |
|
467 } |
|
468 |
|
469 // ---------------------------------------------------------------------------- |
|
470 // CCtControlContainer::CallStatus |
|
471 // ---------------------------------------------------------------------------- |
|
472 // |
|
473 MLogsCallStatus& CCtControlContainer::CallStatus() const |
|
474 { |
|
475 return *iCallStatus; |
|
476 } |
|
477 |
|
478 // Return the value of the iCommonControl |
|
479 // ---------------------------------------------------------------------------- |
|
480 // CCtControlContainer::AocUtil |
|
481 // ---------------------------------------------------------------------------- |
|
482 // |
|
483 MLogsAocUtil& CCtControlContainer::AocUtil() const |
|
484 { |
|
485 return *iAocUtil; |
|
486 } |
|
487 |
|
488 // ---------------------------------------------------------------------------- |
|
489 // CCtControlContainer::GetHelpContext |
|
490 // ---------------------------------------------------------------------------- |
|
491 // |
|
492 void CCtControlContainer::GetHelpContext( TCoeHelpContext& aContext ) const |
|
493 { |
|
494 aContext.iMajor = TUid::Uid( KLogsAppUID3 ); |
|
495 aContext.iContext = KTIMERS_HLP_MAIN; |
|
496 } |
|
497 |
|
498 // ---------------------------------------------------------------------------- |
|
499 // CCtControlContainer::AddControlContainerIconsL |
|
500 // ---------------------------------------------------------------------------- |
|
501 // |
|
502 void CCtControlContainer::AddControlContainerIconsL() |
|
503 { |
|
504 if( iListBox->ItemDrawer()->FormattedCellData()->IconArray() != NULL ) |
|
505 { |
|
506 CArrayPtr<CGulIcon>* iconArray = iListBox->ItemDrawer()->FormattedCellData()->IconArray(); |
|
507 delete iconArray; |
|
508 iconArray = NULL; |
|
509 iListBox->ItemDrawer()->FormattedCellData()->SetIconArray( iconArray); |
|
510 } |
|
511 |
|
512 // Load and assign icons to the list box control; 7 is number of icons |
|
513 CAknIconArray* icons = new( ELeave ) CAknIconArray( KAocCtCCNrOfItems ); |
|
514 |
|
515 iListBox->ItemDrawer()->FormattedCellData()->SetIconArray( icons ); |
|
516 |
|
517 // these values must not be changed unless adaptors are also modified! |
|
518 |
|
519 // 1st icon & mask. (Active Call Timer) |
|
520 AddIconL( icons |
|
521 , KLogsIconFile |
|
522 , KAknsIIDQgnPropLogTimerCallActive //AknsConstants.h |
|
523 , qgn_prop_log_timer_call_active //LogsIcons.hrh |
|
524 , qgn_prop_log_timer_call_active_mask //LogsIcons.hrh |
|
525 ); |
|
526 |
|
527 // 2nd icon & mask. (Last Call Timer) |
|
528 AddIconL( icons |
|
529 , KLogsIconFile |
|
530 , KAknsIIDQgnPropLogTimerCallLast |
|
531 , qgn_prop_log_timer_call_last |
|
532 , qgn_prop_log_timer_call_last_mask |
|
533 ); |
|
534 |
|
535 // 3th icon & mask. (Dialled Calls Timer) |
|
536 AddIconL( icons |
|
537 , KLogsIconFile |
|
538 , KAknsIIDQgnPropLogTimerCallOut |
|
539 , qgn_prop_log_timer_call_out |
|
540 , qgn_prop_log_timer_call_out_mask |
|
541 ); |
|
542 |
|
543 // 4rd icon & mask. (Received Calls Timer) |
|
544 AddIconL( icons |
|
545 , KLogsIconFile |
|
546 , KAknsIIDQgnPropLogTimerCallIn |
|
547 , qgn_prop_log_timer_call_in |
|
548 , qgn_prop_log_timer_call_in_mask |
|
549 ); |
|
550 |
|
551 // 5th icon & mask. (All Calls Timer) |
|
552 AddIconL( icons |
|
553 , KLogsIconFile |
|
554 , KAknsIIDQgnPropLogTimerCallAll |
|
555 , qgn_prop_log_timer_call_all |
|
556 , qgn_prop_log_timer_call_all_mask |
|
557 ); |
|
558 } |
|
559 |
|
560 // ---------------------------------------------------------------------------- |
|
561 // CCtControlContainer::FocusChanged |
|
562 // |
|
563 // This is needed to hand focus changes to list. Otherwise animations are not displayed. |
|
564 // ---------------------------------------------------------------------------- |
|
565 // |
|
566 void CCtControlContainer::FocusChanged(TDrawNow /* aDrawNow */ ) |
|
567 { |
|
568 if( iListBox) |
|
569 { |
|
570 iListBox->SetFocus( IsFocused() ); |
|
571 } |
|
572 } |
|
573 |
|
574 // End of File |