camerauis/activepalette/Src/ActivePalette2HUI.cpp
branchRCL_3
changeset 24 bac7acad7cb3
parent 0 1ddebce53859
equal deleted inserted replaced
23:61bc0f252b2b 24:bac7acad7cb3
       
     1 /*
       
     2 * Copyright (c) 2007 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:  AP implementation using HUITK*
       
    15 */
       
    16 
       
    17 
       
    18 /**
       
    19  * @file ActivePalette2HUI.cpp
       
    20  * AP implementation using HUITK
       
    21  */
       
    22 
       
    23 #include <uiacceltk/HuiEvent.h>
       
    24 #include <uiacceltk/HuiImageVisual.h>
       
    25 #include <uiacceltk/HuiUtil.h>
       
    26 #include <uiacceltk/HuiFlowLayout.h>
       
    27 #include <uiacceltk/HuiTextVisual.h>
       
    28 #include <uiacceltk/HuiMeshVisual.h>
       
    29 #include <AknUtils.h>
       
    30 #include <AknIconUtils.h>
       
    31 #include <activepalette2factory.h>
       
    32 #include <activepalette2observer.h>
       
    33 #include <activepalette2ui.h>
       
    34 #include <activepalette2graphics.mbg>
       
    35 
       
    36 #include "ActivePalette2HUI.h"
       
    37 #include "ActivePalette2Cfg.h"
       
    38 #include "ActivePalette2Item.h"
       
    39 #include "ActivePalette2Utils.h"
       
    40 #include "ActivePalette2Model.h"
       
    41 
       
    42 
       
    43 
       
    44 #define PREPROCESS_BITMAPS
       
    45 
       
    46 #define KPaletteHiddenXPos (iScreenSize.iWidth)
       
    47 
       
    48 // -----------------------------------------------------------------------------
       
    49 // CActivePalette2HUI::CActivePalette2HUI()
       
    50 // -----------------------------------------------------------------------------
       
    51 //
       
    52 CActivePalette2HUI::CActivePalette2HUI(CHuiEnv& aEnv)
       
    53 : CHuiControl(aEnv) 
       
    54     {
       
    55     // No implementation required 
       
    56     }
       
    57 
       
    58 // -----------------------------------------------------------------------------
       
    59 // CActivePalette2HUI::NewL()
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CActivePalette2HUI* CActivePalette2HUI::NewL(CHuiEnv& aEnv) 
       
    63     { 
       
    64 	CActivePalette2HUI* self = new(ELeave) CActivePalette2HUI(aEnv); 
       
    65 	CleanupStack::PushL(self);
       
    66 	self->ConstructL();
       
    67 	CleanupStack::Pop(self);
       
    68 	return self;
       
    69     }
       
    70     
       
    71 // -----------------------------------------------------------------------------
       
    72 // CActivePalette2HUI::ConstructL()
       
    73 // -----------------------------------------------------------------------------
       
    74 //
       
    75 void CActivePalette2HUI::ConstructL()
       
    76     {
       
    77     TRendererCallBacks callBacks;
       
    78     callBacks.iTooltipDescriptive = this;
       
    79     callBacks.iItemScrollDescriptive = this;
       
    80     callBacks.iFocusDescriptive = this;
       
    81     callBacks.iAppearanceDescriptive = this;
       
    82     
       
    83 	iModel = CActivePalette2Model::NewL(*this, ActivePalette2Utils::APDimensionSize( EItemSize ), callBacks);
       
    84 
       
    85     UpdateTopLeftCornerWithScreenSize();
       
    86 	                        
       
    87 	// Full screen layout, used to get screen-orientation notifications
       
    88 	iFullScreenLayout = AppendLayoutL(EHuiLayoutTypeAnchor);
       
    89 	iFullScreenLayout->SetFlags(EHuiVisualFlagLayoutUpdateNotification);
       
    90 	
       
    91     iPaletteLayout = AppendLayoutL(EHuiLayoutTypeAnchor);
       
    92     iPaletteLayout->SetFlags(EHuiVisualFlagManualLayout);
       
    93     iPaletteLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(EPaletteWidth), ActivePalette2Utils::APDimension(ETopSectionHeight) + ActivePalette2Utils::APDimension(EBottomSectionHeight) )));
       
    94     iPaletteLayout->SetPos(THuiRealPoint(iTopLeftCorner));
       
    95     iPaletteLayout->SetClipping(ETrue);
       
    96 
       
    97 	CFbsBitmap* picture;
       
    98 	CFbsBitmap* mask;
       
    99 
       
   100     // Background top-section
       
   101     iBackgroundTopSectionLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   102     iBackgroundTopSectionLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   103     iBackgroundTopSectionLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(EPaletteWidth), ActivePalette2Utils::APDimension(ETopSectionHeight))));
       
   104     iBackgroundTopSectionLayout->SetPos(THuiRealPoint(TopScrollPanePosition()));
       
   105 
       
   106     iBackgroundTopSectionVisual = CHuiImageVisual::AddNewL(*this, iBackgroundTopSectionLayout);
       
   107 
       
   108 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_top, EMbmActivepalette2graphicsQgn_graf_cam4_tb_top_mask);
       
   109 
       
   110     iBackgroundTopSectionTexture = CHuiTexture::NewL();
       
   111     iBackgroundTopSectionTexture->UploadL(*picture, mask);
       
   112     
       
   113     iBackgroundTopSectionVisual->SetImage( THuiImage( *iBackgroundTopSectionTexture ) );
       
   114     
       
   115     CleanupStack::PopAndDestroy(); // picture
       
   116     CleanupStack::PopAndDestroy(); // mask
       
   117 
       
   118 
       
   119     // Background mid-section
       
   120     iBackgroundMidSectionLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   121     iBackgroundMidSectionLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   122     iBackgroundMidSectionLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(EPaletteWidth), 0)));
       
   123     iBackgroundMidSectionLayout->SetPos(THuiRealPoint(TopScrollPanePosition() + TPoint(0, ActivePalette2Utils::APDimension(ETopSectionHeight))));
       
   124 
       
   125     iBackgroundMidSectionVisual = CHuiImageVisual::AddNewL(*this, iBackgroundMidSectionLayout);
       
   126 
       
   127 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_body, EMbmActivepalette2graphicsQgn_graf_cam4_tb_body_mask);
       
   128 
       
   129     iBackgroundMidSectionTexture = CHuiTexture::NewL();
       
   130     iBackgroundMidSectionTexture->UploadL(*picture, mask);
       
   131     
       
   132     iBackgroundMidSectionVisual->SetImage( THuiImage( *iBackgroundMidSectionTexture ) );
       
   133     
       
   134     CleanupStack::PopAndDestroy(); // picture
       
   135     CleanupStack::PopAndDestroy(); // mask
       
   136 
       
   137 
       
   138     // Background bottom-section
       
   139     iBackgroundBottomSectionLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   140     iBackgroundBottomSectionLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   141     iBackgroundBottomSectionLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(EPaletteWidth), ActivePalette2Utils::APDimension(EBottomSectionHeight))));
       
   142     iBackgroundBottomSectionLayout->SetPos(THuiRealPoint(BottomScrollPanePosition()));
       
   143 
       
   144     iBackgroundBottomSectionVisual = CHuiImageVisual::AddNewL(*this, iBackgroundBottomSectionLayout);
       
   145 
       
   146 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_bottom, EMbmActivepalette2graphicsQgn_graf_cam4_tb_bottom_mask);
       
   147 
       
   148     iBackgroundBottomSectionTexture = CHuiTexture::NewL();
       
   149     iBackgroundBottomSectionTexture->UploadL(*picture, mask);
       
   150     
       
   151     iBackgroundBottomSectionVisual->SetImage( THuiImage( *iBackgroundBottomSectionTexture ) );
       
   152     
       
   153     CleanupStack::PopAndDestroy(); // picture
       
   154     CleanupStack::PopAndDestroy(); // mask
       
   155 
       
   156     
       
   157     // Item layouts
       
   158     for( TInt i = 0; i < NAP2Cfg::KMaxNofItemsInView + 1; i++)
       
   159         {
       
   160         CHuiLayout* layout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   161         layout->SetFlags(EHuiVisualFlagManualLayout);
       
   162         layout->SetSize(THuiRealSize(ActivePalette2Utils::APDimensionSize( EItemSize )));
       
   163         layout->SetPos(THuiRealPoint(ItemPosition(i)));
       
   164         iItemLayout.Append(layout);
       
   165         
       
   166         CHuiImageVisual* image = CHuiImageVisual::AddNewL(*this, layout);
       
   167         iItemVisual.Append(image);
       
   168         
       
   169         CHuiTexture* texture = CHuiTexture::NewL();
       
   170         iItemTexture.Append(texture);
       
   171         
       
   172         image->SetImage( THuiImage( *texture ) );
       
   173         }
       
   174     
       
   175     
       
   176     // Top scroll icon
       
   177     iTopScrollLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   178     iTopScrollLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   179     iTopScrollLayout->SetSize(THuiRealSize(ActivePalette2Utils::APDimensionSize(E3dScrollIconSize)));
       
   180     iTopScrollLayout->SetPos(THuiRealPoint(TopScrollPanePosition() + ActivePalette2Utils::APDimensionPoint(E3dScrollIconOffset)));
       
   181     
       
   182     iTopScrollVisual = CHuiImageVisual::AddNewL(*this, iTopScrollLayout);
       
   183 
       
   184 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_arrow_up, EMbmActivepalette2graphicsQgn_graf_cam4_tb_arrow_up_mask);
       
   185 
       
   186     iTopScrollTexture = CHuiTexture::NewL();
       
   187     iTopScrollTexture->UploadL(*picture, mask);
       
   188     
       
   189     iTopScrollVisual->SetImage( THuiImage( *iTopScrollTexture ) );
       
   190     
       
   191     CleanupStack::PopAndDestroy();
       
   192     CleanupStack::PopAndDestroy();
       
   193     
       
   194 	
       
   195 	// Bottom scroll icon
       
   196     iBottomScrollLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   197     iBottomScrollLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   198     iBottomScrollLayout->SetSize(THuiRealSize(ActivePalette2Utils::APDimensionSize(E3dScrollIconSize)));
       
   199     iBottomScrollLayout->SetPos(THuiRealPoint(BottomScrollPanePosition() + ActivePalette2Utils::APDimensionPoint(E3dScrollIconOffset)));
       
   200 
       
   201     iBottomScrollVisual = CHuiImageVisual::AddNewL(*this, iBottomScrollLayout);
       
   202 
       
   203 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_arrow_down, EMbmActivepalette2graphicsQgn_graf_cam4_tb_arrow_down_mask);
       
   204 
       
   205     iBottomScrollTexture = CHuiTexture::NewL();
       
   206     iBottomScrollTexture->UploadL(*picture, mask);
       
   207     
       
   208     iBottomScrollVisual->SetImage( THuiImage( *iBottomScrollTexture ) );
       
   209     
       
   210     CleanupStack::PopAndDestroy();
       
   211     CleanupStack::PopAndDestroy();
       
   212     
       
   213     
       
   214     // Focus ring
       
   215     iFocusRingLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iPaletteLayout);
       
   216     iFocusRingLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   217     iFocusRingLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(EFocusRingWidth), ActivePalette2Utils::APDimension(EFocusRingHeight))));
       
   218     iFocusRingLayout->SetPos(THuiRealPoint(ItemPosition(0) + TPoint(ActivePalette2Utils::APDimension(EFocusRingXOffset), ActivePalette2Utils::APDimension(EFocusRingYOffset))));
       
   219     
       
   220     iFocusRingVisual = CHuiImageVisual::AddNewL(*this, iFocusRingLayout);
       
   221     
       
   222 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_focus, EMbmActivepalette2graphicsQgn_graf_cam4_tb_focus_mask);
       
   223 
       
   224     iFocusRingTexture = CHuiTexture::NewL();
       
   225     iFocusRingTexture->UploadL(*picture, mask);
       
   226     
       
   227     iFocusRingVisual->SetImage( THuiImage( *iFocusRingTexture ) );
       
   228     
       
   229     CleanupStack::PopAndDestroy();
       
   230     CleanupStack::PopAndDestroy();
       
   231     
       
   232     
       
   233     // Tooltip
       
   234 	iTooltipLayout = AppendLayoutL(EHuiLayoutTypeAnchor);
       
   235     iTooltipLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   236     iTooltipLayout->SetSize(THuiRealSize(TSize(0, 0)));
       
   237     iTooltipLayout->SetPos(THuiRealPoint(iTopLeftCorner));
       
   238     iTooltipLayout->SetClipping(ETrue);
       
   239 
       
   240 
       
   241     // Tooltip background for nose section
       
   242     iTooltipBackgroundNoseLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iTooltipLayout);
       
   243     iTooltipBackgroundNoseLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   244     iTooltipBackgroundNoseLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(ETooltipNose), ActivePalette2Utils::APDimension(ETooltipHeight))));
       
   245     iTooltipBackgroundNoseLayout->SetPos(THuiRealPoint(TPoint(0,0)));
       
   246 
       
   247     iTooltipBackgroundNoseVisual = CHuiImageVisual::AddNewL(*this, iTooltipBackgroundNoseLayout);
       
   248 
       
   249 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_tooltip_end, EMbmActivepalette2graphicsQgn_graf_cam4_tb_tooltip_end_mask);
       
   250 
       
   251     iTooltipBackgroundNoseTexture = CHuiTexture::NewL();
       
   252     iTooltipBackgroundNoseTexture->UploadL(*picture, mask);
       
   253     
       
   254     iTooltipBackgroundNoseVisual->SetImage( THuiImage( *iTooltipBackgroundNoseTexture ) );
       
   255     
       
   256     CleanupStack::PopAndDestroy(); // picture
       
   257     CleanupStack::PopAndDestroy(); // mask
       
   258 
       
   259     
       
   260     // Tooltip background for nose section
       
   261     iTooltipBackgroundBodyLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iTooltipLayout);
       
   262     iTooltipBackgroundBodyLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   263     iTooltipBackgroundBodyLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(E3dTooltipMaxWidth), ActivePalette2Utils::APDimension(ETooltipHeight))));
       
   264     iTooltipBackgroundBodyLayout->SetPos(THuiRealPoint(TPoint(ActivePalette2Utils::APDimension(ETooltipNose),0)));
       
   265 
       
   266     iTooltipBackgroundBodyVisual = CHuiImageVisual::AddNewL(*this, iTooltipBackgroundBodyLayout);
       
   267 
       
   268 	AknIconUtils::CreateIconLC(picture, mask, NAP2Cfg::KUIGraphics, EMbmActivepalette2graphicsQgn_graf_cam4_tb_tooltip_body, EMbmActivepalette2graphicsQgn_graf_cam4_tb_tooltip_body_mask);
       
   269     
       
   270     iTooltipBackgroundBodyTexture = CHuiTexture::NewL();
       
   271     iTooltipBackgroundBodyTexture->UploadL(*picture, mask);
       
   272     
       
   273     iTooltipBackgroundBodyVisual->SetImage( THuiImage( *iTooltipBackgroundBodyTexture ) );
       
   274     
       
   275     CleanupStack::PopAndDestroy(); // picture
       
   276     CleanupStack::PopAndDestroy(); // mask
       
   277 
       
   278 
       
   279     // Tooltip text layouts    
       
   280     iTooltipTextLayout = AppendLayoutL(EHuiLayoutTypeAnchor, iTooltipLayout);
       
   281     iTooltipTextLayout->SetFlags(EHuiVisualFlagManualLayout);
       
   282     iTooltipTextLayout->SetSize(THuiRealSize(TSize(ActivePalette2Utils::APDimension(E3dTooltipMaxWidth), ActivePalette2Utils::APDimension(ETooltipHeight))));
       
   283     iTooltipTextLayout->SetPos(THuiRealPoint(TPoint(ActivePalette2Utils::APDimension(ETooltipNose), ActivePalette2Utils::APDimension(E3dTooltipTextYOffset))));
       
   284 
       
   285     iTooltipTextVisual = CHuiTextVisual::AddNewL(*this, iTooltipTextLayout);
       
   286     iTooltipTextVisual->SetStyle(EHuiTextStyleMenuSmall, EHuiBackgroundTypeLight);
       
   287     iTooltipTextVisual->SetMaxLineCount(1);
       
   288     iTooltipTextVisual->SetAlign(EHuiAlignHLeft, EHuiAlignVCenter);
       
   289     iTooltipTextVisual->SetTextL(_L(""));
       
   290 
       
   291 
       
   292 	iGeneralTimer = CPeriodic::NewL(CActive::EPriorityStandard);
       
   293     }
       
   294     
       
   295 // -----------------------------------------------------------------------------
       
   296 // CActivePalette2HUI::~CActivePalette2HUI()
       
   297 // -----------------------------------------------------------------------------
       
   298 //
       
   299 CActivePalette2HUI::~CActivePalette2HUI()
       
   300     {
       
   301     if (iGeneralTimer)
       
   302         {
       
   303         iGeneralTimer->Cancel();
       
   304         delete iGeneralTimer;
       
   305         }
       
   306         
       
   307     iItemLayout.Reset();
       
   308     iItemVisual.Reset();
       
   309     iItemTexture.ResetAndDestroy();
       
   310     
       
   311     delete iBackgroundTopSectionTexture;
       
   312     delete iBackgroundMidSectionTexture;
       
   313     delete iBackgroundBottomSectionTexture;
       
   314     
       
   315     delete iFocusRingTexture;
       
   316     
       
   317     delete iBottomScrollTexture;
       
   318     delete iTopScrollTexture;
       
   319 
       
   320     delete iTooltipBackgroundBodyTexture;
       
   321     delete iTooltipBackgroundNoseTexture;
       
   322     
       
   323     delete iModel;
       
   324 	iModel = NULL;
       
   325     }
       
   326     
       
   327 // -----------------------------------------------------------------------------
       
   328 // CActivePalette2HUI::InstallItemL()
       
   329 // -----------------------------------------------------------------------------
       
   330 //
       
   331 TInt CActivePalette2HUI::InstallItemL(const TActivePalette2ItemVisible& aItemVisible, 
       
   332     						const TUid& aPluginUid, 
       
   333     						const TDesC8& aCustomDataDes) 
       
   334     { 
       
   335 	return iModel->InstallItemL(aItemVisible, aPluginUid, aCustomDataDes);
       
   336     }
       
   337 				
       
   338 // -----------------------------------------------------------------------------
       
   339 // CActivePalette2HUI::InstallItemL()
       
   340 // -----------------------------------------------------------------------------
       
   341 //
       
   342 TInt CActivePalette2HUI::InstallItemL(const TActivePalette2ItemVisible& aItemVisible,
       
   343     						const TUid& aPluginUid, 
       
   344     						TInt aCustomDataInt ) 
       
   345     { 
       
   346 	return iModel->InstallItemL(aItemVisible, aPluginUid, aCustomDataInt);
       
   347     }
       
   348 
       
   349 // -----------------------------------------------------------------------------
       
   350 // CActivePalette2HUI::InstallItemL()
       
   351 // -----------------------------------------------------------------------------
       
   352 //
       
   353 TInt CActivePalette2HUI::InstallItemL(const TActivePalette2ItemVisible& aItemVisible,
       
   354     						const TUid& aPluginUid, 
       
   355     						TInt aCustomDataInt, 
       
   356     						const TDesC8& aCustomDataDes) 
       
   357 	{ 
       
   358 	return iModel->InstallItemL(aItemVisible, aPluginUid, aCustomDataInt, aCustomDataDes);
       
   359 	}
       
   360 
       
   361 // -----------------------------------------------------------------------------
       
   362 // CActivePalette2HUI::RemoveItem()
       
   363 // -----------------------------------------------------------------------------
       
   364 //
       
   365 TInt CActivePalette2HUI::RemoveItem(const TInt aItemId) 
       
   366     { 
       
   367 	return iModel->RemoveItem(aItemId);
       
   368     }
       
   369 
       
   370 // -----------------------------------------------------------------------------
       
   371 // CActivePalette2HUI::SetItemVisibility()
       
   372 // -----------------------------------------------------------------------------
       
   373 //
       
   374 TInt CActivePalette2HUI::SetItemVisibility(const TInt aItemId, const TBool aIsVisible) 
       
   375     { 
       
   376     return iModel->SetItemVisibility(aItemId, aIsVisible);
       
   377     }
       
   378 
       
   379 // -----------------------------------------------------------------------------
       
   380 // CActivePalette2HUI::GetItemVisibility()
       
   381 // -----------------------------------------------------------------------------
       
   382 //
       
   383 TInt CActivePalette2HUI::GetItemVisibility(const TInt aItemId, TBool &aIsVisible) const
       
   384     { 
       
   385     return iModel->GetItemVisibility(aItemId, aIsVisible);
       
   386     }
       
   387 
       
   388 // -----------------------------------------------------------------------------
       
   389 // CActivePalette2HUI::GetItemList()
       
   390 // -----------------------------------------------------------------------------
       
   391 //
       
   392 TInt CActivePalette2HUI::GetItemList(RArray<TActivePalette2ItemVisible>& aItemVisibleList) const
       
   393     { 
       
   394     return iModel->GetItemList(aItemVisibleList);
       
   395     }
       
   396 
       
   397 // -----------------------------------------------------------------------------
       
   398 // CActivePalette2HUI::SetItemList()
       
   399 // -----------------------------------------------------------------------------
       
   400 //
       
   401 TInt CActivePalette2HUI::SetItemList(const RArray<TActivePalette2ItemVisible>& aItemVisibleList) 
       
   402     { 
       
   403     return iModel->SetItemList(aItemVisibleList);
       
   404     }
       
   405 
       
   406 // -----------------------------------------------------------------------------
       
   407 // CActivePalette2HUI::SendMessage()
       
   408 // -----------------------------------------------------------------------------
       
   409 //
       
   410 TInt CActivePalette2HUI::SendMessage(TInt aItemId, TInt aMessageId, const TDesC8& aDataDes) 
       
   411     { 
       
   412     return iModel->SendMessage(aItemId, aMessageId, aDataDes);
       
   413     }
       
   414 
       
   415 // -----------------------------------------------------------------------------
       
   416 // CActivePalette2HUI::SendMessage()
       
   417 // -----------------------------------------------------------------------------
       
   418 //
       
   419 TInt CActivePalette2HUI::SendMessage(TInt aItemId, TInt aMessageId, TInt aDataInt) 
       
   420     { 
       
   421     return iModel->SendMessage(aItemId, aMessageId, aDataInt);
       
   422     }
       
   423 
       
   424 // -----------------------------------------------------------------------------
       
   425 // CActivePalette2HUI::GetCurrentItem()
       
   426 // -----------------------------------------------------------------------------
       
   427 //
       
   428 TInt CActivePalette2HUI::GetCurrentItem(TInt& aItemId) const 
       
   429     { 
       
   430 	return iModel->GetCurrentItem(aItemId);
       
   431     }
       
   432 
       
   433 // -----------------------------------------------------------------------------
       
   434 // CActivePalette2HUI::SetCurrentItem()
       
   435 // -----------------------------------------------------------------------------
       
   436 //
       
   437 TInt CActivePalette2HUI::SetCurrentItem(const TInt aItemId) 
       
   438     { 
       
   439     return iModel->SetCurrentItem(aItemId);
       
   440     }
       
   441 
       
   442 // -----------------------------------------------------------------------------
       
   443 // CActivePalette2HUI::SetPaletteVisibility()
       
   444 // -----------------------------------------------------------------------------
       
   445 //
       
   446 TInt CActivePalette2HUI::SetPaletteVisibility(TBool aVisible, TBool aAnimated, TInt aDelayedStartMilliseconds) 
       
   447     { 
       
   448     return iModel->SetPaletteVisibility(aVisible, aAnimated, aDelayedStartMilliseconds);
       
   449     }
       
   450 
       
   451 // -----------------------------------------------------------------------------
       
   452 // CActivePalette2HUI::SetPaletteVisibilityAnimationDuration()
       
   453 // -----------------------------------------------------------------------------
       
   454 //
       
   455 TInt CActivePalette2HUI::SetPaletteVisibilityAnimationDuration(TInt aTimeInMilliseconds) 
       
   456     { 
       
   457     return iModel->SetPaletteVisibilityAnimationDuration(aTimeInMilliseconds);
       
   458     }
       
   459 
       
   460 // -----------------------------------------------------------------------------
       
   461 // CActivePalette2HUI::GetPaletteVisibilityAnimationDuration()
       
   462 // -----------------------------------------------------------------------------
       
   463 //
       
   464 TInt CActivePalette2HUI::GetPaletteVisibilityAnimationDuration(TInt& aTimeInMilliseconds) const 
       
   465     { 
       
   466     return iModel->GetPaletteVisibilityAnimationDuration(aTimeInMilliseconds);
       
   467     }
       
   468 
       
   469 // -----------------------------------------------------------------------------
       
   470 // CActivePalette2HUI::CoeControl()
       
   471 // -----------------------------------------------------------------------------
       
   472 //
       
   473 CCoeControl* CActivePalette2HUI::CoeControl() 
       
   474     { 
       
   475     return NULL; 
       
   476     }
       
   477 
       
   478 // -----------------------------------------------------------------------------
       
   479 // CActivePalette2HUI::HuiControl()
       
   480 // -----------------------------------------------------------------------------
       
   481 //
       
   482 CHuiControl* CActivePalette2HUI::HuiControl() 
       
   483     { 
       
   484     return this; 
       
   485     }
       
   486 
       
   487 // -----------------------------------------------------------------------------
       
   488 // CActivePalette2HUI::SetGc()
       
   489 // -----------------------------------------------------------------------------
       
   490 //
       
   491 void CActivePalette2HUI::SetGc(CBitmapContext* /*aGc*/) 
       
   492     {
       
   493     // Do nothing
       
   494     }
       
   495 
       
   496 // -----------------------------------------------------------------------------
       
   497 // CActivePalette2HUI::RenderActivePalette()
       
   498 // -----------------------------------------------------------------------------
       
   499 //
       
   500 void CActivePalette2HUI::RenderActivePalette(const TRect& /*aRect*/) const 
       
   501     { 
       
   502     // Do nothing
       
   503     }
       
   504 
       
   505 // -----------------------------------------------------------------------------
       
   506 // CActivePalette2HUI::SetObserver()
       
   507 // -----------------------------------------------------------------------------
       
   508 //
       
   509 void CActivePalette2HUI::SetObserver(MActivePalette2Observer* aObserver) 
       
   510     { 
       
   511     iObserver = aObserver;
       
   512     }
       
   513 
       
   514 // -----------------------------------------------------------------------------
       
   515 // CActivePalette2HUI::GetAvailablePlugins()
       
   516 // -----------------------------------------------------------------------------
       
   517 //
       
   518 TInt CActivePalette2HUI::GetAvailablePlugins(RArray<TUid>& aPluginList) const 
       
   519     { 
       
   520     return iModel->GetAvailablePlugins(aPluginList);
       
   521     }
       
   522 
       
   523 // -----------------------------------------------------------------------------
       
   524 // CActivePalette2HUI::LocateTo()
       
   525 // -----------------------------------------------------------------------------
       
   526 //
       
   527 void CActivePalette2HUI::LocateTo(const TPoint& aTopLeft) 
       
   528     {  
       
   529     iTopLeftCorner = aTopLeft;
       
   530     iPaletteLayout->SetPos(THuiRealPoint(PalettePosition()));
       
   531     }
       
   532 
       
   533 // -----------------------------------------------------------------------------
       
   534 // CActivePalette2HUI::Location()
       
   535 // -----------------------------------------------------------------------------
       
   536 //
       
   537 TPoint CActivePalette2HUI::Location() const 
       
   538     { 
       
   539     return iTopLeftCorner; 
       
   540     }
       
   541 
       
   542 // -----------------------------------------------------------------------------
       
   543 // CActivePalette2HUI::SetNavigationKeys()
       
   544 // -----------------------------------------------------------------------------
       
   545 //
       
   546 void CActivePalette2HUI::SetNavigationKeys(const TActivePalette2NavigationKeys& aNavigationKeys) 
       
   547     {  
       
   548     iNavigationKeys = aNavigationKeys;
       
   549     }
       
   550 
       
   551 
       
   552 
       
   553 
       
   554 
       
   555 // -----------------------------------------------------------------------------
       
   556 // CActivePalette2HUI::ShowTooltipUpdated()
       
   557 // -----------------------------------------------------------------------------
       
   558 //
       
   559 void CActivePalette2HUI::ShowTooltipUpdated()
       
   560     {
       
   561     if ( iModel->ShowTooltip() )
       
   562         {
       
   563         iTooltipLayout->iOpacity.Set(KOpacityFull);
       
   564     	}
       
   565     else
       
   566         {
       
   567         iTooltipLayout->iOpacity.Set(KOpacityNone);
       
   568         }
       
   569     }
       
   570     
       
   571 
       
   572 // -----------------------------------------------------------------------------
       
   573 // CActivePalette2HUI::ItemsUpdated()
       
   574 // -----------------------------------------------------------------------------
       
   575 //
       
   576 void CActivePalette2HUI::ItemsUpdated()
       
   577     {
       
   578     // Update size
       
   579     TSize overallSize(PaletteSize());
       
   580     iPaletteLayout->SetSize(THuiRealSize(overallSize));
       
   581     TSize itemsSize(overallSize);
       
   582     itemsSize.iHeight -= (ActivePalette2Utils::APDimension(ETopSectionHeight) + ActivePalette2Utils::APDimension(EBottomSectionHeight));
       
   583     iBackgroundMidSectionLayout->SetSize(THuiRealSize(itemsSize));
       
   584     iBackgroundBottomSectionLayout->SetPos(THuiRealPoint(BottomScrollPanePosition()));
       
   585     
       
   586     Render();
       
   587     }
       
   588 
       
   589 // -----------------------------------------------------------------------------
       
   590 // CActivePalette2HUI::ItemAnimated()
       
   591 // -----------------------------------------------------------------------------
       
   592 //
       
   593 void CActivePalette2HUI::ItemAnimated(TInt aScreenPos, CActivePalette2Item* aItem, TInt aAnimFrame)
       
   594     {
       
   595 	// animation frame
       
   596 	TBool ownershipTransferForFrame;
       
   597 	TBool ownershipTransferForMask;
       
   598 	CFbsBitmap* frame = NULL;
       
   599 	CFbsBitmap* frameMask = NULL;
       
   600 
       
   601 	aItem->Plugin().ProduceAniFrame(
       
   602 		CActivePalettePluginBase::EAniFocused,
       
   603 		aAnimFrame,
       
   604 		iModel->ItemAnimInfo(),
       
   605 		aItem->Icon(),
       
   606 		aItem->Mask(),
       
   607 		&frame,
       
   608 		&frameMask,
       
   609 		ownershipTransferForFrame,
       
   610 		ownershipTransferForMask);
       
   611 
       
   612     TRAP_IGNORE(iItemTexture[aScreenPos]->UploadL(*frame, frameMask));
       
   613     iItemVisual[aScreenPos]->SetChanged();
       
   614 
       
   615 	// release resources
       
   616 	if (ownershipTransferForFrame)
       
   617 	    {
       
   618 		delete frame;
       
   619 	    }
       
   620 	if (ownershipTransferForMask)
       
   621 	    {
       
   622 		delete frameMask;
       
   623 	    }
       
   624     }
       
   625 
       
   626 // -----------------------------------------------------------------------------
       
   627 // CActivePalette2HUI::ItemAnimationComplete()
       
   628 // -----------------------------------------------------------------------------
       
   629 //
       
   630 void CActivePalette2HUI::ItemAnimationComplete(TInt /*aScreenPos*/, CActivePalette2Item* aItem)
       
   631     {
       
   632 	aItem->Plugin().ReleaseAniFrames(CActivePalettePluginBase::EAniFocused);
       
   633 	Render();
       
   634     }
       
   635 
       
   636 // -----------------------------------------------------------------------------
       
   637 // CActivePalette2HUI::PaletteAppearingUpdated()
       
   638 // -----------------------------------------------------------------------------
       
   639 //
       
   640 void CActivePalette2HUI::PaletteAppearingUpdated()
       
   641     {
       
   642     iGeneralTimer->Cancel();
       
   643     iPaletteLayout->SetPos(THuiRealPoint(PalettePosition()));
       
   644     UpdateFocus();
       
   645     }
       
   646 
       
   647 // -----------------------------------------------------------------------------
       
   648 // CActivePalette2HUI::UpdateFocus()
       
   649 // -----------------------------------------------------------------------------
       
   650 //
       
   651 void CActivePalette2HUI::UpdateFocus()
       
   652     {
       
   653     if ( iModel->PaletteActive()
       
   654          && iModel->CountItemsOnScreen() > 0 )
       
   655         {
       
   656         TPoint startPos = ItemPosition(iModel->FocusedItem()) + TPoint(ActivePalette2Utils::APDimension(EFocusRingXOffset), ActivePalette2Utils::APDimension(EFocusRingYOffset));
       
   657         iFocusRingLayout->SetPos(THuiRealPoint(startPos));
       
   658         iFocusRingVisual->iOpacity.Set(1.0);
       
   659         }
       
   660     else
       
   661         {
       
   662         iFocusRingVisual->iOpacity.Set(0.0);
       
   663         }
       
   664     }
       
   665     
       
   666 // -----------------------------------------------------------------------------
       
   667 // CActivePalette2HUI::APObserver()
       
   668 // -----------------------------------------------------------------------------
       
   669 //
       
   670 MActivePalette2Observer* CActivePalette2HUI::APObserver() const
       
   671     {
       
   672     return iObserver;
       
   673     }
       
   674 
       
   675 // -----------------------------------------------------------------------------
       
   676 // CActivePalette2HUI::Render()
       
   677 // -----------------------------------------------------------------------------
       
   678 //
       
   679 void CActivePalette2HUI::Render()
       
   680     {
       
   681 #ifdef PREPROCESS_BITMAPS    
       
   682     CFbsBitmap*       tempBitmap = NULL;
       
   683     CFbsBitmapDevice* tempDevice = NULL;
       
   684     CBitmapContext*   tempGc     = NULL;
       
   685 
       
   686     CFbsBitmap*       tempMaskBitmap = NULL;
       
   687     CFbsBitmapDevice* tempMaskDevice = NULL;
       
   688     CBitmapContext*   tempMaskGc     = NULL;
       
   689     
       
   690     TRAPD(err,
       
   691 	        ActivePalette2Utils::CreateDrawingObjectsL(EColor16MU, ActivePalette2Utils::APDimensionSize( EItemSize ),
       
   692 											   &tempBitmap,
       
   693 											   &tempDevice,
       
   694 											   &tempGc));
       
   695 											   
       
   696     if ( err != KErrNone )
       
   697         {
       
   698         return;
       
   699         }											   
       
   700 
       
   701 	TRAPD(err2, ActivePalette2Utils::CreateDrawingObjectsL(EGray256,
       
   702 		ActivePalette2Utils::APDimensionSize( EItemSize ),
       
   703 		&tempMaskBitmap,
       
   704 		&tempMaskDevice,
       
   705 		&tempMaskGc));		
       
   706 
       
   707     if ( err2 != KErrNone )
       
   708         {
       
   709         return;
       
   710         }											   
       
   711 
       
   712 #endif // PREPROCESS_BITMAPS
       
   713     
       
   714     if ( iModel->ShowTopScrollIndicator() )
       
   715         {
       
   716         iTopScrollVisual->iOpacity.Set(KOpacityFull, NAP2Cfg::K3dScrollIndicatorFadeTime);
       
   717         }
       
   718     else
       
   719         {
       
   720         iTopScrollVisual->iOpacity.Set(KOpacityNone, NAP2Cfg::K3dScrollIndicatorFadeTime);
       
   721         }
       
   722     
       
   723     
       
   724     TInt numItemsOnScreen = iModel->CountItemsOnScreen();
       
   725 
       
   726     numItemsOnScreen++;
       
   727 
       
   728     TPoint scrollOffset = CurrentScrollOffset();
       
   729     
       
   730     TInt i;
       
   731     for ( i = 0; i < numItemsOnScreen; i++ )
       
   732         {
       
   733 		CActivePalette2Item* item = iModel->ItemFromScreenPos(i);
       
   734 		
       
   735 		if ( item )
       
   736 		    {
       
   737             iItemLayout[i]->SetPos(THuiRealPoint(ItemPosition(i) + scrollOffset));
       
   738             
       
   739 #ifdef PREPROCESS_BITMAPS
       
   740             tempGc->BitBlt(TPoint(0,0), &(item->Icon()));
       
   741             tempMaskGc->BitBlt(TPoint(0,0), item->Mask());
       
   742             TRAP_IGNORE(iItemTexture[i]->UploadL(*tempBitmap, tempMaskBitmap));
       
   743 #else
       
   744             TRAP_IGNORE(iItemTexture[i]->UploadL(item->Icon(), item->Mask()));
       
   745 #endif 
       
   746             iItemVisual[i]->iOpacity.Set(KOpacityFull);
       
   747             }
       
   748         }
       
   749 
       
   750     if ( iModel->ItemScrollOffset() == 0 )
       
   751         {
       
   752         iItemVisual[numItemsOnScreen-1]->iOpacity.Set(KOpacityNone);
       
   753         }
       
   754     else
       
   755         {
       
   756         ItemsScrolledSetItemOpacities();
       
   757         }
       
   758 
       
   759 
       
   760     for ( i = numItemsOnScreen; i < iItemVisual.Count(); i++ )
       
   761         {
       
   762         iItemVisual[i]->iOpacity.Set(KOpacityNone);
       
   763         }
       
   764 
       
   765     if ( iModel->ShowBottomScrollIndicator() )
       
   766         {
       
   767         iBottomScrollLayout->SetPos(THuiRealPoint(BottomScrollPanePosition() + ActivePalette2Utils::APDimensionPoint(E3dScrollIconOffset)));
       
   768         iBottomScrollVisual->iOpacity.Set(KOpacityFull, NAP2Cfg::K3dScrollIndicatorFadeTime);
       
   769         }
       
   770     else
       
   771         {
       
   772         iBottomScrollVisual->iOpacity.Set(KOpacityNone, NAP2Cfg::K3dScrollIndicatorFadeTime);
       
   773         }
       
   774     
       
   775     UpdateFocus();
       
   776     
       
   777 #ifdef PREPROCESS_BITMAPS
       
   778 	ActivePalette2Utils::DeleteDrawingObjects(&tempMaskBitmap,
       
   779 											  &tempMaskDevice,
       
   780 											  &tempMaskGc);
       
   781 	ActivePalette2Utils::DeleteDrawingObjects(&tempBitmap,
       
   782 											  &tempDevice,
       
   783 											  &tempGc);
       
   784 #endif											  
       
   785     }
       
   786 
       
   787 
       
   788 // -----------------------------------------------------------------------------
       
   789 // CActivePalette2HUI::OfferEventL()
       
   790 // -----------------------------------------------------------------------------
       
   791 //
       
   792 TBool CActivePalette2HUI::OfferEventL(const THuiEvent& aEvent) 
       
   793     {
       
   794     TBool res = EFalse;
       
   795     
       
   796     if(aEvent.IsKeyEvent() && aEvent.iCode == EEventKey)
       
   797         {
       
   798         if (aEvent.iKeyEvent.iScanCode == iNavigationKeys.iNaviPrev)
       
   799 	    	{ 
       
   800 	    	// go to previous
       
   801             res = iModel->ProcessInputEvent(EAP2InputUp);
       
   802 		    }
       
   803 		else if (aEvent.iKeyEvent.iScanCode == iNavigationKeys.iNaviNext)
       
   804 		    { 
       
   805 		    // go to next
       
   806             res = iModel->ProcessInputEvent(EAP2InputDown);
       
   807 		    }
       
   808     	else if (aEvent.iKeyEvent.iScanCode == iNavigationKeys.iNaviSelect)
       
   809 		    { 
       
   810 		    // select item
       
   811             res = iModel->ProcessInputEvent(EAP2InputSelect);
       
   812 		    }
       
   813 		else
       
   814 		    {
       
   815 		    // lint
       
   816 		    }
       
   817         }
       
   818 
       
   819     return res;
       
   820     }
       
   821 
       
   822 // -----------------------------------------------------------------------------
       
   823 // CActivePalette2HUI::PalettePosition()
       
   824 // -----------------------------------------------------------------------------
       
   825 //
       
   826 TPoint CActivePalette2HUI::PalettePosition() const
       
   827     {
       
   828     TInt totalFrames = Max(1, iModel->PaletteAppearingTotalFrames());
       
   829     TInt xOffset = ((KPaletteHiddenXPos - iTopLeftCorner.iX) * (totalFrames - iModel->PaletteAppearingCurrentFrame())) / totalFrames;
       
   830     return TPoint(iTopLeftCorner.iX + xOffset, iTopLeftCorner.iY);
       
   831     }
       
   832 
       
   833 
       
   834 // -----------------------------------------------------------------------------
       
   835 // CActivePalette2HUI::ItemsScrolledSetItemOpacities()
       
   836 // -----------------------------------------------------------------------------
       
   837 //
       
   838 void CActivePalette2HUI::ItemsScrolledSetItemOpacities()
       
   839     {
       
   840     TInt currentOffset = iModel->ItemScrollOffset();
       
   841     TInt totalFrames = Max(1, iModel->ItemScrollTotalFrames());
       
   842     
       
   843     iItemVisual[0]->iOpacity.Set(TReal(totalFrames - currentOffset) / totalFrames);
       
   844     iItemVisual[iModel->CountItemsOnScreen()]->iOpacity.Set(TReal(currentOffset) / totalFrames);
       
   845     }
       
   846     
       
   847 // -----------------------------------------------------------------------------
       
   848 // CActivePalette2HUI::AnimateFocus()
       
   849 // -----------------------------------------------------------------------------
       
   850 //
       
   851 void CActivePalette2HUI::AnimateFocus(TInt aCurrentPos, TInt aTargetPos, TInt aTimeInMilliseconds)
       
   852     {
       
   853     if ( iModel->PaletteActive()
       
   854          && iModel->CountItemsOnScreen() > 0 )
       
   855         {
       
   856         iFocusRingLayout->SetPos(THuiRealPoint(ItemPosition(aCurrentPos) + TPoint(ActivePalette2Utils::APDimension(EFocusRingXOffset), ActivePalette2Utils::APDimension(EFocusRingYOffset))));
       
   857         
       
   858         iFocusRingLayout->SetPos(THuiRealPoint(ItemPosition(aTargetPos) + TPoint(ActivePalette2Utils::APDimension(EFocusRingXOffset), ActivePalette2Utils::APDimension(EFocusRingYOffset))), aTimeInMilliseconds);
       
   859 
       
   860         iFocusRingVisual->iOpacity.Set(KOpacityFull);
       
   861         
       
   862         iGeneralTimer->Cancel();
       
   863     	iGeneralTimer->Start(
       
   864     		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
   865     		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
   866     		TCallBack(&CActivePalette2HUI::AnimateFocusTimerCallback,(TAny *)this));
       
   867         }
       
   868     }
       
   869 
       
   870 // -----------------------------------------------------------------------------
       
   871 // CActivePalette2HUI::AnimateFocusTimerCallback()
       
   872 // -----------------------------------------------------------------------------
       
   873 //
       
   874 TInt CActivePalette2HUI::AnimateFocusTimerCallback(TAny* aPtr)
       
   875     {
       
   876 	CActivePalette2HUI* self = (CActivePalette2HUI*) aPtr;
       
   877 	
       
   878 	if ( self )
       
   879 	    {
       
   880     	return self->AnimateFocusTimerComplete();
       
   881     	}
       
   882     else
       
   883         {
       
   884         return KCallbackFinished;
       
   885         }
       
   886     }
       
   887 
       
   888 // -----------------------------------------------------------------------------
       
   889 // CActivePalette2HUI::AnimateFocusTimerComplete()
       
   890 // -----------------------------------------------------------------------------
       
   891 //
       
   892 TInt CActivePalette2HUI::AnimateFocusTimerComplete()
       
   893     {
       
   894     iGeneralTimer->Cancel();
       
   895     iModel->AnimateFocusRendererComplete();
       
   896     return KCallbackFinished;
       
   897     }
       
   898     
       
   899 // -----------------------------------------------------------------------------
       
   900 // CActivePalette2HUI::ItemPosition()
       
   901 // -----------------------------------------------------------------------------
       
   902 //
       
   903 TPoint CActivePalette2HUI::ItemPosition(TInt aScreenPos) const
       
   904     {
       
   905     return TPoint(ActivePalette2Utils::APDimension(EItemXOffset), ActivePalette2Utils::APDimension(ETopSectionHeight) + aScreenPos * (ActivePalette2Utils::APDimension(EItemHeight) + ActivePalette2Utils::APDimension(EGapBetweenItems)));
       
   906     }
       
   907     
       
   908 // -----------------------------------------------------------------------------
       
   909 // CActivePalette2HUI::TopScrollPanePosition()
       
   910 // -----------------------------------------------------------------------------
       
   911 //
       
   912 TPoint CActivePalette2HUI::TopScrollPanePosition() const
       
   913     {
       
   914     return TPoint(0, 0);
       
   915     }
       
   916     
       
   917 // -----------------------------------------------------------------------------
       
   918 // CActivePalette2HUI::BottomScrollPanePosition()
       
   919 // -----------------------------------------------------------------------------
       
   920 //
       
   921 TPoint CActivePalette2HUI::BottomScrollPanePosition() const
       
   922     {
       
   923     TInt gaps = Max(0, iModel->CountItemsOnScreen() - 1);
       
   924     return TPoint(0, ActivePalette2Utils::APDimension(ETopSectionHeight) + iModel->CountItemsOnScreen() * ActivePalette2Utils::APDimension(EItemHeight) + gaps * ActivePalette2Utils::APDimension(EGapBetweenItems));
       
   925     }
       
   926     
       
   927 // -----------------------------------------------------------------------------
       
   928 // CActivePalette2HUI::PaletteSize()
       
   929 // -----------------------------------------------------------------------------
       
   930 //
       
   931 TSize CActivePalette2HUI::PaletteSize() const
       
   932     {
       
   933     return TSize(ActivePalette2Utils::APDimension(EPaletteWidth), BottomScrollPanePosition().iY + ActivePalette2Utils::APDimension(EBottomSectionHeight));
       
   934     }
       
   935     
       
   936 // -----------------------------------------------------------------------------
       
   937 // CActivePalette2HUI::CurrentScrollOffset()
       
   938 // -----------------------------------------------------------------------------
       
   939 //
       
   940 TPoint CActivePalette2HUI::CurrentScrollOffset() const
       
   941     {
       
   942     return TPoint(0, -((ActivePalette2Utils::APDimension(EItemHeight) + ActivePalette2Utils::APDimension(EGapBetweenItems)) * iModel->ItemScrollOffset())/Max(1, iModel->ItemScrollTotalFrames()));
       
   943     }
       
   944 
       
   945 // -----------------------------------------------------------------------------
       
   946 // CActivePalette2BasicUI::AnimateAppearance()
       
   947 // -----------------------------------------------------------------------------
       
   948 //
       
   949 void CActivePalette2HUI::AnimateAppearance(TBool aVisible, TInt aTimeInMilliseconds)
       
   950     {
       
   951     if ( aVisible )
       
   952         {
       
   953         iPaletteLayout->SetPos(THuiRealPoint(TPoint(iTopLeftCorner.iX, iTopLeftCorner.iY)), aTimeInMilliseconds);
       
   954         }
       
   955     else
       
   956         {
       
   957         iPaletteLayout->SetPos(THuiRealPoint(TPoint(KPaletteHiddenXPos, iTopLeftCorner.iY)), aTimeInMilliseconds);
       
   958         }
       
   959         
       
   960     iGeneralTimer->Cancel();
       
   961 	iGeneralTimer->Start(
       
   962 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
   963 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
   964 		TCallBack(&CActivePalette2HUI::AnimateAppearanceTimerCallback,(TAny *)this));
       
   965     }
       
   966     
       
   967 // -----------------------------------------------------------------------------
       
   968 // CActivePalette2HUI::AnimateFocusTimerCallback()
       
   969 // -----------------------------------------------------------------------------
       
   970 //
       
   971 TInt CActivePalette2HUI::AnimateAppearanceTimerCallback(TAny* aPtr)
       
   972     {
       
   973 	CActivePalette2HUI* self = (CActivePalette2HUI*) aPtr;
       
   974 	
       
   975 	if ( self )
       
   976 	    {
       
   977     	return self->AnimateAppearanceTimerComplete();
       
   978     	}
       
   979     else
       
   980         {
       
   981         return KCallbackFinished;
       
   982         }
       
   983     }
       
   984 
       
   985 // -----------------------------------------------------------------------------
       
   986 // CActivePalette2HUI::AnimateFocusTimerComplete()
       
   987 // -----------------------------------------------------------------------------
       
   988 //
       
   989 TInt CActivePalette2HUI::AnimateAppearanceTimerComplete()
       
   990     {
       
   991     iGeneralTimer->Cancel();
       
   992     iModel->AnimateAppearanceRendererComplete();
       
   993     return KCallbackFinished;
       
   994     }
       
   995 
       
   996 // -----------------------------------------------------------------------------
       
   997 // CActivePalette2HUI::GuessCurrentAppearanceFrame()
       
   998 // -----------------------------------------------------------------------------
       
   999 //
       
  1000 TInt CActivePalette2HUI::GuessCurrentAppearanceFrame()
       
  1001     {
       
  1002     if ( KPaletteHiddenXPos - iTopLeftCorner.iX == 0 )
       
  1003         {
       
  1004         return 0;
       
  1005         }
       
  1006     else
       
  1007         {
       
  1008         TInt currentPos = iPaletteLayout->Pos().Now().iX;
       
  1009         return ((KPaletteHiddenXPos - currentPos) * iModel->PaletteAppearingTotalFrames()) / (KPaletteHiddenXPos - iTopLeftCorner.iX);
       
  1010         }
       
  1011     }
       
  1012 
       
  1013 
       
  1014 // -----------------------------------------------------------------------------
       
  1015 // CActivePalette2HUI::AnimateItemScroll()
       
  1016 // -----------------------------------------------------------------------------
       
  1017 //
       
  1018 void CActivePalette2HUI::AnimateItemScroll(TInt aDirection, TInt aTimeInMilliseconds)
       
  1019     {
       
  1020 
       
  1021     TInt numItems = iModel->CountItemsOnScreen();
       
  1022         
       
  1023     TInt itemOffset = 0;
       
  1024     if ( aDirection == 1 )
       
  1025         {
       
  1026         itemOffset = -1;
       
  1027         }
       
  1028                 
       
  1029     for( TInt i = 0; i <= numItems; i++)
       
  1030         {
       
  1031         iItemLayout[i]->SetPos(THuiRealPoint(ItemPosition(i + itemOffset)), aTimeInMilliseconds);
       
  1032         }
       
  1033         
       
  1034     if ( aDirection > 0 )
       
  1035         {
       
  1036         iItemVisual[0]->iOpacity.Set(KOpacityNone, aTimeInMilliseconds);
       
  1037         iItemVisual[numItems]->iOpacity.Set(KOpacityFull, aTimeInMilliseconds);
       
  1038         }
       
  1039     else
       
  1040         {
       
  1041         iItemVisual[0]->iOpacity.Set(KOpacityFull, aTimeInMilliseconds);
       
  1042         iItemVisual[numItems]->iOpacity.Set(KOpacityNone, aTimeInMilliseconds);
       
  1043         }   
       
  1044     
       
  1045     iGeneralTimer->Cancel();
       
  1046 	iGeneralTimer->Start(
       
  1047 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
  1048 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
  1049 		TCallBack(&CActivePalette2HUI::AnimateItemScrollTimerCallback,(TAny *)this));
       
  1050     }
       
  1051     
       
  1052 // -----------------------------------------------------------------------------
       
  1053 // CActivePalette2HUI::AnimateFocusTimerCallback()
       
  1054 // -----------------------------------------------------------------------------
       
  1055 //
       
  1056 TInt CActivePalette2HUI::AnimateItemScrollTimerCallback(TAny* aPtr)
       
  1057     {
       
  1058 	CActivePalette2HUI* self = (CActivePalette2HUI*) aPtr;
       
  1059 	
       
  1060 	if ( self )
       
  1061 	    {
       
  1062     	return self->AnimateItemScrollTimerComplete();
       
  1063     	}
       
  1064     else
       
  1065         {
       
  1066         return KCallbackFinished;
       
  1067         }
       
  1068     }
       
  1069 
       
  1070 // -----------------------------------------------------------------------------
       
  1071 // CActivePalette2HUI::AnimateFocusTimerComplete()
       
  1072 // -----------------------------------------------------------------------------
       
  1073 //
       
  1074 TInt CActivePalette2HUI::AnimateItemScrollTimerComplete()
       
  1075     {
       
  1076     iGeneralTimer->Cancel();
       
  1077     iModel->AnimateItemScrollRendererComplete();
       
  1078     return KCallbackFinished;
       
  1079     }
       
  1080 
       
  1081 
       
  1082 // -----------------------------------------------------------------------------
       
  1083 // CActivePalette2HUI::TooltipUpdated()
       
  1084 // -----------------------------------------------------------------------------
       
  1085 //
       
  1086 TInt CActivePalette2HUI::TooltipUpdated()
       
  1087     {
       
  1088     TRAP_IGNORE(iTooltipTextVisual->SetTextL(*(iModel->TooltipText())));
       
  1089     TSize textSize = iTooltipTextVisual->TextExtents();
       
  1090     return textSize.iWidth + ActivePalette2Utils::APDimension(ETooltipTail) + ActivePalette2Utils::APDimension(ETooltipNose); 
       
  1091     }
       
  1092 
       
  1093 // -----------------------------------------------------------------------------
       
  1094 // CActivePalette2HUI::AnimateTooltip()
       
  1095 // -----------------------------------------------------------------------------
       
  1096 //
       
  1097 void CActivePalette2HUI::AnimateTooltip(TBool aToShow, TInt aTimeInMilliseconds)
       
  1098     {
       
  1099     TInt startMultiplier = aToShow ? 0 : 1;
       
  1100     TInt endMultiplier = aToShow ? 1 : 0;
       
  1101     
       
  1102     TPoint startPos(iTopLeftCorner + ItemPosition(iModel->TooltipScreenPosition()) + ActivePalette2Utils::APDimensionPoint(E3dTooltipOffset));
       
  1103     TSize startSize(((iTooltipTextVisual->TextExtents().iWidth + ActivePalette2Utils::APDimension(ETooltipNose) + ActivePalette2Utils::APDimension(ETooltipTail)) * startMultiplier), ActivePalette2Utils::APDimension(ETooltipHeight));
       
  1104     startPos.iX -= startSize.iWidth;
       
  1105     
       
  1106     iTooltipLayout->SetSize(THuiRealSize(startSize));
       
  1107     iTooltipLayout->SetPos(THuiRealPoint(startPos));
       
  1108     
       
  1109     TPoint endPos(iTopLeftCorner + ItemPosition(iModel->TooltipScreenPosition()) + ActivePalette2Utils::APDimensionPoint(E3dTooltipOffset));
       
  1110     TSize endSize(((iTooltipTextVisual->TextExtents().iWidth + ActivePalette2Utils::APDimension(ETooltipNose) + ActivePalette2Utils::APDimension(ETooltipTail)) * endMultiplier), ActivePalette2Utils::APDimension(ETooltipHeight));
       
  1111     endPos.iX -= endSize.iWidth;
       
  1112 
       
  1113     iTooltipLayout->SetSize(THuiRealSize(endSize), aTimeInMilliseconds);
       
  1114     iTooltipLayout->SetPos(THuiRealPoint(endPos), aTimeInMilliseconds);
       
  1115     
       
  1116     ShowTooltipUpdated();
       
  1117     
       
  1118     iGeneralTimer->Cancel();
       
  1119 	iGeneralTimer->Start(
       
  1120 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
  1121 		aTimeInMilliseconds * KMicrosecondsPerMillisecond,
       
  1122 		TCallBack(&CActivePalette2HUI::AnimateTooltipTimerCallback,(TAny *)this));
       
  1123    }
       
  1124     
       
  1125 // -----------------------------------------------------------------------------
       
  1126 // CActivePalette2HUI::AnimateTooltipTimerCallback()
       
  1127 // -----------------------------------------------------------------------------
       
  1128 //
       
  1129 TInt CActivePalette2HUI::AnimateTooltipTimerCallback(TAny* aPtr)
       
  1130     {
       
  1131 	CActivePalette2HUI* self = (CActivePalette2HUI*) aPtr;
       
  1132 	
       
  1133 	if ( self )
       
  1134 	    {
       
  1135     	return self->AnimateTooltipTimerComplete();
       
  1136     	}
       
  1137     else
       
  1138         {
       
  1139         return KCallbackFinished;
       
  1140         }
       
  1141     }
       
  1142 
       
  1143 // -----------------------------------------------------------------------------
       
  1144 // CActivePalette2HUI::AnimateTooltipTimerComplete()
       
  1145 // -----------------------------------------------------------------------------
       
  1146 //
       
  1147 TInt CActivePalette2HUI::AnimateTooltipTimerComplete()
       
  1148     {
       
  1149     iGeneralTimer->Cancel();
       
  1150     iModel->AnimateTooltipRendererComplete();
       
  1151     return KCallbackFinished;
       
  1152     }
       
  1153 
       
  1154 // -----------------------------------------------------------------------------
       
  1155 // CActivePalette2HUI::VisualLayoutUpdated()
       
  1156 // -----------------------------------------------------------------------------
       
  1157 //
       
  1158 void CActivePalette2HUI::VisualLayoutUpdated(CHuiVisual& /*aVisual*/)
       
  1159     {
       
  1160     UpdateTopLeftCornerWithScreenSize();
       
  1161     iPaletteLayout->SetPos(THuiRealPoint(PalettePosition()));
       
  1162     }
       
  1163 
       
  1164 // -----------------------------------------------------------------------------
       
  1165 // CActivePalette2HUI::UpdateTopLeftCornerWithScreenSize()
       
  1166 // -----------------------------------------------------------------------------
       
  1167 //
       
  1168 void CActivePalette2HUI::UpdateTopLeftCornerWithScreenSize()
       
  1169     {
       
  1170 	AknLayoutUtils::LayoutMetricsSize( AknLayoutUtils::EScreen, iScreenSize );
       
  1171 	                        
       
  1172     // This uses the same logic that MC Photos used. If in landscape mode or no
       
  1173     // location specified in portrait mode then position the palette relative to
       
  1174     // the top RH corner of the screen using the default settings
       
  1175 	if ( ( iScreenSize.iWidth > iScreenSize.iHeight ) ||
       
  1176 	     ( ! iLocated ) )
       
  1177 	  {	                        
       
  1178 	  iTopLeftCorner.iX = iScreenSize.iWidth + ActivePalette2Utils::APDimensionPoint(EDefault3dPaletteOffset).iX;
       
  1179 	  iTopLeftCorner.iY = ActivePalette2Utils::APDimensionPoint(EDefault3dPaletteOffset).iY;
       
  1180       }
       
  1181 	}