diff -r 73a1feb507fb -r bc78a40cd63c mmsharing/mmshui/src/musuifileutil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmsharing/mmshui/src/musuifileutil.cpp Wed Sep 01 12:31:01 2010 +0100 @@ -0,0 +1,188 @@ +/* +* 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: +* +*/ + + +#include "musuifileutil.h" +#include "muslogger.h" // debug logging +#include "musuidefinitions.h" +#include "musuidialogutil.h" +#include "mussettings.h" +#include + +#include +#include +#include +#include + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +TBool MusUiFileUtil::FileExists( const TDesC& aFullFileName ) + { + MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::FileExists" ); + + TBool fileExists( EFalse ); + RFs fs; + + if ( fs.Connect() == KErrNone ) + { + TUint att; + fileExists = ( fs.Att( aFullFileName, att ) != KErrNotFound ); + fs.Close(); + } + + MUS_LOG( "mus: [MUSUI ] <- MusUiFileUtil::FileExists" ); + + return fileExists; + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void MusUiFileUtil::VideoFilePathExistsL( const TDesC& aVideoFilePath) + { + MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::VideoFilePathExistsL" ); + + RFs fs; + + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + TInt error = fs.MkDirAll( aVideoFilePath ); + CleanupStack::PopAndDestroy( &fs ); + + MUS_LOG1( "mus: [MUSUI ] <- MusUiFileUtil::VideoFilePathExistsL,%d",error ); + User::Leave(error); + } + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void MusUiFileUtil::CreateVideoFileNameL( const TDesC& aVideoFilePath, + TFileName& aFileName ) + { + MUS_LOG( "mus: [MUSUI ] -> MusUiFileUtil::CreateVideoFileNameL" ); + + RFs fs; + TParse parse; + TFileName fullFileName; + TUint att; + + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + + if ( fs.Att( aVideoFilePath, att ) == KErrNone ) + { + if ( MultimediaSharingSettings::OperatorVariantSettingL() == + MusSettingsKeys::EStandard ) + { + HBufC* temp = StringLoader::LoadLC( R_MUS_VIEW_SAVED_FILENAME ); + User::LeaveIfError( parse.Set( aVideoFilePath, temp, NULL ) ); + CleanupStack::PopAndDestroy( temp ); + fullFileName = parse.FullName(); + fullFileName.Append( KMusVideoFileNameExtension ); + User::LeaveIfError( + CApaApplication::GenerateFileName( fs, fullFileName ) ); + User::LeaveIfError( parse.Set( fullFileName, NULL, NULL ) ); + } + else // operator specific case + { + RBuf newName; + newName.CreateL( KMaxFileName ); + CleanupClosePushL( newName ); + + TEntry entry; + TInt i = 1; + // path + 'VS' + date + 'V' + counter + extension + _LIT( KFormatStringOne, "%S%S%S%S%02d%S" ); + _LIT( KFormatStringTwo, "%S%S%S%S%d%S" ); + TBuf<16> format; + format = KFormatStringOne; + + // get current date + _LIT( KDateFormat, "%F%M%D%*Y" ); + TTime time; + time.UniversalTime(); + TBuf<6> dateString; + time.FormatL( dateString, KDateFormat ); + + // generate a valid filename that doesn't already exist... + do + { + TPtrC driveAndPath = aVideoFilePath; + TPtrC date = dateString; + newName.Format( format, + &driveAndPath, &KMusVideoFileNameBegining, + &date, &KMusVideoFileNameVersion, + i++, &KMusVideoFileNameExtension ); + + if ( newName.Length() > KMaxFileName ) + { + User::Leave( KErrOverflow ); + } + + if ( i >= 100 ) + { + format = KFormatStringTwo; + } + } // Continue until DoesNotExist + while ( fs.Entry( newName, entry ) == KErrNone ); + + fullFileName.Copy( newName ); + User::LeaveIfError( parse.Set( newName, NULL, NULL ) ); + + CleanupStack::PopAndDestroy( &newName ); + } + + RFile file; + CleanupClosePushL( file ); + User::LeaveIfError( + file.Create( fs, fullFileName, EFileWrite | EFileShareExclusive ) ); + CleanupStack::PopAndDestroy( &file ); + } + + CleanupStack::PopAndDestroy( &fs ); + + aFileName = parse.Name(); + + MUS_LOG( "mus: [MUSUI ] < - MusUiFileUtil::CreateVideoFileNameL" ); + } + + +// ----------------------------------------------------------------------------- +// +// ----------------------------------------------------------------------------- +// +void MusUiFileUtil::DeleteFileL( const TDesC& aFileName ) + { + RFs fs; + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + TInt error = fs.Delete( aFileName ); + if ( ( error != KErrNone ) && ( error != KErrNotFound ) ) + { + User::Leave( error ); + } + CleanupStack::PopAndDestroy( &fs ); + } + + +// end of file