diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/cameraapp/generic/inc/cameracontroller/camcameracontrolleractive.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraapp/generic/inc/cameracontroller/camcameracontrolleractive.h Wed Sep 01 12:30:54 2010 +0100 @@ -0,0 +1,143 @@ +/* +* 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: CCamCameraControllerActive class declaration. +* This class presents an active object used to call back +* CCamCameraController methods. This is done to keep clients +* not blocked when issuing a request or sequence of requests. +* +* +*/ + + +#ifndef CAM_CAMERACONTROLLERACTIVE_H +#define CAM_CAMERACONTROLLERACTIVE_H + +// =========================================================================== +// Included headers + +#include + + +// =========================================================================== +// Forward declarations + +class CCamCameraController; + + +// =========================================================================== +// Classes + +/** +* Camera controller active object. +* +* Used to assist on asynchronising CCamCameraController requests. +* +*/ +class CCamCameraControllerActive : public CActive + { + // ========================================================================= + // Methods + + // ------------------------------------------------------------------------- + // Constructor(s) and destructor + public: + + /** + * Static 2 phase constructor. + * @param aController Camera controller, which callbacks will be called. + * @param aPriority This active object's priority. + */ + static CCamCameraControllerActive* NewL( CCamCameraController& aController, TInt aPriority ); + + /** + * Destructor. + */ + virtual ~CCamCameraControllerActive(); + + private: + + /** + * Standard Symbian 2nd phase constructor. + */ + void ConstructL(); + + /** + * Standard C++ constructor. + */ + CCamCameraControllerActive( CCamCameraController& aController, + TInt aPriority ); + + // ------------------------------------------------------------------------- + // from CActive + protected: + + /** + * Reacts to CActive::Cancel, if this AO was active. + * @see See CActive for more info. + */ + virtual void DoCancel(); + + /** + * Calls CCamCameraController::ProcessNextRequestL. If leave occurs there, + * RunError will be called by CActiveScheduler. Checks the return value of + * CCamCameraController::ProcessNextRequestL and if it is not zero, sets this + * AO ready for new iteration. + * @see See CActive for more info. + */ + virtual void RunL(); + + /** + * Called if a leave occurs in RunL. + * @param aError Leave code from RunL. + * @return Always KErrNone. + * @see See CActive for more info. + */ + virtual TInt RunError( TInt aError ); + + // ------------------------------------------------------------------------- + // New methods. + public: + + /** + * Sets this Active Object to ActiveScheduler's queue. + * RunL calls back CCamCameraController::ProcessNextRequestL. + * If the return value is not zero, this AO will be scheduled to run again. + * Otherwise new call to IssueRequest is needed. + * If leave occurs in RunL, RunError calls CCameraController::EndSequence. + */ + void IssueRequest(); + + private: + + /** + * Stop the sequence handling on error. + * Calls CCameraController::EndSequence. + */ + void HandleError( TInt aStatus ); + + // ========================================================================= + // Data + private: + + /** + * Camera controller, which callbacks will be called. + */ + CCamCameraController& iController; + + // ========================================================================= + }; + +#endif // CAM_CAMERACONTROLLERACTIVE_H + +// end of file