--- 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 <alf/alfenv.h>
-#include <alf/alfwidgetenvextension.h>
-
-// Class headers
-#include "mulcoverflowwidget.h"
-
-// Mul Headers
-#include "imulmodelaccessor.h"
-#include "mulassert.h"
-#include "mullog.h" //for logs
-#include <mul/imulsliderwidget.h>
-
-// 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<MulCoverFlowControl*>( control()));
- }
- if (mMulModelAccessor && mTakesModelOwnership)
- {
- delete mMulModelAccessor;
- }
-
- IAlfWidgetFactory& widgetFactory = AlfWidgetEnvExtension::widgetFactory(*(CAlfEnv::Static()));
- IAlfWidget* sliderWidget = widgetFactory.findWidget( KNameSliderWidget );
-
- if(control())
- {
- (static_cast<MulCoverFlowControl*>(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<MulCoverFlowControl*>( 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<IMulSliderWidget*>(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<IMulCoverFlowWidget*>( 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