|
1 /* |
|
2 * Copyright (c) 2005 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 * |
|
16 */ |
|
17 |
|
18 |
|
19 |
|
20 #include "musuinavimediadecorator.h" |
|
21 #include "musuinavimediaanimator.h" |
|
22 #include "musuidefinitions.h" |
|
23 #include "muslogger.h" // debug logging |
|
24 #include <musuiicons.mbg> |
|
25 //#include <musui.mbg> |
|
26 //#include <musui_temp_icons.mbg> |
|
27 #include <musui.rsg> |
|
28 #include "musresourcefinderutil.h" |
|
29 |
|
30 #include <data_caging_path_literals.hrh> // KDC_APP_BITMAP_DIR |
|
31 #include <AknsUtils.h> |
|
32 #include <aknnavi.h> // CAknNavigationControlContainer |
|
33 #include <eikspane.h> // CEikStatusPaneBase |
|
34 #include <StringLoader.h> |
|
35 #include <applayout.cdl.h> // scalable UI |
|
36 #include <AknIconUtils.h> // SetSize for the icons |
|
37 #include <AknsDrawUtils.h> |
|
38 #include <AknIconArray.h> |
|
39 #include <gulicon.h> |
|
40 #include <applayout.cdl.h> |
|
41 #include <AknUtils.h> |
|
42 |
|
43 using namespace AppLayout; |
|
44 |
|
45 |
|
46 const TInt KMusDecoratorStability = 0; |
|
47 const TInt KIconArraySize = 15; |
|
48 |
|
49 _LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musuiicons.mif" ); |
|
50 _LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musuiicons.mif" ); |
|
51 |
|
52 |
|
53 #ifndef __MIN |
|
54 #define __MIN(A, B) ((A) < (B) ? (A): (B)) |
|
55 #endif |
|
56 //macro |
|
57 //_LIT( KMyMbmFileName, "z:Camcorder.mbm"); |
|
58 |
|
59 |
|
60 // ----------------------------------------------------------------------------- |
|
61 // |
|
62 // ----------------------------------------------------------------------------- |
|
63 // |
|
64 CMusUiNaviMediaDecorator* CMusUiNaviMediaDecorator::NewL() |
|
65 { |
|
66 CMusUiNaviMediaDecorator* self = new( ELeave ) CMusUiNaviMediaDecorator(); |
|
67 CleanupStack::PushL( self ); |
|
68 self->ConstructL(); |
|
69 CleanupStack::Pop( self ); |
|
70 return self; |
|
71 } |
|
72 |
|
73 |
|
74 // ----------------------------------------------------------------------------- |
|
75 // |
|
76 // ----------------------------------------------------------------------------- |
|
77 // |
|
78 CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator() |
|
79 { |
|
80 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" ); |
|
81 delete iLeftLabel; |
|
82 delete iRightLabel; |
|
83 delete iIconArray; |
|
84 delete iAnimation; |
|
85 |
|
86 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::~CMusUiNaviMediaDecorator" ); |
|
87 } |
|
88 |
|
89 |
|
90 // ----------------------------------------------------------------------------- |
|
91 // |
|
92 // ----------------------------------------------------------------------------- |
|
93 // |
|
94 CMusUiNaviMediaDecorator::CMusUiNaviMediaDecorator() |
|
95 { |
|
96 iMiddle = 0; |
|
97 iLeftTextSize = TSize( 0, 0 ); |
|
98 iRightTextSize = TSize( 0, 0 ); |
|
99 iIcon = NULL; |
|
100 iIconLeft = 50; // Only defaylt valut, it's overrided right away |
|
101 iImageSize = TSize( 18, 18 ); // Only default value, it's overrided right avay |
|
102 } |
|
103 |
|
104 |
|
105 // ----------------------------------------------------------------------------- |
|
106 // |
|
107 // |
|
108 // ----------------------------------------------------------------------------- |
|
109 // |
|
110 void CMusUiNaviMediaDecorator::ConstructL() |
|
111 { |
|
112 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL" ); |
|
113 iLeftLabel = HBufC16::NewL(0); |
|
114 iRightLabel = HBufC16::NewL(0); |
|
115 |
|
116 |
|
117 iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE ); |
|
118 iImageSize.iWidth = iIconLayout.Rect().Width(); |
|
119 iImageSize.iHeight = iIconLayout.Rect().Height(); |
|
120 |
|
121 MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iWidth %d", |
|
122 iImageSize.iWidth ) |
|
123 MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructL(): iImageSize.iHeight %d", |
|
124 iImageSize.iHeight ) |
|
125 iLeftTextLayout.LayoutText( Rect(), |
|
126 R_MUS_NAVI_MEDIA_TEXT_LEFT_LAYOUT ); |
|
127 iRightTextLayout.LayoutText( Rect(), |
|
128 R_MUS_NAVI_MEDIA_TEXT_RIGHT_LAYOUT ); |
|
129 |
|
130 |
|
131 if( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) ) |
|
132 { |
|
133 iResourceRam = EFalse; |
|
134 } |
|
135 else if( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) ) |
|
136 { |
|
137 iResourceRam = ETrue; |
|
138 } |
|
139 else |
|
140 { |
|
141 MUS_LOG( "mus: [MUSUI ] Icon File Not Found " ); |
|
142 User::Leave(KErrNotFound); |
|
143 } |
|
144 |
|
145 LoadImagesL(); |
|
146 |
|
147 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructL" ); |
|
148 } |
|
149 |
|
150 |
|
151 // ----------------------------------------------------------------------------- |
|
152 // |
|
153 // |
|
154 // ----------------------------------------------------------------------------- |
|
155 // |
|
156 void CMusUiNaviMediaDecorator::SetLeftLabelL( const TDesC& aLabel ) |
|
157 { |
|
158 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::SetLabelL" ); |
|
159 HBufC* newLabel = aLabel.AllocL(); |
|
160 delete iLeftLabel; // after the AllocL succeeds |
|
161 iLeftLabel = NULL; |
|
162 iLeftLabel = newLabel; |
|
163 TPtr ptr( iLeftLabel->Des() ); |
|
164 AknTextUtils::LanguageSpecificNumberConversion( ptr ); |
|
165 DoLayoutText(); |
|
166 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::SetLabelL" ); |
|
167 } |
|
168 |
|
169 |
|
170 // ----------------------------------------------------------------------------- |
|
171 // |
|
172 // ----------------------------------------------------------------------------- |
|
173 // |
|
174 void CMusUiNaviMediaDecorator::SetRightLabelL( const TDesC& aLabel ) |
|
175 { |
|
176 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::SetLabelL" ); |
|
177 HBufC* newLabel = aLabel.AllocL(); |
|
178 delete iRightLabel; // after the AllocL succeeds |
|
179 iRightLabel = NULL; |
|
180 iRightLabel = newLabel; |
|
181 TPtr ptr( iRightLabel->Des() ); |
|
182 AknTextUtils::LanguageSpecificNumberConversion( ptr ); |
|
183 DoLayoutText(); |
|
184 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::SetLabelL" ); |
|
185 } |
|
186 |
|
187 |
|
188 // ----------------------------------------------------------------------------- |
|
189 // |
|
190 // ----------------------------------------------------------------------------- |
|
191 // |
|
192 void CMusUiNaviMediaDecorator::ShowIcon( TMusUiNaviMediaDecorator aIcon ) |
|
193 { |
|
194 MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ShowIcon( \ |
|
195 TMusMediaNaviIcons aIcon ) #%d", aIcon ); |
|
196 |
|
197 delete iAnimation; |
|
198 iAnimation = NULL; |
|
199 |
|
200 if( aIcon == EMusUiNaviIconNone ) |
|
201 { |
|
202 iIcon = NULL; |
|
203 return; |
|
204 } |
|
205 else if( aIcon == EMusUiNaviIconWaitAnim ) |
|
206 { |
|
207 iIcon = NULL; |
|
208 iIconLayout.LayoutRect( Rect(), R_MUS_NAVI_MEDIA_ICON_LAYOUT_SIZE ); |
|
209 iImageSize.iWidth = iIconLayout.Rect().Width(); |
|
210 iImageSize.iHeight = iIconLayout.Rect().Height(); |
|
211 TRAPD( err, iAnimation = CMusUiNaviMediaAnimator::NewL( *this, iImageSize ); ) |
|
212 if( err == KErrNone ) |
|
213 { |
|
214 //iAnimation->SetInterval( 50000 ); |
|
215 } |
|
216 } |
|
217 else if( iIconArray->Count() > aIcon ) |
|
218 { |
|
219 iIcon = static_cast< CGulIcon* > ( iIconArray->At( aIcon) ); |
|
220 } |
|
221 else |
|
222 { |
|
223 iIcon = NULL; |
|
224 } |
|
225 if( !iAnimation ) |
|
226 { |
|
227 DrawNow(); |
|
228 } |
|
229 |
|
230 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ShowIcon( \ |
|
231 TMusMediaNaviIcons aIcon )" ); |
|
232 } |
|
233 |
|
234 |
|
235 // ----------------------------------------------------------------------------- |
|
236 // |
|
237 // ----------------------------------------------------------------------------- |
|
238 // |
|
239 void CMusUiNaviMediaDecorator::SetIcon( CGulIcon* aIcon ) |
|
240 { |
|
241 iIcon = aIcon; |
|
242 DrawNow(); |
|
243 } |
|
244 |
|
245 |
|
246 // ----------------------------------------------------------------------------- |
|
247 // |
|
248 // ----------------------------------------------------------------------------- |
|
249 // |
|
250 void CMusUiNaviMediaDecorator::SizeChanged() |
|
251 { |
|
252 AknsUtils::RegisterControlPosition( this ); |
|
253 DoLayoutText(); |
|
254 } |
|
255 |
|
256 |
|
257 // ----------------------------------------------------------------------------- |
|
258 // |
|
259 // ----------------------------------------------------------------------------- |
|
260 // |
|
261 void CMusUiNaviMediaDecorator::Draw( const TRect& aRect ) const |
|
262 { |
|
263 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::Draw" ); |
|
264 |
|
265 CWindowGc& gc = SystemGc(); |
|
266 MAknsSkinInstance* skin = AknsUtils::SkinInstance(); |
|
267 // Get skinned bitmap |
|
268 CFbsBitmap* skinBitmap = |
|
269 AknsUtils::GetCachedBitmap( skin, KAknsIIDQsnIconColors ); |
|
270 if( iIcon ) |
|
271 { |
|
272 MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); |
|
273 AknsDrawUtils::Background( skin, cc,this, gc , aRect , KAknsDrawParamDefault ); |
|
274 gc.BitBltMasked( TPoint( iIconLeft,1), |
|
275 iIcon->Bitmap(), |
|
276 iIconLayout.Rect(), |
|
277 iIcon->Mask(), |
|
278 EFalse ); |
|
279 } |
|
280 // draw time indicator |
|
281 |
|
282 //TRgb color = iLeftTextLayout.Color(); |
|
283 |
|
284 TRgb color; |
|
285 |
|
286 AknsUtils::GetCachedColor( skin, color, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2 ); |
|
287 |
|
288 gc.SetPenColor( color ); |
|
289 gc.UseFont( iLeftTextLayout.Font() ); |
|
290 |
|
291 |
|
292 TInt flTop = ( ( aRect.Height() >> 1 ) |
|
293 - ( iLeftTextLayout.Font()->AscentInPixels() >> 1 ) ) |
|
294 + aRect.iTl.iY - 1; // -1 because some rounding things |
|
295 |
|
296 gc.DrawText( *iLeftLabel, |
|
297 TRect( aRect.iTl.iX+1, flTop, aRect.iBr.iX, aRect.iBr.iY ), |
|
298 iLeftTextLayout.Font()->AscentInPixels() + 1, |
|
299 iLeftTextLayout.Align() ); |
|
300 |
|
301 TInt frTop = ( ( aRect.Height() >> 1 ) |
|
302 - ( iRightTextLayout.Font()->AscentInPixels() >> 1 ) ) |
|
303 + aRect.iTl.iY - 1; // -1 because some rounding things |
|
304 |
|
305 TInt frLeft; |
|
306 TInt frRight; |
|
307 |
|
308 if ( AknLayoutUtils::LayoutMirrored() ) |
|
309 { |
|
310 frLeft = aRect.iTl.iX; |
|
311 frRight = iRightTextSize.iWidth + 1; |
|
312 } |
|
313 else |
|
314 { |
|
315 frLeft = aRect.iBr.iX - iRightTextSize.iWidth - 1; |
|
316 frRight = aRect.iBr.iX; |
|
317 } |
|
318 |
|
319 gc.DrawText( *iRightLabel, |
|
320 TRect( frLeft, frTop, frRight, aRect.iBr.iY ), |
|
321 iRightTextLayout.Font()->AscentInPixels() + 1, |
|
322 iRightTextLayout.Align() ); |
|
323 |
|
324 |
|
325 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::Draw " ); |
|
326 } |
|
327 |
|
328 |
|
329 // ----------------------------------------------------------------------------- |
|
330 // Layouts the text depending on current icon situation. |
|
331 // ----------------------------------------------------------------------------- |
|
332 // |
|
333 void CMusUiNaviMediaDecorator::DoLayoutText() |
|
334 { |
|
335 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::DoLayoutText" ); |
|
336 TRect parent( Rect() ); |
|
337 if ( parent.IsEmpty() ) |
|
338 { |
|
339 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText: return" ); |
|
340 return; |
|
341 } |
|
342 |
|
343 TInt minsize = __MIN( parent.Width(), parent.Height() ); |
|
344 iImageSize = TSize( minsize-2, minsize-2 ); |
|
345 |
|
346 |
|
347 // Reassign text sizes |
|
348 TAknTextLineLayout txtLayout = AppLayout::Navipanetexts_Line_2(); |
|
349 const TInt spaceBetweenIconsAndText = 1; |
|
350 txtLayout.il = spaceBetweenIconsAndText; |
|
351 |
|
352 iLeftTextLayout.LayoutText( parent, txtLayout ); |
|
353 iRightTextLayout.LayoutText( parent, txtLayout ); |
|
354 |
|
355 TSize parentSize = TSize( parent.iBr.iX - parent.iTl.iX, |
|
356 parent.iBr.iY - parent.iTl.iY ); |
|
357 |
|
358 //TInt clientWidth = parent.iBr.iX - parent.iTl.iX; |
|
359 |
|
360 iLeftTextSize.iWidth = |
|
361 iLeftTextLayout.Font()->TextWidthInPixels( iLeftLabel->Des() ); |
|
362 iRightTextSize.iWidth = |
|
363 iRightTextLayout.Font()->TextWidthInPixels( iRightLabel->Des() ); |
|
364 |
|
365 // First testing elements total width |
|
366 if( iLeftTextSize.iWidth + iRightTextSize.iWidth + iIconLayout.Rect().iBr.iX |
|
367 > parentSize.iWidth ) |
|
368 { |
|
369 // Whole stuff is too large |
|
370 _LIT( KMusStringThreeDots, "..."); |
|
371 TRAP_IGNORE( SetRightLabelL( KMusStringThreeDots ) ); |
|
372 } |
|
373 |
|
374 // Middle point of Icon box in current text parameters |
|
375 TInt middle = parent.iTl.iX + ( parentSize.iWidth >> 1 ); |
|
376 |
|
377 // If there collision, calculates middle of the text fields |
|
378 iIconLeft = middle - parent.iTl.iX - ( iIconLayout.Rect().iBr.iX >> 1 ); |
|
379 TInt iconRight = |
|
380 middle - parent.iTl.iX + ( iIconLayout.Rect().iBr.iX >> 1 ); |
|
381 |
|
382 if( iLeftTextSize.iWidth > iIconLeft || |
|
383 ( parentSize.iWidth - iRightTextSize.iWidth ) < iconRight ) |
|
384 { |
|
385 middle = (( parentSize.iWidth |
|
386 - ( iLeftTextSize.iWidth + iRightTextSize.iWidth )) >> 1 ) |
|
387 + parent.iTl.iX + iLeftTextSize.iWidth; |
|
388 } |
|
389 |
|
390 |
|
391 // Move only if middle place moves enough eq. ignoring jumping |
|
392 if( middle < ( iMiddle - KMusDecoratorStability ) |
|
393 || middle > ( iMiddle + KMusDecoratorStability ) ) |
|
394 { |
|
395 iMiddle = middle; |
|
396 } |
|
397 |
|
398 iLeftTextSize.iHeight = iLeftTextLayout.Font()->HeightInPixels(); |
|
399 iRightTextSize.iHeight = iRightTextLayout.Font()->HeightInPixels(); |
|
400 |
|
401 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::DoLayoutText" ); |
|
402 } |
|
403 |
|
404 |
|
405 // ----------------------------------------------------------------------------- |
|
406 // |
|
407 // ----------------------------------------------------------------------------- |
|
408 // |
|
409 void CMusUiNaviMediaDecorator::LoadImagesL() |
|
410 { |
|
411 |
|
412 delete iIconArray; |
|
413 iIconArray = NULL; |
|
414 iIconArray = new ( ELeave ) CAknIconArray( KIconArraySize ); |
|
415 |
|
416 TParse parse; |
|
417 if( iResourceRam ) |
|
418 { |
|
419 parse.Set( KMyBitmapRamFile, &KDC_APP_RESOURCE_DIR, NULL ); |
|
420 } |
|
421 else |
|
422 { |
|
423 parse.Set( KMyBitmapRomFile, &KDC_APP_RESOURCE_DIR, NULL ); |
|
424 } |
|
425 |
|
426 |
|
427 MAknsSkinInstance* skin = AknsUtils::SkinInstance(); |
|
428 |
|
429 TAknsItemID item; |
|
430 item.Set( 0xFFCC, 0xC ); // It's a kind a magic |
|
431 |
|
432 |
|
433 ConstructImageL( skin, |
|
434 item, |
|
435 EMbmMusuiiconsQgn_indi_video_forw, |
|
436 EMbmMusuiiconsQgn_indi_video_forw_mask, |
|
437 parse, |
|
438 EFalse ); |
|
439 |
|
440 ConstructImageL( skin, |
|
441 item, |
|
442 EMbmMusuiiconsQgn_indi_video_pause, |
|
443 EMbmMusuiiconsQgn_indi_video_pause_mask, |
|
444 parse, |
|
445 EFalse ); |
|
446 |
|
447 ConstructImageL( skin, |
|
448 item, |
|
449 EMbmMusuiiconsQgn_indi_video_play, |
|
450 EMbmMusuiiconsQgn_indi_video_play_mask, |
|
451 parse, |
|
452 ETrue ); |
|
453 |
|
454 ConstructImageL( skin, |
|
455 item, |
|
456 EMbmMusuiiconsQgn_indi_video_record, |
|
457 EMbmMusuiiconsQgn_indi_video_record_mask, |
|
458 parse, |
|
459 ETrue ); |
|
460 |
|
461 ConstructImageL( skin, |
|
462 item, |
|
463 EMbmMusuiiconsQgn_indi_video_record_not, |
|
464 EMbmMusuiiconsQgn_indi_video_record_not_mask, |
|
465 parse, |
|
466 ETrue ); |
|
467 |
|
468 ConstructImageL( skin, |
|
469 item, |
|
470 EMbmMusuiiconsQgn_indi_video_rew, |
|
471 EMbmMusuiiconsQgn_indi_video_rew_mask, |
|
472 parse, |
|
473 EFalse ); |
|
474 |
|
475 ConstructImageL( skin, |
|
476 item, |
|
477 EMbmMusuiiconsQgn_indi_video_stop, |
|
478 EMbmMusuiiconsQgn_indi_video_stop_mask, |
|
479 parse, |
|
480 EFalse ); |
|
481 |
|
482 } |
|
483 |
|
484 // ----------------------------------------------------------------------------- |
|
485 // |
|
486 // ----------------------------------------------------------------------------- |
|
487 // |
|
488 void CMusUiNaviMediaDecorator::ConstructImageL( MAknsSkinInstance* aSkin, |
|
489 const TAknsItemID& aId, |
|
490 TInt aBitmapId, |
|
491 TInt aMaskId, |
|
492 TParse parse, |
|
493 TBool aIconHasOwnColor ) |
|
494 |
|
495 { |
|
496 MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructImageL()" ); |
|
497 |
|
498 CFbsBitmap* bitmap = NULL; |
|
499 CFbsBitmap* mask = NULL; |
|
500 |
|
501 if (aIconHasOwnColor) |
|
502 { |
|
503 AknsUtils::CreateIconL(aSkin, |
|
504 aId, |
|
505 bitmap, |
|
506 mask, |
|
507 parse.FullName(), |
|
508 aBitmapId, |
|
509 aMaskId); |
|
510 |
|
511 } |
|
512 else |
|
513 { |
|
514 AknsUtils::CreateColorIconL(aSkin, |
|
515 aId, |
|
516 KAknsIIDQsnIconColors, |
|
517 EAknsCIQsnIconColorsCG7, |
|
518 bitmap, |
|
519 mask, |
|
520 parse.FullName(), |
|
521 aBitmapId, |
|
522 aMaskId, |
|
523 KRgbBlack); |
|
524 } |
|
525 |
|
526 AknIconUtils::SetSize( bitmap, iImageSize ); |
|
527 AknIconUtils::SetSize( mask, iImageSize ); |
|
528 MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iWidth %d", |
|
529 iImageSize.iWidth ) |
|
530 MUS_LOG1( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructIconL(): iImageSize.iHeight %d", |
|
531 iImageSize.iHeight ) |
|
532 |
|
533 |
|
534 CGulIcon* icon = CGulIcon::NewL(); |
|
535 icon->SetBitmap( bitmap ); |
|
536 icon->SetMask( mask ); |
|
537 |
|
538 CleanupStack::PushL( icon ); |
|
539 iIconArray->AppendL( icon ); |
|
540 CleanupStack::Pop( icon ); |
|
541 |
|
542 MUS_LOG( "mus: [MUSUI ] <- CMusUiNaviMediaDecorator::ConstructIconL()" ); |
|
543 |
|
544 } |
|
545 |
|
546 // end of file |