diff -r 35488577e233 -r 2fa1fa551b0b phoneclientserver/phoneserver/Src/ImageHandler/cphsrvimagesaver.cpp --- a/phoneclientserver/phoneserver/Src/ImageHandler/cphsrvimagesaver.cpp Mon Aug 23 15:50:31 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,210 +0,0 @@ -/* -* Copyright (c) 2008 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: Image saver implementation -* -*/ - - -#include "cphsrvimagesaver.h" -#include "mphsrvimagesaverobserver.h" -#include -#include -#include - -// primary file name for VT image -_LIT( KPhSrvPrimaryVtImageFileName, "vtstillimage1" ); - -// file name used if primary file is in use while save occurs -_LIT( KPhSrvAlternateVtImageFileName, "vtstillimage2" ); - -// ======== MEMBER FUNCTIONS ======== - -// --------------------------------------------------------------------------- -// 1st constructor -// --------------------------------------------------------------------------- -// -CPhSrvImageSaver* CPhSrvImageSaver::NewL( - RFs& aFs, - const TFileName& aPrivatePath, - MPhSrvImageSaverObserver& aObserver ) - { - CPhSrvImageSaver* saver = new ( ELeave ) CPhSrvImageSaver( - aFs, aPrivatePath, aObserver ); - CleanupStack::PushL( saver ); - saver->ConstructL(); - CleanupStack::Pop(); - return saver; - } - -// --------------------------------------------------------------------------- -// destructor -// --------------------------------------------------------------------------- -// -CPhSrvImageSaver::~CPhSrvImageSaver() - { - delete iImageDecoder; - delete iFileManager; - delete iScaler; - } - -// --------------------------------------------------------------------------- -// Saves image -// 1) decode from file -// 2a) scale (for single frame images) and save to phone server private dir, or -// 2b) multiframe image - copy file as is to phone server private directory -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::SaveImageL( const TDesC& aFileName ) - { - if ( IsActive() ) - { - User::Leave( KErrInUse ); - } - iImageDecoder = CImageDecoder::FileNewL( iFs, aFileName ); - const TInt frameCount = iImageDecoder->FrameCount(); - if ( frameCount > 1 ) - { - // decoder not needed because image is copied as is - delete iImageDecoder; - iImageDecoder = NULL; - CopyImageL( aFileName ); - } - else if ( frameCount == 1 ) - { - ScaleImageL(); - } - else - { - // invalid image? - User::Leave( KErrCorrupt ); - } - } - -// --------------------------------------------------------------------------- -// Copies the file -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::CopyImageL( const TDesC& aFileName ) - { - TName targetFileName; - ConstructVtFileSaveName( aFileName, targetFileName ); - iFileManager = CFileMan::NewL( iFs ); - iFileManager->Copy( aFileName, targetFileName, - CFileMan::EOverWrite, iStatus ); - } - -// --------------------------------------------------------------------------- -// ScaleImageL -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::ScaleImageL() - { - } - -// --------------------------------------------------------------------------- -// Checks if primary file is in use. -// --------------------------------------------------------------------------- -// -TInt CPhSrvImageSaver::IsPrimaryFileInUse( TBool& aIsInUse ) - { - CDir* entries = NULL; - TInt res = iFs.GetDir( iPath, KEntryAttNormal, EDirsLast, entries ); - if ( res == KErrNone && entries ) - { - const TInt entryCount( entries->Count() ); - for ( TInt index = 0; index < entryCount; index++ ) - { - const TEntry& entry = ( *entries )[index]; - if ( entry.iName.Compare( KPhSrvPrimaryVtImageFileName() ) >= 0 ) - { - // primary file name matches with directory entry (extension - // depends on file format) - res = iFs.IsFileOpen( entry.iName, aIsInUse ); - index = entryCount; // break loop - } - } - } - delete entries; - return res; - } - -// --------------------------------------------------------------------------- -// Constructs target file name for VT still image. Alternate name is used if -// file with primary name is open. -// --------------------------------------------------------------------------- -// -TInt CPhSrvImageSaver::ConstructVtFileSaveName( - const TDesC& aSourceFileName, - TName& aTargetFileName ) - { - TBool inUse( EFalse ); - TInt res( IsPrimaryFileInUse( inUse ) ); - if ( res == KErrNone ) - { - TParse sourceName; - sourceName.Set( aSourceFileName, NULL, NULL ); - aTargetFileName = iPath; - if ( inUse ) - { - // primary file in use (open), use alternalte name - aTargetFileName.Append( KPhSrvAlternateVtImageFileName() ); - } - else - { - aTargetFileName.Append( KPhSrvPrimaryVtImageFileName() ); - } - aTargetFileName.Append( sourceName.Ext() ); - } - return res; - } - -// --------------------------------------------------------------------------- -// CPhSrvImageSaver::RunL -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::RunL() - { - iObserver.ImageSaved( iStatus.Int() ); - } - -// --------------------------------------------------------------------------- -// CPhSrvImageSaver::DoCancel -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::DoCancel() - { - iObserver.ImageSaved( KErrCancel ); - } - -// --------------------------------------------------------------------------- -// CPhSrvImageSaver::ConstructL -// --------------------------------------------------------------------------- -// -void CPhSrvImageSaver::ConstructL() - { - User::Leave( KErrNotSupported ); - } - -// --------------------------------------------------------------------------- -// c++ constructor -// --------------------------------------------------------------------------- -// -CPhSrvImageSaver::CPhSrvImageSaver( RFs& aFs, const TFileName& aPrivatePath, - MPhSrvImageSaverObserver& aObserver) - : CActive( CActive::EPriorityStandard ), - iFs( aFs ), - iPath( aPrivatePath ), - iObserver( aObserver ) - { - }