diff -r 514d98f21c43 -r 4ea6f81c838a mulwidgets/mulcoverflowwidget/src/mulcoverflowwidget.cpp --- a/mulwidgets/mulcoverflowwidget/src/mulcoverflowwidget.cpp Mon Jun 21 16:15:51 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,552 +0,0 @@ -/* -* Copyright (c) 2007-2008 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: Widget Implementation -* -*/ - -// Include Files -#include -#include - -// Class headers -#include "mulcoverflowwidget.h" - -// Mul Headers -#include "imulmodelaccessor.h" -#include "mulassert.h" -#include "mullog.h" //for logs -#include - -// Local Headers -#include "mulbaseelement.h" -#include "mulcoverflowcontrol.h" - -namespace Alf - { - -// --------------------------------------------------------------------------- -// MulCoverFlowWidget -// --------------------------------------------------------------------------- -// -MulCoverFlowWidget::MulCoverFlowWidget( CAlfEnv& aEnv, - const char* aWidgetId, IAlfContainerWidget& aContainerWidget):AlfWidget(aWidgetId,aContainerWidget,aEnv) - { - mMulModelAccessor = NULL; - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::MulCoverFlowWidget"); - mWidgetPropertyFlag = 0; //Initialization - - //Create default control - mCoverflowControl = new (EMM) MulCoverFlowControl( aEnv ); - setControl( mCoverflowControl,true ); - - // create Base element - mBaseElement = new (EMM) MulBaseElement( *mCoverflowControl, KBase ); - mTakesModelOwnership = false; - - } - -// --------------------------------------------------------------------------- -// ~MulCoverFlowWidget -// --------------------------------------------------------------------------- -// -MulCoverFlowWidget::~MulCoverFlowWidget() - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::~MulCoverFlowWidget"); - // Control will be destroyed in the Widget deletion sequence. In that sequence - // Control's owner widget will be set to NULL. So,We cannot access the widget in - // the Coverflow control's destructor. So,This will be the right place to remove the - // model Observer. - - if( control() && model()) - { - ((IMulModelAccessor*)model())->RemoveModelObserver(static_cast( control())); - } - if (mMulModelAccessor && mTakesModelOwnership) - { - delete mMulModelAccessor; - } - - IAlfWidgetFactory& widgetFactory = AlfWidgetEnvExtension::widgetFactory(*(CAlfEnv::Static())); - IAlfWidget* sliderWidget = widgetFactory.findWidget( KNameSliderWidget ); - - if(control()) - { - (static_cast(control()))->DestroySlider(); - } - - if(sliderWidget) - { - widgetFactory.destroyWidget(sliderWidget); - } - } - -// --------------------------------------------------------------------------- -// parent -// --------------------------------------------------------------------------- -// -IAlfContainerWidget* MulCoverFlowWidget::parent() const - { - return AlfWidget::parent (); //return container widget - } - -// --------------------------------------------------------------------------- -// control -// --------------------------------------------------------------------------- -// -CAlfWidgetControl* MulCoverFlowWidget::control() const - { - //Call the base class method - return AlfWidget::control(); - } - -// --------------------------------------------------------------------------- -// setControl -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::setControl( CAlfWidgetControl* aControl,bool aDeletePreviousControl ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::setControl"); - AlfWidget::setControl( aControl,aDeletePreviousControl ); - } - -// --------------------------------------------------------------------------- -// model -// --------------------------------------------------------------------------- -// -IAlfModel* MulCoverFlowWidget::model() - { - return mMulModelAccessor; - } - -// --------------------------------------------------------------------------- -// setModel -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::setModel( IAlfModel* /*aModel*/ , bool /*aTakeOwnership*/ ) - { - } - -// --------------------------------------------------------------------------- -// widgetName -// --------------------------------------------------------------------------- -// -const char* MulCoverFlowWidget::widgetName() const - { - return AlfWidget::widgetName(); - } - - -// --------------------------------------------------------------------------- -// SetBackground -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetBackground(const TRgb& aColor) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetBackground"); - - mBaseElement->SetBackground( aColor ); - } - -// --------------------------------------------------------------------------- -// SetBackground -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetBackground(const TAknsItemID& aItemID) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetBackground"); - - mBaseElement->SetBackground( aItemID ); - } -// --------------------------------------------------------------------------- -// SetFlags -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetFlags( unsigned int aAnyFlag ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetFlags"); - mWidgetPropertyFlag |= aAnyFlag; - - // When the IMulMultiItemWidget::EMulWidgetFlagFastScroll flag is modified we should - // set the enable holding flag to gesture helper to recieve the hold events. - if(aAnyFlag == IMulMultiItemWidget::EMulWidgetFlagFastScroll) - { - mCoverflowControl->SetHoldingEnabled(); - } - else if(aAnyFlag == IMulMultiItemWidget::EMulWidgetDoubleTap) - { - mCoverflowControl->SetDoubleTapEnabled(true); - } - } - -// --------------------------------------------------------------------------- -// ClearFlags -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::ClearFlags( unsigned int aAnyFlag ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::ClearFlags"); - mWidgetPropertyFlag &= ~aAnyFlag; - if(aAnyFlag == IMulMultiItemWidget::EMulWidgetDoubleTap) - { - mCoverflowControl->SetDoubleTapEnabled(false); - } - else if(aAnyFlag == IMulMultiItemWidget::EMulWidgetFlagFastScroll) - { - mCoverflowControl->SetHoldingEnabled(); - } - } - -// --------------------------------------------------------------------------- -// IsFlagSet -// --------------------------------------------------------------------------- -// -bool MulCoverFlowWidget::IsFlagSet( TMulWidgetPropertiesFlag aAnyFlag ) const - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::IsFlagSet"); - - return (mWidgetPropertyFlag & aAnyFlag); - - } - -// --------------------------------------------------------------------------- -// GetFlags -// --------------------------------------------------------------------------- -// -unsigned int MulCoverFlowWidget::GetFlags() const - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::GetFlags"); - return mWidgetPropertyFlag; - } - -// --------------------------------------------------------------------------- -// SetRect -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetRect( int /*aLeftMargin*/, int /*aTopmargin*/, int /*aHeight*/, - int /*aWidth*/, int /*aTransitionTime*/ ) - { - //@todo need to be removed once its removed from imulwidget. - } -// --------------------------------------------------------------------------- -// ShowWidget -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::ShowWidget( bool aShow, int aTransitionTime ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::ShowWidget"); - mBaseElement->ShowWidget( aShow,aTransitionTime ); - - // Reset the flag . Event handling gets disabled once the flag is reset to false. - mCoverflowControl->ResetShowWidgetFlag( aShow ); - } - -// --------------------------------------------------------------------------- -// SetModel -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetModel( IMulModelAccessor* aAccessor, bool aFlag ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetModel"); - - //remove from observing change from old model - if ( mMulModelAccessor != aAccessor ) - { - if (mMulModelAccessor && control()) - { - ((IMulModelAccessor*)model())->RemoveModelObserver(static_cast( control())); - } - // Release the old model. - if (mTakesModelOwnership) - { - delete mMulModelAccessor; - } - // Set the new model. - mMulModelAccessor = aAccessor; - mTakesModelOwnership=aFlag; - } - else // just copy the ownership flag - { - if (mMulModelAccessor != NULL) - { - mTakesModelOwnership=aFlag; - } - } - - IMulSliderWidget* sliderWidget = static_cast(mCoverflowControl->GetSliderWidget()); - // cancel all previous commands (like marquee and bounce) - mCoverflowControl->Env().CancelCustomCommands(mCoverflowControl); - - if( aAccessor ) - { - mMulModelAccessor = aAccessor; - MUL_LOG_INFO("MUL::MulCoverFlowWidget::SetModel()::SetVisibleWindow "); - aAccessor->AddModelObserver(mCoverflowControl); - // Notify the control regarding model change. - mCoverflowControl->ModelChanged(aAccessor); - - if( aAccessor->CurrentItemCount() <= 0 ) - { - if(sliderWidget) - { - mBaseElement->ShowSlider(false); - } - } - } - else // For Null Model case - { - mCoverflowControl->RecycleVisuals(); - mBaseElement->ShowEmptyText( true ); - - if( sliderWidget ) - { - mBaseElement->ShowSlider(false); - } - } - } - -// --------------------------------------------------------------------------- -// GetIconSize -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::GetIconSize( mulwidget::TLogicalTemplate aTemplateId, - mulvisualitem::TVisualAttribute aAttribute, int& aHeight, int& aWidth) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::GetIconSize"); - if((aAttribute == mulvisualitem::KMulIcon1) || - (aAttribute == mulvisualitem::KMulIndicator2)) - { - mBaseElement->GetIconSize(aTemplateId,aAttribute,aHeight,aWidth); - } - else - { - __MUL_ASSERT( false,KInvalidArgument); - } - } - -// --------------------------------------------------------------------------- -// GetIconSize -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::GetIconSize(mulvisualitem::TVisualAttribute aAttribute, - int& aHeight, int& aWidth) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::GetIconSize"); - __MUL_ASSERT( mMulModelAccessor != 0,KTemplateNotFound); - if((aAttribute == mulvisualitem::KMulIcon1) || - (aAttribute == mulvisualitem::KMulIndicator2)) - { - mBaseElement->GetIconSize(mMulModelAccessor->Template(),aAttribute, - aHeight,aWidth); - } - else - { - __MUL_ASSERT( false,KInvalidArgument); - } - } - - // --------------------------------------------------------------------------- - // makeInterface - // --------------------------------------------------------------------------- - // -IAlfInterfaceBase* MulCoverFlowWidget::makeInterface( const IfId& /*aType*/ ) - { - return static_cast( this ); - } - -// --------------------------------------------------------------------------- -// setChildFocus -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::setChildFocus( bool /*aFocus*/ ) - { - // pure virtual function of base Class. - // not usefull for this widget - } - -void MulCoverFlowWidget::setPresentation(const char* /*aFilePath*/) - { - // pure virtual function of base Class. - // not usefull for this widget - } - -// --------------------------------------------------------------------------- -// AddEventHandler -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::AddEventHandler( IAlfWidgetEventHandler& aObserver ) - { - control()->addEventHandler( &aObserver ); - } - -// --------------------------------------------------------------------------- -// RemoveEventHandler -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::RemoveEventHandler( IAlfWidgetEventHandler& aObserver ) - { - control()->removeEventHandler( aObserver ); - } -// --------------------------------------------------------------------------- -// ContainerLayout -// --------------------------------------------------------------------------- -// -const CAlfLayout& MulCoverFlowWidget::ContainerLayout() - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::ContainerLayout"); - CAlfLayout* layout=(CAlfLayout*)mBaseElement->findVisual(0); - return *layout; - } -// --------------------------------------------------------------------------- -// SetEmptyText -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetEmptyText( const UString& aDefaultText) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetEmptyText"); - mBaseElement->SetEmptyText(aDefaultText); - } - -// --------------------------------------------------------------------------- -// SetMarkMode -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetMarkMode(bool /*aFlag*/) - { - // Marking mode is not supported by coverflow widget. - } - -// --------------------------------------------------------------------------- -// IsMarkMode -// --------------------------------------------------------------------------- -// -bool MulCoverFlowWidget::IsMarkMode()const - { - // Marking mode is not supported by coverflow widget. - return false; - } - -// --------------------------------------------------------------------------- -// SetReorderMode -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetReorderMode(TMulReOrderMode /*aReorderMode*/) - { - // reorder mode is not supported by coverflow widget. - } - -// --------------------------------------------------------------------------- -// IsReorderMode -// --------------------------------------------------------------------------- -// -bool MulCoverFlowWidget::IsReorderModeOn() const - { - // reorder mode is not supported by coverflow widget. - return false; - } - -// --------------------------------------------------------------------------- -// SetOverlay -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetOverlay(TMulAttributeDataType /*aType*/, const UString& /*aAttribute*/, - const UString& /*aFormat*/) - { - // No implementation . - } - -// --------------------------------------------------------------------------- -// SetAnimationTime -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetAnimationTime( TMulVisualEffect aVisualEffect, int aTransitionTime ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetAnimationTime"); - // EHighlightTransition is used to set coverflow step scroll animation time. - if( aVisualEffect == EHighlightTransition ) - { - mBaseElement->SetScrollAnimationTime(aTransitionTime); - } - } -// --------------------------------------------------------------------------- -// SetUIOnOFF -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetUIMode(bool UIOn, int aTransition ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetUIMode"); - mBaseElement->UIOnOffMode( UIOn,aTransition ); - } - -// --------------------------------------------------------------------------- -// SetVisualColor -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetVisualColor( TMulVisualType aVisualType , const TRgb& aColor ) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetVisualColor"); - switch(aVisualType) - { - case EItemBackgroundBrush: - { - mBaseElement->SetItemBrush(aColor); - } - break; - case ECoverflowCounterVisual: - { - mBaseElement->SetTextColor(ECounterVisual,aColor); - } - break; - case ETextVisual: - { - mBaseElement->SetTextColor(ETilteDetailTextVisual,aColor); - } - break; - default: - break; - - } - } - -// --------------------------------------------------------------------------- -// SetDefaultImage -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::SetDefaultImage(int aTextureId) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::SetDefaultImage"); - mCoverflowControl->SetDefaultImage(aTextureId); - } - -// --------------------------------------------------------------------------- -// RotateImage -// --------------------------------------------------------------------------- -// -void MulCoverFlowWidget::RotateImage(TMulRotation aDirection,TSize aImageSize,int aAnimationTime) - { - MUL_LOG_ENTRY_EXIT("aakash::MulCoverFlowWidget::RotateImage"); - mBaseElement->RotateImage(aDirection,aImageSize,aAnimationTime); - } - -// --------------------------------------------------------------------------- -// Gesturehelper -// --------------------------------------------------------------------------- -// -GestureHelper::CGestureHelper* MulCoverFlowWidget::Gesturehelper() - { - return mCoverflowControl->Gesturehelper(); - } - - } //namespace alf - -//End of File