diff -r 000000000000 -r 951a5db380a0 videditor/VideoEditorUiComponents/src/ExtProgressContainer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videditor/VideoEditorUiComponents/src/ExtProgressContainer.cpp Fri Jan 29 14:08:33 2010 +0200 @@ -0,0 +1,295 @@ +/* +* 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: ExtProgressContainer.cpp +* Created: 14-10-2005 +* Author: +* +*/ + +#include "ExtProgressContainer.h" +#include "ExtProgressAnimationControl.h" + +#include +#include +#include +#include +#include +#include + +// Constants +const TInt KProgressBarDefaultFinalValue = 20; +const TInt KProgressBarDefaultHeight = 15; +const TInt KProgressBarDefaultWidth = 240; + +// Positions +const TReal KContTX = 0.00; +const TReal KContTY = 0.20; +const TReal KContBX = 1.00; +const TReal KContBY = 1.00; + +const TReal KLabelTX = 0.10; +const TReal KLabelTY = 0.10; +const TReal KLabelBX = 0.90; +const TReal KLabelBY = 0.30; + +const TReal KAnimTX = 0.10; +const TReal KAnimTY = 0.30; +const TReal KAnimBX = 0.90; +const TReal KAnimBY = 0.80; + +const TReal KProgTX = 0.10; +const TReal KProgTY = 0.80; +//const TReal KProgBX = 0.70; +//const TReal KProgBY = 0.90; + + + +//============================================================================= +CExtProgressContainer * CExtProgressContainer::NewL (const TRect& aRect, CCoeControl* aParent) +{ + CExtProgressContainer* self = new (ELeave) CExtProgressContainer(); + CleanupStack::PushL(self); + self->ConstructL(aRect, aParent); + CleanupStack::Pop( self ); + return self; +} + +//============================================================================= +CExtProgressContainer::CExtProgressContainer () +{ +} + +//============================================================================= +CExtProgressContainer::~CExtProgressContainer () +{ + delete iProgressInfo; + delete iAnimationControl; + delete iLabel; + delete iBgContext; +} + +//============================================================================= +void CExtProgressContainer::ConstructL (const TRect& aRect, CCoeControl* aParent) +{ + SetContainerWindowL(*aParent); + + TRect rect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, rect); + TSize size = rect.Size(); + SetRect(TRect + (static_cast(size.iWidth * KContTX + 0.5), + static_cast(size.iHeight * KContTY + 0.5), + static_cast(size.iWidth * KContBX + 0.5), + static_cast(size.iHeight * KContBY + 0.5))); + + + iLabel = new(ELeave) CEikLabel; + iLabel->SetContainerWindowL(*this); + + iAnimationControl = CExtProgressAnimationControl::NewL(aRect, aParent); + iAnimationControl->SetObserver(this); + iAnimationControl->SetContainerWindowL(*this); + + // Set Progress Bar property, coding directly + CEikProgressInfo::SInfo info; + + info.iHeight = KProgressBarDefaultHeight; + info.iWidth = KProgressBarDefaultWidth; + info.iSplitsInBlock = 0; + info.iTextType = EEikProgressTextNone; + info.iFinalValue = KProgressBarDefaultFinalValue; + + iProgressInfo = new( ELeave ) CEikProgressInfo( info ); + + iProgressInfo->ConstructL(); + iProgressInfo->SetContainerWindowL(*this); + + SizeChanged(); + + ActivateL(); +} + +//============================================================================= +void CExtProgressContainer::HandleControlEventL( + CCoeControl* /*aControl*/,TCoeEvent aEventType) +{ + if (aEventType == MCoeControlObserver::EEventStateChanged ) + { + ReportEventL(MCoeControlObserver::EEventStateChanged); + } + +} + +//============================================================================= +TInt CExtProgressContainer::CountComponentControls() const +{ + return 3; +} + +//============================================================================= +CCoeControl* CExtProgressContainer::ComponentControl(TInt aIndex) const +{ + CCoeControl* ret = NULL; + switch (aIndex) + { + case 0: + { + ret = iLabel; + break; + } + case 1: + { + ret = iAnimationControl; + break; + } + case 2: + { + ret = iProgressInfo; + break; + } + default: + { + break; + } + + } + + return ret; +} + +//============================================================================= +CEikProgressInfo* CExtProgressContainer::GetProgressInfoL() +{ + return iProgressInfo; +} + +//============================================================================= +CExtProgressAnimationControl* CExtProgressContainer::GetAnimationControlL() +{ + return iAnimationControl; +} + +//============================================================================= +void CExtProgressContainer::SetTextL(const TDesC &aText) +{ + iLabel->SetTextL(aText); + DrawNow(); +} + + +//============================================================================= +void CExtProgressContainer::Draw(const TRect& aRect) const +{ + CWindowGc& gc = SystemGc(); + + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + MAknsControlContext* cc = AknsDrawUtils::ControlContext( this ); + + AknsDrawUtils::Background( skin, cc, this, gc, aRect ); +// AknsDrawUtils::Background( skin, cc, iLabel, gc, aRect ); +// AknsDrawUtils::Background( skin, cc, iProgressInfo, gc, aRect ); +// AknsDrawUtils::Background( skin, cc, iAnimationControl, gc, aRect ); + + // Just draw a rectangle round the edge of the control. + // CWindowGc& gc=SystemGc(); + //gc.Clear(aRect); + //gc.SetClippingRect(aRect); + //gc.DrawRect(Rect()); +} + + +//============================================================================= +void CExtProgressContainer::SizeChanged() +{ + TRect rect( Rect() ); + if ( iBgContext ) + { + iBgContext->SetRect( rect ); + } + + TSize size= rect.Size(); + + if (iLabel) + { + iLabel->SetRect(TRect + (static_cast(size.iWidth * KLabelTX + 0.5), + static_cast(size.iHeight * KLabelTY + 0.5), + static_cast(size.iWidth * KLabelBX + 0.5), + static_cast(size.iHeight * KLabelBY + 0.5 ))); + } + + if (iAnimationControl ) + { + iAnimationControl->SetRect(TRect + (static_cast(size.iWidth * KAnimTX + 0.5), + static_cast(size.iHeight * KAnimTY + 0.5), + static_cast(size.iWidth * KAnimBX + 0.5), + static_cast(size.iHeight * KAnimBY + 0.5))); + } + + if (iProgressInfo) + { + TSize minSize = iProgressInfo->MinimumSize(); + + iProgressInfo->SetExtent(TPoint + (static_cast(size.iWidth * KProgTX + 0.5), + static_cast(size.iHeight * KProgTY + 0.5)), + minSize); + + /* + iProgressInfo->SetPosition(TPoint + (size.iWidth * KProgTX, + size.iHeight * KProgTY)); + + iProgressInfo->SetExtent(TRect + (size.iWidth * KProgTX, + size.iHeight * KProgTY, + size.iWidth * KProgBX, + size.iHeight * KProgBY)); + */ + } + +} + +//============================================================================= +TTypeUid::Ptr CExtProgressContainer::MopSupplyObject( TTypeUid aId ) +{ + if ( aId.iUid == MAknsControlContext::ETypeId && iBgContext ) + { + return MAknsControlContext::SupplyMopObject( aId, iBgContext ); + } + return CCoeControl::MopSupplyObject( aId ); +} + +//============================================================================= +TSize CExtProgressContainer::MinimumSize() +{ + return Rect().Size(); +} + +//============================================================================= +void CExtProgressContainer::Test() +{ + + +} + +// End of File