--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/cameraapp/generic/src/cameracontroller/CamCameraCallback.cpp Wed Sep 01 12:30:54 2010 +0100
@@ -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 <ecam.h>
+#include <AknIconUtils.h>
+#include <fbs.h>
+
+_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