diff -r 95243422089a -r 491b3ed49290 filemanager/View/src/CFileManagerFullOmaDrmInfo.cpp --- a/filemanager/View/src/CFileManagerFullOmaDrmInfo.cpp Thu Aug 19 09:42:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,997 +0,0 @@ -/* -* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0"" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Gets the item DRM information -* -*/ - - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include -#include -#include "CFileManagerFullOmaDrmInfo.h" - -// CONSTANTS -_LIT( KSeparator, "\t" ); -#ifndef RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM -_LIT( KDateFormat1, "%1" ); -_LIT( KDateFormat2, "%2" ); -_LIT( KDateFormat3, "%3" ); -_LIT( KTimeFormatBefore, " %-B %J:%T" ); -_LIT( KTimeFormatAfter, " %J:%T %+B" ); -_LIT( KEmptyChar, " " ); -const TInt KDateStringLen = 20; - -const TUint KSecondSeparator = 1; -const TUint KThirdSeparator = 2; - - -const TInt KPlayRights = 0; -const TInt KDisplayRights = 1; -const TInt KExecuteRights = 2; -const TInt KPrintRights = 3; -#endif // RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM - - -// ============================ LOCAL FUNCTIONS ================================ - -// ----------------------------------------------------------------------------- -// AppendLabelAndDataToArrayL -// ----------------------------------------------------------------------------- -static void AppendLabelAndDataToArrayL( CDesCArray& aArray, - const TDesC& aLabel, - const TDesC& aData ) - { - HBufC* dataStr = HBufC::NewLC( aLabel.Length() + - KSeparator().Length() + - aData.Length() ); - - TPtr dataPtr( dataStr->Des() ); - dataPtr.Append( aLabel ); - dataPtr.Append( KSeparator ); - dataPtr.Append( aData ); - - AknTextUtils::LanguageSpecificNumberConversion( dataPtr ); - - aArray.AppendL( dataPtr ); - - CleanupStack::PopAndDestroy( dataStr ); - } - -#ifndef RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM -// ----------------------------------------------------------------------------- -// ResetAndDestroy -// ----------------------------------------------------------------------------- -static void ResetAndDestroy( TAny* aPtr ) - { - RPointerArray< CDRMHelperRightsConstraints >* array = - static_cast< RPointerArray* >( aPtr ); - array->ResetAndDestroy(); - array->Close(); - } - -// ----------------------------------------------------------------------------- -// IsFutureRights -// ----------------------------------------------------------------------------- -static TBool IsFutureRights( - RPointerArray& aRightsArray ) - { - TBool ret( EFalse ); - const TInt count( aRightsArray.Count() ); - for( TInt i = 0 ; i < count ; ++i ) - { - CDRMRightsConstraints* rights = aRightsArray[i]; - TUint32 expiration( 0 ); - TUint32 constType( 0 ); - TInt topPriorityValue( CDRMRights::EInvalidRights ); - if( rights ) - { - TInt currentPriorityValue( rights->GetConstraintInfo( expiration, constType ) ); - if( currentPriorityValue > topPriorityValue ) - { - // priority is higher than previous rigths - topPriorityValue = currentPriorityValue; - if( CDRMRights::EFutureRights == expiration ) - { - ret = ETrue; - } - else - { - // no future rights - ret = EFalse; - } - } - } - } - return ret; - } - -// ----------------------------------------------------------------------------- -// DateTimeStringLC -// ----------------------------------------------------------------------------- -static HBufC* DateTimeStringLC( const TTime& aTime ) - { - TBuf dateStr; - TBuf timeStr; - TBuf dateStrFormat; - - // Localized date separator form - TLocale local; - dateStrFormat.Append( KDateFormat1 ); - dateStrFormat.Append( local.DateSeparator( KSecondSeparator ) ); - dateStrFormat.Append( KDateFormat2 ); - dateStrFormat.Append( local.DateSeparator( KThirdSeparator ) ); - dateStrFormat.Append( KDateFormat3 ); - aTime.FormatL( dateStr, dateStrFormat ); - - if ( local.AmPmSymbolPosition() == ELocaleBefore ) - { - aTime.FormatL( timeStr, KTimeFormatBefore ); - } - else - { - aTime.FormatL( timeStr, KTimeFormatAfter ); - } - - HBufC* buf = HBufC::NewLC( dateStr.Length() + - KEmptyChar().Length() + - timeStr.Length() ); - TPtr ptrBuffer( buf->Des() ); - ptrBuffer.Append( dateStr ); - ptrBuffer.Append( KEmptyChar ); - ptrBuffer.Append( timeStr ); - - return buf; - } - -// ----------------------------------------------------------------------------- -// DateTimeL -// ----------------------------------------------------------------------------- -static void DateTimeL( CDesCArray& aArray, - const TTime& aTime, - TInt aResourceId, - const TDesC& aType ) - { - HBufC* label = StringLoader::LoadLC( aResourceId, aType ); - HBufC* dateTime = DateTimeStringLC( aTime ); - - AppendLabelAndDataToArrayL( aArray, *label, *dateTime ); - - CleanupStack::PopAndDestroy( dateTime ); - CleanupStack::PopAndDestroy( label ); - } - -// ----------------------------------------------------------------------------- -// FillCounterInfoL -// ----------------------------------------------------------------------------- -static void FillCounterInfoL( CDesCArray& aArray, - CDRMHelperRightsConstraints& aRights, - const TDesC& aType ) - { - TUint32 count( 0 ); - TUint32 timedCount( 0 ); - TUint32 ignore1( 0 ); - TUint32 ignore2( 0 ); - TTimeIntervalSeconds ignore3( 0 ); - TInt err( KErrNone ); - - TRAPD( errCount, aRights.GetCountersL( count, ignore1 ) ); - TRAPD( errTimedCount, aRights.GetTimedCountL( timedCount, ignore2, - ignore3 ) ); - - if ( errCount == KErrNone && errTimedCount == KErrNone ) - { - // Both counts present, use minimum - count = Min( count, timedCount ); - err = KErrNone; - } - else if ( errCount == KErrNone ) - { - // Use count - err = KErrNone; - } - else if ( errTimedCount == KErrNone ) - { - // Use timed count - count = timedCount; - err = KErrNone; - } - else - { - // Neither regular nor timed count constraint - // present, return error - err = KErrNotFound; - } - - if ( err == KErrNone ) - { - // "Times left (%U)" - HBufC* label = - StringLoader::LoadLC( R_QTN_DRM_MGR_DET_UTL_X, aType ); - - HBufC* data = NULL; - - if ( count == 1 ) - { - // "1 count" - data = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_1_COUNT ); - } - else - { - // "%N counts" - data = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_N_COUNTS, count ); - } - - AppendLabelAndDataToArrayL( aArray, *label, *data ); - - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - } - } - -// ----------------------------------------------------------------------------- -// SplitTime -// ----------------------------------------------------------------------------- -// -static void SplitTime( const TTimeIntervalSeconds& aInterval, - TInt& aIntYrs, TInt& aIntMon, TInt& aIntDay, - TInt& aIntHrs, TInt& aIntMin, TInt& aIntSec ) - { - const TInt KSecsInMin( 60 ); - const TInt KSecsInHour( KSecsInMin * 60 ); - const TInt KSecsInDay( KSecsInHour * 24 ); - - // includes leap year day - const TInt KLastMonthIndex = 11; - const TInt KMaxDaysInMonths[] = { - 31, 62, 92, 123, 153, 184, - 215, 245, 276, 306, 337, 366 }; - - // calculate full days - TInt temp( aInterval.Int() / KSecsInDay ); - - // calculate full years, calculate without leap year for user to get the - // longest time possible - aIntYrs = temp / ( KMaxDaysInMonths[KLastMonthIndex] - 1 ); - - // calc remainder days - temp = temp % ( KMaxDaysInMonths[KLastMonthIndex] - 1 ); - - aIntMon = 0; - - TInt i( 0 ); - if ( temp >= KMaxDaysInMonths[0] ) - { - for ( i = 0; i < KLastMonthIndex; i++ ) - { - // found correct amount of months - if ( temp >= KMaxDaysInMonths[i] && temp < KMaxDaysInMonths[i+1] ) - { - // i now contains amount of full months (+1 because of table index) - aIntMon = i + 1; - break; - } - } - } - - // calc remainder days = allSecs - secsInFullYears - secsInFullMonts - if( temp >= KMaxDaysInMonths[i] ) - { - aIntDay = temp - KMaxDaysInMonths[i]; - } - else - { - aIntDay = temp; - } - - // calculate remainder secs - temp = aInterval.Int() % KSecsInDay; - - aIntHrs = temp / KSecsInHour; - - // calculate remainder secs - temp = temp % KSecsInHour; - - aIntMin = temp / KSecsInMin; - - // calculate remainder secs - aIntSec = temp % KSecsInMin; - } - -// ----------------------------------------------------------------------------- -// AddSinglePartOfTimeL -// ----------------------------------------------------------------------------- -// -static void AddSinglePartOfTimeL( TInt aNumOfElements, - TInt aResourceIdSingle, - TInt aResourceIdOneFinal, - TInt aResourceIdTwoFour, - TInt aResourceIdFiveZero, - CDesCArrayFlat* aStrings ) - { - const TInt KDigitFive = 5; - const TInt KDigitNine = 9; - const TInt KDigitTen = 10; - const TInt KDigitEleven = 11; - const TInt KDigitFourTeen = 14; - const TInt KDigitHundred = 100; - HBufC* stringHolder = NULL; - TInt finalOneDigit( aNumOfElements % KDigitTen ); - TInt finalTwoDigits( aNumOfElements % KDigitHundred ); - - if ( aNumOfElements == 1 ) - { - stringHolder = StringLoader::LoadLC( aResourceIdSingle ); - } - else if ( finalOneDigit == 1 && finalTwoDigits != KDigitEleven ) - { - stringHolder = StringLoader::LoadLC( aResourceIdOneFinal, - aNumOfElements ); - } - else if ( finalOneDigit == 0 || - ( finalOneDigit >= KDigitFive && finalOneDigit <= KDigitNine ) || - ( finalTwoDigits >= KDigitEleven && finalTwoDigits <= KDigitFourTeen ) ) - { - stringHolder = StringLoader::LoadLC( aResourceIdFiveZero, - aNumOfElements ); - } - else - { - stringHolder = StringLoader::LoadLC( aResourceIdTwoFour, - aNumOfElements ); - } - - if ( aStrings ) - { - aStrings->AppendL( *stringHolder ); - } - - CleanupStack::PopAndDestroy ( stringHolder ); - } - -// ----------------------------------------------------------------------------- -// AddPartsOfTimeLC -// ----------------------------------------------------------------------------- -// -static HBufC* AddPartsOfTimeLC( TInt aIntYrs, TInt aIntMon, TInt aIntDay, - TInt aIntHrs, TInt aIntMin, TInt aIntSec ) - { - // Only the two most meaningful data will be showed - TInt numOfData( 0 ); - const TInt KMaxDataItems = 2; - - CDesCArrayFlat* strings = new ( ELeave ) CDesCArrayFlat( KMaxDataItems ); - CleanupStack::PushL( strings ); - - if ( aIntYrs > 0 ) - { - AddSinglePartOfTimeL( aIntYrs, - R_QTN_DRM_NBR_OF_YEARS_ONE, - R_QTN_DRM_NBR_OF_YEARS_ONE_FINAL, - R_QTN_DRM_NBR_OF_YEARS_TWO_FOUR, - R_QTN_DRM_NBR_OF_YEARS_FIVE_ZERO, - strings ); - numOfData++; - } - - if ( aIntMon > 0 ) - { - // Second type not provided because 11 is the maximum - AddSinglePartOfTimeL( aIntMon, - R_QTN_DRM_NBR_OF_MONTHS_ONE, - 0, - R_QTN_DRM_NBR_OF_MONTHS_TWO_FOUR, - R_QTN_DRM_NBR_OF_MONTHS_FIVE_ZERO, - strings ); - numOfData++; - } - - // Only if years or months were missing - if ( aIntDay > 0 && numOfData < KMaxDataItems ) - { - AddSinglePartOfTimeL( aIntDay, - R_QTN_DRM_NBR_OF_DAYS_ONE, - R_QTN_DRM_NBR_OF_DAYS_ONE_FINAL, - R_QTN_DRM_NBR_OF_DAYS_TWO_FOUR, - R_QTN_DRM_NBR_OF_DAYS_FIVE_ZERO, - strings ); - numOfData++; - } - - if ( aIntHrs > 0 && numOfData < KMaxDataItems ) - { - AddSinglePartOfTimeL( aIntHrs, - R_QTN_DRM_NBR_OF_HOURS_ONE, - R_QTN_DRM_NBR_OF_HOURS_ONE_FINAL, - R_QTN_DRM_NBR_OF_HOURS_TWO_FOUR, - R_QTN_DRM_NBR_OF_HOURS_FIVE_ZERO, - strings ); - numOfData++; - } - - if ( aIntMin > 0 && numOfData < KMaxDataItems ) - { - AddSinglePartOfTimeL( aIntMin, - R_QTN_DRM_NBR_OF_MINS_ONE, - R_QTN_DRM_NBR_OF_MINS_ONE_FINAL, - R_QTN_DRM_NBR_OF_MINS_TWO_FOUR, - R_QTN_DRM_NBR_OF_MINS_FIVE_ZERO, - strings ); - numOfData++; - } - - // If interval is 0, then it shows "0 seconds" anyway - if ( ( aIntSec > 0 && numOfData < KMaxDataItems ) || numOfData == 0 ) - { - AddSinglePartOfTimeL( aIntSec, - R_QTN_DRM_NBR_OF_SECS_ONE, - R_QTN_DRM_NBR_OF_SECS_ONE_FINAL, - R_QTN_DRM_NBR_OF_SECS_TWO_FOUR, - R_QTN_DRM_NBR_OF_SECS_FIVE_ZERO, - strings ); - numOfData++; - } - - HBufC* stringHolder = NULL; - if ( numOfData == 1 ) - { - stringHolder = StringLoader::LoadL( R_QTN_DRM_MGR_DET_INTER, - strings->MdcaPoint(0) ); - } - else - { - stringHolder = StringLoader::LoadL( R_QTN_DRM_MGR_DET_INTER_TWO, - *strings ); - } - - CleanupStack::PopAndDestroy( strings ); - - CleanupStack::PushL( stringHolder ); - - return stringHolder; - } - -// ----------------------------------------------------------------------------- -// FillUsageTimeLeftInfoL -// ----------------------------------------------------------------------------- -static void FillUsageTimeLeftInfoL( CDesCArray& aArray, - const TTimeIntervalSeconds& aInterval, - const TDesC& aType, - TBool aIsAccumulatedTime ) - { - TInt years( 0 ); - TInt months( 0 ); - TInt days( 0 ); - TInt hours( 0 ); - TInt minutes( 0 ); - TInt seconds( 0 ); - HBufC* label = NULL; - HBufC* data = NULL; - - if ( aIsAccumulatedTime ) - { - // "Usage time left" - label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_ACCUM_TIME_LEFT ); - } - else - { - // "Time left (%U)" - label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_UDL_X, aType ); - } - - SplitTime( aInterval, years, months, days, hours, minutes, seconds ); - data = AddPartsOfTimeLC( years, months, days, hours, minutes, seconds ); - - AppendLabelAndDataToArrayL( aArray, *label, *data ); - - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - } - -// ----------------------------------------------------------------------------- -// FillIntervalInfoL -// ----------------------------------------------------------------------------- -static void FillIntervalInfoL( CDesCArray& aArray, - CDRMHelperRightsConstraints& aRights, - const TDesC& aType ) - { - TTimeIntervalSeconds intervalSeconds( 0 ); - - TRAPD( err, aRights.GetIntervalL( intervalSeconds ) ); - - if ( err != KErrNotFound && err != KErrNone ) - { - User::Leave( err ); - } - - if ( err == KErrNone ) - { - TTime intervalStartTime( 0 ); - - TRAP( err, aRights.GetIntervalStartL( intervalStartTime ) ); - - if ( ( err != KErrNotFound ) && ( err != KErrNone ) ) - { - User::Leave( err ); - } - - if ( err == KErrNotFound ) - { - // "Times status (%U)" - HBufC* label = - StringLoader::LoadLC( R_QTN_DRM_MGR_DET_UTS_X, aType ); - - // "Not activated" - HBufC* data = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_NOT_ACT ); - - AppendLabelAndDataToArrayL( aArray, *label, *data ); - - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - - // "Time left (%U)" - FillUsageTimeLeftInfoL( aArray, intervalSeconds, aType, EFalse ); - } - else - { - TTime endTime( intervalStartTime ); - endTime += intervalSeconds; - - // "Valid from (%U)" - DateTimeL( aArray, intervalStartTime, - R_QTN_DRM_MGR_DET_RVF_X, aType ); - - // "Valid until (%U)" - DateTimeL( aArray, endTime, R_QTN_DRM_MGR_DET_RVT_X, aType ); - } - } - } - -// ----------------------------------------------------------------------------- -// FillTimeInfoL -// ----------------------------------------------------------------------------- -static void FillTimeInfoL( CDesCArray& aArray, - CDRMHelperRightsConstraints& aRights, - const TDesC& aType ) - { - TTime startTime; - TRAPD( err, aRights.GetStartTimeL( startTime ) ); - if ( err != KErrNotFound && err != KErrNone ) - { - User::Leave( err ); - } - if ( err == KErrNone ) - { - // "Valid from (%U)" - DateTimeL( aArray, startTime, R_QTN_DRM_MGR_DET_RVF_X, aType ); - } - - TTime endTime; - TRAP( err, aRights.GetEndTimeL( endTime ) ); - if ( err != KErrNotFound && err != KErrNone ) - { - User::Leave( err ); - } - if ( err == KErrNone ) - { - // "Valid until (%U)" - DateTimeL( aArray, endTime, R_QTN_DRM_MGR_DET_RVT_X, aType ); - } - } - -// ----------------------------------------------------------------------------- -// FillAccumulatedTimeInfoL -// ----------------------------------------------------------------------------- -static void FillAccumulatedTimeInfoL( CDesCArray& aArray, - CDRMHelperRightsConstraints& aRights, - const TDesC& aType ) - { - TTimeIntervalSeconds accumSeconds( 0 ); - TRAPD( err, aRights.GetAccumulatedTimeL( accumSeconds )); - if ( err != KErrNotFound && err != KErrNone ) - { - User::Leave( err ); - } - if ( err == KErrNone ) - { - // "Usage time left" - FillUsageTimeLeftInfoL( aArray, accumSeconds, aType, ETrue ); - } - } - -// ----------------------------------------------------------------------------- -// FillDrmInfoL -// ----------------------------------------------------------------------------- -static void FillDrmInfoL( CDesCArray& aArray, - CDRMHelperRightsConstraints* aRights, - TInt aResourceId ) - { - // Check if no rights at all - if ( !aRights ) - { - return; - } - - // Rights type is either "Play", "Display", "Execute" or "Print" - HBufC* type = StringLoader::LoadLC( aResourceId ); - - // Check if full rights - if ( aRights->FullRights() ) - { - // "Rights (%U)" - HBufC* label = - StringLoader::LoadLC( R_QTN_DRM_MGR_DET_FULL_X, *type ); - - // "Unlimited" - HBufC* data = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_UNLIMITED ); - - AppendLabelAndDataToArrayL( aArray, *label, *data ); - - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - CleanupStack::PopAndDestroy( type ); - return; // full rights -> return - } - - // Get detailed counter constraint information - FillCounterInfoL( aArray, *aRights, *type ); - - // Get detailed interval constraint information (start time + duration) - FillIntervalInfoL( aArray, *aRights, *type ); - - // Get detailed time constraint information (start time + end time) - FillTimeInfoL( aArray, *aRights, *type ); - - // Get detailed accumulated time constraint information (duration) - FillAccumulatedTimeInfoL( aArray, *aRights, *type ); - - CleanupStack::PopAndDestroy( type ); - } - -#endif // RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CFileManagerFullOmaDrmInfo -// C++ default constructor. -// ----------------------------------------------------------------------------- -// -CFileManagerFullOmaDrmInfo::CFileManagerFullOmaDrmInfo() - { - } - -// ----------------------------------------------------------------------------- -// CFileManagerFullOmaDrmInfo::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CFileManagerFullOmaDrmInfo* CFileManagerFullOmaDrmInfo::NewL( CDesCArray& aArray, - const TDesC& aFullPath, - CCoeEnv& aCoeEnv ) - { - CFileManagerFullOmaDrmInfo* self = NewLC( aArray, aFullPath, aCoeEnv ); - CleanupStack::Pop( self ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CFileManagerFullOmaDrmInfo::NewLC -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -CFileManagerFullOmaDrmInfo* CFileManagerFullOmaDrmInfo::NewLC( CDesCArray& aArray, - const TDesC& aFullPath, - CCoeEnv& aCoeEnv ) - { - CFileManagerFullOmaDrmInfo* self = new( ELeave ) CFileManagerFullOmaDrmInfo(); - - CleanupStack::PushL( self ); - self->ConstructL( aArray, aFullPath, aCoeEnv ); - - return self; - } - -// ----------------------------------------------------------------------------- -// CFileManagerFullOmaDrmInfo::~CFileManagerFullOmaDrmInfo -// Destructor -// ----------------------------------------------------------------------------- -// -CFileManagerFullOmaDrmInfo::~CFileManagerFullOmaDrmInfo() - { - } - -#ifndef RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM - -// ----------------------------------------------------------------------------- -// CImageInfoPopupList::ConstructL -// ----------------------------------------------------------------------------- -// -void CFileManagerFullOmaDrmInfo::ConstructL( CDesCArray& aItemArray, - const TDesC& aFileName, - CCoeEnv& aCoeEnv ) - { - TBool expired ( EFalse ); - TBool sendingAllowed( EFalse ); - RPointerArray tempArr; - TCleanupItem cleanupItem( ResetAndDestroy, &tempArr ); - CleanupStack::PushL( cleanupItem ); - tempArr.AppendL( NULL ); // Play - tempArr.AppendL( NULL ); // Display - tempArr.AppendL( NULL ); // Execute - tempArr.AppendL( NULL ); // Print - - CDRMHelper* drmHelper = CDRMHelper::NewLC( aCoeEnv ); - - TRAPD( err, drmHelper->GetRightsDetailsL( - aFileName, - 0, // Details for everything - expired, - sendingAllowed, - tempArr[KPlayRights], - tempArr[KDisplayRights], - tempArr[KExecuteRights], - tempArr[KPrintRights] ) ); - TBool future( EFalse ); - if( expired || err == CDRMRights::ENoRights ) - { - // Check future rights - RPointerArray fArr; - TCleanupItem cleanupItem( ResetAndDestroy, &fArr ); - CleanupStack::PushL( cleanupItem ); - fArr.AppendL( NULL ); // Play - fArr.AppendL( NULL ); // Display - fArr.AppendL( NULL ); // Execute - fArr.AppendL( NULL ); // Print - - TBool tmp( EFalse ); - TBool tmp2( EFalse ); - TRAP( err, drmHelper->GetRightsDetailsL( aFileName, - 0, - tmp, - tmp2, - fArr[KPlayRights], - fArr[KDisplayRights], - fArr[KExecuteRights], - fArr[KPrintRights] ) ); - - if( err == KErrNone || err == CDRMRights::ENoRights ) - { - future = IsFutureRights( fArr ); - } - CleanupStack::PopAndDestroy( &fArr ); - - ERROR_LOG2( "CFileManagerFullOmaDrmInfo::ConstructL-err:%d,future:%d", - err, future ) - } - CleanupStack::PopAndDestroy( drmHelper ); - - ERROR_LOG3( "CFileManagerFullOmaDrmInfo::ConstructL-err:%d,expired:%d,sendingAllowed:%d", - err, expired, sendingAllowed ) - - // Check if the rights are valid or expired - // Should probably be able to append this information also when the - // rights have expired. - // "Status" - HBufC* label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_STAT ); - HBufC* data = NULL; - // "Valid" or "Expired" or "Not valid yet" - TInt resId( R_QTN_DRM_MGR_DET_VALID ); - if( future ) - { - resId = R_QTN_DRM_MGR_DET_NOT_VALID_YET; - } - else if ( expired || err == CDRMRights::ENoRights ) - { - resId = R_QTN_DRM_MGR_DET_EXP; - } - data = StringLoader::LoadLC( resId ); - AppendLabelAndDataToArrayL( aItemArray, *label, *data ); - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - - // "Play" - FillDrmInfoL( aItemArray, tempArr[KPlayRights], R_QTN_DRM_MGR_DET2_PLAY ); - - // "Display" - FillDrmInfoL( aItemArray, tempArr[KDisplayRights], R_QTN_DRM_MGR_DET2_DISPLAY ); - - // "Execute" - FillDrmInfoL( aItemArray, tempArr[KExecuteRights], R_QTN_DRM_MGR_DET2_EXECUTE ); - - // "Print" - FillDrmInfoL( aItemArray, tempArr[KPrintRights], R_QTN_DRM_MGR_DET2_PRINT ); - - CleanupStack::PopAndDestroy( &tempArr ); - - // Check whether sending is allowed or not - - // "Sending" - label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_CS ); - data = NULL; - // "Allowed" or "Forbidden" - resId = ( sendingAllowed ? R_QTN_DRM_MGR_DET_ALLOWED - : R_QTN_DRM_MGR_DET_FORBID ); - data = StringLoader::LoadLC( resId ); - AppendLabelAndDataToArrayL( aItemArray, *label, *data ); - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - } - -#else // RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM - -// ----------------------------------------------------------------------------- -// CImageInfoPopupList::ConstructL -// ----------------------------------------------------------------------------- -// -void CFileManagerFullOmaDrmInfo::ConstructL( CDesCArray& aItemArray, - const TDesC& /*aFileName*/, - CCoeEnv& /*aCoeEnv*/ ) - { - /* - TBool expired ( EFalse ); - TBool sendingAllowed( EFalse ); - RPointerArray tempArr; - TCleanupItem cleanupItem( ResetAndDestroy, &tempArr ); - CleanupStack::PushL( cleanupItem ); - tempArr.AppendL( NULL ); // Play - tempArr.AppendL( NULL ); // Display - tempArr.AppendL( NULL ); // Execute - tempArr.AppendL( NULL ); // Print - - CDRMHelper* drmHelper = CDRMHelper::NewLC( aCoeEnv ); - - TRAPD( err, drmHelper->GetRightsDetailsL( - aFileName, - 0, // Details for everything - expired, - sendingAllowed, - tempArr[KPlayRights], - tempArr[KDisplayRights], - tempArr[KExecuteRights], - tempArr[KPrintRights] ) ); - TBool future( EFalse ); - if( expired || err == CDRMRights::ENoRights ) - { - // Check future rights - RPointerArray fArr; - TCleanupItem cleanupItem( ResetAndDestroy, &fArr ); - CleanupStack::PushL( cleanupItem ); - fArr.AppendL( NULL ); // Play - fArr.AppendL( NULL ); // Display - fArr.AppendL( NULL ); // Execute - fArr.AppendL( NULL ); // Print - - TBool tmp( EFalse ); - TBool tmp2( EFalse ); - TRAP( err, drmHelper->GetRightsDetailsL( aFileName, - 0, - tmp, - tmp2, - fArr[KPlayRights], - fArr[KDisplayRights], - fArr[KExecuteRights], - fArr[KPrintRights] ) ); - - if( err == KErrNone || err == CDRMRights::ENoRights ) - { - future = IsFutureRights( fArr ); - } - CleanupStack::PopAndDestroy( &fArr ); - - ERROR_LOG2( "CFileManagerFullOmaDrmInfo::ConstructL-err:%d,future:%d", - err, future ) - } - CleanupStack::PopAndDestroy( drmHelper ); - - ERROR_LOG3( "CFileManagerFullOmaDrmInfo::ConstructL-err:%d,expired:%d,sendingAllowed:%d", - err, expired, sendingAllowed ) - - if ( tempArr[KPlayRights] || - tempArr[KDisplayRights] || - tempArr[KExecuteRights] || - tempArr[KPrintRights] ) - { - */ - // Add link to display rights details - _LIT( KLinkTagStart, "" ); - _LIT( KLinkTagEnd, "" ); - - HBufC* linkTitle = StringLoader::LoadLC( R_QTN_FMGR_DRM_DET_LINK ); - HBufC* linkText = StringLoader::LoadLC( R_QTN_FMGR_DRM_DET_LINK_VIEW ); - HBufC* dataStr = HBufC::NewLC( KLinkTagStart().Length() + - linkText->Length() + - KLinkTagEnd().Length() ); - TPtr dataPtr( dataStr->Des() ); - dataPtr.Append( KLinkTagStart ); - dataPtr.Append( *linkText ); - dataPtr.Append( KLinkTagEnd ); - AppendLabelAndDataToArrayL( aItemArray, *linkTitle, *dataStr ); - CleanupStack::PopAndDestroy( dataStr ); - CleanupStack::PopAndDestroy( linkText ); - CleanupStack::PopAndDestroy( linkTitle ); - /* - } - else - { - // Add forward-lock details - // "Status" - HBufC* label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_STAT ); - HBufC* data = NULL; - // "Valid" or "Expired" or "Not valid yet" - TInt resId( R_QTN_DRM_MGR_DET_VALID ); - if( future ) - { - resId = R_QTN_DRM_MGR_DET_NOT_VALID_YET; - } - else if ( expired || err == CDRMRights::ENoRights ) - { - resId = R_QTN_DRM_MGR_DET_EXP; - } - data = StringLoader::LoadLC( resId ); - AppendLabelAndDataToArrayL( aItemArray, *label, *data ); - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - - // "Sending" - label = StringLoader::LoadLC( R_QTN_DRM_MGR_DET_CS ); - data = NULL; - // "Allowed" or "Forbidden" - resId = ( sendingAllowed ? R_QTN_DRM_MGR_DET_ALLOWED - : R_QTN_DRM_MGR_DET_FORBID ); - data = StringLoader::LoadLC( resId ); - AppendLabelAndDataToArrayL( aItemArray, *label, *data ); - CleanupStack::PopAndDestroy( data ); - CleanupStack::PopAndDestroy( label ); - } - - CleanupStack::PopAndDestroy( &tempArr ); - */ - } - -// ----------------------------------------------------------------------------- -// CImageInfoPopupList::ViewDetailsL -// ----------------------------------------------------------------------------- -// -void CFileManagerFullOmaDrmInfo::ViewDetailsL( - const TDesC& aFileName, - DRM::CDrmUiHandling* aUiHandling ) - { - RFs fs; - User::LeaveIfError( fs.Connect() ); - CleanupClosePushL( fs ); - - RFile64 drmFile; - User::LeaveIfError( drmFile.Open( - fs, aFileName, EFileRead | EFileShareReadersOrWriters ) ); - - CleanupClosePushL( drmFile ); - - TRAPD( err, aUiHandling->ShowDetailsViewL( drmFile ) ); - - CleanupStack::PopAndDestroy( &drmFile ); - CleanupStack::PopAndDestroy( &fs ); - - } - -#endif // RD_DRM_COMMON_INTERFACE_FOR_OMA_AND_WMDRM - -// End of file