diff -r 000000000000 -r 5f000ab63145 phoneapp/phoneuiview/src/cphonecallheadertextanimation.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phoneapp/phoneuiview/src/cphonecallheadertextanimation.cpp Mon Jan 18 20:18:27 2010 +0200 @@ -0,0 +1,201 @@ +/* +* Copyright (c) 2005 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: Implementation of CPhoneCallHeaderTextAnimation class. +* +*/ + + +// INCLUDE FILES +#include "cphonecallheadertextanimation.h" +#include "phoneconstants.h" +#include "phonelogger.h" +#include "cphonetimer.h" + +// CONSTANTS +const TUint16 KPhoneCallHeaderAnimationDot = 0x002E; +const TInt KPhoneCallHeaderDotNum = 3; +const TInt KOneSecond = 1000000; + +// ================= MEMBER FUNCTIONS ======================= + +// ----------------------------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::CPhoneCallHeaderTextAnimation +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CPhoneCallHeaderTextAnimation::CPhoneCallHeaderTextAnimation() : + CCoeStatic( KUidCallHeaderTextAnimationSingleton ), + iTimer( NULL ), + iDotNum( 0 ), + iBubbleManager( NULL ), + iActiveBubble( 0 ) + { + } + +// Destructor +CPhoneCallHeaderTextAnimation::~CPhoneCallHeaderTextAnimation() + { + delete iTimer; + iTimer = NULL; + } + +// --------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::InstanceL +// (other items were commented in a header). +// --------------------------------------------------------- +// +CPhoneCallHeaderTextAnimation* CPhoneCallHeaderTextAnimation::InstanceL() + { + __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneCallHeaderTextAnimation::InstanceL"); + CPhoneCallHeaderTextAnimation* instance = static_cast( + CCoeEnv::Static( KUidCallHeaderTextAnimationSingleton ) ); + if ( !instance ) + { + instance = new ( ELeave ) CPhoneCallHeaderTextAnimation; + CleanupStack::PushL( instance ); + instance->ConstructL(); + CleanupStack::Pop( instance ); + } + return instance; + } + +// ----------------------------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::CPhoneCallHeaderTextAnimation +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CPhoneCallHeaderTextAnimation::ConstructL() + { + iTimer = CPhoneTimer::NewL(); + } + +// --------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::StartAnimatingVideoCallHeaderL +// --------------------------------------------------------- +// +void CPhoneCallHeaderTextAnimation::StartAnimatingVideoCallHeaderL( + const CBubbleManager::TBubbleId aBubbleId, + const TDesC& aNormalText, + const TDesC& aShortText, + CBubbleManager& aBubbleManager ) + { + __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneCallHeaderTextAnimation::StartAnimatingVideoCallHeaderL"); + iActiveBubble = aBubbleId; + iBubbleManager = &aBubbleManager; + + SetBubbleTexts( aNormalText, aShortText ); + + // Update immediately when we start + HandleTimeOutL(); + } + +// --------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::RemoveAnimatingVideoCallHeader +// --------------------------------------------------------- +// +void CPhoneCallHeaderTextAnimation::RemoveAnimatingVideoCallHeader() + { + __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneCallHeaderTextAnimation::RemoveAnimatingVideoCallHeader"); + if( iTimer ) + { + if( iTimer->IsActive() ) + { + iTimer->CancelTimer(); + } + } + iDotNum = 0; + } + +// --------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::HandleTimeOutL +// --------------------------------------------------------- +// +void CPhoneCallHeaderTextAnimation::HandleTimeOutL() + { + __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneCallHeaderTextAnimation::HandleTimeOutL"); + + iBubbleManager->UpdateCallHeaderText( iActiveBubble, + iNormalText, iShortText, CBubbleManager::ERight ); + + if ( iDotNum < KPhoneCallHeaderDotNum ) + { + __PHONELOG( EBasic, EPhoneUIView, + "CPhoneCallHeaderTextAnimation::HandleTimeOutL()->iDotNum < KPhoneCallHeaderDotNum" ); + iNormalText.Append( &KPhoneCallHeaderAnimationDot, 1); + iShortText.Append( &KPhoneCallHeaderAnimationDot, 1); + iDotNum++; + } + else + { + __PHONELOG( EBasic, EPhoneUIView, + "CPhoneCallHeaderTextAnimation::HandleTimeOutL()->else..." ); + TInt normalLength = iNormalText.Length(); + iNormalText.Delete( normalLength - KPhoneCallHeaderDotNum, KPhoneCallHeaderDotNum); + + TInt shortLength = iShortText.Length(); + iShortText.Delete( shortLength - KPhoneCallHeaderDotNum, KPhoneCallHeaderDotNum); + + iDotNum = 0; + } + + // Start timer to update headers periodically + if ( !iTimer->IsActive() ) + { + __PHONELOG( EBasic, EPhoneUIView, + "CPhoneCallHeaderTextAnimation::HandleTimeOutL()-> Start timer to update headers periodically" ); + iTimer->After( KOneSecond, this ); + } + } + +// --------------------------------------------------------- +// CPhoneCallHeaderTextAnimation::SetBubbleTexts +// --------------------------------------------------------- +// +void CPhoneCallHeaderTextAnimation::SetBubbleTexts( const TDesC& aNormalText, + const TDesC& aShortText ) + { + __LOGMETHODSTARTEND(EPhoneUIView, "CPhoneCallHeaderTextAnimation::SetBubbleTexts"); + __PHONELOG1( + EBasic, + EPhoneUIView, + "CPhoneCallHeaderTextAnimation::SetBubbleTexts aNormalText = %S", + &aNormalText ); + + __PHONELOG1( + EBasic, + EPhoneUIView, + "CPhoneCallHeaderTextAnimation::SetBubbleTexts aShortText = %S", + &aShortText ); + + if( aNormalText.Length() > KPhoneCallHeaderAnimationTextLength ) + { + iNormalText = aNormalText.Left( KPhoneCallHeaderAnimationTextLength ); + } + else + { + iNormalText = aNormalText; + } + + if( aShortText.Length() > KPhoneCallHeaderAnimationTextLength ) + { + iShortText = aShortText.Left( KPhoneCallHeaderAnimationTextLength ); + } + else + { + iShortText = aShortText; + } + } + +// End of File