diff -r 000000000000 -r 951a5db380a0 videditor/VideoEditorUiComponents/src/ExtProgressAnimationControl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videditor/VideoEditorUiComponents/src/ExtProgressAnimationControl.cpp Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "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: +* Ixonos Plc +* +* Description: +* +*/ + + +/* +* File: ExtProgressAnimationControl.cpp +* Created: 17-10-2005 +* Author: +* +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ExtProgressAnimationControl.h" +#include "videoeditorcommon.h" + +//const TInt KCropFastKeyTimerDelayInMicroseconds = 10000; +//const TInt KDefaultFastKeyTimerIntervalInMicroseconds = 10000; + +// CONSTANTS +//const TReal KIconHeightFrac = 0.25; +//const TInt KStartOffsetX = 10; + +//============================================================================= +CExtProgressAnimationControl * CExtProgressAnimationControl::NewL ( + const TRect & aRect, + const CCoeControl * aParent + ) +{ + CExtProgressAnimationControl * self = new (ELeave) CExtProgressAnimationControl; + CleanupStack::PushL(self); + self->ConstructL (aRect, aParent); + CleanupStack::Pop( self ); + return self; +} + +//============================================================================= +CExtProgressAnimationControl::~CExtProgressAnimationControl() +{ + StopAnimation(); + + delete iAnimation; + delete iBgContext; +} + +//============================================================================= +void CExtProgressAnimationControl::SetAnimationResourceId(const TInt &aResourceId) +{ + switch (aResourceId) + { + case VideoEditor::EAnimationMerging: + { + iAnimationResourceId = R_VED_MERGING_NOTE_ANIMATION; + break; + } + case VideoEditor::EAnimationChangeAudio: + { + iAnimationResourceId = R_VED_MERGING_AUDIO_NOTE_ANIMATION; + break; + } + case VideoEditor::EAnimationAddText: + { + iAnimationResourceId = R_VED_ADDING_TEXT_NOTE_ANIMATION; + break; + } + case VideoEditor::EAnimationCut: + { + iAnimationResourceId = R_VED_CUTTING_NOTE_ANIMATION; + break; + } + default: + { + iAnimationResourceId = R_VED_MERGING_NOTE_ANIMATION; + break; + } + } + +} + +//============================================================================= +CExtProgressAnimationControl::CExtProgressAnimationControl() : iBorderWidth(2) +{ + +} + +//============================================================================= +void CExtProgressAnimationControl::ConstructL ( + const TRect & aRect, + const CCoeControl * aParent + ) +{ + SetContainerWindowL( *aParent ); + SetRect(aRect); + + // Activate control + ActivateL(); +} + +//============================================================================= +void CExtProgressAnimationControl::SizeChanged() +{ + TRect rect = Rect(); + if ( iBgContext ) + { + iBgContext->SetRect( rect ); + } +} + +//============================================================================= +void CExtProgressAnimationControl::Draw (const TRect& aRect) const +{ + CWindowGc& gc = SystemGc(); + + // draw skin background + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + AknsDrawUtils::Background( skin, cc, this, SystemGc(), aRect ); +} + +//============================================================================= +TTypeUid::Ptr CExtProgressAnimationControl::MopSupplyObject( TTypeUid aId ) +{ + if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext ) + { + return MAknsControlContext::SupplyMopObject( aId, iBgContext ); + } + return CCoeControl::MopSupplyObject( aId ); +} + +//============================================================================= +void CExtProgressAnimationControl::HandleControlEventL( + CCoeControl* /*aControl*/,TCoeEvent /*aEventType*/) + { + } + +//============================================================================= +void CExtProgressAnimationControl::StartAnimationL(TInt aFrameIntervalInMilliSeconds ) + { + + if ( iAnimation ) + { + delete iAnimation; + iAnimation = 0; + } + + iAnimation = CAknBitmapAnimation::NewL(); + + TResourceReader reader; + iCoeEnv->CreateResourceReaderLC( reader, iAnimationResourceId ); + iAnimation->ConstructFromResourceL( reader ); + TRect rect( Rect() ); + rect.Move( iBorderWidth, iBorderWidth ); + rect.Resize( -iBorderWidth*2, -iBorderWidth ); + iAnimation->SetRect( rect ); + iAnimation->SetContainerWindowL( *this ); + iAnimationOn = ETrue; + iAnimation->StartAnimationL(); + CleanupStack::PopAndDestroy(); //reader + CBitmapAnimClientData* animClientData = iAnimation->BitmapAnimData(); + iAnimationSpeedInMilliSeconds = animClientData->FrameIntervalInMilliSeconds(); + + if ( aFrameIntervalInMilliSeconds > 0 ) + { + SetFrameIntervalL( aFrameIntervalInMilliSeconds ); + } + DrawDeferred(); + } + +//============================================================================= +void CExtProgressAnimationControl::StopAnimation() + { + if ( iAnimationOn ) + { + iAnimation->CancelAnimation(); + } + iAnimationOn = EFalse; + DrawDeferred(); + } + +//============================================================================= +void CExtProgressAnimationControl::SetFrameIntervalL(TInt aFrameIntervalInMilliSeconds) + { + iAnimationSpeedInMilliSeconds+=aFrameIntervalInMilliSeconds; + iAnimation->SetFrameIntervalL( iAnimationSpeedInMilliSeconds ); + } + +// End of File