diff -r 1882882c7f9c -r e52958d06c29 svgtviewer/SvgtViewerPlugin/SvgtFileViewDetailsSrc/svgtfileviewdetails.cpp --- a/svgtviewer/SvgtViewerPlugin/SvgtFileViewDetailsSrc/svgtfileviewdetails.cpp Tue May 25 12:28:38 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,904 +0,0 @@ -/* -* Copyright (c) 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: Implementation of the CSvgtFileViewDetailsDialog. -* -*/ - - - -// INCLUDE FILES -#include "svgtfileviewdetails.h" - -#include -#include -#include -#include -#include // KMaxDataTypeLength -#include -#include -#include -#include -#include -#include - -#include - -_LIT(KResourceFileName,"svgtfileviewdetails.rsc"); - -const TInt KSizeStringLengthSix = 6; -const TInt KSizeStringLengthFive = 5; -const TInt KSizeStringLengthFour = 4; -const TInt KSizeStringLengthThree = 3; - -const TInt KValBufferLength = 512; -const TInt KTimeCount = 2; -const TInt KArrayGranularity = 2; -const TInt KDecimalCount = 2; - -const TInt KOneDigit1 = 1; -const TInt KOneDigit5 = 5; -const TInt KOneDigit9 = 9; -const TInt KTwoDigit11 = 11; -const TInt KTwoDigit14 = 14; - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CSvgtFileDetails::CSvgtFileDetails -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CSvgtFileDetails::CSvgtFileDetails() - : iUrl(NULL), iFormat(NULL), - iDRMExpireConstraint( ESVGTNone ) //Initialize with no constraints - { - } - -// ----------------------------------------------------------------------------- -// CSvgtFileDetails::~CSvgtFileDetails -// Destructor -// ----------------------------------------------------------------------------- -// -CSvgtFileDetails::~CSvgtFileDetails() - { - delete iUrl; - delete iFormat; - } - - -// CONSTANTS - - -_LIT(KDataTypeSvgt,"svg"); - -const TInt KFileSizeOneKilobyte = 1024; -const TInt KThousandNotKilobyte = 1000; -const TInt KMaxTimeLength = 36; - -// For meta data -_LIT( KSpace, " "); - -// Language specific time format -const TInt KOneDigit = 10; -const TInt KTwoDigits = 100; - - -// ============================ MEMBER FUNCTIONS =============================== - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::CSvgtFileViewDetailsDialog -// C++ default constructor can NOT contain any code, that -// might leave. -// ----------------------------------------------------------------------------- -// -CSvgtFileViewDetailsDialog::CSvgtFileViewDetailsDialog() - { - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::ConstructL -// Symbian 2nd phase constructor can leave. -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::ConstructL() - { - iListBox = new (ELeave) CAknDoublePopupMenuStyleListBox(); - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::NewL -// Two-phased constructor. -// ----------------------------------------------------------------------------- -// -EXPORT_C CSvgtFileViewDetailsDialog* CSvgtFileViewDetailsDialog::NewL() - { - CSvgtFileViewDetailsDialog* self = new( ELeave ) CSvgtFileViewDetailsDialog; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::~CSvgtFileViewDetailsDialog -// Destructor -// ----------------------------------------------------------------------------- -// -CSvgtFileViewDetailsDialog::~CSvgtFileViewDetailsDialog() - { - delete iListBox; - iEnv->DeleteResourceFile( iResOffset ); //removing the resource file for enviornment - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::ExecuteLD -// ----------------------------------------------------------------------------- -// -EXPORT_C void CSvgtFileViewDetailsDialog::ExecuteLD( RFile& aFileHandle ) - { - CleanupStack::PushL( this ); - CSvgtFileDetails* fileDetails = new (ELeave) CSvgtFileDetails(); - CleanupStack::PushL( fileDetails ); - - AddResourceFileToEnvL(); - - // Creates a handle to content handled via CAF - CContent *content = CContent::NewLC( aFileHandle ); - content->GetAttribute( EIsProtected, fileDetails->iDrmProtected ); - CleanupStack::PopAndDestroy( content ); - - if ( fileDetails->iDrmProtected ) - { - // drm data - FetchDrmDataL( aFileHandle, fileDetails ); - } - - // recognize file and get format - TBuf format(KDataTypeSvgt); - fileDetails->iFormat = format.AllocL(); - - // creation time - aFileHandle.Modified(fileDetails->iTime); - - // Convert from UTC to local time - RTz lTz; - // Connect to TimeZone Server - User::LeaveIfError( lTz.Connect() ); - CleanupClosePushL( lTz ); - - // Create Util Class - CTzConverter* lTzConverterPtr = CTzConverter::NewL( lTz ); - - CleanupStack::PushL( lTzConverterPtr ); - // Perform conversion to local time - User::LeaveIfError( lTzConverterPtr->ConvertToLocalTime( fileDetails->iTime ) ); - - CleanupStack::PopAndDestroy( 2 ); // lTzConverterPtr, lTz - - // file size - aFileHandle.Size(fileDetails->iSize); - - // Show File Details Dialog - DoLaunchDialogL( fileDetails ); - - CleanupStack::PopAndDestroy( fileDetails ); - CleanupStack::PopAndDestroy( this ); - - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::DoLaunchDialog -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::DoLaunchDialogL(const CSvgtFileDetails* aFileDetails ) - { - CAknPopupList* popupList = CAknPopupList::NewL(iListBox, - R_AVKON_SOFTKEYS_OK_EMPTY__OK, - AknPopupLayouts::EMenuDoubleWindow); - CleanupStack::PushL(popupList); - - iListBox->ConstructL(popupList, EAknListBoxViewerFlags); - iListBox->CreateScrollBarFrameL(ETrue); - iListBox->ScrollBarFrame()->SetScrollBarVisibilityL( - CEikScrollBarFrame::EOff, CEikScrollBarFrame::EAuto); - - SetTitleL(popupList); - FillListBoxL(aFileDetails); - - CleanupStack::Pop( popupList ); - popupList->ExecuteLD(); - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::SetTitleL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::SetTitleL(CAknPopupList* aPopupList) const - { - HBufC* title = StringLoader::LoadLC(R_FILE_DETAILS); - if( aPopupList ) - { - aPopupList->SetTitleL(*title); - } - CleanupStack::PopAndDestroy( title ); - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::FillListBoxL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::FillListBoxL(const CSvgtFileDetails* aFileDetails) - { - CDesCArray* itemArray = - static_cast( iListBox->Model()->ItemTextArray() ); - - if( aFileDetails ) - { - if ( aFileDetails->iDrmProtected ) - { - MakeDrmItemsL(itemArray,aFileDetails); - } - - MakeUrlItemL(itemArray,aFileDetails); - MakeFormatItemL(itemArray,aFileDetails); - MakeDateItemL(itemArray,aFileDetails); - MakeTimeItemL(itemArray,aFileDetails); - MakeSizeItemL(itemArray,aFileDetails); - } - - iListBox->HandleItemAdditionL(); - iListBox->SetCurrentItemIndex(0); - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::AddItemToListBoxL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::AddItemToListBoxL(const TDesC& aHeading, - const TDesC& aValue, - CDesCArray* aItemArray) const - { - CDesCArrayFlat* items = new (ELeave) CDesCArrayFlat( KArrayGranularity ); - CleanupStack::PushL(items); - items->AppendL(aHeading); //First string (heading) - items->AppendL(aValue); //Second string (value) - HBufC* headingAndValue = - StringLoader::LoadLC( R_FILE_DETAILS_ROW_FORMAT, *items ); - if( aItemArray ) - { - aItemArray->AppendL(*headingAndValue); - } - - CleanupStack::PopAndDestroy( headingAndValue ); // headingAndValue - CleanupStack::PopAndDestroy( items ); // items - } - - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeUrlItemL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeUrlItemL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - - if ( aFileDetails && aFileDetails->iUrl ) - { - HBufC* heading = StringLoader::LoadLC(R_FILE_URL_HEADING); - AddItemToListBoxL(*heading,*aFileDetails->iUrl,aItemArray); - CleanupStack::PopAndDestroy( heading ); - } - } - - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeFormatItemL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeFormatItemL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - if ( aFileDetails && aFileDetails->iFormat ) - { - HBufC* heading = StringLoader::LoadLC(R_FILE_FORMAT_HEADING); - AddItemToListBoxL(*heading,*aFileDetails->iFormat,aItemArray); - CleanupStack::PopAndDestroy( heading ); - } - } - - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeSizeItemL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeSizeItemL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - - if ( aFileDetails && aFileDetails->iSize ) - { - TRealFormat format = TRealFormat(KMaxFileName, KDecimalCount); - TBuf sizeString; - HBufC* value = NULL; - HBufC* heading = StringLoader::LoadLC(R_FILE_SIZE_HEADING); - TReal size = aFileDetails->iSize; - - // Show bytes with 3 digits. If more digits needed, - // show size in kilobytes. - if ( size < KThousandNotKilobyte ) - { - sizeString.Num(size,format); - switch (sizeString.Length()) - { - case KSizeStringLengthSix: - sizeString = sizeString.Left( KSizeStringLengthThree ); - break; - case KSizeStringLengthFive: - sizeString = sizeString.Left( KSizeStringLengthFour ); - break; - default: - break; - } - value = StringLoader::LoadLC(R_FILE_SIZE_B,sizeString); - } - else - { - size = size/KFileSizeOneKilobyte; - sizeString.Num(size,format); - switch (sizeString.Length()) - { - case KSizeStringLengthSix: - sizeString = sizeString.Left( KSizeStringLengthThree ); - break; - case KSizeStringLengthFive: - sizeString = sizeString.Left( KSizeStringLengthFour ); - break; - default: - break; - } - value = StringLoader::LoadLC(R_FILE_SIZE_KB,sizeString); - } - TPtr textPtr = value->Des(); - LanguageSpecificNumberConversion( textPtr ); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading & value - } - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeDateItemL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeDateItemL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - - if ( ( aFileDetails ) && ( aFileDetails->iTime > TTime(0) )) - { - HBufC* heading = StringLoader::LoadLC(R_FILE_DATE_HEADING); - HBufC* dateFormatString = - StringLoader::LoadLC( R_QTN_DATE_USUAL_WITH_ZERO ); - TBuf date; - aFileDetails->iTime.FormatL(date,*dateFormatString); - LanguageSpecificNumberConversion( date ); - AddItemToListBoxL(*heading,date,aItemArray); - CleanupStack::PopAndDestroy( dateFormatString ); - CleanupStack::PopAndDestroy( heading ); // heading & dateFormatString - } - - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeTimeItemL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeTimeItemL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - if ( ( aFileDetails ) && ( aFileDetails->iTime > TTime(0))) - { - HBufC* heading = StringLoader::LoadLC( R_FILE_TIME_HEADING ); - HBufC* timeFormatString = - StringLoader::LoadLC( R_QTN_TIME_USUAL_WITH_ZERO ); - TBuf time; - aFileDetails->iTime.FormatL(time,*timeFormatString); - LanguageSpecificNumberConversion( time ); - AddItemToListBoxL(*heading,time,aItemArray); - CleanupStack::PopAndDestroy( timeFormatString ); - CleanupStack::PopAndDestroy( heading ); // heading & timeFormatString - } - } - - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeDrmItemsL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeDrmItemsL(CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails) const - { - - HBufC* rights = StringLoader::LoadLC(R_FILE_DRM_DISPLAY); - HBufC* heading = NULL; - HBufC* value = NULL; - - if ( aFileDetails ) - { - switch (aFileDetails->iDRMRightsStatus) - { - case ESVGTFull: - // status - heading = StringLoader::LoadLC(R_FILE_DRM_STAT); - value = StringLoader::LoadLC(R_FILE_DRM_VALID); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - // full rights - heading = StringLoader::LoadLC(R_FILE_DRM_FULL,*rights); - value = StringLoader::LoadLC(R_FILE_DRM_UNLIMITED); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - break; - case ESVGTRestricted: - case ESVGTPreview: - // status - heading = StringLoader::LoadLC(R_FILE_DRM_STAT); - value = StringLoader::LoadLC(R_FILE_DRM_VALID); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - // make rest of the drm items - MakeRestrictedDrmItemsL(rights,aItemArray,aFileDetails); - break; - case ESVGTMissing: - // status - heading = StringLoader::LoadLC(R_FILE_DRM_STAT); - value = StringLoader::LoadLC(R_FILE_DRM_EXP); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - break; - case ESVGTExpired: - // status - heading = StringLoader::LoadLC(R_FILE_DRM_STAT); - value = StringLoader::LoadLC(R_FILE_DRM_EXP); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - // make rest of the drm items - MakeRestrictedDrmItemsL(rights,aItemArray,aFileDetails); - break; - default: - break; - } - } - - heading = NULL; - value = NULL; - - // sending - heading = StringLoader::LoadLC(R_FILE_DRM_CS); - if ( aFileDetails && aFileDetails->iDRMForwardLocked ) - { - value = StringLoader::LoadLC(R_FILE_DRM_FORBID); - } - else - { - value = StringLoader::LoadLC(R_FILE_DRM_ALLOWED); - } - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); - CleanupStack::PopAndDestroy( rights ); // heading, value, rights - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::MakeDrmItemsL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::MakeRestrictedDrmItemsL( - const HBufC* aRights, CDesCArray* aItemArray, - const CSvgtFileDetails* aFileDetails ) const - { - - HBufC* heading = NULL; - HBufC* value = NULL; - - if ( !aRights || !aItemArray ) - { - return; - } - - // count - if ( ( aFileDetails ) && ( aFileDetails->iDRMExpireConstraint == ESVGTCount - || aFileDetails->iDRMExpireConstraint == ESVGTCountAndTime )) - { - heading = StringLoader::LoadLC(R_FILE_DRM_UTL,*aRights); - - TInt counts = aFileDetails->iDRMCountsLeft; - - if (counts == 1) - { - value = StringLoader::LoadLC(R_FILE_DRM_1_COUNT); - } - else - { - value = StringLoader::LoadLC(R_FILE_DRM_N_COUNTS,counts); - } - TPtr textPtr = value->Des(); - LanguageSpecificNumberConversion( textPtr ); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); - CleanupStack::PopAndDestroy( heading ); // heading && value - } - - if ( ( aFileDetails ) && ( aFileDetails->iDRMExpireConstraint == ESVGTTime || - aFileDetails->iDRMExpireConstraint == ESVGTCountAndTime || - ( aFileDetails->iDRMFileHasInterval && - aFileDetails->iDRMIntervalActive ))) - { - HBufC* dateFormatString = StringLoader::LoadLC( - R_QTN_DATE_USUAL_WITH_ZERO ); - HBufC* timeFormatString = StringLoader::LoadLC( R_QTN_TIME_USUAL ); - - TTime from = aFileDetails->iDRMValidFrom; - TTime until = aFileDetails->iDRMValidUntil; - - // from - heading = StringLoader::LoadLC(R_FILE_DRM_VALID_FROM,*aRights); - HBufC* datePointer = HBufC::NewLC( KMaxLongDateFormatSpec ); - TPtr date = datePointer->Des(); - from.FormatL( date, *dateFormatString ); - TBuf time; - from.FormatL( time, *timeFormatString ); - date.Append( KSpace ); - date.Append( time ); - LanguageSpecificNumberConversion( date ); - AddItemToListBoxL( *heading, date, aItemArray ); - CleanupStack::PopAndDestroy( datePointer ); - CleanupStack::PopAndDestroy( heading ); // datePointer, heading - - // until - heading = StringLoader::LoadLC(R_FILE_DRM_VALID_TO,*aRights); - HBufC* dateToPntr = HBufC::NewLC( KMaxLongDateFormatSpec ); - TPtr dateTo = dateToPntr->Des(); - until.FormatL( dateTo, *dateFormatString ); - TBuf timeTo; - until.FormatL( timeTo, *timeFormatString ); - dateTo.Append( KSpace ); - dateTo.Append( timeTo ); - LanguageSpecificNumberConversion( dateTo ); - AddItemToListBoxL( *heading, dateTo, aItemArray ); - - // destroying dateFormatString, timeFormatString, heading, dateToPntr - CleanupStack::PopAndDestroy( dateToPntr ); - CleanupStack::PopAndDestroy( heading ); - CleanupStack::PopAndDestroy( timeFormatString ); - CleanupStack::PopAndDestroy( dateFormatString ); - } - // interval - else - { - if ( ( aFileDetails ) && ( aFileDetails->iDRMFileHasInterval && - !aFileDetails->iDRMIntervalActive )) - { - // times not activated - heading = StringLoader::LoadLC(R_FILE_DRM_UTS,*aRights); - value = StringLoader::LoadLC(R_FILE_DRM_NOT_ACT); - AddItemToListBoxL(*heading,*value,aItemArray); - CleanupStack::PopAndDestroy( value ); // heading && value - CleanupStack::PopAndDestroy( heading ); - - // query what the current time is - TTime currentTime; - currentTime.HomeTime(); - // calculate rights end time - TTime endTime = currentTime + aFileDetails->iDRMInterval; - - HBufC* lVal = HBufC::NewLC( KValBufferLength ); - TPtr valPtr(lVal->Des()); - - TInt count = 0; - - // years - TTimeIntervalYears years = endTime.YearsFrom(currentTime); - if (years.Int()) - { - AddSinglePartOfTimeL( years.Int(), - R_FILE_DRM_NBR_OF_YEARS_ONE, - R_FILE_DRM_NBR_OF_YEARS_ONE_FINAL, - R_FILE_DRM_NBR_OF_YEARS_TWO_FOUR, - R_FILE_DRM_NBR_OF_YEARS_FIVE_ZERO, - value ); - count++; - valPtr.Append(*value); - endTime -= years; - CleanupStack::PopAndDestroy( value ); - } - - // months - TTimeIntervalMonths months = endTime.MonthsFrom(currentTime); - if (months.Int()) - { - AddSinglePartOfTimeL( months.Int(), - R_FILE_DRM_NBR_OF_MONTHS_ONE, - 0, - R_FILE_DRM_NBR_OF_MONTHS_TWO_FOUR, - R_FILE_DRM_NBR_OF_MONTHS_FIVE_ZERO, - value ); - if (count) - { - valPtr.Append( KSpace ); - } - - count++; - valPtr.Append(*value); - endTime -= months; - CleanupStack::PopAndDestroy( value ); - } - - // days - TTimeIntervalDays days = endTime.DaysFrom(currentTime); - if (days.Int() && count < KTimeCount) - { - AddSinglePartOfTimeL( days.Int(), - R_FILE_DRM_NBR_OF_DAYS_ONE, - R_FILE_DRM_NBR_OF_DAYS_ONE_FINAL, - R_FILE_DRM_NBR_OF_DAYS_TWO_FOUR, - R_FILE_DRM_NBR_OF_DAYS_FIVE_ZERO, - value ); - if (count) - { - valPtr.Append( KSpace ); - } - - valPtr.Append(*value); - endTime -= days; - CleanupStack::PopAndDestroy( value ); - count++; - } - - // hours - TTimeIntervalHours hours; - TInt ret = endTime.HoursFrom(currentTime,hours); - if (ret == KErrNone && count < KTimeCount && hours.Int()) - { - AddSinglePartOfTimeL( hours.Int(), - R_FILE_DRM_NBR_OF_HOURS_ONE, - R_FILE_DRM_NBR_OF_HOURS_ONE_FINAL, - R_FILE_DRM_NBR_OF_HOURS_TWO_FOUR, - R_FILE_DRM_NBR_OF_HOURS_FIVE_ZERO, - value ); - if (count) - { - valPtr.Append( KSpace ); - } - - valPtr.Append(*value); - endTime -= hours; - CleanupStack::PopAndDestroy( value ); - count++; - } - - // mins - TTimeIntervalMinutes minutes; - ret = endTime.MinutesFrom(currentTime,minutes); - if (ret == KErrNone && count < KTimeCount && minutes.Int()) - { - AddSinglePartOfTimeL( minutes.Int(), - R_FILE_DRM_NBR_OF_MINS_ONE, - R_FILE_DRM_NBR_OF_MINS_ONE_FINAL, - R_FILE_DRM_NBR_OF_MINS_TWO_FOUR, - R_FILE_DRM_NBR_OF_MINS_FIVE_ZERO, - value ); - if (count) - { - valPtr.Append( KSpace ); - } - - valPtr.Append(*value); - endTime -= minutes; - CleanupStack::PopAndDestroy( value ); - count++; - } - - // seconds - TTimeIntervalSeconds seconds; - ret = endTime.SecondsFrom(currentTime,seconds); - if (ret == KErrNone && count < KTimeCount && seconds.Int()) - { - AddSinglePartOfTimeL( seconds.Int(), - R_FILE_DRM_NBR_OF_SECS_ONE, - R_FILE_DRM_NBR_OF_SECS_ONE_FINAL, - R_FILE_DRM_NBR_OF_SECS_TWO_FOUR, - R_FILE_DRM_NBR_OF_SECS_FIVE_ZERO, - value ); - - if (count) - { - valPtr.Append( KSpace ); - } - - valPtr.Append(*value); - CleanupStack::PopAndDestroy( value ); - count++; - } - - heading = StringLoader::LoadLC(R_FILE_DRM_UDL,*aRights); - LanguageSpecificNumberConversion(valPtr); - AddItemToListBoxL(*heading,valPtr,aItemArray); - CleanupStack::PopAndDestroy( lVal ); - CleanupStack::PopAndDestroy( heading ); - } - - } - - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::LanguageSpecificNumberConversion -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::LanguageSpecificNumberConversion( TDes& aText ) const - { - if ( AknTextUtils::DigitModeQuery( AknTextUtils::EDigitModeShownToUser ) ) - { - AknTextUtils::DisplayTextLanguageSpecificNumberConversion( aText ); - } - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::FetchDrmDataL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::FetchDrmDataL( RFile& aFileHandle, - CSvgtFileDetails* aFileDetails ) const - { - - CSVGTDrmHelper* myHelper = CSVGTDrmHelper::NewLC(); - - myHelper->LoadUsageRigthsInfoL(aFileHandle); - - if ( aFileDetails ) - { - myHelper->GetUsageRightsStatus(aFileDetails->iDRMRightsStatus); - - // sending - aFileDetails->iDRMForwardLocked = !myHelper->SendingAllowed(); - - if (aFileDetails->iDRMRightsStatus == ESVGTRestricted || - aFileDetails->iDRMRightsStatus == ESVGTPreview || - aFileDetails->iDRMRightsStatus == ESVGTExpired) - { - // counts - TInt retCount = myHelper->GetCount(aFileDetails->iDRMCountsLeft); - - if (retCount == KErrNone) - { - aFileDetails->iDRMExpireConstraint = ESVGTCount; - } - - // time - TInt retTime = myHelper->GetStartTime(aFileDetails->iDRMValidFrom); - retTime = myHelper->GetEndTime(aFileDetails->iDRMValidUntil); - - if (retTime == KErrNone && retCount == KErrNone) - { - aFileDetails->iDRMExpireConstraint = ESVGTCountAndTime; - } - else - { - if (retTime == KErrNone) - { - aFileDetails->iDRMExpireConstraint = ESVGTTime; - } - } - - // interval - if (myHelper->GetInterval(aFileDetails->iDRMInterval) == KErrNone) - { - aFileDetails->iDRMFileHasInterval = ETrue; - TTime from; - if (myHelper->GetIntervalStart(from) == KErrNone) - { - aFileDetails->iDRMIntervalActive = ETrue; - // active from - aFileDetails->iDRMValidFrom = from; - // calculate rights end time - aFileDetails->iDRMValidUntil = - aFileDetails->iDRMValidFrom + aFileDetails->iDRMInterval; - } - else - { - aFileDetails->iDRMIntervalActive = EFalse; - } - } - else - { - aFileDetails->iDRMFileHasInterval = EFalse; - aFileDetails->iDRMIntervalActive = EFalse; - } - } - } - - // cleanup - CleanupStack::PopAndDestroy( myHelper ); - } - -// ----------------------------------------------------------------------------- -// CSvgtFileViewDetailsDialog::AddSinglePartOfTimeL -// ----------------------------------------------------------------------------- -// -void CSvgtFileViewDetailsDialog::AddSinglePartOfTimeL( TInt aNumOfElements, - TInt aResourceIdSingle, - TInt aResourceIdOneFinal, - TInt aResourceIdTwoFour, - TInt aResourceIdFiveZero, - HBufC*& aStrings ) const - { - TInt finalOneDigit = aNumOfElements % KOneDigit; - TInt finalTwoDigits = aNumOfElements % KTwoDigits; - - if ( aNumOfElements == 1 ) - { - aStrings = StringLoader::LoadLC( aResourceIdSingle); - } - else if ( finalOneDigit == KOneDigit1 && finalTwoDigits != KTwoDigit11 ) - { - // Used for period of years ending with 1 from 21 (21, 31, 41, etc.) - aStrings = StringLoader::LoadLC( aResourceIdOneFinal, aNumOfElements ); - } - else if ( finalOneDigit == 0 || - ( finalOneDigit >= KOneDigit5 && finalOneDigit <= KOneDigit9 ) || - ( finalTwoDigits >= KTwoDigit11 && finalTwoDigits <= KTwoDigit14 ) ) - { - // Used for period of minutes ending from 5 to 0 plus range between 11 - // and 14 (5-20, 25-30, 35-40, 45-50, 53-59) - aStrings = StringLoader::LoadLC( aResourceIdFiveZero, aNumOfElements ); - } - else - { - // Used for period of minutes ending from 2 to 4, excluded 12-14 (2-4, - // 22-24, 32-34, 42-44, 52-54) - aStrings = StringLoader::LoadLC( aResourceIdTwoFour, aNumOfElements ); - } - } - -void CSvgtFileViewDetailsDialog::AddResourceFileToEnvL() - { - TFileName resFileName; - Dll::FileName( resFileName ); // get dll path - TDriveName drive( TParsePtrC( resFileName ).Drive( ) ); // solve drive - resFileName.Zero(); - resFileName.Append( drive ); - resFileName.Append( KDC_RESOURCE_FILES_DIR ); - resFileName.Append( KResourceFileName ); - - iEnv = CEikonEnv::Static(); - BaflUtils::NearestLanguageFile(iEnv->FsSession(), resFileName); //for localization - iEnv->AddResourceFileL(resFileName); - RResourceFile resFile; - CleanupClosePushL(resFile); - resFile.OpenL(iEnv->FsSession(), resFileName); - resFile.ConfirmSignatureL(); - iResOffset = resFile.Offset(); - CleanupStack::PopAndDestroy(&resFile); //resFile - } - - -// End of File