textinput/peninputcommonctrls/src/peninputbasewindow/peninputbasewindowext.cpp
changeset 0 eb1f2e154e89
child 9 e6a39382bb9c
equal deleted inserted replaced
-1:000000000000 0:eb1f2e154e89
       
     1 /*
       
     2 * Copyright (c) 2002-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:  CAknFepCtrlBaseWindowExt
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 //  INCLUDES
       
    20 #include <coemain.h>
       
    21 #include <bautils.h>
       
    22 #include <AknsItemID.h> 
       
    23 #include <AknsSkinInstance.h>
       
    24 #include <AknsUtils.h> 
       
    25 #include <aknlayoutscalable_avkon.cdl.h>
       
    26  #include <AknUtils.h> 
       
    27  
       
    28 #include <peninputbutton.h>
       
    29 #include <peninputcommonbutton.h>
       
    30 #include <peninputdragbutton.h>
       
    31 #include <peninputbasewindowext.h>
       
    32 #include <peninputcommonlayoutglobalenum.h>
       
    33 
       
    34 #include <peninputlayoutinputmodechoice.h>
       
    35 #include <peninputlayoutmultilineicf.h>
       
    36 
       
    37 const TInt32 KInvalidResId = -1;
       
    38 const TInt KNotSupportSkin = -1;
       
    39 const TInt KInvalidImg = -1 ;
       
    40 const TUint32 KDefaultTextColor = 0x000000;
       
    41  
       
    42 
       
    43 
       
    44 // ---------------------------------------------------------
       
    45 // Constructor
       
    46 // ---------------------------------------------------------
       
    47 //
       
    48 EXPORT_C CAknFepCtrlBaseWindowExt::CAknFepCtrlBaseWindowExt(CFepUiLayout* aFepUiLayout, 
       
    49                                           TInt aControlId)
       
    50     :CControlGroup(aFepUiLayout,aControlId),
       
    51     iCloseButton(NULL),
       
    52     iFirstTimeConstruct(ETrue), 
       
    53     iCoeEnv(CCoeEnv::Static())
       
    54     {
       
    55     }
       
    56 
       
    57 // ---------------------------------------------------------
       
    58 // Constructor
       
    59 // ---------------------------------------------------------
       
    60 //
       
    61 EXPORT_C void CAknFepCtrlBaseWindowExt::BaseConstructL()
       
    62     {
       
    63     CControlGroup::ConstructL();
       
    64     }
       
    65     
       
    66 // ---------------------------------------------------------
       
    67 // Destructor
       
    68 // ---------------------------------------------------------
       
    69 //
       
    70 EXPORT_C CAknFepCtrlBaseWindowExt::~CAknFepCtrlBaseWindowExt()
       
    71     {
       
    72     }
       
    73 
       
    74 // ---------------------------------------------------------
       
    75 // Draw window frame and sub controls
       
    76 // ---------------------------------------------------------
       
    77 //
       
    78 EXPORT_C void CAknFepCtrlBaseWindowExt::Draw()
       
    79     {
       
    80     if(Hiden() || !Ready())
       
    81         {
       
    82         return;
       
    83         }
       
    84 
       
    85     //Clear();
       
    86     
       
    87     DrawOpaqueMaskBackground( Rect() );
       
    88     CFbsBitGc* gc= static_cast<CFbsBitGc*> ( BitGc());
       
    89     /*
       
    90     gc->Activate( MaskBitmapDevice() );
       
    91     gc->SetBrushStyle( CGraphicsContext::ENullBrush );
       
    92     gc->SetBrushColor( MaskBkCol() );
       
    93     gc->SetPenSize( PenSize());
       
    94     gc->SetPenColor( PenColor() );
       
    95     gc->DrawRect( Rect());
       
    96 	*/
       
    97     // ----- draw bitmaps -----
       
    98 
       
    99     gc->Activate( BitmapDevice() ); 
       
   100     gc->SetBrushColor( TRgb(KOpaqueColor) );
       
   101     gc->SetPenColor( TRgb(KOpaqueColor) );
       
   102     gc->DrawRect( Rect());
       
   103     if( BackgroundBmp() && BackgroundBmp()->SizeInPixels() != Rect().Size() )    
       
   104     	AknIconUtils::SetSize(BackgroundBmp(), Rect().Size(), EAspectRatioNotPreserved);
       
   105     
       
   106 	DrawBackground();
       
   107 	CControlGroup::Draw();
       
   108 	/*
       
   109     for(TInt i=0; i< NumOfControls(); i++)        
       
   110         {
       
   111         CFepUiBaseCtrl* ctrl = At(i);
       
   112         if(!ctrl->Hiden())
       
   113             {
       
   114             ctrl->Draw();        
       
   115             }
       
   116         }*/
       
   117     }
       
   118 
       
   119 // ---------------------------------------------------------
       
   120 // Close window
       
   121 // ---------------------------------------------------------
       
   122 //
       
   123 EXPORT_C void CAknFepCtrlBaseWindowExt::Close()
       
   124     {
       
   125     if (DoClose())
       
   126         {
       
   127         Hide(ETrue);
       
   128         }
       
   129     }
       
   130 
       
   131 // ---------------------------------------------------------
       
   132 // Enable or disable drag window
       
   133 // ---------------------------------------------------------
       
   134 //
       
   135 EXPORT_C void CAknFepCtrlBaseWindowExt::SetDragEnable(TBool /*aEnable*/)
       
   136     {
       
   137     /*if (iMoveButton)
       
   138         {
       
   139         iMoveButton->EnableDragging(aEnable);
       
   140         }*/
       
   141     }
       
   142 
       
   143 // ---------------------------------------------------------
       
   144 // Handle close event
       
   145 // ---------------------------------------------------------
       
   146 //
       
   147 EXPORT_C void CAknFepCtrlBaseWindowExt::HandleControlEvent(TInt aEventType, 
       
   148                                              CFepUiBaseCtrl* aCtrl, 
       
   149                                              const TDesC& /*aEventData*/)
       
   150     {
       
   151     if (aEventType == EEventButtonUp)
       
   152         {
       
   153         if (aCtrl->ControlId() == EPeninutWindowCtrlIdCloseBtn)
       
   154             {
       
   155             Close();
       
   156             }
       
   157         }
       
   158     }
       
   159 
       
   160 EXPORT_C TBool CAknFepCtrlBaseWindowExt::DoClose()
       
   161     {
       
   162     return ETrue;
       
   163     }
       
   164     
       
   165 EXPORT_C CFepUiBaseCtrl* CAknFepCtrlBaseWindowExt::Control(TInt aCtrlId)
       
   166     {
       
   167     CFepUiBaseCtrl* ctrl = NULL;
       
   168     RPointerArray<CFepUiBaseCtrl> todo;
       
   169     TInt current = 0;
       
   170     TBool notFound = ETrue;
       
   171     
       
   172     todo.Append(this);
       
   173     
       
   174     while (current < todo.Count() && notFound)
       
   175         {
       
   176         ctrl = todo[current];
       
   177         if(ctrl->ControlId() == aCtrlId)
       
   178             {
       
   179             notFound = EFalse;     
       
   180             }
       
   181         else
       
   182             {
       
   183             if(ctrl->IsKindOfControl(ECtrlControlGroup))
       
   184                 {
       
   185                 CControlGroup* temp = static_cast<CControlGroup*>(ctrl);
       
   186                 for (int i = 0; i < temp->NumOfControls(); i++)
       
   187                     {
       
   188                     todo.Append(temp->At(i));
       
   189                     }
       
   190                 }
       
   191             current++;
       
   192             }
       
   193         }
       
   194         
       
   195     todo.Close();
       
   196     
       
   197     return notFound ? NULL : ctrl;
       
   198     }    
       
   199 
       
   200 EXPORT_C void CAknFepCtrlBaseWindowExt::ConstructFromResourceL()
       
   201     {    
       
   202     if (iResourceId == KInvalidResId)
       
   203     	{
       
   204         User::Leave(KErrArgument);
       
   205     	}
       
   206 
       
   207     TResourceReader reader;
       
   208     iCoeEnv->CreateResourceReaderLC(reader, iResourceId);
       
   209 
       
   210     TInt supportskin = reader.ReadInt16();
       
   211     
       
   212     if (iFirstTimeConstruct&& (supportskin != KNotSupportSkin))
       
   213         {
       
   214     	UiLayout()->AddControlL(this);
       
   215         }
       
   216         
       
   217     // Read information of shadow
       
   218     const TInt32 shadowResId = reader.ReadInt32(); 
       
   219     ReadShadowInfoL( shadowResId );
       
   220      
       
   221     // Read information of background 
       
   222     const TInt32 backgroundResId = reader.ReadInt32(); 
       
   223     ReadBackgroundInfoL( backgroundResId ); 
       
   224     
       
   225     // Read resource information to create base window controls
       
   226      const TInt count = reader.ReadInt16();
       
   227 	
       
   228 	if( iFirstTimeConstruct )
       
   229 		{
       
   230 		for( TInt i = 0; i < count && iFirstTimeConstruct; i++ )
       
   231 	        {
       
   232 	        const TInt16 id = reader.ReadInt16();
       
   233 	        const TInt32 image = reader.ReadInt32();
       
   234 	        CreateBaseWindowControlsL( id, image );
       
   235 	        }    	
       
   236 		}
       
   237 	else
       
   238 		{
       
   239 		CControlGroup::ConstructFromResourceL();
       
   240 		// ReConstruct ICF when resource changed
       
   241         CFepLayoutMultiLineIcf* multiIcf = 
       
   242 		    static_cast<CFepLayoutMultiLineIcf*>( Control(EPeninputWindowCtrlIdMultiLineICF));
       
   243 		if( multiIcf )
       
   244 			{
       
   245 			TResourceReader reader;
       
   246 			iCoeEnv->CreateResourceReaderLC( reader, multiIcf->ResourceId() );  
       
   247 			ReadMultiLineIcfInforL( reader, multiIcf );     
       
   248 			CleanupStack::PopAndDestroy( 1 );				
       
   249 			}
       
   250 		}
       
   251     CleanupStack::PopAndDestroy(); // reader
       
   252     
       
   253     iFirstTimeConstruct = EFalse;
       
   254     }
       
   255 
       
   256 TBool CAknFepCtrlBaseWindowExt::CreateCustomControlL( TInt16 /*aControlId*/, TInt32 /*aImageId*/ )
       
   257 	{
       
   258 	return EFalse;	
       
   259 	}
       
   260 	
       
   261 void CAknFepCtrlBaseWindowExt::AddCustomControlGroupL(CFepUiBaseCtrl* aCtrl)
       
   262 	{
       
   263 	AddControlL(aCtrl);
       
   264 	}
       
   265 
       
   266 EXPORT_C void CAknFepCtrlBaseWindowExt::CreateBaseWindowControlsL( TInt16 aControlId, 
       
   267                                                                    TInt32 aImageId )
       
   268     {
       
   269     if (CreateCustomControlL(aControlId, aImageId))
       
   270     	{
       
   271     	return;	
       
   272     	}
       
   273     
       
   274     switch ( aControlId )
       
   275         {
       
   276         case EPeninutWindowCtrlIdCloseBtn:
       
   277             {
       
   278             CAknFepCtrlCommonButton* closeButton = 
       
   279             	CAknFepCtrlCommonButton::NewL(UiLayout(), aControlId, 
       
   280             								  KAknsIIDQsnFrFunctionButtonNormal,
       
   281         									  KAknsIIDQsnFrFunctionButtonPressed,
       
   282         									  KAknsIIDQsnFrFunctionButtonInactive);
       
   283 
       
   284             AddCustomControlGroupL( closeButton );
       
   285 
       
   286             closeButton->AddEventObserver(this);
       
   287             closeButton->SetResourceId( aImageId );
       
   288             closeButton->ConstructFromResourceL();
       
   289             SetCloseButton(closeButton);
       
   290             }
       
   291             break;
       
   292         case EPeninutWindowCtrlIdInputContextField:
       
   293             {
       
   294             CFepInputContextField* icf= CFepInputContextField::NewL( TRect(), 
       
   295                 UiLayout(), aControlId ); 
       
   296                 
       
   297             AddCustomControlGroupL( icf );
       
   298 
       
   299             icf->SetFocus(ETrue);
       
   300             icf->AddEventObserver( UiLayout() );
       
   301             
       
   302             TResourceReader reader;
       
   303             iCoeEnv->CreateResourceReaderLC( reader, aImageId );  
       
   304             ReadIcfInfoL( reader, icf);     
       
   305             CleanupStack::PopAndDestroy( 1 );
       
   306             }
       
   307             break;
       
   308         case EPeninputWindowCtrlIdMultiLineICF:
       
   309             {
       
   310             const CFont* icfFont = NULL;
       
   311             TAknTextLineLayout textPaneTextLayout;
       
   312     
       
   313             textPaneTextLayout = 
       
   314             AknLayoutScalable_Avkon::fep_vkb_top_text_pane_t1().LayoutLine();
       
   315                         
       
   316             icfFont = AknLayoutUtils::FontFromId( textPaneTextLayout.iFont, NULL );    
       
   317             CFepLayoutMultiLineIcf* multiLineIcf = NULL;
       
   318 
       
   319             if ( icfFont )
       
   320                 {
       
   321                 multiLineIcf = CFepLayoutMultiLineIcf::NewL( TRect(), 
       
   322                     UiLayout(), aControlId, icfFont->HeightInPixels(),
       
   323                     icfFont->FontMaxHeight(),icfFont );    
       
   324                 
       
   325                 AddCustomControlGroupL( multiLineIcf );
       
   326 
       
   327                 // Add layout as event observer
       
   328                 multiLineIcf->AddEventObserver( UiLayout() );
       
   329                 multiLineIcf->SetResourceId( aImageId );
       
   330                 multiLineIcf->SetFocus(ETrue);
       
   331 
       
   332 	            TResourceReader reader;
       
   333 	            iCoeEnv->CreateResourceReaderLC( reader, aImageId );  
       
   334 	            ReadMultiLineIcfInforL( reader,multiLineIcf );     
       
   335 	            CleanupStack::PopAndDestroy( 1 );
       
   336                 }
       
   337             }
       
   338             break;
       
   339         case EPeninutWindowCtrlIdOptionBtn:
       
   340             {
       
   341             CAknFepCtrlEventButton* touchInputOptionButton = CAknFepCtrlEventButton::NewL( 
       
   342         									  UiLayout(),
       
   343         									  aControlId, EPeninputLayoutEventOption, 0, 
       
   344         									  KAknsIIDQsnFrFunctionButtonNormal,
       
   345         									  KAknsIIDQsnFrFunctionButtonPressed,
       
   346         									  KAknsIIDQsnFrFunctionButtonInactive );
       
   347             
       
   348             AddCustomControlGroupL( touchInputOptionButton );
       
   349 
       
   350             touchInputOptionButton->AddEventObserver( UiLayout() );
       
   351             touchInputOptionButton->SetResourceId( aImageId ); 
       
   352             touchInputOptionButton->ConstructFromResourceL();  
       
   353             }
       
   354             break;
       
   355         case EPeninutWindowCtrlIdBackspaceBtn:
       
   356             {
       
   357             CAknFepCtrlRepeatButton* backspaceButton = CAknFepCtrlRepeatButton::NewL( 
       
   358         									  UiLayout(), aControlId, EPeninputLayoutEventBack, EKeyBackspace, 
       
   359         									  KAknsIIDQsnFrFunctionButtonNormal,
       
   360         									  KAknsIIDQsnFrFunctionButtonPressed,
       
   361         									  KAknsIIDQsnFrFunctionButtonInactive );
       
   362                 
       
   363             AddCustomControlGroupL( backspaceButton );
       
   364 
       
   365             backspaceButton->AddEventObserver( UiLayout() );
       
   366             backspaceButton->SetResourceId( aImageId );
       
   367             backspaceButton->ConstructFromResourceL();  
       
   368             }
       
   369             break;
       
   370         case EPeninutWindowCtrlIdSpaceBtn:
       
   371             {
       
   372             CAknFepCtrlEventButton* spaceButton = CAknFepCtrlEventButton::NewL( 
       
   373         									  UiLayout(), aControlId, EPeninputLayoutEventSpace, EKeySpace,
       
   374         									  KAknsIIDQsnFrFunctionButtonNormal,
       
   375         									  KAknsIIDQsnFrFunctionButtonPressed,
       
   376         									  KAknsIIDQsnFrFunctionButtonInactive );
       
   377             AddCustomControlGroupL( spaceButton );
       
   378             spaceButton->AddEventObserver( UiLayout() );
       
   379             spaceButton->SetResourceId( aImageId );
       
   380             spaceButton->ConstructFromResourceL();  
       
   381             }
       
   382             break;
       
   383         case EPeninutWindowCtrlIdEnterBtn:
       
   384             {
       
   385             CAknFepCtrlEventButton* enterButton = CAknFepCtrlEventButton::NewL( 
       
   386         									  UiLayout(), aControlId, EPeninputLayoutEventEnter, EKeyEnter, 
       
   387         									  KAknsIIDQsnFrFunctionButtonNormal,
       
   388         									  KAknsIIDQsnFrFunctionButtonPressed,
       
   389         									  KAknsIIDQsnFrFunctionButtonInactive  );
       
   390             
       
   391             AddCustomControlGroupL( enterButton );
       
   392             enterButton->AddEventObserver(UiLayout());
       
   393             enterButton->SetResourceId( aImageId );
       
   394             enterButton->ConstructFromResourceL();  
       
   395             }
       
   396             break;
       
   397         case EPeninutWindowCtrlIdSwitcherPopupWindow:
       
   398             {
       
   399             CPeninputLayoutInputmodelChoice* modeSwitchChoice = 
       
   400                                                 CPeninputLayoutInputmodelChoice::NewL( UiLayout(),
       
   401                  EPeninutWindowCtrlIdSwitcherPopupWindow, 
       
   402                  (TPluginInputMode)(UiLayout()->PenInputType()));
       
   403                  modeSwitchChoice->SetListSkinID( KAknsIIDQsnFrList, KAknsIIDQsnFrPopupSub );
       
   404             AddCustomControlGroupL( modeSwitchChoice );
       
   405             modeSwitchChoice->AddEventObserver( UiLayout() );   
       
   406             }   
       
   407             break;
       
   408         default:
       
   409             {
       
   410             }
       
   411             break;
       
   412         }
       
   413     }
       
   414     
       
   415 // ---------------------------------------------------------------------------
       
   416 // CAknFepCtrlBaseWindowExt::ReadShadowInfoL
       
   417 // (other items were commented in a header)
       
   418 // ---------------------------------------------------------------------------
       
   419 // 
       
   420 void CAknFepCtrlBaseWindowExt::ReadShadowInfoL( TInt aResId )
       
   421     {
       
   422     TResourceReader resReader;
       
   423     iCoeEnv->CreateResourceReaderLC( resReader, aResId );
       
   424      
       
   425     TPtrC bmpFileName = resReader.ReadTPtrC();
       
   426     TInt32 imgMajorSkinId = resReader.ReadInt32();
       
   427 
       
   428     TAknsItemID id;
       
   429     TInt skinitemid;
       
   430     
       
   431     MAknsSkinInstance* skininstance = AknsUtils::SkinInstance();
       
   432 
       
   433     for ( TInt i = 0; i < KShadowBmpBr + 1; i++ )
       
   434     	{
       
   435         const TInt16 bmpId = resReader.ReadInt16();
       
   436         const TInt16 bmpMskId = resReader.ReadInt16();
       
   437         skinitemid = resReader.ReadInt16();
       
   438         
       
   439         id.Set(TInt(imgMajorSkinId), skinitemid);
       
   440     	
       
   441         if (bmpId != KInvalidImg)
       
   442         	{
       
   443             CFbsBitmap* shadowImg = NULL;
       
   444             CFbsBitmap* shadowMaskImg = NULL;
       
   445 
       
   446             if (bmpMskId != KInvalidImg)
       
   447                 {
       
   448                 AknsUtils::CreateIconL(skininstance, 
       
   449                                        id,
       
   450                                        shadowImg,
       
   451                                        shadowMaskImg,
       
   452                                        bmpFileName,
       
   453                                        bmpId,
       
   454                                        bmpMskId);
       
   455                 }
       
   456             else
       
   457                 {
       
   458                 AknsUtils::CreateIconL(skininstance,
       
   459                                        id,
       
   460                                        shadowImg,
       
   461                                        bmpFileName,
       
   462                                        bmpId);
       
   463                 }
       
   464             
       
   465             UiLayout()->SetShadowBmp(shadowImg, shadowMaskImg, TShadowBitmapIndex(i));
       
   466         	}
       
   467     	}
       
   468     CleanupStack::PopAndDestroy( 1 );
       
   469     }
       
   470     
       
   471 // ---------------------------------------------------------------------------
       
   472 // CAknFepCtrlBaseWindowExt::ReadBackgroundInfoL
       
   473 // (other items were commented in a header)
       
   474 // ---------------------------------------------------------------------------
       
   475 // 
       
   476 void CAknFepCtrlBaseWindowExt::ReadBackgroundInfoL( TInt aResId )
       
   477     {
       
   478     if( aResId == 0 )
       
   479     	return;
       
   480     
       
   481     if( BackgroundBmp() )
       
   482     	{
       
   483     	CFbsBitmap* bkBmp = BackgroundBmp();
       
   484     	delete bkBmp;	
       
   485     	SetBackgroundBmp( NULL );
       
   486     	}
       
   487     if( BkMaskBmp() )
       
   488     	{
       
   489     	CFbsBitmap* bkMaskBmp = BkMaskBmp();
       
   490     	delete bkMaskBmp;
       
   491 		SetBackgroundMaskBmp( NULL );
       
   492     	}    
       
   493     
       
   494     TResourceReader resReader;
       
   495     iCoeEnv->CreateResourceReaderLC( resReader, aResId );
       
   496      
       
   497     TPtrC bmpFileName = resReader.ReadTPtrC();
       
   498     TInt32 imgMajorSkinId = resReader.ReadInt32();
       
   499 
       
   500     TAknsItemID id;
       
   501     TInt skinitemid;
       
   502     
       
   503     MAknsSkinInstance* skininstance = AknsUtils::SkinInstance();
       
   504     const TInt16 bmpId = resReader.ReadInt16();
       
   505     const TInt16 bmpMskId = resReader.ReadInt16();
       
   506     skinitemid = resReader.ReadInt16();   
       
   507     id.Set(TInt(imgMajorSkinId), skinitemid);
       
   508 	
       
   509     if (bmpId != KInvalidImg)
       
   510     	{
       
   511     	CFbsBitmap* backgroundImg = NULL;
       
   512     	CFbsBitmap* backgroundMaskImg = NULL;
       
   513         if (bmpMskId != KInvalidImg)
       
   514             {
       
   515             AknsUtils::CreateIconL(skininstance, 
       
   516                                    id,
       
   517                                    backgroundImg,
       
   518                                    backgroundMaskImg,
       
   519                                    bmpFileName,
       
   520                                    bmpId,
       
   521                                    bmpMskId);
       
   522             }
       
   523         else
       
   524             {
       
   525             AknsUtils::CreateIconL(skininstance,
       
   526                                    id,
       
   527                                    backgroundImg,
       
   528                                    bmpFileName,
       
   529                                    bmpId);
       
   530             }
       
   531        
       
   532         SetBackgroundBmp( backgroundImg );
       
   533         SetBackgroundMaskBmp( backgroundMaskImg );           
       
   534     	}
       
   535     CleanupStack::PopAndDestroy( 1 );
       
   536     }
       
   537     
       
   538 // ---------------------------------------------------------------------------
       
   539 // CAknFepCtrlBaseWindowExt::ReadIcfInfoL
       
   540 // (other items were commented in a header)
       
   541 // ---------------------------------------------------------------------------
       
   542 // 
       
   543 void CAknFepCtrlBaseWindowExt::ReadIcfInfoL(TResourceReader aResReader,
       
   544                                            CFepInputContextField* icf )
       
   545     {
       
   546     TPtrC bmpFileName = aResReader.ReadTPtrC();  
       
   547     TInt32 imgMajorSkinId = aResReader.ReadInt32();
       
   548 
       
   549     TAknsItemID id;
       
   550     TInt skinitemid;
       
   551     
       
   552     MAknsSkinInstance* skininstance = AknsUtils::SkinInstance();
       
   553 
       
   554     const TInt16 icfbgId = aResReader.ReadInt16();
       
   555     const TInt16 icfbgmaskId = aResReader.ReadInt16();
       
   556     skinitemid = aResReader.ReadInt16();
       
   557 
       
   558     id.Set( TInt( imgMajorSkinId ), skinitemid );
       
   559     
       
   560     if ( icfbgId != KInvalidImg )
       
   561     	{
       
   562         CFbsBitmap* icfImg = NULL;
       
   563 
       
   564         if (icfbgmaskId != KInvalidImg)
       
   565             {
       
   566             CFbsBitmap* icfmaskImg = NULL;
       
   567             
       
   568             AknsUtils::CreateIconL(skininstance,
       
   569                                    id,
       
   570                                    icfImg,
       
   571                                    icfmaskImg,
       
   572                                    bmpFileName,
       
   573                                    icfbgId,
       
   574                                    icfbgmaskId);
       
   575             
       
   576             AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved);
       
   577             icf->SetBackgroundMaskBitmapL(icfmaskImg);
       
   578             }
       
   579         else
       
   580             {
       
   581             AknsUtils::CreateIconL(skininstance,
       
   582                                    id,
       
   583                                    icfImg,
       
   584                                    bmpFileName,
       
   585                                    icfbgId);
       
   586             }
       
   587     	
       
   588     	AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved);
       
   589     	icf->SetBackgroundBitmapL(icfImg);
       
   590     	}
       
   591 
       
   592     // read text color
       
   593     TRgb textcolor;
       
   594     TInt32 colorMajorSkinId = aResReader.ReadInt32();
       
   595     skinitemid = aResReader.ReadInt16();
       
   596     
       
   597     id.Set(TInt(colorMajorSkinId), skinitemid);
       
   598 
       
   599     const TInt16 textcoloridx = aResReader.ReadInt16();
       
   600     
       
   601     TInt error = AknsUtils::GetCachedColor(skininstance, 
       
   602                                            textcolor,
       
   603                                            id,
       
   604                                            textcoloridx);
       
   605 
       
   606     if (error == KErrNone)
       
   607         {
       
   608         icf->SetTextColor( textcolor );
       
   609         }
       
   610     else
       
   611         {
       
   612         icf->SetTextColor( TRgb( KDefaultTextColor ) );
       
   613         }    
       
   614     }    
       
   615     
       
   616 void CAknFepCtrlBaseWindowExt::ReadMultiLineIcfInforL( TResourceReader aResReader ,
       
   617 													  CFepLayoutMultiLineIcf* icf)
       
   618     {
       
   619     TPtrC bmpFileName = aResReader.ReadTPtrC();  
       
   620     TInt32 imgMajorSkinId = aResReader.ReadInt32();
       
   621 
       
   622     TAknsItemID id;
       
   623     TInt skinitemid;
       
   624     
       
   625     MAknsSkinInstance* skininstance = AknsUtils::SkinInstance();
       
   626 
       
   627     const TInt16 icfbgId = aResReader.ReadInt16();
       
   628     const TInt16 icfbgmaskId = aResReader.ReadInt16();
       
   629     skinitemid = aResReader.ReadInt16();
       
   630 
       
   631     id.Set( TInt( imgMajorSkinId ), skinitemid );
       
   632     
       
   633     if ( icfbgId != KInvalidImg )
       
   634     	{
       
   635         CFbsBitmap* icfImg = NULL;
       
   636 
       
   637         if (icfbgmaskId != KInvalidImg)
       
   638             {
       
   639             CFbsBitmap* icfmaskImg = NULL;
       
   640             
       
   641             AknsUtils::CreateIconL(skininstance,
       
   642                                    id,
       
   643                                    icfImg,
       
   644                                    icfmaskImg,
       
   645                                    bmpFileName,
       
   646                                    icfbgId,
       
   647                                    icfbgmaskId);
       
   648             
       
   649             AknIconUtils::SetSize(icfmaskImg, TSize(1,1), EAspectRatioNotPreserved);
       
   650             icf->SetBackgroundMaskBitmapL(icfmaskImg);
       
   651             }
       
   652         else
       
   653             {
       
   654             AknsUtils::CreateIconL(skininstance,
       
   655                                    id,
       
   656                                    icfImg,
       
   657                                    bmpFileName,
       
   658                                    icfbgId);
       
   659             }
       
   660     	
       
   661     	AknIconUtils::SetSize(icfImg, TSize(1,1), EAspectRatioNotPreserved);
       
   662     	icf->SetBackgroundBitmapL(icfImg);
       
   663     	}
       
   664 
       
   665     // read text color
       
   666     TRgb textcolor;
       
   667     TInt32 colorMajorSkinId = aResReader.ReadInt32();
       
   668     skinitemid = aResReader.ReadInt16();
       
   669     
       
   670     id.Set(TInt(colorMajorSkinId), skinitemid);
       
   671 
       
   672     const TInt16 textcoloridx = aResReader.ReadInt16();
       
   673     
       
   674     TInt error = AknsUtils::GetCachedColor(skininstance, 
       
   675                                            textcolor,
       
   676                                            id,
       
   677                                            textcoloridx);
       
   678 
       
   679     if (error == KErrNone)
       
   680         {
       
   681         icf->SetTextColorL( textcolor );
       
   682         }
       
   683     else
       
   684         {
       
   685         icf->SetTextColorL( TRgb( KDefaultTextColor ) );
       
   686         }    
       
   687     }
       
   688     
       
   689     
       
   690     
       
   691 // End Of File