S60CameraLocksControl::S60CameraLocksControl(S60CameraService *service, S60ImageCaptureSession *session, QObject *parent) : QCameraLocksControl(parent), m_session(0), m_service(0), m_focusControl(0), m_focusStatus(QCamera::Unlocked), m_exposureStatus(QCamera::Unlocked), m_whiteBalanceStatus(QCamera::Unlocked) { m_session = session; m_service = service; m_focusControl = qobject_cast<S60CameraFocusControl *>(m_service->requestControl(QCameraFocusControl_iid)); connect(m_session->settings(), SIGNAL(focusStatusChanged(QCamera::LockStatus, QCamera::LockChangeReason)), this, SLOT(focusStatusChanged(QCamera::LockStatus, QCamera::LockChangeReason))); }
// MCameraObserver2 void S60CameraSettings::HandleAdvancedEvent(const TECAMEvent& aEvent) { #ifdef POST_31_PLATFORM if (aEvent.iErrorCode != KErrNone) { switch (aEvent.iErrorCode) { case KErrECamCameraDisabled: emit error(QCamera::CameraError, QString("Unexpected camera error.")); return; case KErrECamSettingDisabled: emit error(QCamera::CameraError, QString("Unexpected camera error.")); return; case KErrECamParameterNotInRange: emit error(QCamera::NotSupportedFeatureError, QString("Requested value is not in supported range.")); return; case KErrECamSettingNotSupported: emit error(QCamera::NotSupportedFeatureError, QString("Requested setting is not supported.")); return; case KErrECamNotOptimalFocus: emit focusStatusChanged(QCamera::Unlocked, QCamera::LockFailed); return; } if (aEvent.iEventType == KUidECamEventCameraSettingFocusRange || aEvent.iEventType == KUidECamEventCameraSettingAutoFocusType2) { emit focusStatusChanged(QCamera::Unlocked, QCamera::LockFailed); return; } else if (aEvent.iEventType == KUidECamEventCameraSettingIsoRate) { if (aEvent.iErrorCode == KErrNotSupported) emit error(QCamera::NotSupportedFeatureError, QString("Requested ISO value is not supported.")); else emit error(QCamera::CameraError, QString("Setting ISO value failed.")); return; } else if (aEvent.iEventType == KUidECamEventCameraSettingAperture) { if (aEvent.iErrorCode == KErrNotSupported) emit error(QCamera::NotSupportedFeatureError, QString("Requested aperture value is not supported.")); else emit error(QCamera::CameraError, QString("Setting aperture value failed.")); return; } else if (aEvent.iEventType == KUidECamEventCameraSettingExposureCompensation) { if (aEvent.iErrorCode == KErrNotSupported) emit error(QCamera::NotSupportedFeatureError, QString("Requested exposure compensation is not supported.")); else emit error(QCamera::CameraError, QString("Setting exposure compensation failed.")); return; } else if (aEvent.iEventType == KUidECamEventCameraSettingOpticalZoom || aEvent.iEventType == KUidECamEventCameraSettingDigitalZoom) { if (aEvent.iErrorCode == KErrNotSupported) return; // Discard else { emit error(QCamera::CameraError, QString("Setting zoom factor failed.")); return; } } else if (aEvent.iEventType == KUidECamEventCameraSettingFocusMode) { if (aEvent.iErrorCode == KErrNotSupported) if (m_cameraEngine && m_cameraEngine->currentCameraIndex() != 0) emit error(QCamera::NotSupportedFeatureError, QString("Focusing is not supported with this camera.")); else emit error(QCamera::NotSupportedFeatureError, QString("Requested focus mode is not supported.")); else emit error(QCamera::CameraError, QString("Setting focus mode failed.")); return; } else { emit error(QCamera::CameraError, QString("Unexpected camera error.")); return; } } if (aEvent.iEventType == KUidECamEventCameraSettingExposureLock) { if (m_advancedSettings) { if (m_advancedSettings->ExposureLockOn()) emit exposureStatusChanged(QCamera::Locked, QCamera::LockAcquired); else emit exposureStatusChanged(QCamera::Unlocked, QCamera::LockLost); } else emit exposureStatusChanged(QCamera::Unlocked, QCamera::LockLost); } else if (aEvent.iEventType == KUidECamEventCameraSettingAperture) emit apertureChanged(); else if (aEvent.iEventType == KUidECamEventCameraSettingApertureRange) emit apertureRangeChanged(); else if (aEvent.iEventType == KUidECamEventCameraSettingIsoRate) emit isoSensitivityChanged(); else if (aEvent.iEventType == KUidECamEventCameraSettingShutterSpeed) emit shutterSpeedChanged(); else if (aEvent.iEventType == KUidECamEventFlashReady) emit flashReady(true); else if (aEvent.iEventType == KUidECamEventFlashNotReady) emit flashReady(false); else if (aEvent.iEventType.iUid == KUidECamEventCameraSettingsOptimalFocusUidValue) { emit focusStatusChanged(QCamera::Locked, QCamera::LockAcquired); } else if (aEvent.iEventType == KUidECamEventCameraSettingFocusMode) emit focusStatusChanged(QCamera::Searching, QCamera::UserRequest); #else // S60 3.1 Platform Q_UNUSED(aEvent); #endif // POST_31_PLATFORM }