void QAndroidCameraFocusControl::onViewportSizeChanged()
{
    QCameraFocusZone::FocusZoneStatus status = QCameraFocusZone::Selected;
    if (!m_focusZones.isEmpty())
        status = m_focusZones.at(0).status();
    updateFocusZones(status);
    setCameraFocusArea();
}
void QAndroidCameraFocusControl::setCustomFocusPoint(const QPointF &point)
{
    if (m_customFocusPoint != point) {
        m_customFocusPoint = point;
        emit customFocusPointChanged(m_customFocusPoint);
    }

    if (m_session->camera() && m_focusPointMode == QCameraFocus::FocusPointCustom) {
        m_actualFocusPoint = m_customFocusPoint;
        updateFocusZones();
        setCameraFocusArea();
    }
}
void QAndroidCameraFocusControl::setFocusPointMode(QCameraFocus::FocusPointMode mode)
{
    if (!m_session->camera() || m_focusPointMode == mode || !isFocusPointModeSupported(mode))
        return;

    m_focusPointMode = mode;

    if (mode == QCameraFocus::FocusPointCustom) {
        m_actualFocusPoint = m_customFocusPoint;
    } else {
        // FocusPointAuto | FocusPointCenter
        // note: there is no way to know the actual focus point in FocusPointAuto mode,
        // so just report the focus point to be at the center of the frame
        m_actualFocusPoint = QPointF(0.5, 0.5);
    }

    updateFocusZones();
    setCameraFocusArea();

    emit focusPointModeChanged(mode);
}