photosgallery/viewframework/drmutility/src/glxdrmutility.cpp
branchRCL_3
changeset 75 01504893d9cb
parent 64 34937ec34dac
equal deleted inserted replaced
68:5b238bc8ffb6 75:01504893d9cb
    30 #include <caf/data.h>
    30 #include <caf/data.h>
    31 #include <caf/manager.h>
    31 #include <caf/manager.h>
    32 #include "glxtracer.h"
    32 #include "glxtracer.h"
    33 #include "glxlog.h"
    33 #include "glxlog.h"
    34 
    34 
    35 #include <drmuihandling.h>
       
    36 using namespace DRM;
       
    37 
       
    38 const TInt KGlxDRMThumbnailHeight = 120;
    35 const TInt KGlxDRMThumbnailHeight = 120;
    39 const TInt KGlxDRMThumbnailWidth = 90;
    36 const TInt KGlxDRMThumbnailWidth = 90;
    40 
    37 
    41 // ======== MEMBER FUNCTIONS ========
    38 // ======== MEMBER FUNCTIONS ========
    42 
    39 
   169     {
   166     {
   170     TRACER("CGlxDRMUtility::ItemRightsValidityCheckL(RFile)");
   167     TRACER("CGlxDRMUtility::ItemRightsValidityCheckL(RFile)");
   171 #ifdef _DEBUG
   168 #ifdef _DEBUG
   172     TTime startTime;
   169     TTime startTime;
   173     startTime.HomeTime();
   170     startTime.HomeTime();
   174 #endif 
   171 #endif         
   175     TFileName fileName(KNullDesC);
       
   176     fileName.Append(aFileHandle.FullName(fileName));
       
   177     if (iLastConsumedItemUri->Length() > 0)
       
   178         {
       
   179         if (fileName.CompareF(*iLastConsumedItemUri) == 0)
       
   180             {
       
   181             return ETrue;
       
   182             }
       
   183         }
       
   184     TBool rightsValid = EFalse;
   172     TBool rightsValid = EFalse;
   185     ContentAccess::TAttribute attrib =
   173     ContentAccess::TAttribute attrib =
   186         aCheckViewRights ? ContentAccess::ECanView : ContentAccess::ECanPlay;
   174         aCheckViewRights ? ContentAccess::ECanView : ContentAccess::ECanPlay;
   187 
   175 
   188     ContentAccess::CContent* content = ContentAccess::CContent::NewLC(
   176     ContentAccess::CContent* content = ContentAccess::CContent::NewLC(
   229 //============================================================================
   217 //============================================================================
   230 EXPORT_C TBool CGlxDRMUtility::DisplayItemRightsCheckL(RFile& aFileHandle,
   218 EXPORT_C TBool CGlxDRMUtility::DisplayItemRightsCheckL(RFile& aFileHandle,
   231         TBool aCheckViewRights)
   219         TBool aCheckViewRights)
   232     {
   220     {
   233     TRACER("CGlxDRMUtility::DisplayItemRightsCheckL(RFile)");
   221     TRACER("CGlxDRMUtility::DisplayItemRightsCheckL(RFile)");
   234     TFileName fileName(KNullDesC);
       
   235     fileName.Append(aFileHandle.FullName(fileName));
       
   236     // Allow to display if rights for a URI was just consumed (i.e. same as stored URI)
       
   237     if (iLastConsumedItemUri->Length() > 0)
       
   238         {
       
   239         if (fileName.CompareF(*iLastConsumedItemUri) == 0)
       
   240             {
       
   241             return ETrue;
       
   242             }
       
   243         }
       
   244 
       
   245     //Clear the stored uri
       
   246     ClearLastConsumedItemUriL();
       
   247 
       
   248     // Otherwise, check current rights for the URI of newly focused item
   222     // Otherwise, check current rights for the URI of newly focused item
   249     return ItemRightsValidityCheckL(aFileHandle, aCheckViewRights);
   223     return ItemRightsValidityCheckL(aFileHandle, aCheckViewRights);
   250     }
   224     }
   251 
   225 
   252 //============================================================================
   226 //============================================================================
   286 //============================================================================    
   260 //============================================================================    
   287 EXPORT_C TBool CGlxDRMUtility::ConsumeRightsL(RFile& aFileHandle)
   261 EXPORT_C TBool CGlxDRMUtility::ConsumeRightsL(RFile& aFileHandle)
   288     {
   262     {
   289     TRACER("CGlxDRMUtility::ConsumeRightsL(RFile)");
   263     TRACER("CGlxDRMUtility::ConsumeRightsL(RFile)");
   290     CData* data = CData::NewLC(aFileHandle, KDefaultContentObject(), EPeek);
   264     CData* data = CData::NewLC(aFileHandle, KDefaultContentObject(), EPeek);
   291 
       
   292     //When consuming rights for a URI, clear stored URI
       
   293     ClearLastConsumedItemUriL();
       
   294 
       
   295     TInt err = data->ExecuteIntent(ContentAccess::EView);
   265     TInt err = data->ExecuteIntent(ContentAccess::EView);
   296     TFileName fileName(KNullDesC);
       
   297     fileName.Append(aFileHandle.FullName(fileName));
       
   298 
       
   299     if (err == KErrNone)
       
   300         {
       
   301         //Update stored URI
       
   302         iLastConsumedItemUri = iLastConsumedItemUri->ReAllocL(fileName.Length());
       
   303         TPtr newPtr = iLastConsumedItemUri->Des();
       
   304         newPtr.Copy(fileName);
       
   305         }
       
   306 
       
   307     CleanupStack::PopAndDestroy(data);
   266     CleanupStack::PopAndDestroy(data);
   308     return (err == KErrNone);
   267     return (err == KErrNone);
   309     }
   268     }
   310 
   269 
   311 //============================================================================
   270 //============================================================================
   405 // ShowDRMDetailsPane
   364 // ShowDRMDetailsPane
   406 //============================================================================  
   365 //============================================================================  
   407 EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL(const TDesC& aUri)
   366 EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL(const TDesC& aUri)
   408     {
   367     {
   409     TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL(URI)");
   368     TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL(URI)");
   410     GLX_LOG_URI("CGlxDRMUtility::ShowDRMDetailsPaneL(%S)", &aUri);
   369     TRAPD( err, iDrmHelper->LaunchDetailsViewEmbeddedL( aUri ) );
   411     RFs fs;
   370     // if no rights ask user to re-activate
   412     User::LeaveIfError(fs.Connect());
   371     if (err == KErrCANoRights)
   413     CleanupClosePushL(fs);
   372         {
   414 
   373         HBufC* buf = aUri.AllocLC();
   415     RFile64 drmFile;
   374         iDrmHelper->ActivateContentL(*buf);
   416     User::LeaveIfError(drmFile.Open(fs, aUri, EFileRead
   375         CleanupStack::PopAndDestroy(buf);
   417             | EFileShareReadersOrWriters));
   376         }
   418     CleanupClosePushL(drmFile);
   377 
   419 
       
   420     CDrmUiHandling* drmUiHandler = CDrmUiHandling::NewLC();
       
   421     TRAP_IGNORE(drmUiHandler->ShowDetailsViewL(drmFile));
       
   422     CleanupStack::PopAndDestroy(drmUiHandler);
       
   423 
       
   424     CleanupStack::PopAndDestroy(&drmFile);
       
   425     CleanupStack::PopAndDestroy(&fs);
       
   426     }
   378     }
   427 
   379 
   428 //============================================================================
   380 //============================================================================
   429 // ShowDRMDetailsPane
   381 // ShowDRMDetailsPane
   430 //============================================================================  
   382 //============================================================================  
   431 EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL(RFile& aFileHandle)
   383 EXPORT_C void CGlxDRMUtility::ShowDRMDetailsPaneL(RFile& aFileHandle)
   432     {
   384     {
   433     TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL(RFile)");
   385     TRACER("CGlxDRMUtility::ShowDRMDetailsPaneL(RFile)");
   434     CDrmUiHandling* drmUiHandler = CDrmUiHandling::NewLC();
   386     TRAPD( err, iDrmHelper->LaunchDetailsViewEmbeddedL( aFileHandle ) );
   435     TRAP_IGNORE(drmUiHandler->ShowDetailsViewL(aFileHandle));
   387     // if no rights ask user to re-activate
   436     CleanupStack::PopAndDestroy(drmUiHandler);
   388     if (err == KErrCANoRights)
       
   389         {
       
   390         //need to check if we need to handle.
       
   391         }
   437     }
   392     }
   438 
   393 
   439 //============================================================================
   394 //============================================================================
   440 // IsForwardLockedL
   395 // IsForwardLockedL
   441 //============================================================================  
   396 //============================================================================