diff -r 8ee96d21d9bf -r 7e0eff37aedb profilesservices/FileList/Src/CFLDSingleGraphicEntryFormatter.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/profilesservices/FileList/Src/CFLDSingleGraphicEntryFormatter.cpp Wed Sep 01 12:20:44 2010 +0100 @@ -0,0 +1,296 @@ +/* +* Copyright (c) 2002 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 CFLDSingleGraphicEntryFormatter. +* +* +*/ + + +// CLASS HEADER +#include "CFLDSingleGraphicEntryFormatter.h" + +// INTERNAL INCLUDES +#include "CFLDEntryReference.h" + +// EXTERNAL INCLUDES +#include // For TParsePtrC +#include // For AknTextUtils +#include + +// CONSTANTS +namespace + { + // Some helper literals + _LIT( KFLDTab, "\t" ); + _LIT( KFLDIgnoredExt, ".rng" ); + + // these icon array indexes must match with the implementation + // of the function CFLDFileListContainer.cpp/PopulateIconArrayL + _LIT( KFLDZeroAndTab, "0\t" ); + _LIT( KFLDSoundAndTab, "3\t" ); + _LIT( KFLDVideoAndTab, "4\t" ); + _LIT( KFLDMemoryCard, "2" ); + _LIT( KFLDMassStorage, "5" ); + + } + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CFLDSingleGraphicEntryFormatter::CFLDSingleGraphicEntryFormatter +// C++ constructor can NOT contain any code, that might leave. +// ----------------------------------------------------------------------------- +// +CFLDSingleGraphicEntryFormatter::CFLDSingleGraphicEntryFormatter() + { + + } + +// ----------------------------------------------------------------------------- +// CFLDSingleGraphicEntryFormatter::~CFLDSingleGraphicEntryFormatter() +// ----------------------------------------------------------------------------- +// +CFLDSingleGraphicEntryFormatter::~CFLDSingleGraphicEntryFormatter() + { + delete iDriveUtil; + } + +// ----------------------------------------------------------------------------- +// CFLDSingleGraphicEntryFormatter::FormatL() +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +void CFLDSingleGraphicEntryFormatter::FormatL( CFLDEntryReference& aEntry ) + { + if ( !iDriveUtil ) + { + iDriveUtil = CDriveUtil::NewL(); + } + + HBufC* formattedName = NULL; + HBufC& pathAndMediaFileName = aEntry.PathAndMediaFileName(); + TParsePtrC parsedName( pathAndMediaFileName.Des() ); + +#ifdef RD_VIDEO_AS_RINGING_TONE + TBool isFileVideo( EFalse ); + if ( aEntry.MediaType() == ECLFMediaTypeVideo ) + { + isFileVideo = ETrue; + } + + if( isFileVideo ) + { + formattedName = HBufC::NewL( parsedName.NameAndExt().Length() + KFLDVideoAndTab().Length() * 2 ); + } + else + { + formattedName = HBufC::NewL( parsedName.NameAndExt().Length() + KFLDSoundAndTab().Length() * 2 ); + } +#else + formattedName = HBufC::NewL( parsedName.NameAndExt().Length() + KFLDZeroAndTab().Length() * 2 ); +#endif + + aEntry.SetFormattedPresentation( formattedName ); + + // Combine all the data to the formatted data descriptor: + TPtr des = formattedName->Des(); + + // RNG files are shown without the file extension + TPtrC ext( parsedName.Ext() ); + if ( ext.CompareF( KFLDIgnoredExt ) == 0 ) + { + des.Copy( parsedName.Name() ); + } + else + { + des.Copy( parsedName.NameAndExt() ); + } + + // Make sure that the file name does not contain tab characters + AknTextUtils::ReplaceCharacters( des, KAknReplaceListControlChars, TChar(' ') ); + +#ifdef RD_VIDEO_AS_RINGING_TONE + if( isFileVideo ) + { + des.Insert( 0, KFLDVideoAndTab ); + } + else + { + des.Insert( 0, KFLDSoundAndTab ); + } + +#else + des.Insert( 0, KFLDZeroAndTab ); +#endif + des.Append( KFLDTab ); + + /* + TChar mmcDriveLetter( PathInfo::MemoryCardRootPath()[0] ); + mmcDriveLetter.UpperCase(); + + // Check if the entry is on MMC + TChar entryDriveLetter( parsedName.Drive()[ 0 ] ); + entryDriveLetter.UpperCase(); + + if ( entryDriveLetter == mmcDriveLetter ) + { + des.Append( '2' ); // MMC icon index + } + */ + + if ( iDriveUtil->IsMemoryCard( aEntry.PathAndMediaFileName() ) ) + { + des.Append( KFLDMemoryCard ); + } + else if ( iDriveUtil->IsMassStorage( aEntry.PathAndMediaFileName() ) ) + { + des.Append( KFLDMassStorage ); + } + } + +// ----------------------------------------------------------------------------- +// CFLDSingleGraphicEntryFormatter::FormatTextLC() +// (other items were commented in a header). +// ----------------------------------------------------------------------------- +// +HBufC* CFLDSingleGraphicEntryFormatter::FormatTextLC( const TDesC& aText ) + { + HBufC* text = NULL; + if( aText.Find( KFLDTab ) == KErrNotFound ) + { + text = HBufC::NewLC( aText.Length() + KFLDZeroAndTab().Length() ); + TPtr des( text->Des() ); + des.Copy( KFLDZeroAndTab ); + des.Append( aText ); + } + else + { + text = aText.AllocLC(); + } + return text; + } + + + + +/****************************************************************************** + * class CDriveUtil + ******************************************************************************/ + + +// ----------------------------------------------------------------------------- +// CDriveUtil::NewL +// +// ----------------------------------------------------------------------------- +// +CDriveUtil* CDriveUtil::NewL() + { + CDriveUtil* self = new (ELeave) CDriveUtil(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + + return self; + } + + +// ----------------------------------------------------------------------------- +// Destructor +// +// ----------------------------------------------------------------------------- +// +CDriveUtil::~CDriveUtil() + { + iFsSession.Close(); + } + + +// ----------------------------------------------------------------------------- +// CDriveUtil::CDriveUtil +// +// ----------------------------------------------------------------------------- +// +CDriveUtil::CDriveUtil() + { + } + + +// ----------------------------------------------------------------------------- +// CDriveUtil::ConstructL +// +// ----------------------------------------------------------------------------- +// +void CDriveUtil::ConstructL() + { + User::LeaveIfError( iFsSession.Connect() ); + } + + +// ----------------------------------------------------------------------------- +// CDriveUtil::IsMassStorage +// +// ----------------------------------------------------------------------------- +// +TBool CDriveUtil::IsMassStorage(const TDesC& aFullPath) + { + const TUint KMassStorageBits = DriveInfo::EDriveInternal | + DriveInfo::EDriveExternallyMountable; + + TDriveUnit drive(aFullPath); + TUint driveStatus(0); + + TInt err = DriveInfo::GetDriveStatus( iFsSession, drive, driveStatus ); + if ( err != KErrNone ) + { + return EFalse; + } + + if ( (driveStatus & KMassStorageBits) == KMassStorageBits ) + { + return ETrue; + } + + return EFalse; + } + + +// ----------------------------------------------------------------------------- +// CDriveUtil::IsMemoryCard +// +// ----------------------------------------------------------------------------- +// +TBool CDriveUtil::IsMemoryCard(const TDesC& aFullPath) + { + const TUint KMemoryCardBits = DriveInfo::EDriveRemovable | + DriveInfo::EDriveExternallyMountable; + + TDriveUnit drive(aFullPath); + TUint driveStatus(0); + + TInt err = DriveInfo::GetDriveStatus( iFsSession, drive, driveStatus ); + if ( err != KErrNone ) + { + return EFalse; + } + + if ( (driveStatus & KMemoryCardBits) == KMemoryCardBits ) + { + return ETrue; + } + + return EFalse; + } + + +// End of File