--- a/camerauis/activepalette/Src/ActivePalette2Model.cpp Tue Feb 02 00:01:39 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2350 +0,0 @@
-/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Active Palette 2 Model*
-*/
-
-
-/**
- * @file ActivePalette2Model.cpp
- * Active Palette 2 Model
- */
-
-// INCLUDE FILES
-#include <activepalette2eventdata.h>
-#include <activepalette2observer.h>
-#include <activepalette2itemvisible.h>
-#include <activepalette2genericpluginint.h>
-
-#include "ActivePalette2Item.h"
-#include "ActivePalette2Model.h"
-#include "ActivePalette2ModelObserver.h"
-#include "ActivePalette2Logger.h"
-#include "ActivePalette2Cfg.h"
-#include "activepalette2configuration.h"
-#include "ActivePalette2Utils.h"
-
-
-// -----------------------------------------------------------------------------
-// TRendererCallBacks::TRendererCallBacks()
-// -----------------------------------------------------------------------------
-//
-TRendererCallBacks::TRendererCallBacks()
-: iTooltipTimer(NULL),
- iFocusTimer(NULL),
- iItemScrollTimer(NULL),
- iAppearanceTimer(NULL),
- iTooltipDescriptive(NULL),
- iFocusDescriptive(NULL),
- iItemScrollDescriptive(NULL),
- iAppearanceDescriptive(NULL)
- {
- // no implementation needed
- }
-
-
-
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::NewL()
-// 2 phase construction
-// -----------------------------------------------------------------------------
-//
-CActivePalette2Model* CActivePalette2Model::NewL(
- MActivePalette2ModelObserver& aModelObserver,
- TSize aItemSize,
- const TRendererCallBacks& aCallbacks,
- CActivePalette2Configuration* aConfiguration /*=NULL*/ )
- {
- CActivePalette2Model * self =
- new (ELeave) CActivePalette2Model( aModelObserver,
- aItemSize,
- aCallbacks,
- aConfiguration );
- CleanupStack::PushL(self);
- self->ConstructL();
- CleanupStack::Pop(); // this
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CActivePalette2Model()
-// C++ Constuctor
-// -----------------------------------------------------------------------------
-//
-CActivePalette2Model::CActivePalette2Model(
- MActivePalette2ModelObserver& aModelObserver,
- TSize aItemSize,
- const TRendererCallBacks& aCallbacks,
- CActivePalette2Configuration* aConfiguration )
- : iPreviousItemID(KInvalidId),
- iFocusedItemID(KInvalidId),
- iPaletteMoveCurrentOffset(0),
- iPaletteMoveOffsetTotalFrames(NAP2Cfg::KPaletteAppearFrames),
- iPaletteMoveAnimationDuration(NAP2Cfg::KPaletteAppearTotalTime / KMicrosecondsPerMillisecond),
- iAnimState(EPaletteAnimIdle),
- iCallbacks(aCallbacks),
- iModelObserver(aModelObserver),
- iItemSize(aItemSize),
- iTooltipConfig()
- {
- LOGTEXT( _L( "CActivePalette2Model::CActivePalette2Model entered" ));
- if( aConfiguration )
- {
- aConfiguration->TooltipConfiguration( iTooltipConfig );
- }
- else
- {
- iTooltipConfig.iPreshowDelay = NAP2Cfg::KTooltipPreshowDelay;
- iTooltipConfig.iFullshowPeriod = NAP2Cfg::KTooltipFullshowPeriod;
- iTooltipConfig.iTimerTickLength = NAP2Cfg::KTooltipTimerTickLength;
- iTooltipConfig.iTransitionSpeed = NAP2Cfg::KTooltipShowSpeed;
- iTooltipConfig.iTransitionFrames = KErrNotSupported;
- }
- LOGTEXT( _L( "CActivePalette2Model::CActivePalette2Model left" ));
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ConstructL(void)
-// 2nd phase constructor
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ConstructL(void)
- {
- iTooltipTimer = CPeriodic::NewL(CActive::EPriorityHigh); // high priority for smooth animation
- iFocusChangeTimer = CPeriodic::NewL(CActive::EPriorityHigh);
- iItemScrollTimer = CPeriodic::NewL(CActive::EPriorityHigh);
- iItemAnimTimer = CPeriodic::NewL(CActive::EPriorityHigh);
- iPaletteMoveTimer = CPeriodic::NewL(CActive::EPriorityHigh);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::~CActivePalette2Model()
-// Destructor
-// -----------------------------------------------------------------------------
-//
-CActivePalette2Model::~CActivePalette2Model()
- {
- LOGTEXT( _L( "CActivePalette2Model::~CActivePalette2Model entered" ));
-
- if (iTooltipTimer)
- {
- iTooltipTimer->Cancel();
- delete iTooltipTimer;
- }
-
- if (iFocusChangeTimer)
- {
- iFocusChangeTimer->Cancel();
- delete iFocusChangeTimer;
- }
-
- if (iItemScrollTimer)
- {
- iItemScrollTimer->Cancel();
- delete iItemScrollTimer;
- }
-
- if (iItemAnimTimer)
- {
- iItemAnimTimer->Cancel();
- delete iItemAnimTimer;
- }
-
- if (iPaletteMoveTimer)
- {
- iPaletteMoveTimer->Cancel();
- delete iPaletteMoveTimer;
- }
-
- iItemsArray.ResetAndDestroy();
- iItemsArray.Close();
- iVisibilityArray.Reset();
- iVisibilityArray.Close();
-
- LOGTEXT( _L( "CActivePalette2Model::~CActivePalette2Model left" ));
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FindItem()
-// item data management
-// -----------------------------------------------------------------------------
-//
-CActivePalette2Item* CActivePalette2Model::FindItem(const TInt aItemId) const
- {
- TInt index = ItemIndexFromId(aItemId);
-
- if ( ValidItemIndex(index) )
- {
- return static_cast<CActivePalette2Item *>(iItemsArray[index]);
- }
- else
- {
- return NULL;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::DoInstallItemL()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::DoInstallItemL(TInt aItemId,
- TBool aVisible,
- const TUid& aPluginUid,
- const TDesC8& aCustomDataDes,
- TInt aCustomDataInt)
- {
- // check if item ID is unique
- if ( ItemIndexFromId(aItemId) != KInvalidItemIndex )
- {
- return KErrArgument;
- }
-
- // item and plugin instantiate
- CActivePalette2Item* item = CActivePalette2Item::NewLC(aItemId,aPluginUid, *this);
-
- item->InitPluginL(aCustomDataDes, aCustomDataInt);
-
- User::LeaveIfError(iItemsArray.Append(item));
- User::LeaveIfError(iVisibilityArray.Append(aVisible));
-
- CleanupStack::Pop(item);
-
- if ( aVisible )
- {
- EnforceConstraints();
- }
-
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::RemoveItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::RemoveItem(const TInt aItemId)
- {
- LOGTEXT1( _L( "CActivePalette2Model::RemoveItem entered, Item ID: %d" ),
- aItemId);
-
- TInt res(KErrNone);
-
- CActivePalette2Item* item = FindItem(aItemId);
- TInt index = ItemIndexFromId(aItemId);
-
- if (item) // valid item
- {
- iItemsArray.Remove(index); // unregister
- iVisibilityArray.Remove(index);
-
- // destroy item
- CBase::Delete(item); // implies plugin shutodown and DLL unload
-
- EnforceConstraints();
- }
- else
- {
- res = KErrArgument;
- }
-
- LOGTEXT1( _L( "CActivePalette2Model::RemoveItem left, res %d" ), res);
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::HandleItemSelected()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::HandleItemSelected(const TInt aItemIndex)
- {
- LOGTEXT1( _L( "CActivePalette2Model::HandleItemSelected entered, Item ID: %d" ),
- aItemIndex);
-
- if ( ValidItemIndex(aItemIndex) )
- {
- CActivePalette2Item* item = iItemsArray[aItemIndex];
- if (item)
- {
- TInt err;
-
- LOGTEXT( _L( "... calling plugin's HandleItemSelectedL" ));
-
- TRAP(err, item->Plugin().HandleItemSelectedL());
-
- LOGTEXT1( _L( "... res : %d" ), err);
-
- if (KErrNone != err)
- {
- // leave during item selection handling, invoke callback now
- NotifyItemComplete(*item, err, KNullDesC8, KActivePaletteNoDataInt);
- }
- }
- else
- {
- LOGTEXT( _L( "... INTERNAL FAULT: item object not found" ));
- }
- }
-
- LOGTEXT( _L( "CActivePalette2Model::HandleItemSelected left" ));
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::DispatchMessage()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::DispatchMessage(const TInt aItemId, const TInt aMessageID, const TDesC8& aDataDes, const TInt aDataInt)
- {
- LOGTEXT2( _L( "CActivePalette2Model::DispatchMessgage entered, Item ID: %d, Message ID : %d" ),
- aItemId, aMessageID);
-
- TInt res;
- CActivePalette2Item* item = FindItem(aItemId);
- if (item)
- {
- TInt err;
-
- LOGTEXT( _L( "...calling plugin's HandleMessageL" ));
-
- TRAP(err, item->Plugin().HandleMessageL(aMessageID, aDataDes, aDataInt));
-
- LOGTEXT1( _L( "... res : %d" ), err);
-
- res = err; // retransmit error code
- }
- else
- {
- res = KErrArgument;
- }
-
- LOGTEXT1( _L( "CActivePalette2Model::DispatchMessgage left, res %d" ), res);
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::Observer()
-// -----------------------------------------------------------------------------
-//
-MActivePalette2ModelObserver& CActivePalette2Model::Observer(void) const
- {
- return iModelObserver;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemIndexFromId()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemIndexFromId(const TInt aItemId) const
- {
- TInt res = KInvalidItemIndex;
- TInt currentItemIndex = 0;
-
- while ( res == KInvalidItemIndex && ValidItemIndex(currentItemIndex) )
- {
- if ( iItemsArray[currentItemIndex]->ItemId() == aItemId )
- {
- res = currentItemIndex;
- }
- else
- {
- currentItemIndex++;
- }
- }
-
- return res;
- }
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::TooltipText()
-// -----------------------------------------------------------------------------
-//
-TDesC* CActivePalette2Model::TooltipText()
- {
- if ( ValidItemIndex(iFocusedItem) )
- {
- CActivePalette2Item& api = static_cast<CActivePalette2Item &> (*iItemsArray[iFocusedItem]);
- return api.Tooltip();
- }
- else
- {
- return NULL;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ShowTooltip()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::ShowTooltip()
- {
- return iShowTooltip;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::TooltipCurrentFrame()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipCurrentFrame()
- {
- return iTooltipCurrentFrame;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::TooltipTotalFrames()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipTotalFrames()
- {
- return iTooltipTotalFrames;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::TooltipScreenPosition()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipScreenPosition()
- {
- return FocusedItem();
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CompelTooltip()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::CompelTooltip()
- {
- TInt tooltip_width = iModelObserver.TooltipUpdated();
-
- if( iTooltipConfig.iTransitionFrames > 0 )
- iTooltipTotalFrames = iTooltipConfig.iTransitionFrames;
- else
- iTooltipTotalFrames = tooltip_width / iTooltipConfig.iTransitionSpeed;
-
- TooltipSetState( ETooltipRise );
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::RemoveTooltip(void)
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::RemoveTooltip(void)
- {
- TooltipSetState(ETooltipNone);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::TooltipSteadyAniAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipSteadyAniAction(void)
- {
- // start shrinking
- TooltipSetState(ETooltipSet);
- return KCallbackFinished;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::TooltipRiseAniAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipRiseAniAction(void)
- {
- TInt res = KCallbackFinished;
-
- iShowTooltip = ETrue;
-
- if ( iCallbacks.iTooltipTimer )
- {
- if (iTooltipCurrentFrame >= iTooltipTotalFrames)
- {
- TooltipSetState(ETooltipSteady);
- }
- else
- {
- res = KCallbackCallAgain;
- iTooltipCurrentFrame++;
- }
-
- iCallbacks.iTooltipTimer->TooltipAnimated();
- }
- else if ( iCallbacks.iTooltipDescriptive )
- {
- TInt duration( (iTooltipTotalFrames*iTooltipConfig.iTimerTickLength) / KMicrosecondsPerMillisecond );
- iCallbacks.iTooltipDescriptive->AnimateTooltip( ETrue, duration );
- iTooltipTimer->Cancel();
- }
- else
- {
- // just for Lint.
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::TooltipDisappearAniAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipDisappearAniAction(void)
- {
- TInt res = KCallbackFinished;
-
- if ( iCallbacks.iTooltipTimer )
- {
- if (iTooltipCurrentFrame <= 0)
- {
- TooltipSetState(ETooltipNone);
- }
- else
- {
- res = KCallbackCallAgain;
- iTooltipCurrentFrame--;
- }
-
- if ( iCallbacks.iTooltipTimer )
- {
- iCallbacks.iTooltipTimer->TooltipAnimated();
- }
- }
- else if ( iCallbacks.iTooltipDescriptive )
- {
- TInt duration( (iTooltipTotalFrames*iTooltipConfig.iTimerTickLength) / KMicrosecondsPerMillisecond );
- iCallbacks.iTooltipDescriptive->AnimateTooltip( EFalse, duration );
- iTooltipTimer->Cancel();
- }
- else
- {
- // just for Lint.
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::TooltipTimerCallback()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::TooltipTimerCallback(TAny* aPtr)
- {
- CActivePalette2Model* self = (CActivePalette2Model*) aPtr;
- TInt res = KCallbackFinished;
-
- switch (self->iTooltipState)
- {
- case ETooltipSteady:
- res = self->TooltipSteadyAniAction();
- break;
-
- case ETooltipRise:
- res = self->TooltipRiseAniAction();
- break;
-
- case ETooltipSet:
- res = self->TooltipDisappearAniAction();
- break;
-
- default:
- break;
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Tooltip::TooltipSetState()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::TooltipSetState(TTooltipState aState)
- {
- iTooltipTimer->Cancel();
- TBool isOk = ETrue;
-
- switch (aState)
- {
- case ETooltipNone:
- iTooltipTimer->Cancel();
- if ( iShowTooltip || iTooltipCurrentFrame > 0 )
- {
- iShowTooltip = EFalse;
- iTooltipCurrentFrame = 0;
- iModelObserver.ShowTooltipUpdated();
- }
- break;
-
- case ETooltipSteady:
- iTooltipTimer->Start(
- iTooltipConfig.iFullshowPeriod,
- iTooltipConfig.iFullshowPeriod,
- TCallBack(&CActivePalette2Model::TooltipTimerCallback,(TAny *)this));
- break;
-
- case ETooltipRise:
- iTooltipCurrentFrame = 0;
- iTooltipTimer->Start(
- iTooltipConfig.iPreshowDelay,
- iTooltipConfig.iTimerTickLength,
- TCallBack(&CActivePalette2Model::TooltipTimerCallback,(TAny *)this));
- break;
-
- case ETooltipSet:
-// iTooltipCurrentFrame = 0;
- iTooltipTimer->Start(
- iTooltipConfig.iTimerTickLength,
- iTooltipConfig.iTimerTickLength,
- TCallBack(&CActivePalette2Model::TooltipTimerCallback,(TAny *)this));
- break;
-
- default:
- isOk = EFalse;
- break;
- }
-
- if (isOk)
- {
- iTooltipState = aState;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusChangeComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::AnimateTooltipRendererComplete()
- {
- switch (iTooltipState)
- {
- case ETooltipRise:
- TooltipSetState(ETooltipSteady);
- break;
-
- case ETooltipSet:
- TooltipSetState(ETooltipNone);
- break;
-
- default:
- case ETooltipNone:
- case ETooltipSteady:
- break;
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CountItemsOnScreen()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::CountItemsOnScreen(void)
- {
- return iNoItemsOnScreen;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ShowTopScrollIndicator()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::ShowTopScrollIndicator(void)
- {
- return iShowTopScrollArrow;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ShowBottomScrollIndicator()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::ShowBottomScrollIndicator(void)
- {
- return iShowBottomScrollArrow;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::InitialiseConstraints()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::InitialiseConstraints(void)
- {
- iTopItemOnScreen = FindVisibleItem(0);
-
- iFocusedItem = iTopItemOnScreen;
-
- iNoVisibleItems = CountVisibleItems(0);
-
- iNoItemsOnScreen = Min(NAP2Cfg::KMaxNofItemsInView, iNoVisibleItems);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::EnforceConstraints()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::EnforceConstraints(void)
- {
- CompleteAnyItemBasedAnimations();
-
- iNoVisibleItems = CountVisibleItems(0);
-
- iNoItemsOnScreen = Min(NAP2Cfg::KMaxNofItemsInView, iNoVisibleItems);
-
- iTopItemOnScreen = FindVisibleItem(iTopItemOnScreen);
-
- if(CountVisibleItems(iTopItemOnScreen) < iNoItemsOnScreen)
- {
- iTopItemOnScreen = FindVisibleItem(0);
-
- if ( iNoVisibleItems > iNoItemsOnScreen )
- {
- while ( CountVisibleItems(iTopItemOnScreen) < iNoItemsOnScreen )
- {
- iTopItemOnScreen = FindVisibleItem(iTopItemOnScreen + 1);
- }
- }
- }
-
- if ( iNoVisibleItems > 0 )
- {
- if ( iFocusedItem < 0 )
- {
- iFocusedItem = FindVisibleItem(0);
- }
-
- if ( iFocusedItem >= iItemsArray.Count() )
- {
- iFocusedItem = PreviousVisibleItem(iItemsArray.Count() - 1);
- }
-
- if ( ValidItemIndex(iFocusedItem) )
- {
- if ( !iVisibilityArray[iFocusedItem] )
- {
- TInt previousFocusedItem = iFocusedItem;
-
- iFocusedItem = FindVisibleItem(iFocusedItem);
-
- if ( iFocusedItem == KInvalidItemIndex )
- {
- iFocusedItem = PreviousVisibleItem(previousFocusedItem);
- }
-
- if ( iFocusedItem == KInvalidItemIndex )
- {
- iFocusedItem = FindVisibleItem(0);
- }
- }
- }
-
- if ( iFocusedItem < iTopItemOnScreen )
- {
- iTopItemOnScreen = iFocusedItem;
- }
- else
- {
- while ( iFocusedItem > BottomItemOnScreen() )
- {
- iTopItemOnScreen = FindVisibleItem(iTopItemOnScreen + 1);
- }
- }
- }
- else
- {
- iFocusedItem = KInvalidItemIndex;
- }
-
- ItemsUpdated();
- FocusedItemUpdated();
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CompleteAnyItemBasedAnimations()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::CompleteAnyItemBasedAnimations()
- {
- switch (iAnimState)
- {
- case EPaletteAnimItemScroll:
- case EPaletteAnimFocusChange:
- case EPaletteAnimItemAnim:
- SetAnimState(EPaletteAnimIdle);
- break;
-
- default:
- // do nothing
- break;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::BottomItemOnScreen()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::BottomItemOnScreen(void)
- {
- TInt bottomItemOnScreen = iTopItemOnScreen;
-
- for(TInt i = 1; i < iNoItemsOnScreen; i++)
- {
- bottomItemOnScreen = FindVisibleItem(bottomItemOnScreen + 1);
- }
-
- return bottomItemOnScreen;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FindVisibleItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FindVisibleItem(TInt aStartingItem)
- {
- TInt result = KInvalidItemIndex;
- TInt currentItem = aStartingItem;
- TBool found = EFalse;
- TInt arraySize = iVisibilityArray.Count();
-
- if ( aStartingItem != KInvalidItemIndex )
- {
- while(!found && currentItem < arraySize)
- {
- if(iVisibilityArray[currentItem])
- {
- result = currentItem;
- found = ETrue;
- }
- else
- {
- currentItem++;
- }
- }
- }
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PreviousVisibleItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::PreviousVisibleItem(TInt aStartingItem)
- {
- TInt result = KInvalidItemIndex;
- TInt currentItem = aStartingItem;
- TBool found = EFalse;
-
- if ( aStartingItem != KInvalidItemIndex )
- {
- while(!found && currentItem >= 0)
- {
- if(iVisibilityArray[currentItem])
- {
- result = currentItem;
- found = ETrue;
- }
- else
- {
- currentItem--;
- }
- }
- }
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CountVisibleItems()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::CountVisibleItems(TInt aStartingItem)
- {
- TInt result = 0;
- TInt currentItem = aStartingItem;
- TInt arraySize = iVisibilityArray.Count();
-
- if ( aStartingItem != KInvalidItemIndex )
- {
- while(currentItem < arraySize)
- {
- if(iVisibilityArray[currentItem])
- {
- result++;
- }
- currentItem++;
- }
- }
- else
- {
- result = KInvalidItemIndex;
- }
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemIndexFromScreenPos()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemIndexFromScreenPos(TInt aScreenPos)
- {
- TInt result = KInvalidItemIndex;
-
- if ( aScreenPos >= 0 && iNoItemsOnScreen > 0 && aScreenPos < NAP2Cfg::KMaxNofItemsInView + 1 )
- {
- result = iOnScreenItemIndex[aScreenPos];
- }
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemFromScreenPos()
-// -----------------------------------------------------------------------------
-//
-CActivePalette2Item* CActivePalette2Model::ItemFromScreenPos(TInt aScreenPos)
- {
- CActivePalette2Item* result = NULL;
-
- TInt itemIndex = ItemIndexFromScreenPos(aScreenPos);
-
- if ( itemIndex != KInvalidItemIndex )
- {
- result = iItemsArray[itemIndex];
- }
-
- return result;
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ScreenPosFromItemIndex()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ScreenPosFromItemIndex(TInt aItem)
- {
- TInt result = KInvalidScreenPos;
- TInt currentItem = iTopItemOnScreen;
- TInt currentScreenPos = 0;
- TBool found = EFalse;
-
- if ( aItem >= iItemsArray.Count() )
- {
- result = iNoItemsOnScreen;
- }
- else if ( aItem < 0)
- {
- result = NAP2Cfg::KScreenPosAboveTop;
- }
- else
- {
- while ( !found && currentScreenPos < iNoItemsOnScreen )
- {
- if ( aItem == currentItem )
- {
- found = ETrue;
- }
- else
- {
- currentItem = FindVisibleItem(currentItem + 1);
- currentScreenPos++;
- }
- }
-
- if ( found )
- {
- result = currentScreenPos;
- }
- }
-
- return result;
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusedItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FocusedItem()
- {
- return ScreenPosFromItemIndex(iFocusedItem);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusCurrentOffset()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FocusCurrentOffset()
- {
- return iFocusedCurrentOffset;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusCurrentTotalOffsetFrames()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FocusCurrentTotalOffsetFrames()
- {
- return NAP2Cfg::KFocusChangeFrames;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteAppearingCurrentFrame()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::PaletteAppearingCurrentFrame()
- {
- return iPaletteMoveCurrentOffset;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteAppearingTotalFrames()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::PaletteAppearingTotalFrames()
- {
- return iPaletteMoveOffsetTotalFrames;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ProcessInputEvent()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::ProcessInputEvent(TActivePalette2InputEvent aEvent)
- {
- TBool eventConsumed = EFalse;
-
- if ( PaletteActive() )
- {
- SetAnimState(EPaletteAnimIdle);
-
- switch(aEvent)
- {
- case EAP2InputUp:
- RemoveTooltip();
-
- iFocusChangeTargetItem = PreviousVisibleItem(iFocusedItem - 1);
-
- if ( iFocusChangeTargetItem != KInvalidItemIndex && iFocusChangeTargetItem != iFocusedItem )
- {
- if ( ScreenPosFromItemIndex(iFocusedItem) == 0 )
- {
- // Item scroll
- iTopItemOnScreen = iFocusChangeTargetItem;
- iFocusedItem = iFocusChangeTargetItem;
-
- iItemScrollCurrentOffset = NAP2Cfg::KItemScrollFrames;
-
- ItemsUpdated();
-
- ScrollItems(-1);
- }
- else
- {
- // Focus change
- ChangeFocus();
-
- eventConsumed = ETrue;
- }
- }
- else
- {
- iFocusChangeTargetItem = PreviousVisibleItem(iItemsArray.Count() - 1);
-
- if ( iFocusChangeTargetItem != KInvalidItemIndex && iFocusChangeTargetItem != iFocusedItem )
- {
- // Focus wrap
- TInt screenPos = iNoItemsOnScreen - 1;
- iTopItemOnScreen = iFocusChangeTargetItem;
-
- while ( screenPos > 0 )
- {
- iTopItemOnScreen = PreviousVisibleItem(iTopItemOnScreen-1);
- screenPos--;
- }
-
- ItemsUpdated();
-
- iFocusedItem = iItemsArray.Count();
-
- ChangeFocus();
-
- eventConsumed = ETrue;
- }
- }
- break;
- case EAP2InputDown:
- RemoveTooltip();
-
- iFocusChangeTargetItem = FindVisibleItem(iFocusedItem + 1);
-
- if ( iFocusChangeTargetItem != KInvalidItemIndex && iFocusChangeTargetItem != iFocusedItem )
- {
- if ( ScreenPosFromItemIndex(iFocusedItem) == (iNoItemsOnScreen - 1))
- {
- // Item scroll
- iItemScrollCurrentOffset = 0;
-
- ScrollItems(+1);
- }
- else
- {
- // Focus change
- ChangeFocus();
- }
-
- eventConsumed = ETrue;
- }
- else
- {
- // wrap focus to top
- iFocusChangeTargetItem = FindVisibleItem(0);
-
- if ( iFocusChangeTargetItem != KInvalidItemIndex && iFocusChangeTargetItem != iFocusedItem )
- {
- iTopItemOnScreen = iFocusChangeTargetItem;
- ItemsUpdated();
- iFocusedItem = -1;
-
- ChangeFocus();
- }
- }
-
- break;
-
- case EAP2InputSelect:
- RemoveTooltip();
-
- if ( iFocusedItem >= 0 && iFocusedItem < iItemsArray.Count())
- {
- if ( iVisibilityArray[iFocusedItem] )
- {
- TActivePalette2EventData res(PrepareEventData(*iItemsArray[iFocusedItem], KErrNone));
-
- if ( iModelObserver.APObserver() )
- {
- iModelObserver.APObserver()->NotifyItemSelected(res);
- }
-
- HandleItemSelected(iFocusedItem);
-
- eventConsumed = ETrue;
- }
- }
- break;
- }
- }
-
- return eventConsumed;
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ScrollItems()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ScrollItems(TInt aDirection)
- {
- SetAnimState(EPaletteAnimItemScroll);
-
- if ( iCallbacks.iItemScrollTimer )
- {
- iItemScrollDirection = aDirection;
-
- iItemScrollTimer->Start(
- NAP2Cfg::KItemScrollTimerTickLength,
- NAP2Cfg::KItemScrollTimerTickLength,
- TCallBack(&CActivePalette2Model::ItemScrollTimerCallback,(TAny *)this));
- }
- else if ( iCallbacks.iItemScrollDescriptive )
- {
- iCallbacks.iItemScrollDescriptive->AnimateItemScroll(aDirection, NAP2Cfg::KItemScrollTotalTime / KMicrosecondsPerMillisecond);
- }
- else
- {
- // just for Lint.
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ChangeFocus()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ChangeFocus()
- {
- if ( iCallbacks.iFocusTimer )
- {
- if ( iFocusedItem < iFocusChangeTargetItem )
- {
- iFocusedCurrentOffset = 0;
- iFocusChangeDirection = +1;
- }
- else
- {
- iFocusedCurrentOffset = NAP2Cfg::KFocusChangeFrames;
- iFocusChangeDirection = -1;
- iFocusedItem = iFocusChangeTargetItem;
- }
-
- SetAnimState(EPaletteAnimFocusChange);
- iFocusChangeTimer->Start(
- NAP2Cfg::KFocusChangeTimerTickLength,
- NAP2Cfg::KFocusChangeTimerTickLength,
- TCallBack(&CActivePalette2Model::FocusChangeTimerCallback,(TAny *)this));
- }
- else if ( iCallbacks.iFocusDescriptive )
- {
- SetAnimState(EPaletteAnimFocusChange);
- iCallbacks.iFocusDescriptive->AnimateFocus(ScreenPosFromItemIndex(iFocusedItem), ScreenPosFromItemIndex(iFocusChangeTargetItem), NAP2Cfg::KFocusChangeTotalTime / KMicrosecondsPerMillisecond);
- }
- else
- {
- // lint
- }
- }
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemAnimInfo()
-// -----------------------------------------------------------------------------
-//
-CActivePalettePluginBase::TPluginAnimationInfo CActivePalette2Model::ItemAnimInfo()
- {
- return iAniItemInfo;
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetPaletteVisibility()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SetPaletteVisibility(TBool aVisible, TBool aAnimated, TInt aDelayedStartMilliseconds)
- {
- // Check if we're already in an appearance animation
- if ( iAnimState == EPaletteAnimAppearing
- && iCallbacks.iAppearanceDescriptive )
- {
- // If so, update state
- iPaletteMoveCurrentOffset = iCallbacks.iAppearanceDescriptive->GuessCurrentAppearanceFrame();
-
- if ( iPaletteMoveCurrentOffset < 0 || iPaletteMoveCurrentOffset > iPaletteMoveOffsetTotalFrames )
- {
- iPaletteMoveOffsetTotalFrames = iPaletteMoveOffsetTotalFrames;
- }
- }
-
-
- if ( aAnimated || aDelayedStartMilliseconds > 0)
- {
- if ( aVisible )
- {
- if ( iPaletteMoveOffsetTotalFrames > iPaletteMoveCurrentOffset )
- {
- RemoveTooltip();
- SetAnimState(EPaletteAnimAppearing);
- iModelObserver.PaletteAppearingUpdated();
-
- if ( aAnimated )
- {
- iPaletteMoveAnimationDirection = +1;
- }
- else
- {
- iPaletteMoveAnimationDirection = +iPaletteMoveOffsetTotalFrames;
- }
-
- iPaletteMoveTimer->Cancel();
- iPaletteMoveTimer->Start(Max(1, aDelayedStartMilliseconds * KMicrosecondsPerMillisecond),
- NAP2Cfg::KPaletteAppearTimerTickLength,
- TCallBack(&CActivePalette2Model::PaletteAnimTimerCallback,(TAny*)this));
- }
- else if ( aAnimated && 0 >= iPaletteMoveAnimationDirection )
- {
- iPaletteMoveAnimationDirection = +1;
- }
- }
- else
- {
- if ( iPaletteMoveCurrentOffset > 0 )
- {
- RemoveTooltip();
- SetAnimState(EPaletteAnimAppearing);
- iModelObserver.PaletteAppearingUpdated();
-
- if ( aAnimated )
- {
- iPaletteMoveAnimationDirection = -1;
- }
- else
- {
- iPaletteMoveAnimationDirection = -iPaletteMoveOffsetTotalFrames;
- }
-
-
- iPaletteMoveTimer->Cancel();
- iPaletteMoveTimer->Start(Max(1, aDelayedStartMilliseconds * KMicrosecondsPerMillisecond),
- NAP2Cfg::KPaletteAppearTimerTickLength,
- TCallBack(&CActivePalette2Model::PaletteAnimTimerCallback,(TAny*)this));
- }
- //Start fix for ERCK-77PCZJ
- else
- {
- iPaletteMoveAnimationDirection = -iPaletteMoveOffsetTotalFrames;
- SetAnimState(EPaletteAnimIdle);
- }
- //End fix ERCK-77PCZJ
- }
- }
- else
- {
- if ( aVisible )
- {
- if ( iPaletteMoveOffsetTotalFrames != iPaletteMoveCurrentOffset )
- {
- RemoveTooltip();
- SetAnimState(EPaletteAnimIdle);
- iPaletteMoveCurrentOffset = iPaletteMoveOffsetTotalFrames;
- iModelObserver.PaletteAppearingUpdated();
- }
- }
- else
- {
- if ( iPaletteMoveCurrentOffset != 0 )
- {
- RemoveTooltip();
- SetAnimState(EPaletteAnimIdle);
- iPaletteMoveCurrentOffset = 0;
- iModelObserver.PaletteAppearingUpdated();
- }
- //Start fix for ERCK-77PCZJ
- else
- {
- iPaletteMoveAnimationDirection = -iPaletteMoveOffsetTotalFrames;
- SetAnimState(EPaletteAnimIdle);
- }
- //End fix ERCK-77PCZJ
- }
- }
-
- return KErrNone;
- }
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::NotifyItemComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::NotifyItemComplete(const CActivePalette2Item& aItem,
- TInt aResult,
- const TDesC8& aDataDes,
- TInt aDataInt)
- {
- if ( iModelObserver.APObserver() )
- {
- TActivePalette2EventData evt(PrepareEventData(aItem, aResult));
- iModelObserver.APObserver()->NotifyItemComplete(evt, aDataDes, aDataInt);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::NotifyMessage()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::NotifyMessage(const CActivePalette2Item& aItem,
- const TInt aResult,
- const TInt aMessageID,
- const TDesC8& aDataDes,
- TInt aDataInt)
- {
- if ( iModelObserver.APObserver() )
- {
- TActivePalette2EventData eventData = PrepareEventData(aItem, aResult);
- iModelObserver.APObserver()->NotifyMessage(eventData, aMessageID, aDataDes, aDataInt);
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::NotifyGraphicsChanged()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::NotifyGraphicsChanged(const CActivePalette2Item& /*aItem*/,
- const TBool aIsIconChanged,
- const TBool aIsTooltipChanged)
- {
- if ( aIsTooltipChanged )
- {
- RemoveTooltip();
- }
-
- if ( aIsIconChanged )
- {
- ItemsUpdated();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PrepareEventData()
-// -----------------------------------------------------------------------------
-//
-TActivePalette2EventData CActivePalette2Model::PrepareEventData(const CActivePalette2Item& aItem,
- TInt aResult)
- {
- TActivePalette2EventData evt
- (
- aResult,
- aItem.ItemId(),
- iPreviousItemID,
- aItem.ItemId(),
- aItem.PluginUid()
- );
-
- return evt;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetItemVisibility()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SetItemVisibility(const TInt aItemId, const TBool aIsVisible)
- {
- TInt index = ItemIndexFromId(aItemId);
- TInt res = KErrNotFound;
-
- if ( ValidItemIndex(index) )
- {
- if ( iVisibilityArray[index] != aIsVisible )
- {
- iVisibilityArray[index] = aIsVisible;
- EnforceConstraints();
- }
- res = KErrNone;
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::GetItemVisibility()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::GetItemVisibility(const TInt aItemId, TBool &aIsVisible) const
- {
- TInt index = ItemIndexFromId(aItemId);
- TInt res = KErrNone;
-
- if ( ValidItemIndex(index) )
- {
- aIsVisible = iVisibilityArray[index];
- }
- else
- {
- res = KErrArgument;
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::GetAvailablePlugins()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::GetAvailablePlugins(RArray<TUid>& aPluginList) const
- {
- aPluginList.Reset();
-
- // Generic plugin always available
- aPluginList.Append(TUid::Uid(KActivePalette2GenericPluginUID));
-
- AppendPluginIdIfAvailable(aPluginList, TUid::Uid(KPrintPluginUid), TFileName(KPrintPluginDLLName));
- AppendPluginIdIfAvailable(aPluginList, TUid::Uid(KPrintIntentPluginUid), TFileName(KPrintIntentPluginDLLName));
- AppendPluginIdIfAvailable(aPluginList, TUid::Uid(KOnlineSharingPluginUid), TFileName(KOnlineSharingPluginDLLName));
-#ifdef ACTIVEPALETTE_SUPPORT_PLUGIN_CAM
- AppendPluginIdIfAvailable(aPluginList, TUid::Uid(KCamAPPluginUid), TFileName(KCamAPluginDLLName));
-#endif
-
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::AppendPluginIdIfAvailable()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::AppendPluginIdIfAvailable(RArray<TUid>& aPluginList, const TUid aDllUid, const TFileName aDllFileName) const
- {
- RLibrary dll;
-
- TInt err = dll.Load(aDllFileName);
-
- if ( err == KErrNone )
- {
- aPluginList.Append(aDllUid);
- }
-
- dll.Close();
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetPaletteVisibilityAnimationDuration()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SetPaletteVisibilityAnimationDuration(TInt aTimeInMilliSeconds)
- {
- iPaletteMoveAnimationDuration = aTimeInMilliSeconds;
-
- TInt targetTotalFrames = (aTimeInMilliSeconds * KMicrosecondsPerMillisecond) / NAP2Cfg::KPaletteAppearTimerTickLength;
-
- if ( targetTotalFrames < 1 )
- {
- targetTotalFrames = 1;
- }
-
- // update current frame
- if ( iPaletteMoveCurrentOffset == iPaletteMoveOffsetTotalFrames )
- {
- iPaletteMoveCurrentOffset = targetTotalFrames;
- }
- else if ( iPaletteMoveCurrentOffset > 0 && iPaletteMoveOffsetTotalFrames > 0)
- {
- iPaletteMoveCurrentOffset = (iPaletteMoveCurrentOffset * targetTotalFrames) / iPaletteMoveOffsetTotalFrames;
- }
- else
- {
- iPaletteMoveCurrentOffset = 0;
- }
-
- iPaletteMoveOffsetTotalFrames = targetTotalFrames;
-
- // double check we're in range
- if ( iPaletteMoveCurrentOffset < 0 )
- {
- iPaletteMoveCurrentOffset = 0;
- }
-
- if ( iPaletteMoveCurrentOffset > iPaletteMoveOffsetTotalFrames )
- {
- iPaletteMoveCurrentOffset = iPaletteMoveOffsetTotalFrames;
- }
-
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::GetItemList()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::GetItemList(RArray<TActivePalette2ItemVisible>& aItemVisibleList) const
- {
- aItemVisibleList.Reset();
-
- TInt currentItem = 0;
- TInt totalItems = iItemsArray.Count();
-
- while ( currentItem < totalItems )
- {
- aItemVisibleList.Append(
- TActivePalette2ItemVisible(
- iItemsArray[currentItem]->ItemId(),
- iVisibilityArray[currentItem]));
- currentItem++;
- }
-
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetItemList()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SetItemList(const RArray<TActivePalette2ItemVisible>& aItemVisibleList)
- {
- TInt res = KErrNone;
- TInt currentItem = 0;
- TInt totalItems = iItemsArray.Count();
- TInt totalInputItems = aItemVisibleList.Count();
- TInt destIndex = 0;
-
- TInt focusedItemId = 0;
-
- // Backup the current focused item
- if ( ValidItemIndex(iFocusedItem) )
- {
- focusedItemId = iItemsArray[iFocusedItem]->ItemId();
- }
-
- // Check that there aren't any invalid IDs in the list
- while ( currentItem < totalInputItems && res == KErrNone )
- {
- TInt itemId = aItemVisibleList[currentItem].ItemId();
- TInt foundIndex = ItemIndexFromId(itemId);
-
- if ( foundIndex == KInvalidItemIndex )
- {
- res = KErrNotFound;
- }
-
- currentItem++;
- }
-
- // Rearrange the item & visibility lists
- currentItem = 0;
- while ( currentItem < totalInputItems && destIndex < totalItems && res == KErrNone )
- {
- TInt itemId = aItemVisibleList[currentItem].ItemId();
- TBool visible = aItemVisibleList[currentItem].Visible();
-
- TInt foundIndex = ItemIndexFromId(itemId);
-
- if ( foundIndex >= currentItem )
- {
- iItemsArray.Insert(iItemsArray[foundIndex], destIndex);
- iItemsArray.Remove(foundIndex + 1);
-
- iVisibilityArray.Insert(visible, destIndex);
- iVisibilityArray.Remove(foundIndex + 1);
-
- destIndex++;
- }
-
- currentItem++;
- }
-
- // Update the focus
- if ( res == KErrNone )
- {
- iFocusedItem = ItemIndexFromId(focusedItemId);
-
- EnforceConstraints();
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::GetPaletteVisibilityAnimationDuration()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::GetPaletteVisibilityAnimationDuration(TInt& aTimeInMilliseconds) const
- {
- aTimeInMilliseconds = iPaletteMoveAnimationDuration;
- return KErrNone;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetCurrentItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SetCurrentItem(const TInt aItemId)
- {
- TInt err = KErrNotFound;
- TInt index = ItemIndexFromId(aItemId);
-
- if ( ValidItemIndex(index) )
- {
- err = KErrGeneral;
-
- if ( iVisibilityArray[index] )
- {
- iFocusedItem = index;
-
- EnforceConstraints();
-
- err = KErrNone;
- }
- }
-
- return err;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::GetCurrentItem()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::GetCurrentItem(TInt& aItemId) const
- {
- TInt err = KErrGeneral;
-
- if ( ValidItemIndex(iFocusedItem) )
- {
- if ( iItemsArray[iFocusedItem] )
- {
- aItemId = iItemsArray[iFocusedItem]->ItemId();
-
- err = KErrNone;
- }
- }
- return err;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemsUpdated()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ItemsUpdated()
- {
- RemoveTooltip();
-
- // Update cached data
- TInt onScreenPos = 0;
- TInt onScreenIndex = iTopItemOnScreen;
-
- while ( onScreenIndex != KInvalidItemIndex && onScreenPos < (NAP2Cfg::KMaxNofItemsInView + 1))
- {
- iOnScreenItemIndex[onScreenPos] = onScreenIndex;
- onScreenIndex = FindVisibleItem(onScreenIndex + 1);
- onScreenPos++;
- }
-
- while (onScreenPos < (NAP2Cfg::KMaxNofItemsInView + 1))
- {
- iOnScreenItemIndex[onScreenPos] = KInvalidItemIndex;
- onScreenPos++;
- }
-
- iShowTopScrollArrow = iTopItemOnScreen > FindVisibleItem(0);
- iShowBottomScrollArrow = CountVisibleItems(iTopItemOnScreen) > iNoItemsOnScreen;
-
- iModelObserver.ItemsUpdated();
- }
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemScrollOffset()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemScrollOffset()
- {
- return iItemScrollCurrentOffset;
- }
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemScrollTotalFrames()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemScrollTotalFrames()
- {
- return NAP2Cfg::KItemScrollFrames;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetAnimState()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::SetAnimState(TPaletteAnimState aNewState)
- {
- if ( iAnimState != aNewState )
- {
- // Exit old state
- switch ( iAnimState )
- {
- case EPaletteAnimItemScroll:
- ItemScrollComplete();
- break;
-
- case EPaletteAnimFocusChange:
- FocusChangeComplete();
- break;
-
- case EPaletteAnimItemAnim:
- ItemAnimationComplete();
- break;
-
- case EPaletteAnimAppearing:
- PaletteAnimComplete();
- break;
-
- case EPaletteAnimIdle:
- default:
- // do nothing;
- break;
- }
-
- // Enter new state
- switch ( aNewState )
- {
- case EPaletteAnimItemScroll:
- break;
-
- case EPaletteAnimFocusChange:
- break;
-
- case EPaletteAnimItemAnim:
- StartItemAnimation();
- break;
-
- case EPaletteAnimAppearing:
- break;
-
- case EPaletteAnimIdle:
- default:
- // do nothing;
- break;
- }
-
- iAnimState = aNewState;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteActive()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::PaletteActive()
- {
- return ( iAnimState != EPaletteAnimAppearing && iPaletteMoveCurrentOffset == iPaletteMoveOffsetTotalFrames);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ValidItemIndex()
-// -----------------------------------------------------------------------------
-//
-TBool CActivePalette2Model::ValidItemIndex(TInt aItemIndex) const
- {
- return (aItemIndex >= 0 && aItemIndex < iItemsArray.Count());
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SendMessage()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SendMessage(TInt aItemId, TInt aMessageId, const TDesC8& aDataDes)
- {
- return DispatchMessage(aItemId,aMessageId,aDataDes,KActivePaletteNoDataInt);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SendMessage()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::SendMessage(TInt aItemId, TInt aMessageId, TInt aDataInt)
- {
- return DispatchMessage(aItemId,aMessageId,KNullDesC8,aDataInt);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::InstallItemL()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::InstallItemL(const TActivePalette2ItemVisible& aItemVisible,
- const TUid& aPluginUid,
- const TDesC8& aCustomDataDes)
- {
- return DoInstallItemL(aItemVisible.ItemId(),
- aItemVisible.Visible(),
- aPluginUid,aCustomDataDes,
- KActivePaletteNoDataInt);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::InstallItemL()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::InstallItemL(const TActivePalette2ItemVisible& aItemVisible,
- const TUid& aPluginUid,
- TInt aCustomDataInt)
- {
- return DoInstallItemL(aItemVisible.ItemId(),
- aItemVisible.Visible(),
- aPluginUid,
- KNullDesC8,
- aCustomDataInt);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::InstallItemL()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::InstallItemL(const TActivePalette2ItemVisible& aItemVisible,
- const TUid& aPluginUid,
- TInt aCustomDataInt,
- const TDesC8& aCustomDataDes)
- {
- return DoInstallItemL(aItemVisible.ItemId(),
- aItemVisible.Visible(),
- aPluginUid,
- aCustomDataDes,
- aCustomDataInt);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemSize()
-// -----------------------------------------------------------------------------
-//
-TSize CActivePalette2Model::ItemSize()
- {
- return iItemSize;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::LocateTo()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::LocateTo(const TPoint& /*aTopLeft*/)
- {
- // unused
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::Location()
-// -----------------------------------------------------------------------------
-//
-TPoint CActivePalette2Model::Location() const
- {
- // unused
- return TPoint(0,0);
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::CoeControl()
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CActivePalette2Model::CoeControl()
- {
- // unused
- return NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::HuiControl()
-// -----------------------------------------------------------------------------
-//
-CHuiControl* CActivePalette2Model::HuiControl()
- {
- // unused
- return NULL;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetGc()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::SetGc(CBitmapContext* /*aGc*/)
- {
- // unused
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::RenderActivePalette()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::RenderActivePalette(const TRect& /*aRect*/) const
- {
- // unused
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetObserver()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::SetObserver(MActivePalette2Observer* /*aObserver*/)
- {
- // unused
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetNavigationKeys()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::SetNavigationKeys(const TActivePalette2NavigationKeys& /*aNavigationKeys*/)
- {
- // unused
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::AnimateAppearanceRendererComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::AnimateAppearanceRendererComplete()
- {
- if ( iAnimState == EPaletteAnimAppearing )
- {
- SetAnimState(EPaletteAnimIdle);
- iModelObserver.PaletteAppearingUpdated();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::AnimateItemScrollRendererComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::AnimateItemScrollRendererComplete()
- {
- if ( iAnimState == EPaletteAnimItemScroll )
- {
- SetAnimState(EPaletteAnimItemAnim);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::SetFocusedItem()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::FocusedItemUpdated()
- {
- if ( ValidItemIndex(iFocusedItem) )
- {
- TInt currentID = iItemsArray[iFocusedItem]->ItemId();
-
- iPreviousItemID = iFocusedItemID;
- iFocusedItemID = currentID;
-
- if ( iModelObserver.APObserver() )
- {
- iModelObserver.APObserver()->NotifyItemFocused(iPreviousItemID, iFocusedItemID);
- }
-
- if ( iCallbacks.iFocusTimer )
- {
- iCallbacks.iFocusTimer->FocusUpdated();
- }
- }
- }
-
-
-
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::StartItemAnimation()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::StartItemAnimation()
- {
- CompelTooltip();
-
- CActivePalettePluginBase::TPluginAnimationInfo animConfig;
-
- animConfig.iFrameSize = ActivePalette2Utils::APDimensionSize( ActivePalette2Utils::EItemSize );
- animConfig.iNofFrames = NAP2Cfg::KItemAnimNoFrames;
- animConfig.iFrameTimeGapMs = NAP2Cfg::KItemAnimFrameDuration;
-
- iAniItem = iItemsArray[iFocusedItem];
- iAniItemScreenPos = ScreenPosFromItemIndex(iFocusedItem);
-
- iAnimationFrame = 0;
-
- TRAP_IGNORE(iAniItem->Plugin().PrepareAniFramesL(
- CActivePalettePluginBase::EAniFocused,
- iAniItemInfo,
- animConfig,
- iAniItem->Icon(),
- iAniItem->Mask()));
-
- iItemAnimTimer->Start(iAniItemInfo.iFrameTimeGapMs, iAniItemInfo.iFrameTimeGapMs,
- TCallBack(&CActivePalette2Model::ItemAnimTimerCallback,(TAny*)this));
-
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemAnimTimerCallback()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemAnimTimerCallback(TAny* aPtr)
- {
- CActivePalette2Model* self = (CActivePalette2Model*) aPtr;
-
- if ( self )
- {
- return self->ItemAnimAction();
- }
- else
- {
- return KCallbackFinished;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemAnimAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemAnimAction()
- {
- TInt res = KCallbackCallAgain;
-
- if ( iAnimationFrame > iAniItemInfo.iNofFrames)
- {
- res = KCallbackFinished;
- SetAnimState(EPaletteAnimIdle);
- }
- else
- {
- iModelObserver.ItemAnimated(iAniItemScreenPos, iAniItem, iAnimationFrame);
- iAnimationFrame++;
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemAnimationComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ItemAnimationComplete()
- {
- iItemAnimTimer->Cancel();
- iModelObserver.ItemAnimationComplete(iAniItemScreenPos, iAniItem);
- iAniItem = NULL;
- iAniItemScreenPos = KInvalidScreenPos;
- }
-
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemScrollTimerCallback()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemScrollTimerCallback(TAny* aPtr)
- {
- CActivePalette2Model* self = (CActivePalette2Model*) aPtr;
-
- if ( self )
- {
- return self->ItemScrollAction();
- }
- else
- {
- return KCallbackFinished;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemScrollAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::ItemScrollAction()
- {
- TInt res = KCallbackCallAgain;
-
- iItemScrollCurrentOffset += iItemScrollDirection;
-
- if ( iItemScrollCurrentOffset <= 0 || iItemScrollCurrentOffset >= NAP2Cfg::KItemScrollFrames )
- {
- res = KCallbackFinished;
- SetAnimState(EPaletteAnimItemAnim);
- }
- else
- {
- if ( iCallbacks.iItemScrollTimer )
- {
- iCallbacks.iItemScrollTimer->ItemsScrolled();
- }
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::ItemScrollComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::ItemScrollComplete()
- {
- iItemScrollTimer->Cancel();
-
- iItemScrollCurrentOffset = 0;
-
- if ( iFocusedItem != iFocusChangeTargetItem )
- {
- iFocusedItem = iFocusChangeTargetItem;
- iTopItemOnScreen = FindVisibleItem(iTopItemOnScreen + 1);
- ItemsUpdated();
- }
- else
- {
- if ( iCallbacks.iItemScrollTimer )
- {
- iCallbacks.iItemScrollTimer->ItemsScrolled();
- }
- }
- }
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteAnimTimerCallback()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::PaletteAnimTimerCallback(TAny* aPtr)
- {
- CActivePalette2Model* self = (CActivePalette2Model*) aPtr;
-
- if ( self )
- {
- return self->PaletteAnimAction();
- }
- else
- {
- return KCallbackFinished;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteAnimAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::PaletteAnimAction()
- {
- TInt res = KCallbackCallAgain;
-
- iPaletteMoveCurrentOffset += iPaletteMoveAnimationDirection;
-
- if ( (iPaletteMoveCurrentOffset <= 0) || (iPaletteMoveCurrentOffset >= iPaletteMoveOffsetTotalFrames))
- {
- res = KCallbackFinished;
- SetAnimState(EPaletteAnimIdle);
- iModelObserver.PaletteAppearingUpdated();
- }
- else
- {
- iModelObserver.PaletteAppearingUpdated();
-
- if ( iCallbacks.iAppearanceDescriptive )
- {
- iPaletteMoveTimer->Cancel();
-
- if ( iPaletteMoveAnimationDirection > 0 )
- {
- // Palette is appearing
- iCallbacks.iAppearanceDescriptive->AnimateAppearance(ETrue,
- (iPaletteMoveAnimationDuration * (iPaletteMoveOffsetTotalFrames - iPaletteMoveCurrentOffset))
- / iPaletteMoveOffsetTotalFrames);
- }
- else
- {
- // Palette is disappearing
- iCallbacks.iAppearanceDescriptive->AnimateAppearance(EFalse,
- (iPaletteMoveAnimationDuration * (iPaletteMoveCurrentOffset))
- / iPaletteMoveOffsetTotalFrames);
- }
-
- res = KCallbackFinished;
- }
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::PaletteAnimComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::PaletteAnimComplete()
- {
- iPaletteMoveTimer->Cancel();
-
- if ( iPaletteMoveAnimationDirection > 0 )
- {
- iPaletteMoveCurrentOffset = iPaletteMoveOffsetTotalFrames;
- }
- else
- {
- iPaletteMoveCurrentOffset = 0;
- }
- }
-
-
-
-
-
-
-
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::AnimateFocusRendererComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::AnimateFocusRendererComplete()
- {
- // Check we're expecting call
- if ( iAnimState == EPaletteAnimFocusChange )
- {
- SetAnimState(EPaletteAnimItemAnim);
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusChangeTimerCallback()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FocusChangeTimerCallback(TAny* aPtr)
- {
- CActivePalette2Model* self = (CActivePalette2Model*) aPtr;
-
- if ( self )
- {
- return self->FocusChangeAction();
- }
- else
- {
- return KCallbackFinished;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusChangeAction()
-// -----------------------------------------------------------------------------
-//
-TInt CActivePalette2Model::FocusChangeAction()
- {
- TInt res = KCallbackCallAgain;
-
- iFocusedCurrentOffset += iFocusChangeDirection;
-
- if ( iFocusedCurrentOffset <= 0 || iFocusedCurrentOffset >= NAP2Cfg::KFocusChangeFrames )
- {
- res = KCallbackFinished;
- SetAnimState(EPaletteAnimItemAnim);
- }
- else
- {
- if ( iCallbacks.iFocusTimer )
- {
- iCallbacks.iFocusTimer->FocusAnimated();
- }
- }
-
- return res;
- }
-
-// -----------------------------------------------------------------------------
-// CActivePalette2Model::FocusChangeComplete()
-// -----------------------------------------------------------------------------
-//
-void CActivePalette2Model::FocusChangeComplete()
- {
- iFocusChangeTimer->Cancel();
-
- iFocusedItem = iFocusChangeTargetItem;
- iFocusedCurrentOffset = 0;
-
- FocusedItemUpdated();
- }
-
-
-// End of File