diff -r 8b2d6d0384b0 -r d9aefe59d544 camerauis/activepalette/Src/ActivePalette2Model.cpp --- 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 -#include -#include -#include - -#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(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 (*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& 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& 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& 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& 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