#pragma once #include "AudioNotificationListener.h" #include #include #include #include class AudioDevice { public: IMMDevice* device = nullptr; IAudioEndpointVolume* volumeInterface = nullptr; IAudioMeterInformation* meterInterface = nullptr; std::wstring id = {}; std::string name = {}; unsigned long state = {}; bool isDefaultConsole = false; bool isDefaultMedia = false; bool isDefaultCommunication = false; float minVolumeDb = 0.f; float maxVolumeDb = 0.f; AudioDevice(IMMDevice* device, LPCWSTR deviceId); 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 autostart = false; bool docked = false; bool showDisabledDevices = false; std::vector taskNames = {}; std::unordered_map> tasks = {}; }; class ApplicationData { public: ApplicationSettings settings = {}; size_t checklistLength = 0; std::shared_ptr audioData = std::make_shared(); //ApplicationData(const ApplicationData&) = delete; //ApplicationData& operator=(const ApplicationData&) = delete; };