--- 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);
}