diff -r 000000000000 -r 1ddebce53859 camerauis/cameraapp/generic/src/cameracontroller/CamCameraCallback.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/src/cameracontroller/CamCameraCallback.cpp Thu Jan 07 16:18:56 2010 +0200 @@ -0,0 +1,294 @@ +/* +* Copyright (c) 2007 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: Emualtor support for CCamCameraController part of cameraapp* +*/ + + + +#include "CamCameraCallback.h" +#include "CameraappTestBitmapManager.h" +#include +#include +#include + +_LIT(KImageFile, "c:\\private\\101F857A\\capture.jpg"); + + +/* +* CCamCameraCallBack* CCamCameraCallBack::NewL +*/ +CCamCameraCallBack* CCamCameraCallBack::NewL( + MCameraObserver& aController ) + { + CCamCameraCallBack* self = new( ELeave ) CCamCameraCallBack( aController ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + +/* +* CCamCameraCallBack::CCamCameraCallBack +*/ +CCamCameraCallBack::CCamCameraCallBack( + MCameraObserver& aController ) + : CActive( EPriorityLow ), + iController( aController ) + { + } + +/* +* CCamCameraCallBack::ConstructL() +*/ +void CCamCameraCallBack::ConstructL() + { + CActiveScheduler::Add( this ); + iBitmapManager = CCameraappTestBitmapManager::NewL(); + } + +/* +* CCamCameraCallBack::DoCancel +*/ +void CCamCameraCallBack::DoCancel() + { + // Status update flags + iViewFinderFrame = EFalse; + iStillPrepareComplete = EFalse; + iReserveComplete = EFalse; + iPowerOnComplete = EFalse; + iCaptureImage = EFalse; + + // Error status associated with each request + iReserveError = KErrNone; + iPowerOnError = KErrNone; + } + +/* +* CCamCameraCallBack::~CCamCameraCallBack +*/ +CCamCameraCallBack::~CCamCameraCallBack() + { + delete iBitmapManager; + Cancel(); + } + +/* +* CCamCameraCallBack::Cancel +*/ +/* +void CCamCameraCallBack::Cancel() + { + CActive::Cancel(); + DoCancel(); + } +*/ + +/* +* CCamCameraCallBack::RunL +*/ +void CCamCameraCallBack::RunL() + { + if ( iStillPrepareComplete ) + { + DoStillPrepareComplete(); + } + else if ( iReserveComplete ) + { + DoReserveComplete(); + } + else if ( iPowerOnComplete ) + { + DoPowerOnComplete(); + } + else if ( iCaptureImage ) + { + DoCaptureImageL(); + } + else + { + } + if ( iViewFinderFrame ) + { + DoViewFinderFrame(); + } + } + +/* +* CCamCameraCallBack::SetActiveAndCompleteRequest +*/ +void CCamCameraCallBack::SetActiveAndCompleteRequest() + { + SetActive(); + TRequestStatus* statusPtr = &iStatus; + User::RequestComplete( statusPtr, KErrNone ); + } + + +/* +* CCamCameraCallBack::ReserveCompleteRequest +*/ +void +CCamCameraCallBack::ReserveCompleteRequest( const TInt aError ) + { + iReserveError = aError; + iReserveComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +/* +* CCamCameraCallBack::PowerOnCompleteRequest +*/ +void +CCamCameraCallBack::PowerOnCompleteRequest( const TInt aError ) + { + iPowerOnError = aError; + iPowerOnComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + + +/* +* CCamCameraCallBack::StillPrepareComplete +*/ +void CCamCameraCallBack::StillPrepareComplete() + { + iStillPrepareComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +/* +* CCamCameraCallBack::SendViewFinderFrames +*/ +void CCamCameraCallBack::SendViewFinderFrames() + { + iViewFinderFrame = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +/* +* CCamCameraCallBack::StopViewFinderFrames +*/ +void CCamCameraCallBack::StopViewFinderFrames() + { + iViewFinderFrame = EFalse; + } + +/* +* CCamCameraCallBack::RequestCaptureImage +*/ +void CCamCameraCallBack::RequestCaptureImage() + { + iCaptureImage = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +/* +* CCamCameraCallBack::DoReserveComplete +*/ +void CCamCameraCallBack::DoReserveComplete() + { + iController.ReserveComplete( iReserveError ); + iReserveComplete = EFalse; + } + +/* +* CCamCameraCallBack::DoPowerOnComplete +*/ +void CCamCameraCallBack::DoPowerOnComplete() + { + iController.PowerOnComplete( iPowerOnError ); + iPowerOnComplete = EFalse; + } + + +/* +* CCamCameraCallBack::DoStillPrepareComplete +*/ +void CCamCameraCallBack::DoStillPrepareComplete() + { + iStillPrepareComplete = EFalse; + } + + +/* +* CCamCameraCallBack::DoViewFinderFrame +*/ +void CCamCameraCallBack::DoViewFinderFrame() + { + iController.ViewFinderFrameReady( iBitmapManager->NextBitmap() ); + + if ( iViewFinderFrame ) + { + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + + } + +/* +* CCamCameraCallBack::DoCaptureImageL +*/ +void CCamCameraCallBack::DoCaptureImageL() + { + iCaptureImage = EFalse; + TInt imageIndex = 0; + + // Connect to fs + RFs fs; + User::LeaveIfError( fs.Connect() ); + CleanupClosePushL( fs ); + + // Open file and get size + RFile file; + TInt size = 0; + User::LeaveIfError( file.Open( fs, KImageFile, EFileRead ) ); + CleanupClosePushL( file ); + User::LeaveIfError( file.Size( size ) ); + + // Allocate memory + HBufC8* data = HBufC8::NewL( size ); + TPtr8 dataDes = data->Des(); + + + // Read file content + TInt read = file.Read( dataDes, size ); + + // Clean up + CleanupStack::PopAndDestroy( &file ); + CleanupStack::PopAndDestroy( &fs ); + + // Give data to controller + iController.ImageReady( NULL, data, KErrNone ); + } + + +// End of File