diff -r f9e827349359 -r b023a8d2866a photosgallery/viewframework/dataprovider/src/glxmulmodelproviderbase.cpp --- a/photosgallery/viewframework/dataprovider/src/glxmulmodelproviderbase.cpp Mon Jun 21 15:40:32 2010 +0300 +++ b/photosgallery/viewframework/dataprovider/src/glxmulmodelproviderbase.cpp Thu Jul 15 18:39:01 2010 +0300 @@ -43,6 +43,7 @@ #include #include #include // An interface for Multimedia coverflow Widget +#include "glxdrmgiftexturecreator.h" using namespace Alf; @@ -91,6 +92,11 @@ CGlxMulModelProviderBase::~CGlxMulModelProviderBase() { TRACER("CGlxMulModelProviderBase::~CGlxMulModelProviderBase"); + if(iDrmGifTextureCreator) + { + delete iDrmGifTextureCreator; + iDrmGifTextureCreator = NULL; + } // remove event handler iWidget.RemoveEventHandler( *this ); if ( iNavigationalState ) @@ -293,8 +299,51 @@ const TGlxMedia& aMedia, TInt aAtIndex ) { TRACER("CGlxMulModelProviderBase::SetDataT"); - iModel->SetData( aAtIndex, CreateItemT( aBinding, aMedia, - IsFocused( aAtIndex ) ) ); + + if(IsFocused(aAtIndex)) + { + TBool drm = EFalse; + TGlxMediaGeneralRightsValidity isValid = EGlxDrmRightsValidityUnknown; + if (aMedia.GetDrmProtected(drm)) + { + GLX_DEBUG1("CGlxMulModelProviderBase::SetDataT GetDrmValidity"); + aMedia.GetDrmValidity(isValid); + } + TInt frameCount; + aMedia.GetFrameCount(frameCount); + + //Create the DRM gif texture intance only if the DRM gif image is + //valid and focused + if (frameCount > 1 && drm && isValid == EGlxDrmRightsValid) + { + if (!iDrmGifTextureCreator) + { + iDrmGifTextureCreator = CGlxDrmGifTextureCreator::NewL( + aBinding, aMedia, aAtIndex, iModel); + } + else + { + iDrmGifTextureCreator->UpdateNewImageL(aMedia, aAtIndex); + } + } + else + { + //if the focus is changed then delete the DRMGifTextureCreator + //instance if any + if (iDrmGifTextureCreator) + { + delete iDrmGifTextureCreator; + iDrmGifTextureCreator = NULL; + } + iModel->SetData(aAtIndex, CreateItemT(aBinding, aMedia, + IsFocused(aAtIndex))); + } + } + else + { + iModel->SetData( aAtIndex, CreateItemT( aBinding, aMedia, + IsFocused( aAtIndex ) ) ); + } } // ---------------------------------------------------------------------------- @@ -559,4 +608,16 @@ iWidget.AddEventHandler( *this ); } +//----------------------------------------------------------------------------- +// AnimateDRMGifItem +//----------------------------------------------------------------------------- +// +void CGlxMulModelProviderBase::AnimateDRMGifItem( TBool aAnimate ) + { + TRACER("CGlxMulModelProviderBase::AnimateDRMGifItem"); + if(iDrmGifTextureCreator) + { + iDrmGifTextureCreator->AnimateDRMGifItem(aAnimate); + } + } //EOF