diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/dummyengine/CameraappDummyCallbackActive.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/dummyengine/CameraappDummyCallbackActive.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,396 @@ +/* +* 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: Dummy callback active object class for Cameraapp Unit Tests* +*/ + + + +// INCLUDE FILES +#include "CameraappDummyCallbackActive.h" +#include "CameraappTestBitmapManager.h" +#include + +// EXTERNAL DATA STRUCTURES +//extern ?external_data; + +// EXTERNAL FUNCTION PROTOTYPES +//extern ?external_function( ?arg_type,?arg_type ); + +// CONSTANTS + +// MACROS +//#define ?macro ?macro_def + +// LOCAL CONSTANTS AND MACROS +//const ?type ?constant_var = ?constant; +//#define ?macro_name ?macro_def + +// MODULE DATA STRUCTURES +//enum ?declaration +//typedef ?declaration + +// LOCAL FUNCTION PROTOTYPES +//?type ?function_name( ?arg_type, ?arg_type ); + +// FORWARD DECLARATIONS +//class ?FORWARD_CLASSNAME; + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CCameraappDummyCallbackActive::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CCameraappDummyCallbackActive* CCameraappDummyCallbackActive::NewL( + MCamAppEngineObserver& aController ) + { + CCameraappDummyCallbackActive* self = new( ELeave ) CCameraappDummyCallbackActive( aController ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + + return self; + } + + +// Destructor +CCameraappDummyCallbackActive::~CCameraappDummyCallbackActive() + { + delete iBitmapManager; + } + +void CCameraappDummyCallbackActive::Cancel() + { + CActive::Cancel(); + DoCancel(); + } + +void CCameraappDummyCallbackActive::SetBurstObserver( MCaeStillBurstObserver* aBurstObserver ) + { + iBurstObserver = aBurstObserver; + } + +CCameraappDummyCallbackActive::CCameraappDummyCallbackActive( + MCamAppEngineObserver& aController ) + : CActive( EPriorityLow ), + iController( aController ) + { + } + +void CCameraappDummyCallbackActive::InitComplete( ) + { + iInitComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::StillPrepareComplete( ) + { + iStillPrepareComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::VideoPrepareComplete( ) + { + iVideoPrepareComplete = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::SendViewFinderFrames( ) + { + iViewFinderFrame = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::StopViewFinderFrames() + { + iViewFinderFrame = EFalse; + } + +void CCameraappDummyCallbackActive::CaptureStill() + { + iCaptureStill = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::CaptureBurst( TInt aImageCount ) + { + iStopBurst = EFalse; + iCaptureBurst = ETrue; + iBurstCount = aImageCount; + iBurstCaptureImage = 0; + iBurstSnapImage = 0; + iCompletedBurst = 0; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::StopBurst() + { + iStopBurst = ETrue; + } + +void CCameraappDummyCallbackActive::VideoRecordingStopped() + { + iVideoStopped = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::VideoRecordingPaused() + { + iVideoPaused = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::VideoRecordingResumed() + { + iVideoResumed = ETrue; + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + +void CCameraappDummyCallbackActive::SetActiveAndCompleteRequest() + { + SetActive(); + TRequestStatus* statusPtr = &iStatus; + User::RequestComplete( statusPtr, KErrNone ); + } + +void CCameraappDummyCallbackActive::DoInitComplete( ) + { + iController.McaeoInitComplete( KErrNone ); + iInitComplete = EFalse; + } + +// ----------------------------------------------------------------------------- +// CCameraappDummyCallbackActive::StillPrepareComplete +// Prepare CCamAppControllerBase and CamAppEngine for current mode +// ----------------------------------------------------------------------------- +// +void CCameraappDummyCallbackActive::DoStillPrepareComplete() + { + iController.McaeoStillPrepareComplete( KErrNone ); + iStillPrepareComplete = EFalse; + } + +// ----------------------------------------------------------------------------- +// CCameraappDummyCallbackActive::VideoPrepareComplete +// Prepare CCamAppControllerBase and CamAppEngine for current mode +// ----------------------------------------------------------------------------- +// +void CCameraappDummyCallbackActive::DoVideoPrepareComplete() + { + iController.McaeoVideoPrepareComplete( KErrNone ); + + TTimeIntervalMicroSeconds timeElapsed( 1 ); + TTimeIntervalMicroSeconds timeRem( 100000000 ); + iController.McaeoVideoRecordingTimes( timeElapsed, timeRem, KErrNone ); + iVideoPrepareComplete = EFalse; + } + +// ----------------------------------------------------------------------------- +// CCameraappDummyCallbackActive::ViewFinderFrame +// Start the viewfinder +// ----------------------------------------------------------------------------- +// +void CCameraappDummyCallbackActive::DoViewFinderFrame() + { + iController.McaeoViewFinderFrameReady( iBitmapManager->NextBitmap(), KErrNone ); + if ( iViewFinderFrame ) + { + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + } + +void CCameraappDummyCallbackActive::DoCaptureStillL() + { + iCaptureStill = EFalse; + iController.McaeoSnapImageReady( iBitmapManager->Bitmap( 2 ), KErrNone ); + HBufC8* testData = HBufC8::NewL( KTestData( ).Length() ); + testData->Des().Copy( KTestData ); + // ownership of testData transferred to iController + iController.McaeoStillImageReady( NULL, testData, KErrNone ); + } + +void CCameraappDummyCallbackActive::DoCaptureBurstL() + { + if ( !iBurstObserver ) + { + return; + } + // if we are still taking burst images + if ( iBurstCaptureImage < iBurstCount ) + { + if ( iStopBurst ) + { + iBurstCount = iBurstCaptureImage; + } + else + { + iBurstObserver->McaesboStillBurstCaptureMoment( KErrNone ); + if (!iStopBurst ) + { + iBurstCaptureImage++; + } + } + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + // if we are sending back snap images + else if ( iBurstSnapImage < iBurstCount ) + { + iBurstSnapImage++; + iController.McaeoSnapImageReady( iBitmapManager->Bitmap( 2 ), KErrNone ); + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + // if we are sending back still images + else if ( iCompletedBurst < iBurstCount ) + { + iCompletedBurst++; + // ownership of testData transferred to iController + HBufC8* testData = HBufC8::NewL( KTestData( ).Length() ); + testData->Des().Copy( KTestData ); + iController.McaeoStillImageReady( NULL, testData, KErrNone ); + if ( !IsActive() ) + { + SetActiveAndCompleteRequest(); + } + } + else // all finished + { + iCaptureBurst = EFalse; + iBurstObserver->McaesboStillBurstComplete( iBurstCount, KErrNone ); + iBurstCount = 0; + iCompletedBurst = 0; + iBurstSnapImage = 0; + iBurstCaptureImage = 0; + } + } + +void CCameraappDummyCallbackActive::DoVideoPaused() + { + iVideoPaused = EFalse; + iController.McaeoVideoRecordingPaused( KErrNone ); + } + +void CCameraappDummyCallbackActive::DoVideoResumed() + { + iVideoResumed = EFalse; + iController.McaeoVideoRecordingOn( KErrNone ); + } + +void CCameraappDummyCallbackActive::DoVideoStopped() + { + iVideoStopped = EFalse; + iController.McaeoVideoRecordingComplete( KErrNone ); + } + +void CCameraappDummyCallbackActive::ConstructL() + { + CActiveScheduler::Add( this ); + iBitmapManager = CCameraappTestBitmapManager::NewL(); + } + +// ----------------------------------------------------------------------------- +// CCameraappDummyCallbackActive::DoCancel +// Cancels the active object +// ----------------------------------------------------------------------------- +// +void CCameraappDummyCallbackActive::DoCancel() + { + iInitComplete = EFalse; + iStillPrepareComplete = EFalse; + iVideoPrepareComplete = EFalse; + iViewFinderFrame = EFalse; + iVideoPaused = EFalse; + iVideoResumed = EFalse; + } + +void CCameraappDummyCallbackActive::RunL() + { + if ( iInitComplete ) + { + DoInitComplete(); + } + else if ( iStillPrepareComplete ) + { + DoStillPrepareComplete(); + } + else if ( iVideoPrepareComplete ) + { + DoVideoPrepareComplete(); + } + else if ( iCaptureStill ) + { + DoCaptureStillL(); + } + else if ( iCaptureBurst ) + { + DoCaptureBurstL(); + } + else if ( iVideoPaused ) + { + DoVideoPaused(); + } + else if ( iVideoResumed ) + { + DoVideoResumed(); + } + else if ( iVideoStopped ) + { + DoVideoStopped(); + } + else + { + } + + if ( iViewFinderFrame ) + { + DoViewFinderFrame(); + } + } +// End of File