--- a/videditor/VideoEditorCommon/src/VideoEditorUtils.cpp Fri Jan 29 14:08:33 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,531 +0,0 @@
-/*
-* Copyright (c) 2010 Ixonos Plc.
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the "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:
-* Ixonos Plc
-*
-* Description:
-*
-*/
-
-
-
-// INCLUDES
-#include <bautils.h>
-#include <eikenv.h>
-#include <badesca.h>
-#include <PathInfo.h>
-#include <sysutil.h>
-#include <DRMCommon.h>
-#include <AknUtils.h>
-#include <data_caging_path_literals.hrh>
-#include <AknListQueryDialog.h>
-#include <VedSimpleCutVideo.rsg>
-#include <BAUTILS.H>
-
-#include "VideoEditorUtils.h"
-#include "VideoEditorCommon.h"
-#include "VeiSettings.h"
-#include "VideoEditorDebugUtils.h"
-
-
-// CONSTANTS
-_LIT (KEditedSuffix, "-");
-_LIT(KManualVideoEditorMifFile, "ManualVideoEditor.mif");
-_LIT(KVideoEditorUiComponentsMifFile, "VideoEditorUiComponents.mif");
-_LIT(KVideoEditorMbmFile, "VideoEditorBitmaps.mbm");
-
-//=============================================================================
-EXPORT_C void VideoEditorUtils::NotifyNewMediaDocumentL (
- RFs& /*aFsSession*/,
- const TDesC& aFileName )
-{
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::NotifyNewMediaDocumentL: In (%S)", &aFileName);
- LOG(KVideoEditorLogFile, "VideoEditorUtils::NotifyNewMediaDocumentL: Out");
-}
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::GenerateNewDocumentNameL (
- RFs& aFsSession,
- const TDesC& aSourceFileName,
- TDes& aTargetFileName,
- TVedVideoFormat aOutputFormat,
- TInt aTargetSizeEstimate,
- VideoEditor::TMemory aMemoryInUse )
-{
- LOG(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL, in:");
- LOGFMT4(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 1\tSource file: %S, output format: %d, required space: %d, memory in use: %d", &aSourceFileName, aOutputFormat, aTargetSizeEstimate, aMemoryInUse);
-
- TInt err = KErrNone;
-
- // Set file name to parser
- TParsePtrC fileParse (aSourceFileName);
-
- // Test filename is already too long
- if (fileParse.NameAndExt().Length() > KMaxFileName - 5)
- {
- err = KErrArgument;
- }
-
- // Otherwise proceed to generate the filename
- else
- {
- // If the memory is specified as EMemAutomatic, the target is primarily
- // on the memory card, and if that is full, on the phone memory.
- // If EMemPhoneMemory or EMemMemoryCard is specified, only that one is used.
- VideoEditor::TMemory selectedMemoryInUse;
- aMemoryInUse == VideoEditor::EMemAutomatic ?
- selectedMemoryInUse = VideoEditor::EMemMemoryCard :
- selectedMemoryInUse = aMemoryInUse;
-
- // Find file suffix that is not yet used
- TInt val = 1;
- TFileName temp;
-
- // First try the above selected primary location.
- TFileName driveAndPath;
- if (selectedMemoryInUse == VideoEditor::EMemPhoneMemory)
- {
- driveAndPath.Copy( PathInfo::PhoneMemoryRootPath() );
- }
- else
- {
- driveAndPath.Copy( PathInfo::MemoryCardRootPath() );
- }
- driveAndPath.Append( PathInfo::VideosPath() );
- TRAPD(errBafl, BaflUtils::EnsurePathExistsL (aFsSession, driveAndPath));
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 2, errBafl:%d", errBafl );
- TBool primaryLocationFull = ( KErrNone != errBafl
- || !IsEnoughFreeSpaceToSaveL ( aFsSession, driveAndPath, aTargetSizeEstimate ) );
-
-
- // If the memory is full, and the memory is selected as automatic,
- // try alternative location.
- if (primaryLocationFull && aMemoryInUse == VideoEditor::EMemAutomatic)
- {
- if (selectedMemoryInUse == VideoEditor::EMemMemoryCard)
- {
- driveAndPath.Copy (PathInfo::PhoneMemoryRootPath() );
- }
- else
- {
- driveAndPath.Copy (PathInfo::MemoryCardRootPath() );
- }
- driveAndPath.Append ( PathInfo::VideosPath() );
- TBool secondaryLocationFull = ( !BaflUtils::FolderExists (aFsSession, driveAndPath)
- || !IsEnoughFreeSpaceToSaveL ( aFsSession, driveAndPath, aTargetSizeEstimate ) );
- if (secondaryLocationFull)
- {
- err = KErrDiskFull;
- }
- }
-
- // Now sufficient disk space has been verified.
- // Proceed to generate the unique file name.
- if (KErrNone == err)
- {
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 3, File will be saved to path: %S", &driveAndPath );
-
- // Copy drive and path to temporary file name
- temp.Copy( driveAndPath );
-
- // Add file name without suffix
- TPtrC name = fileParse.Name();
- TInt offset = FindSuffix ( name );
- if (offset == KErrNotFound)
- {
- temp.Append ( fileParse.Name() );
- }
- else
- {
- temp.Append ( name.Left (offset) );
- }
-
- temp.Append ( KEditedSuffix );
- temp.AppendNumFixedWidth (val, EDecimal, 3);
- temp.Append ( aOutputFormat == EVedVideoFormat3GPP ? KExt3gp : KExtMp4 );
-
- // Increase edit number until we find a file name that is not used
- while ( FileAlreadyExistsL(aFsSession, temp) )
- {
- ++val;
- temp.Zero();
- temp.Copy ( driveAndPath );
- if (offset == KErrNotFound)
- {
- temp.Append ( fileParse.Name() );
- }
- else
- {
- temp.Append ( name.Left (offset) );
- }
-
- temp.Append ( KEditedSuffix );
- if (val < 1000)
- {
- temp.AppendNumFixedWidth ( val, EDecimal, 3);
- }
- else
- {
- temp.AppendNumFixedWidth ( val, EDecimal, 4);
- }
-
- temp.Append ( aOutputFormat == EVedVideoFormat3GPP ? KExt3gp : KExtMp4 );
- }
-
- // Set document name
- aTargetFileName.Copy ( temp );
- }
- }
-
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL: out (%d)", err);
- return err;
-}
-
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::GenerateFileNameL (
- RFs& aFsSession,
- const TDesC& aSourceFileName,
- TDes& aTargetFileName,
- TVedVideoFormat aOutputFormat,
- TInt aTargetSizeEstimate,
- TFileName aDrive )
-{
- LOG(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL, in:");
- LOGFMT4(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 1\tSource file: %S, output format: %d, required space: %d, memory in use: %d", &aSourceFileName, &aOutputFormat, &aTargetSizeEstimate, &aDrive);
-
- TInt err = KErrNone;
-
- // Set file name to parser
- TParsePtrC fileParse (aSourceFileName);
-
- // Test if filename is already too long
- if (fileParse.NameAndExt().Length() > KMaxFileName - 5)
- {
- err = KErrArgument;
- }
-
- // Otherwise proceed to generate the filename
- else
- {
- // Find file suffix that is not yet used
- TInt val = 1;
- TFileName temp;
-
- TFileName driveAndPath = aDrive;
- driveAndPath.Append( PathInfo::VideosPath() );
-
- // create the folder if it doesn't exist
- TRAPD(errBafl, BaflUtils::EnsurePathExistsL (aFsSession, driveAndPath));
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 2, errBafl:%d", errBafl );
-
- TBool selectedLocationFull = ( KErrNone != errBafl
-
- || !IsEnoughFreeSpaceToSaveL ( aFsSession, driveAndPath, aTargetSizeEstimate ) );
-
- if (selectedLocationFull)
- {
- err = KErrDiskFull;
- }
-
- // Now sufficient disk space has been verified.
- // Proceed to generate the unique file name.
- if (KErrNone == err)
- {
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL 3, File will be saved to path: %S", &driveAndPath );
-
- // Copy drive and path to temporary file name
- temp.Copy( driveAndPath );
-
- // Add file name without suffix
- TPtrC name = fileParse.Name();
-
- TInt offset = FindSuffix ( name );
-
- if (offset == KErrNotFound)
- {
- temp.Append ( fileParse.Name() );
- }
- else
- {
- temp.Append ( name.Left (offset) );
- }
-
- temp.Append ( KEditedSuffix );
- temp.AppendNumFixedWidth (val, EDecimal, 3);
- temp.Append ( aOutputFormat == EVedVideoFormat3GPP ? KExt3gp : KExtMp4 );
-
- // Increase edit number until we find a file name that is not used
- while ( FileAlreadyExistsL(aFsSession, temp) )
- {
- ++val;
- temp.Zero();
- temp.Copy ( driveAndPath );
- if (offset == KErrNotFound)
- {
- temp.Append ( fileParse.Name() );
- }
- else
- {
- temp.Append ( name.Left (offset) );
- }
-
- temp.Append ( KEditedSuffix );
- if (val < 1000)
- {
- temp.AppendNumFixedWidth ( val, EDecimal, 3);
- }
- else
- {
- temp.AppendNumFixedWidth ( val, EDecimal, 4);
- }
-
- temp.Append ( aOutputFormat == EVedVideoFormat3GPP ? KExt3gp : KExtMp4 );
- }
-
- // Set document name
- aTargetFileName.Copy ( temp );
- }
- }
-
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::GenerateNewDocumentNameL: out (%d)", err);
- return err;
-}
-
-
-//=============================================================================
-EXPORT_C TBool VideoEditorUtils::IsEnoughFreeSpaceToSaveL(
- RFs& aFsSession,
- const TDesC& aFileName,
- TInt aSizeEstimate )
- {
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::IsEnoughFreeSpaceToSaveL: in: %S", &aFileName);
-
- TBool spaceBelowCriticalLevel( EFalse );
-
- TParsePtrC fileParse (aFileName);
-
- TInt mmc = fileParse.Drive().Left(1).CompareF( PathInfo::MemoryCardRootPath().Left(1) );
- if( mmc == 0 )
- {
- spaceBelowCriticalLevel = SysUtil::MMCSpaceBelowCriticalLevelL(
- &aFsSession, aSizeEstimate );
- }
- else
- {
- spaceBelowCriticalLevel = SysUtil::DiskSpaceBelowCriticalLevelL(
- &aFsSession, aSizeEstimate, EDriveC );
- }
-
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::IsEnoughFreeSpaceToSaveL: out: %d", !spaceBelowCriticalLevel);
- return !spaceBelowCriticalLevel;
- }
-
-//=============================================================================
-EXPORT_C TBool VideoEditorUtils::IsDrmProtectedL( const TDesC& aFileName )
- {
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::IsDrmProtectedL: in: %S", &aFileName);
-
- TBool isProtected = EFalse;
- DRMCommon* drm = DRMCommon::NewL();
- CleanupStack::PushL (drm);
- drm->IsProtectedFile( aFileName, isProtected );
- CleanupStack::PopAndDestroy (drm);
-
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::IsDrmProtectedL: out: %d", isProtected);
- return isProtected;
- }
-
-//=============================================================================
-EXPORT_C TFileName VideoEditorUtils::IconFileNameAndPath( TInt aInconFileIndex )
- {
- LOG(KVideoEditorLogFile, "VideoEditorUtils::IconFileNameAndPath: in:");
-
- TFileName fileName;
- Dll::FileName(fileName);
- TParse p;
-
- switch (aInconFileIndex)
- {
- case KManualVideoEditorIconFileId:
- p.Set(KManualVideoEditorMifFile, &KDC_APP_BITMAP_DIR, &fileName);
- break;
- case KVideoEditorUiComponentsIconFileId:
- p.Set(KVideoEditorUiComponentsMifFile, &KDC_APP_BITMAP_DIR, &fileName);
- break;
- case KVeiNonScalableIconFileId:
- p.Set(KVideoEditorMbmFile, &KDC_APP_BITMAP_DIR, &fileName);
- break;
- default:
- User::Invariant();
- }
-
- TPtrC fullName = p.FullName();
- LOGFMT2(KVideoEditorLogFile, "VideoEditorUtils::IconFileNameAndPath: Id: %d, name: %S", aInconFileIndex, &fullName);
-
- return fullName;
- }
-
-//=============================================================================
-TInt VideoEditorUtils::FindSuffix (
- const TDesC & aName
- )
-{
- TInt offset = KErrNotFound;
- TInt l = aName.Length();
-
- while (l)
- {
- l--;
-
- if ( l <= (aName.Length() - 3) && aName[l] == TChar('-') )
- {
- offset = l;
- break;
- }
- else if ( aName[l] < 0x30 || aName[l] > 0x39 )
- {
- break;
- }
-
- }
-
- return offset;
-}
-
-//=============================================================================
-TBool VideoEditorUtils::FileAlreadyExistsL ( RFs& aFsSession, const TDesC& aFileName )
-{
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::FileAlreadyExistsL: %S", &aFileName);
-
- TBool fileExists = BaflUtils::FileExists( aFsSession, aFileName );
-
- LOGFMT(KVideoEditorLogFile, "VideoEditorUtils::FileAlreadyExistsL: Out: %d", fileExists);
- return fileExists;
-}
-
-//=============================================================================
-EXPORT_C void VideoEditorUtils::GetMGAlbumsListForMediaFileL (
- RArray<TInt>& /*aAlbumIdList*/,
- const TDesC& /*aFileName*/ )
-{
- LOG(KVideoEditorLogFile, "VideoEditorUtils::GetMGAlbumsListForMediaFileL: In" );
- LOG(KVideoEditorLogFile, "VideoEditorUtils::GetMGAlbumsListForMediaFileL: Out" );
-}
-
-
-//=============================================================================
-EXPORT_C void VideoEditorUtils::AddMediaFileToMGAlbumL(
- const TDesC& /*aFilename*/,
- TInt /*aAlbumId*/ )
- {
- LOG(KVideoEditorLogFile, "VideoEditorUtils::AddMediaFileToMGAlbumL: In");
- LOG(KVideoEditorLogFile, "VideoEditorUtils::AddMediaFileToMGAlbumL: Out");
- }
-
-//=============================================================================
-EXPORT_C TBool VideoEditorUtils::IsLandscapeScreenOrientation()
- {
- TRect rect;
- AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, rect);
- return rect.Width() > rect.Height();
- }
-
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::LaunchQueryDialogL (const TDesC & aPrompt)
-{
- CAknQueryDialog * dlg =
- new (ELeave) CAknQueryDialog ( const_cast<TDesC&>(aPrompt) );
-
- return dlg->ExecuteLD (R_VIE_CONFIRMATION_QUERY);
-}
-
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::LaunchListQueryDialogL (
- MDesCArray * aTextItems,
- const TDesC & aPrompt
- )
-{
- // Selected text item index
- TInt index (-1);
-
- // Create a new list dialog
- CAknListQueryDialog * dlg = new (ELeave) CAknListQueryDialog (&index);
-
- // Prepare list query dialog
- dlg->PrepareLC (R_VIE_LIST_QUERY);
-
- // Set heading
- dlg->QueryHeading()->SetTextL (aPrompt);
-
- // Set text item array
- dlg->SetItemTextArray (aTextItems);
-
- // Set item ownership
- dlg->SetOwnershipType (ELbmDoesNotOwnItemArray);
-
- // Execute
- if (dlg->RunLD())
- {
- return index;
- }
- else
- {
- return -1;
- }
-}
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::LaunchSaveVideoQueryL ()
-{
- // Create dialog heading and options
- HBufC * heading = CEikonEnv::Static()->AllocReadResourceLC ( R_VIE_QUERY_HEADING_SAVE );
- HBufC * option1 = CEikonEnv::Static()->AllocReadResourceLC ( R_VIE_QUERY_SAVE_NEW );
- HBufC * option2 = CEikonEnv::Static()->AllocReadResourceLC ( R_VIE_QUERY_SAVE_REPLACE );
-
- // Query dialog texts
- CDesCArray * options = new (ELeave) CDesCArraySeg ( 2 );
- CleanupStack::PushL (options);
- options->AppendL( option1->Des() );
- options->AppendL( option2->Des() );
-
- // Execute query dialog
- TInt ret = LaunchListQueryDialogL ( options, *heading );
-
- options->Reset();
-
- CleanupStack::PopAndDestroy( options );
- CleanupStack::PopAndDestroy( option2 );
- CleanupStack::PopAndDestroy( option1 );
- CleanupStack::PopAndDestroy( heading );
-
- return ret;
-}
-
-
-//=============================================================================
-EXPORT_C TInt VideoEditorUtils::LaunchSaveChangesQueryL ()
-{
- // Create dialog prompt
- HBufC * prompt = CEikonEnv::Static()->AllocReadResourceLC ( R_VIE_QUERY_SAVE_CHANGES );
-
- // Execute query dialog
- TInt ret = LaunchQueryDialogL ( *prompt );
-
- CleanupStack::PopAndDestroy( prompt );
-
- return ret;
-}
-
-// End of File