#pragma once

#include <mmdeviceapi.h>
#include <endpointvolume.h>
#include <string>
#include <vector>

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();
};

class ApplicationSettings {
public:
	bool showDisabledDevices = false;
	bool fitWindowHeight = true;
};

class ApplicationData {
public:
	ApplicationSettings settings = {};
	std::vector<AudioDevice> playbackDevices = {};
	std::vector<AudioDevice> recordingDevices = {};
};
