#pragma once #include #include #include #include #include "AudioNotificationListener.h" class AudioDevice { public: IMMDevice* device = nullptr; IAudioEndpointVolume* volumeInterface = nullptr; IAudioMeterInformation* meterInterface = nullptr; std::wstring id = {}; std::string name = {}; unsigned long state = {}; bool isDefaultConsole = {}; bool isDefaultMedia = {}; bool isDefaultCommunication = {}; AudioDevice(); AudioDevice(AudioDevice&& other) noexcept; AudioDevice& operator=(AudioDevice&& other) noexcept; ~AudioDevice(); }; class AudioData { public: std::vector playbackDevices = {}; std::vector recordingDevices = {}; IMMDeviceEnumerator* deviceEnumerator = nullptr; AudioNotificationListener* audioNotificationListener = nullptr; AudioData(); AudioData(AudioData&& other) noexcept; AudioData& operator=(AudioData&& other) noexcept; ~AudioData(); }; class ApplicationSettings { public: bool docked = false; bool showDisabledDevices = false; }; class ApplicationData { public: ApplicationSettings settings = {}; std::shared_ptr audioData = std::make_shared(); ApplicationData(const ApplicationData&) = delete; ApplicationData& operator=(const ApplicationData&) = delete; };