camerauis/cameraxui/cxengine/src/cxeautofocuscontroldesktop.cpp
author hgs
Fri, 23 Jul 2010 11:35:41 +0300
changeset 45 24fd82631616
permissions -rw-r--r--
201029

/*
* Copyright (c) 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:
*
*/

#include <QMetaType>
#include <QImage>

//#include "cxesettings.h"
#include "cxeautofocuscontroldesktop.h"
#include "cxutils.h"
#include "cxestate.h"

/*
* CxeAutoFocusControlSymbian::CxeAutoFocusControlSymbian
*/
CxeAutoFocusControlDesktop::CxeAutoFocusControlDesktop()
    : mCancelled(false),
      mState(Unknown)
{
    CX_DEBUG_ENTER_FUNCTION();

    qRegisterMetaType<CxeAutoFocusControl::State>();

    initializeStates();
    initializeResources();

    CX_DEBUG_EXIT_FUNCTION();
}

/*
* CxeAutoFocusControlDesktop::~CxeAutoFocusControlDesktop
*/
CxeAutoFocusControlDesktop::~CxeAutoFocusControlDesktop()
{
    CX_DEBUG_ENTER_FUNCTION();
    CX_DEBUG_EXIT_FUNCTION();
}

/*
* Start Autofocus
*/
CxeError::Id CxeAutoFocusControlDesktop::start(bool soundEnabled)
{
    Q_UNUSED(soundEnabled);

    CX_DEBUG( ("CxeAutoFocusControlDesktop::start() <> state: %d", state() ) );

    CxeError::Id err = CxeError::None;

    if (state() != CxeAutoFocusControl::InProgress && state() != CxeAutoFocusControl::Canceling) {
        CX_DEBUG(("CxeAutoFocusControlDesktop::start() calling SetAutoFocusType"));
        mCancelled = false;
        mState = Ready;
        emit stateChanged(mState, CxeError::None);
    } else { // AF was started earlier, can't start until it completes
        err = CxeError::InUse;
    }

    CX_DEBUG( ("CxeAutoFocusControlDesktop::start() <= err : %d", err ) );

    return err;
}

/*
* Cancel Autofocus
*/
void CxeAutoFocusControlDesktop::cancel()
{
    CX_DEBUG( ("CxeAutoFocusControlSymbian::cancel <> state: %d", state() ) );

    if (!mCancelled) {
        if (state() == CxeAutoFocusControl::InProgress) {
            // Need to stop current AF first. Wait for AF event to proceed.
            mState = Canceling;
            emit stateChanged(mState, CxeError::None);
        } else if (state() != CxeAutoFocusControl::Canceling) {
            // Cancel means move to hyperfocal.
            mState = Canceling;
            emit stateChanged(mState, CxeError::None);
        }
    }
    CX_DEBUG_EXIT_FUNCTION();
}

/*
* Set Autofocus mode
*/
void CxeAutoFocusControlDesktop::setMode(CxeAutoFocusControl::Mode newMode)
{
    CX_DEBUG_ENTER_FUNCTION();

    mAfMode = newMode;
    mCancelled = false;

    CX_DEBUG_EXIT_FUNCTION();
}

/*
* returns Autofocus mode
*/
CxeAutoFocusControl::Mode CxeAutoFocusControlDesktop::mode() const
{
    return mAfMode;
}

/**
* Is the given mode a fixed focus mode?
*/
bool CxeAutoFocusControlDesktop::isFixedFocusMode(CxeAutoFocusControl::Mode mode) const
{
    return (mode == CxeAutoFocusControl::Hyperfocal
         || mode == CxeAutoFocusControl::Infinity);
}

/*
* To check if Autofocus is supported
*/
bool CxeAutoFocusControlDesktop::supported() const
{
    CX_DEBUG_ENTER_FUNCTION();

    bool supported = true;
    CX_DEBUG_EXIT_FUNCTION();
    return supported;
}

/*
* CxeAutoFocusControlDesktop::state
*/
CxeAutoFocusControl::State CxeAutoFocusControlDesktop::state() const
{
    return mState;
}

/*
* CxeAutoFocusControlDesktop::initializeStates
*/
void CxeAutoFocusControlDesktop::initializeStates()
{
}

/*
* CxeAutoFocusControlDesktop::initializeResources
*/
void CxeAutoFocusControlDesktop::initializeResources()
{
    CX_DEBUG_ENTER_FUNCTION();
    CX_DEBUG_EXIT_FUNCTION();
}

/*!
  * Public method for checking if auto focus sound is enabled
  * \return true if enabled
  */
bool CxeAutoFocusControlDesktop::isSoundEnabled() const
{
    return false; // should actually return mSoundEnabled
}

// end of file