diff -r f54ad444594d -r 61bc0f252b2b camerauis/cameraxui/cxengine/inc/cxeautofocuscontrolsymbian.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/cameraxui/cxengine/inc/cxeautofocuscontrolsymbian.h Tue Aug 31 15:03:46 2010 +0300 @@ -0,0 +1,105 @@ +/* +* Copyright (c) 2009-2010 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: +* +*/ + +#ifndef CXEAUTOFOCUSCONTROLSYMBIAN_H +#define CXEAUTOFOCUSCONTROLSYMBIAN_H + +#include +#include // CCamera +#include // CCamera +#include "cxenamespace.h" +#include "cxeautofocuscontrol.h" +#include "cxestatemachine.h" + +//forward declarations +class CxeCameraDevice; +class CxeSettings; + + + +/** + * CxeAutoFocusControl is responsible for handling Autofocus events from the camera adaptation. + * It also routes the Autofocus successful and failed events to the clients interested in Žknowing the + * status of Autofocus. + */ +class CxeAutoFocusControlSymbian : public CxeAutoFocusControl, + public CxeStateMachine + { + Q_OBJECT +public: + + CxeAutoFocusControlSymbian( CxeCameraDevice &cameraDevice, CxeSettings &settings ); + virtual ~CxeAutoFocusControlSymbian(); + + CxeError::Id start(bool soundEnabled = true); + void cancel(); + void setMode( CxeAutoFocusControl::Mode newMode ); + CxeAutoFocusControl::Mode mode() const; + bool isFixedFocusMode(CxeAutoFocusControl::Mode mode) const; + + CxeAutoFocusControl::State state() const; + bool supported() const; + + bool isSoundEnabled() const; + +protected: // from CxeStateMachine + void handleStateChanged( int newStateId, CxeError::Id error ); + +protected: + void initializeStates(); + // intializes all the resources we need for AF functionality + void initializeResources(); + + void setFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange range); + CCamera::CCameraAdvancedSettings::TFocusRange focusRange() const; + + void setFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType type); + int supportedFocusTypes() const; + CCamera::CCameraAdvancedSettings::TAutoFocusType focusType() const; + +protected slots: + + // notifications when camera reference is changed + void prepareForCameraDelete(); + void handleCameraAllocated(CxeError::Id error); + + // notification for when camera is released + void prepareForRelease(); + + // Handle ECam events + void handleCameraEvent( int eventUid, int error ); + void handleSceneChanged(const QVariant &scene); + void handleSettingValueChanged(const QString &settingId, QVariant newValue); + +private: + + // handles to-do things if the event is AF event + void handleAfEvent(int eventUid, int error); + +protected: + CxeCameraDevice &mCameraDevice; + CCamera::CCameraAdvancedSettings *mAdvancedSettings; // not owned + CxeAutoFocusControl::Mode mAfMode; + CCamera::CCameraAdvancedSettings::TFocusRange mAFRange; + CxeSettings &mSettings; + bool mCancelled; + bool mSoundEnabled; + bool mFaceTrackingOverride; //need for temporary override of the AF mode if FT is enabled by user + CxeAutoFocusControl::Mode mPreviousAFMode; //for restoring previous AF mode in case of FT override + }; + +#endif // CXEAUTOFOCUSCONTROLSYMBIAN_H