// 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
}
Ejemplo n.º 2
0
void Camera::resetCapabilities() {
  QtCamDevice *dev = device();

  delete m_zoom;
  m_zoom = new Zoom(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()), m_zoom, SLOT(prepareForDeviceChange()));
  emit zoomChanged();

  delete m_flash;
  m_flash = new Flash(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_flash, SLOT(prepareForDeviceChange()));
  emit flashChanged();

  delete m_scene;
  m_scene = new Scene(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_scene, SLOT(prepareForDeviceChange()));
  emit sceneChanged();

  delete m_evComp;
  m_evComp = new EvComp(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_evComp, SLOT(prepareForDeviceChange()));
  emit evCompChanged();

  delete m_whiteBalance;
  m_whiteBalance = new WhiteBalance(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_whiteBalance, SLOT(prepareForDeviceChange()));
  emit whiteBalanceChanged();

  delete m_colorTone;
  m_colorTone = new ColorTone(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_colorTone, SLOT(prepareForDeviceChange()));
  emit colorToneChanged();

  delete m_iso;
  m_iso = new Iso(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()), m_iso, SLOT(prepareForDeviceChange()));
  emit isoChanged();

  delete m_exposure;
  m_exposure = new Exposure(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_exposure, SLOT(prepareForDeviceChange()));
  emit exposureChanged();

  delete m_aperture;
  m_aperture = new Aperture(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_aperture, SLOT(prepareForDeviceChange()));
  emit apertureChanged();

  delete m_noiseReduction;
  m_noiseReduction = new NoiseReduction(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_noiseReduction, SLOT(prepareForDeviceChange()));
  emit noiseReductionChanged();

  delete m_flickerReduction;
  m_flickerReduction = new FlickerReduction(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_flickerReduction, SLOT(prepareForDeviceChange()));
  emit flickerReductionChanged();

  delete m_focus;
  m_focus = new Focus(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_focus, SLOT(prepareForDeviceChange()));
  emit focusChanged();

  delete m_autoFocus;
  m_autoFocus = new AutoFocus(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_autoFocus, SLOT(prepareForDeviceChange()));
  emit autoFocusChanged();

  delete m_roi;
  m_roi = new Roi(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()), m_roi, SLOT(prepareForDeviceChange()));
  emit roiChanged();

  delete m_videoMute;
  m_videoMute = new VideoMute(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_videoMute, SLOT(prepareForDeviceChange()));
  emit videoMuteChanged();

  delete m_videoTorch;
  m_videoTorch = new VideoTorch(dev, this);
  QObject::connect(this, SIGNAL(prepareForDeviceChange()),
		   m_videoTorch, SLOT(prepareForDeviceChange()));
  emit videoTorchChanged();
}