Files
AsuroImgui/AsuroTool/ApplicationData.h
2022-07-15 17:29:22 +02:00

52 lines
1.2 KiB
C++

#pragma once
#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <string>
#include <vector>
#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<AudioDevice> playbackDevices = {};
std::vector<AudioDevice> recordingDevices = {};
IMMDeviceEnumerator* deviceEnumerator = nullptr;
AudioNotificationListener* audioNotificationListener = nullptr;
AudioData();
AudioData(AudioData&& other) noexcept;
AudioData& operator=(AudioData&& other) noexcept;
~AudioData();
};
class ApplicationSettings {
public:
bool showDisabledDevices = false;
bool fitWindowHeight = true;
bool minimizeToTray = true;
};
class ApplicationData {
public:
ApplicationSettings settings = {};
std::shared_ptr<AudioData> audioData = std::make_shared<AudioData>();
};