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 //============================================================================ |