# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
"""
This file contains the exact signatures for all functions in module
PySide6.QtSpatialAudio, except for defaults which are replaced by "...".
"""

# mypy: disable-error-code="override, overload-overlap"
# Module `PySide6.QtSpatialAudio`

import PySide6.QtSpatialAudio
import PySide6.QtCore

import enum
import typing
from PySide6.QtCore import Signal


class QAmbientSound(PySide6.QtCore.QObject):

    autoPlayChanged          : typing.ClassVar[Signal] = ... # autoPlayChanged()
    loopsChanged             : typing.ClassVar[Signal] = ... # loopsChanged()
    sourceChanged            : typing.ClassVar[Signal] = ... # sourceChanged()
    volumeChanged            : typing.ClassVar[Signal] = ... # volumeChanged()

    class Loops(enum.IntEnum):

        Infinite                  = -1
        Once                      = 0x1


class QAudioEngine(PySide6.QtCore.QObject):

    distanceScaleChanged     : typing.ClassVar[Signal] = ... # distanceScaleChanged()
    masterVolumeChanged      : typing.ClassVar[Signal] = ... # masterVolumeChanged()
    outputDeviceChanged      : typing.ClassVar[Signal] = ... # outputDeviceChanged()
    outputModeChanged        : typing.ClassVar[Signal] = ... # outputModeChanged()
    pausedChanged            : typing.ClassVar[Signal] = ... # pausedChanged()

    class OutputMode(enum.Enum):

        Surround                  = 0x0
        Stereo                    = 0x1
        Headphone                 = 0x2


class QAudioListener(PySide6.QtCore.QObject): ...


class QAudioRoom(PySide6.QtCore.QObject):

    dimensionsChanged        : typing.ClassVar[Signal] = ... # dimensionsChanged()
    positionChanged          : typing.ClassVar[Signal] = ... # positionChanged()
    reflectionGainChanged    : typing.ClassVar[Signal] = ... # reflectionGainChanged()
    reverbBrightnessChanged  : typing.ClassVar[Signal] = ... # reverbBrightnessChanged()
    reverbGainChanged        : typing.ClassVar[Signal] = ... # reverbGainChanged()
    reverbTimeChanged        : typing.ClassVar[Signal] = ... # reverbTimeChanged()
    rotationChanged          : typing.ClassVar[Signal] = ... # rotationChanged()
    wallsChanged             : typing.ClassVar[Signal] = ... # wallsChanged()

    class Material(enum.Enum):

        Transparent               = 0x0
        AcousticCeilingTiles      = 0x1
        BrickBare                 = 0x2
        BrickPainted              = 0x3
        ConcreteBlockCoarse       = 0x4
        ConcreteBlockPainted      = 0x5
        CurtainHeavy              = 0x6
        FiberGlassInsulation      = 0x7
        GlassThin                 = 0x8
        GlassThick                = 0x9
        Grass                     = 0xa
        LinoleumOnConcrete        = 0xb
        Marble                    = 0xc
        Metal                     = 0xd
        ParquetOnConcrete         = 0xe
        PlasterRough              = 0xf
        PlasterSmooth             = 0x10
        PlywoodPanel              = 0x11
        PolishedConcreteOrTile    = 0x12
        Sheetrock                 = 0x13
        WaterOrIceSurface         = 0x14
        WoodCeiling               = 0x15
        WoodPanel                 = 0x16
        UniformMaterial           = 0x17

    class Wall(enum.Enum):

        LeftWall                  = 0x0
        RightWall                 = 0x1
        Floor                     = 0x2
        Ceiling                   = 0x3
        FrontWall                 = 0x4
        BackWall                  = 0x5


class QIntList: ...


class QSpatialSound(PySide6.QtCore.QObject):

    autoPlayChanged          : typing.ClassVar[Signal] = ... # autoPlayChanged()
    directivityChanged       : typing.ClassVar[Signal] = ... # directivityChanged()
    directivityOrderChanged  : typing.ClassVar[Signal] = ... # directivityOrderChanged()
    distanceCutoffChanged    : typing.ClassVar[Signal] = ... # distanceCutoffChanged()
    distanceModelChanged     : typing.ClassVar[Signal] = ... # distanceModelChanged()
    loopsChanged             : typing.ClassVar[Signal] = ... # loopsChanged()
    manualAttenuationChanged : typing.ClassVar[Signal] = ... # manualAttenuationChanged()
    nearFieldGainChanged     : typing.ClassVar[Signal] = ... # nearFieldGainChanged()
    occlusionIntensityChanged: typing.ClassVar[Signal] = ... # occlusionIntensityChanged()
    positionChanged          : typing.ClassVar[Signal] = ... # positionChanged()
    rotationChanged          : typing.ClassVar[Signal] = ... # rotationChanged()
    sizeChanged              : typing.ClassVar[Signal] = ... # sizeChanged()
    sourceChanged            : typing.ClassVar[Signal] = ... # sourceChanged()
    volumeChanged            : typing.ClassVar[Signal] = ... # volumeChanged()

    class DistanceModel(enum.Enum):

        Logarithmic               = 0x0
        Linear                    = 0x1
        ManualAttenuation         = 0x2

    class Loops(enum.IntEnum):

        Infinite                  = -1
        Once                      = 0x1


# eof
