|
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 * STM's Received Calls view control container |
|
16 * |
|
17 */ |
|
18 |
|
19 |
|
20 // INCLUDE FILES |
|
21 #include <AknIconArray.h> |
|
22 #include <aknnavide.h> |
|
23 #include <akntabgrp.h> |
|
24 #include <AknsConstants.h> //For skinned icons |
|
25 #include <csxhelp/log.hlp.hrh> |
|
26 #include <Logs.rsg> |
|
27 #include <logs.mbg> //Index file for Logs icons. |
|
28 |
|
29 #include "CLogsRecentListControlContainer.h" |
|
30 #include "CLogsEngine.h" |
|
31 #include "MLogsModel.h" |
|
32 #include "MLogsSharedData.h" |
|
33 #include "CLogsAppUi.h" |
|
34 #include "CLogsRecentListView.h" |
|
35 #include "CLogsRecentListAdapter.h" |
|
36 #include "CLogsViewGlobals.h" |
|
37 #include "MLogsExtensionFactory.h" |
|
38 #include "MLogsUiControlExtension.h" |
|
39 #include "LogsIcons.hrh" |
|
40 #include "CLogsNaviDecoratorWrapper.h" |
|
41 |
|
42 #include "LogsUID.h" |
|
43 |
|
44 |
|
45 // EXTERNAL DATA STRUCTURES |
|
46 |
|
47 // EXTERNAL FUNCTION PROTOTYPES |
|
48 |
|
49 // CONSTANTS |
|
50 |
|
51 // MACROS |
|
52 |
|
53 // LOCAL CONSTANTS AND MACROS |
|
54 |
|
55 // MODULE DATA STRUCTURES |
|
56 |
|
57 // LOCAL FUNCTION PROTOTYPES |
|
58 |
|
59 // ==================== LOCAL FUNCTIONS ==================== |
|
60 |
|
61 // ================= MEMBER FUNCTIONS ======================= |
|
62 |
|
63 // ---------------------------------------------------------------------------- |
|
64 // CLogsRecentListControlContainer::NewL |
|
65 // ---------------------------------------------------------------------------- |
|
66 // |
|
67 CLogsRecentListControlContainer* CLogsRecentListControlContainer::NewL( |
|
68 CLogsRecentListView* aView, |
|
69 const TRect& aRect ) |
|
70 { |
|
71 CLogsRecentListControlContainer* self = new ( ELeave ) |
|
72 CLogsRecentListControlContainer( aView ); |
|
73 self->SetMopParent( aView ); |
|
74 CleanupStack::PushL( self ); |
|
75 self->ConstructL( aRect ); |
|
76 CleanupStack::Pop(self); // self |
|
77 return self; |
|
78 } |
|
79 |
|
80 // ---------------------------------------------------------------------------- |
|
81 // CLogsRecentListControlContainer::~CLogsRecentListControlContainer |
|
82 // ---------------------------------------------------------------------------- |
|
83 // |
|
84 CLogsRecentListControlContainer::~CLogsRecentListControlContainer() |
|
85 { |
|
86 delete iListBox; |
|
87 Release(iControlExtension); |
|
88 } |
|
89 |
|
90 |
|
91 // ---------------------------------------------------------------------------- |
|
92 // CLogsRecentListControlContainer::CLogsRecentListControlContainer |
|
93 // ---------------------------------------------------------------------------- |
|
94 // |
|
95 CLogsRecentListControlContainer::CLogsRecentListControlContainer( |
|
96 CLogsRecentListView* aView ) : |
|
97 CLogsBaseControlContainer( aView ), |
|
98 iView( aView ) |
|
99 { |
|
100 } |
|
101 |
|
102 // ---------------------------------------------------------------------------- |
|
103 // CLogsRecentListControlContainer::ConstructL |
|
104 // ---------------------------------------------------------------------------- |
|
105 // |
|
106 void CLogsRecentListControlContainer::ConstructL( const TRect& aRect ) |
|
107 { |
|
108 BaseConstructL(); |
|
109 iListBox = new( ELeave ) CAknDoubleGraphicStyleListBox; |
|
110 iListBox->ConstructL( this, EEikListBoxMultipleSelection ); |
|
111 |
|
112 //Create control extension (i.e. the extension that provides additional PEC information |
|
113 //if PEC present in the image) |
|
114 CreateControlExtensionL(); |
|
115 iControlExtension->SetObserver( *iView ); |
|
116 |
|
117 AddControlContainerIconsL(); |
|
118 iListBox->Model()->SetOwnershipType( ELbmOwnsItemArray );//Ownership of iAdapter transferred |
|
119 |
|
120 iAdapter = CLogsRecentListAdapter::NewL( this, iLastOwnIconOffset ); |
|
121 |
|
122 iListBox->Model()->SetItemTextArray( iAdapter ); |
|
123 |
|
124 //The below was a bad place for this as container is not deleted when we lose foreground |
|
125 //but we still reread events. Instead we handle this in CLogsRecentListView::StateChangedL |
|
126 //MakeEmptyTextListBoxL( iListBox, EmptyListboxResource() ); //Shows "no data" in this case |
|
127 MakeScrollArrowsL( iListBox ); |
|
128 |
|
129 //Create recent list view tab group (Logs.rss) |
|
130 CAknNavigationDecorator* naviTabGroup = NavigationTabGroupL( R_STM_NAVI_PANE_TAB_GROUP, |
|
131 CLogsNaviDecoratorWrapper::InstanceL() ); |
|
132 //Get the control inside navigation decorator object |
|
133 CAknTabGroup* tabGroup = static_cast<CAknTabGroup*>( naviTabGroup->DecoratedControl() ); |
|
134 |
|
135 |
|
136 // Activate the correct tab that corresponds to current recent view |
|
137 switch( iView->Id().iUid ) |
|
138 { |
|
139 case EStmMissedListViewId: |
|
140 MakeTitleL( R_STM_TITLE_TEXT_MISSED ); |
|
141 if ( tabGroup->ActiveTabId() != EMissedTabId ) |
|
142 { |
|
143 tabGroup->SetActiveTabById( EMissedTabId ); //hightlight (activate) the tab |
|
144 } |
|
145 break; |
|
146 |
|
147 case EStmReceivedListViewId: |
|
148 MakeTitleL( R_STM_TITLE_TEXT_RECEIVED ); |
|
149 if ( tabGroup->ActiveTabId() != EReceivedTabId ) |
|
150 { |
|
151 tabGroup->SetActiveTabById( EReceivedTabId ); //hightlight (activate) the tab |
|
152 } |
|
153 break; |
|
154 |
|
155 case EStmDialledListViewId: |
|
156 MakeTitleL( R_STM_TITLE_TEXT_DIALLED ); |
|
157 if ( tabGroup->ActiveTabId() != EDialledTabId ) |
|
158 { |
|
159 tabGroup->SetActiveTabById( EDialledTabId ); //hightlight (activate) the tab |
|
160 } |
|
161 break; |
|
162 |
|
163 default: |
|
164 break; |
|
165 } |
|
166 |
|
167 SetRect( aRect ); |
|
168 ActivateL(); |
|
169 } |
|
170 |
|
171 /********************************************************************** |
|
172 Not in use anymore, Phonebook icons replaced by own icons |
|
173 |
|
174 void CLogsRecentListControlContainer::AddPhoneTypeIconsL( CAknIconArray* aIcons ) |
|
175 { |
|
176 CPbkContactEngine* pbkEngine = iView->LogsAppUi()->Engine()->PbkEngine(); |
|
177 CPbkIconInfoContainer* iconInfoContainer = iView->LogsAppUi()->IconInfoContainer(); //Container providing info of pbk's icons. |
|
178 CArrayFix<TPbkIconId>* idArray = iView->LogsAppUi()->IconIdArray(); //IconIdArray() maps icon ids corresponding to pbk's |
|
179 idArray->Reset(); // data fields (one to many). |
|
180 const CPbkFieldsInfo& fieldsInfo = pbkEngine->FieldsInfo(); |
|
181 TInt count( fieldsInfo.Count() ); |
|
182 RArray<TInt> readIcons( count ); //Temp array for bookkeeping the already added icons (add icon only once to array) |
|
183 |
|
184 for( TInt i = 0; i < count; i++ ) |
|
185 { |
|
186 CPbkFieldInfo* field = fieldsInfo.Find( i ); //We add icons in order of Phonebook field type ids, so can assume that |
|
187 TInt idx( KErrNotFound ); // first icon relates to EPbkFieldIdNone (so we'll have empty icon as first) |
|
188 |
|
189 if( field ) |
|
190 { |
|
191 TPbkIconId iconId = field->IconId(); |
|
192 TPbkIconInfo* iconInfo = const_cast<TPbkIconInfo*>(iconInfoContainer->Find( iconId )); |
|
193 |
|
194 if( iconInfo ) |
|
195 { |
|
196 idx = readIcons.Find( iconInfo->IconId() ); |
|
197 |
|
198 if( idx == KErrNotFound ) //Add only new icons to icon array |
|
199 { |
|
200 readIcons.Append( iconInfo->IconId() ); //readIcons needs to be in synch with aIcons |
|
201 AddIconWithPathL( aIcons, iconInfo->MbmFileName(), |
|
202 iconInfo->SkinId(), iconInfo->IconId(), iconInfo->MaskId() ); |
|
203 idx = aIcons->Count() - 1; //Icon was added as last (count - 1) |
|
204 } |
|
205 } |
|
206 } |
|
207 idArray->AppendL( TPbkIconId( idx )); |
|
208 } |
|
209 |
|
210 readIcons.Close(); |
|
211 aIcons->Compress(); |
|
212 } |
|
213 **********************************************************************/ |
|
214 |
|
215 // ---------------------------------------------------------------------------- |
|
216 // CLogsRecentListControlContainer::ForceEmptyTextListBoxL |
|
217 // ---------------------------------------------------------------------------- |
|
218 // |
|
219 void CLogsRecentListControlContainer::ForceEmptyTextListBox() |
|
220 { |
|
221 TRAPD(err, MakeEmptyTextListBoxL( iListBox, KErrNotFound )); |
|
222 if (err) |
|
223 { |
|
224 CCoeEnv::Static()->HandleError( err ); |
|
225 } |
|
226 } |
|
227 |
|
228 // ---------------------------------------------------------------------------- |
|
229 // CLogsRecentListControlContainer::EmptyListboxResource |
|
230 // ---------------------------------------------------------------------------- |
|
231 // |
|
232 TInt CLogsRecentListControlContainer::EmptyListboxResourceL() const |
|
233 { |
|
234 TInt res( R_LOGS_EVENTVIEW_FETCHING_TEXT ); |
|
235 |
|
236 TLogsState state = iView->State(); |
|
237 |
|
238 if( state == EStateUndefined || state == EStateInitializing ) |
|
239 { |
|
240 return res; //Show "retrieving data" |
|
241 } |
|
242 else if( state == EStateReaderDeletedOrStopped || state == EStateArrayReseted) |
|
243 { |
|
244 return KErrNotFound; |
|
245 } |
|
246 |
|
247 if (iView->Engine()->SharedDataL()->IsLoggingEnabled()) |
|
248 { |
|
249 switch( iView->RecentListType() ) |
|
250 { |
|
251 case ELogsReceivedModel: |
|
252 res = R_STM_RECEIVED_EMPTY_LISTBOX_TEXT; |
|
253 break; |
|
254 |
|
255 case ELogsDialledModel: |
|
256 res = R_STM_DIALLED_EMPTY_LISTBOX_TEXT; |
|
257 break; |
|
258 |
|
259 case ELogsMissedModel: |
|
260 res = R_STM_MISSED_EMPTY_LISTBOX_TEXT; |
|
261 break; |
|
262 |
|
263 default: |
|
264 break; |
|
265 } |
|
266 } |
|
267 else |
|
268 { |
|
269 res = R_QTN_LOGS_LOGGING_OFF; |
|
270 } |
|
271 |
|
272 return res; |
|
273 } |
|
274 |
|
275 // ---------------------------------------------------------------------------- |
|
276 // Possible future need: Initiate some other type of call |
|
277 // with a long tap event (like video call) |
|
278 // |
|
279 // CLogsRecentListControlContainer::HandleLongTapEventL |
|
280 // ---------------------------------------------------------------------------- |
|
281 // |
|
282 //void CLogsRecentListControlContainer::HandleLongTapEventL( const TPoint& /* aPenEventLocation */, |
|
283 // const TPoint& /* aPenEventScreenLocation */ ) |
|
284 // { |
|
285 // iView->HandleCommandL( ELogsCmdLongTapCall ); |
|
286 // } |
|
287 |
|
288 // ---------------------------------------------------------------------------- |
|
289 // CLogsRecentListControlContainer::ListBox |
|
290 // ---------------------------------------------------------------------------- |
|
291 // |
|
292 CAknDoubleGraphicStyleListBox* CLogsRecentListControlContainer::ListBox() |
|
293 { |
|
294 return iListBox; |
|
295 } |
|
296 |
|
297 // ---------------------------------------------------------------------------- |
|
298 // CLogsRecentListControlContainer::ComponentControl |
|
299 // ---------------------------------------------------------------------------- |
|
300 // |
|
301 CCoeControl* CLogsRecentListControlContainer::ComponentControl( |
|
302 TInt /*aIndex*/ ) const |
|
303 { |
|
304 return iListBox; |
|
305 } |
|
306 |
|
307 // ---------------------------------------------------------------------------- |
|
308 // CLogsRecentListControlContainer::SizeChanged |
|
309 // ---------------------------------------------------------------------------- |
|
310 // |
|
311 void CLogsRecentListControlContainer::SizeChanged() |
|
312 { |
|
313 if( iListBox ) |
|
314 { |
|
315 iListBox->SetRect( Rect() ); |
|
316 // Calculate line widths and update these to adapter |
|
317 TRect main_pane = iListBox->Rect(); |
|
318 TAknWindowLineLayout line3 = AknLayout::list_gen_pane(0); |
|
319 TAknLayoutRect rect2; |
|
320 rect2.LayoutRect(main_pane, line3); |
|
321 TRect list_gen_pane = rect2.Rect(); |
|
322 |
|
323 for(TInt trailIcons = 0; trailIcons <= KMaxNbrOfRecentTrailIcons; trailIcons++) |
|
324 { |
|
325 // Let's first calculate the max width in pixels available for a row for a number of icons |
|
326 TAknWindowLineLayout line2 = AknLayout::list_double_graphic_pane_list_double2_graphic_pane(trailIcons); |
|
327 TAknLayoutRect rect; |
|
328 rect.LayoutRect(list_gen_pane, line2); |
|
329 TRect list_double2_graphic_pane = rect.Rect(); |
|
330 |
|
331 TAknTextLineLayout line = AknLayout::List_pane_texts__double_graphic__Line_1( trailIcons ); |
|
332 TAknLayoutText text; |
|
333 text.LayoutText(list_double2_graphic_pane, line); |
|
334 // Then provide to adapter the pixel value for this number of trailing icons as adapter needs |
|
335 // to truncate shown data if necessary |
|
336 iAdapter->SetLineWidth( text.TextRect().Width(), trailIcons ); |
|
337 } |
|
338 } |
|
339 } |
|
340 |
|
341 // ---------------------------------------------------------------------------- |
|
342 // CLogsRecentListControlContainer::UpdateL |
|
343 // ---------------------------------------------------------------------------- |
|
344 // |
|
345 void CLogsRecentListControlContainer::UpdateL() |
|
346 { |
|
347 if( iView->CurrentModel()->Count() == 0 ) |
|
348 { |
|
349 TInt res( EmptyListboxResourceL() ); //Shows either "retrieving" or "no data" |
|
350 MakeEmptyTextListBoxL( iListBox, res ); |
|
351 iListBox->Reset(); |
|
352 } |
|
353 |
|
354 iListBox->HandleItemAdditionL(); |
|
355 } |
|
356 |
|
357 // ---------------------------------------------------------------------------- |
|
358 // CLogsRecentListControlContainer::GetHelpContext |
|
359 // ---------------------------------------------------------------------------- |
|
360 // |
|
361 void CLogsRecentListControlContainer::GetHelpContext( |
|
362 TCoeHelpContext& aContext ) const |
|
363 { |
|
364 aContext.iMajor = TUid::Uid( KLogsAppUID3 ); |
|
365 |
|
366 if( iView->Id() == TUid::Uid( EStmMissedListViewId ) ) |
|
367 { |
|
368 aContext.iContext = KSTM_HLP_MISSED; |
|
369 } |
|
370 else if( iView->Id() == TUid::Uid( EStmReceivedListViewId ) ) |
|
371 { |
|
372 aContext.iContext = KSTM_HLP_RECEIVED; |
|
373 } |
|
374 else |
|
375 { |
|
376 aContext.iContext = KSTM_HLP_DIALLED; |
|
377 } |
|
378 } |
|
379 |
|
380 // ---------------------------------------------------------------------------- |
|
381 // CLogsRecentListControlContainer::CreateControlExtensionL |
|
382 // ---------------------------------------------------------------------------- |
|
383 // |
|
384 void CLogsRecentListControlContainer::CreateControlExtensionL() |
|
385 { |
|
386 CLogsViewGlobals* viewGlobals = CLogsViewGlobals::InstanceL(); |
|
387 |
|
388 viewGlobals->PushL(); |
|
389 |
|
390 iControlExtension = viewGlobals->ExtensionFactoryL(). |
|
391 CreateLogsUiControlExtensionL(); |
|
392 |
|
393 CleanupStack::PopAndDestroy(viewGlobals); |
|
394 } |
|
395 |
|
396 // ---------------------------------------------------------------------------- |
|
397 // CLogsRecentListControlContainer::ControlExtension |
|
398 // ---------------------------------------------------------------------------- |
|
399 // |
|
400 MLogsUiControlExtension* CLogsRecentListControlContainer::ControlExtension() |
|
401 { |
|
402 return iControlExtension; |
|
403 } |
|
404 |
|
405 // ---------------------------------------------------------------------------- |
|
406 // CLogsRecentListControlContainer::View |
|
407 // ---------------------------------------------------------------------------- |
|
408 // |
|
409 CLogsRecentListView* CLogsRecentListControlContainer::View() |
|
410 { |
|
411 return iView; |
|
412 } |
|
413 |
|
414 // ---------------------------------------------------------------------------- |
|
415 // CLogsRecentListControlContainer::AddControlContainerIconsL |
|
416 // ---------------------------------------------------------------------------- |
|
417 // |
|
418 void CLogsRecentListControlContainer::AddControlContainerIconsL() |
|
419 { |
|
420 iLastOwnIconOffset = KErrNotFound; |
|
421 |
|
422 //CAknIconArray owns the CGulIcons it contains (for leave-safety). |
|
423 //Destructor destroys all icons in the array. |
|
424 if( iListBox->ItemDrawer()->ColumnData()->IconArray() != NULL ) |
|
425 { |
|
426 CArrayPtr<CGulIcon>* iconArray = iListBox->ItemDrawer()->ColumnData()->IconArray(); |
|
427 delete iconArray; |
|
428 iconArray = NULL; |
|
429 iListBox->ItemDrawer()->ColumnData()->SetIconArray( iconArray); |
|
430 } |
|
431 |
|
432 /********************************************************************** |
|
433 Not in use anymore, Phonebook icons replaced by own icons starting from offset 0 below |
|
434 |
|
435 // First load PhoneTypeIcons |
|
436 TInt count( iView->Engine()->PbkEngine()->FieldsInfo().Count() ); |
|
437 |
|
438 CAknIconArray* icons = new( ELeave ) CAknIconArray( count ); //count = granularity. Needs to be # of icons from Pbk |
|
439 iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons ); |
|
440 AddPhoneTypeIconsL( icons ); |
|
441 |
|
442 //Then load on top of PhoneTypeIcons the other own icons: Poc, Voip, Video, Als2, ... |
|
443 **********************************************************************/ |
|
444 |
|
445 CAknIconArray* icons = new( ELeave ) CAknIconArray( KRecentListCCNrOfItems ); |
|
446 iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons ); |
|
447 |
|
448 //Icons for column A (phone call type). Offsets referred by enum RecentListIconArrayIcons |
|
449 //EIconDefault;//refers to this icon (offset 0) |
|
450 AddIconL( icons |
|
451 , KLogsIconFile |
|
452 , KAknsIIDQgnPropNrtypMobile |
|
453 , qgn_prop_nrtyp_mobile |
|
454 , qgn_prop_nrtyp_mobile_mask |
|
455 ); |
|
456 |
|
457 //EIconVideo;//refers to this icon: |
|
458 AddIconL( icons |
|
459 , KLogsIconFile |
|
460 , KAknsIIDQgnPropNrtypVideo |
|
461 , qgn_prop_nrtyp_video |
|
462 , qgn_prop_nrtyp_video_mask |
|
463 ); |
|
464 |
|
465 //EIconVoip;//refers to this icon: |
|
466 AddIconL( icons |
|
467 , KLogsIconFile |
|
468 , KAknsIIDQgnPropNrtypVoip |
|
469 , qgn_prop_nrtyp_voip |
|
470 , qgn_prop_nrtyp_voip_mask |
|
471 ); |
|
472 |
|
473 //EIconPoc;//refers to this icon: |
|
474 AddIconL( icons |
|
475 , KLogsIconFile |
|
476 , KAknsIIDQgnPropNrtypPoc |
|
477 , qgn_prop_nrtyp_poc |
|
478 , qgn_prop_nrtyp_poc_mask |
|
479 ); |
|
480 |
|
481 //EIconAls;//refers to this icon: |
|
482 AddColorIconL( icons |
|
483 , KLogsIconFile |
|
484 , KAknsIIDQgnIndiAlsLine2Add |
|
485 , qgn_indi_als_line2_add |
|
486 , qgn_indi_als_line2_add_mask |
|
487 ); |
|
488 //EIconNewMissed refers to this icon: |
|
489 AddColorIconL( icons |
|
490 , KLogsIconFile |
|
491 , KAknsIIDQgnIndiLogMissedCallAdd |
|
492 , qgn_indi_log_missed_call_add |
|
493 , qgn_indi_log_missed_call_add_mask |
|
494 ); |
|
495 |
|
496 //EIconLandphone;//refers to this icon: |
|
497 AddIconL( icons |
|
498 , KLogsIconFile |
|
499 , KAknsIIDQgnPropNrtypPhone |
|
500 , qgn_prop_nrtyp_phone |
|
501 , qgn_prop_nrtyp_phone_mask |
|
502 ); |
|
503 |
|
504 //EIconPager;//refers to this icon: |
|
505 AddIconL( icons |
|
506 , KLogsIconFile |
|
507 , KAknsIIDQgnPropNrtypPager |
|
508 , qgn_prop_nrtyp_pager |
|
509 , qgn_prop_nrtyp_pager_mask |
|
510 ); |
|
511 |
|
512 //EIconFax;//refers to this icon: |
|
513 AddIconL( icons |
|
514 , KLogsIconFile |
|
515 , KAknsIIDQgnPropNrtypFax |
|
516 , qgn_prop_nrtyp_fax |
|
517 , qgn_prop_nrtyp_fax_mask |
|
518 ); |
|
519 |
|
520 //EIconAsstPhone;//refers to this icon: |
|
521 AddIconL( icons |
|
522 , KLogsIconFile |
|
523 , KAknsIIDQgnPropNrtypAssistant |
|
524 , qgn_prop_nrtyp_assistant |
|
525 , qgn_prop_nrtyp_assistant_mask |
|
526 ); |
|
527 |
|
528 //EIconCarPhone;//refers to this icon |
|
529 AddIconL( icons |
|
530 , KLogsIconFile |
|
531 , KAknsIIDQgnPropNrtypCar |
|
532 , qgn_prop_nrtyp_car |
|
533 , qgn_prop_nrtyp_car_mask |
|
534 ); |
|
535 //EIconCommCall;//refers to this icon |
|
536 AddIconL( icons |
|
537 , KLogsIconFile |
|
538 , KAknsIIDQgnPropNrtypCall |
|
539 , qgn_prop_nrtyp_call |
|
540 , qgn_prop_nrtyp_call_mask |
|
541 ); |
|
542 /********************************************************************** |
|
543 Not in use anymore, |
|
544 |
|
545 EIconPoc2;//refers to this icon: |
|
546 AddIconL( icons |
|
547 , KLogsIconFile |
|
548 , KAknsIIDQgnIndiPocAdd |
|
549 , qgn_indi_poc_add |
|
550 , qgn_indi_poc_add_mask |
|
551 ); |
|
552 |
|
553 **********************************************************************/ |
|
554 |
|
555 // Offset of last own icon in icon array |
|
556 iLastOwnIconOffset = iListBox->ItemDrawer()->ColumnData()->IconArray()->Count() -1; |
|
557 |
|
558 //Finally load other icons related to control extension(if any). Control extension |
|
559 //takes care of these so we'll discard them in iLastOwnIconOffset |
|
560 //Control extension icons (i.e. PEC) |
|
561 iControlExtension->AppendIconsL( icons ); |
|
562 |
|
563 return; |
|
564 } |
|
565 |
|
566 // ---------------------------------------------------------------------------- |
|
567 // CLogsRecentListControlContainer::FocusChanged |
|
568 // |
|
569 // This is needed to hand focus changes to list. Otherwise animations are not displayed. |
|
570 // ---------------------------------------------------------------------------- |
|
571 // |
|
572 void CLogsRecentListControlContainer::FocusChanged(TDrawNow /* aDrawNow */ ) |
|
573 { |
|
574 if( iListBox) |
|
575 { |
|
576 iListBox->SetFocus( IsFocused() ); |
|
577 } |
|
578 } |
|
579 |
|
580 |
|
581 // End of File |