// --------------------------------------------------------------------------- // CAknMemorySelectionModelMultiDrive::UpdateDataArraysL // --------------------------------------------------------------------------- // void CAknMemorySelectionModelMultiDrive::UpdateDataArraysL() { TDriveList driveList; TInt driveCount; User::LeaveIfError( DriveInfo::GetUserVisibleDrives( iCoeEnv->FsSession(), driveList, driveCount, KDriveAttAll ) ); TPath rootPath; TDriveNumber driveNumber; AknCommonDialogsDynMem::TMemoryTypes memoryType; CDesCArrayFlat* driveArray = STATIC_CAST( CDesCArrayFlat*, iDriveArray ); CDesCArrayFlat* defaultFolderArray = STATIC_CAST( CDesCArrayFlat*, iDefaultFolderArray ); driveArray->Reset(); defaultFolderArray->Reset(); if ( iDefDriveArray != NULL && iDefDefaultFolderArray != NULL ) { for ( TInt i = 0; i < KMaxDrives; i++ ) { TInt driveExist = driveList[i]; if ( driveExist ) { driveNumber = TDriveNumber( i ); rootPath.Zero(); memoryType = AknCFDUtility::DriveMemoryTypeL( driveNumber ); if( memoryType & iIncludedMedias ) { User::LeaveIfError( PathInfo::GetRootPath( rootPath, driveNumber ) ); } else { continue; } TBool isUserDefined = EFalse; // add right location even user's location with wrong sequence for ( TInt j = 0; j < iDefDriveArray->MdcaCount(); j++ ) { // same drive info and user's root path must under c:\data\. // try to get the location if ( ( *iDefDriveArray )[j].FindC( rootPath ) == 0 ) { // Use user's root path, part of user definiens // (lowercase) may be replaced by system rootPath rootPath.Append( ( *iDefDriveArray )[j].Right( ( *iDefDriveArray )[j].Length() - rootPath.Length() ) ); driveArray->AppendL( rootPath ); defaultFolderArray->AppendL( ( *iDefDefaultFolderArray )[j] ); isUserDefined = ETrue; break; } } if ( !isUserDefined ) { // user does not define location for this drive // use the default driveArray->AppendL( rootPath ); defaultFolderArray->AppendL( KNullDesC ); } } } } else { for ( TInt i=0; i<KMaxDrives; i++ ) { TInt drive = driveList[i]; driveNumber = TDriveNumber( i ); if (drive) { memoryType = AknCFDUtility::DriveMemoryTypeL( driveNumber ); if( memoryType & iIncludedMedias ) { User::LeaveIfError( PathInfo::GetRootPath( rootPath, driveNumber ) ); driveArray->AppendL( rootPath ); defaultFolderArray->AppendL( KNullDesC ); } } } } }
void T_CntImageRescaler::testRescaleUtility() { // delete the possible image directory, it must not leave // even if the folder was not found. TRAPD( err, TCntImageRescaleUtility::DeleteImageDirectoryL() ); test( err == KErrNone ); // path for image directory, existense of the directory is not // checked TPath path = TCntImageRescaleUtility::ImageDirectoryL(); test( path.Length() > 0 ); test( path.Find(KImagesFolder) != KErrNotFound ); TPath dir = TCntImageRescaleUtility::CreateImageDirectoryL(); test( dir.Length() > 0 ); test( dir.Find( KImagesFolder) != KErrNotFound ); // make a test image file (empty file) RFs fs; CleanupClosePushL( fs ); User::LeaveIfError( fs.Connect() ); TPath imagePath; imagePath.Append( dir ); imagePath.Append( KImageName ); RFile file; CleanupClosePushL(file); User::LeaveIfError(file.Create( fs, imagePath, EFileWrite )); CleanupStack::PopAndDestroy(); CContactItem* item = CContactItem::NewLC(KUidContactCard); CContactItemField* field = CContactItemField::NewL( KStorageTypeText, KUidContactFieldCodImage ); field->SetMapping( KUidContactFieldVCardMapUnknown ); item->AddFieldL( *field ); // add image without GUID TRAPD( err2, TCntImageRescaleUtility::StoreImageFieldL( *item, imagePath ) ); test( err2 == KErrNone ); // then update with GUID value _LIT(KGuid, "guid"); TBufC<4> buffer ( KGuid ); item->SetUidStringL( buffer ); TRAPD( err3, TCntImageRescaleUtility::UpdateImageNameL( *item ) ); test( err3 == KErrNone ); CContactItemFieldSet& fields = item->CardFields(); TInt privateImageIndex = fields.Find( KUidContactFieldCodImage, KUidContactFieldVCardMapUnknown ); test( privateImageIndex != KErrNotFound ); TPtrC fieldText = fields[privateImageIndex].TextStorage()->Text(); // how it should look like TPath newPath; newPath.Append( TCntImageRescaleUtility::ImageDirectoryL() ); newPath.Append( buffer ); newPath.Append( KImageName ); RDebug::Print( _L("%S"), &newPath ); RDebug::Print( _L("%S"), &fieldText ); test( newPath.Compare(fieldText) == 0 ); BaflUtils::DeleteFile( fs, newPath ); CleanupStack::PopAndDestroy(2); // item, RFs }