diff -r 5b3385a43d68 -r 34937ec34dac photosgallery/viewframework/drmutility/src/glxdrmutility.cpp --- a/photosgallery/viewframework/drmutility/src/glxdrmutility.cpp Wed Sep 01 12:33:26 2010 +0100 +++ b/photosgallery/viewframework/drmutility/src/glxdrmutility.cpp Tue Sep 14 21:19:17 2010 +0300 @@ -171,7 +171,16 @@ #ifdef _DEBUG TTime startTime; startTime.HomeTime(); -#endif +#endif + TFileName fileName(KNullDesC); + fileName.Append(aFileHandle.FullName(fileName)); + if (iLastConsumedItemUri->Length() > 0) + { + if (fileName.CompareF(*iLastConsumedItemUri) == 0) + { + return ETrue; + } + } TBool rightsValid = EFalse; ContentAccess::TAttribute attrib = aCheckViewRights ? ContentAccess::ECanView : ContentAccess::ECanPlay; @@ -222,6 +231,20 @@ TBool aCheckViewRights) { TRACER("CGlxDRMUtility::DisplayItemRightsCheckL(RFile)"); + TFileName fileName(KNullDesC); + fileName.Append(aFileHandle.FullName(fileName)); + // Allow to display if rights for a URI was just consumed (i.e. same as stored URI) + if (iLastConsumedItemUri->Length() > 0) + { + if (fileName.CompareF(*iLastConsumedItemUri) == 0) + { + return ETrue; + } + } + + //Clear the stored uri + ClearLastConsumedItemUriL(); + // Otherwise, check current rights for the URI of newly focused item return ItemRightsValidityCheckL(aFileHandle, aCheckViewRights); } @@ -265,7 +288,22 @@ { TRACER("CGlxDRMUtility::ConsumeRightsL(RFile)"); CData* data = CData::NewLC(aFileHandle, KDefaultContentObject(), EPeek); + + //When consuming rights for a URI, clear stored URI + ClearLastConsumedItemUriL(); + TInt err = data->ExecuteIntent(ContentAccess::EView); + TFileName fileName(KNullDesC); + fileName.Append(aFileHandle.FullName(fileName)); + + if (err == KErrNone) + { + //Update stored URI + iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL(fileName.Length()); + TPtr newPtr = iLastConsumedItemUri->Des(); + newPtr.Copy(fileName); + } + CleanupStack::PopAndDestroy(data); return (err == KErrNone); }