--- /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<CPhoneCallHeaderTextAnimation*>(
+ 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