photosgallery/viewframework/drmutility/src/glxdrmutility.cpp
branchRCL_3
changeset 64 34937ec34dac
parent 60 5b3385a43d68
child 75 01504893d9cb
--- 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);
     }