Files
AsuroImgui/AsuroTool/ApplicationData.h
2022-12-22 10:55:56 +01:00

62 lines
1.5 KiB
C++

#pragma once
#include "AudioNotificationListener.h"
#include <endpointvolume.h>
#include <string>
#include <vector>
#include <unordered_map>
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<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 autostart = false;
bool docked = false;
bool showDisabledDevices = false;
std::vector<std::string> taskNames = {};
std::unordered_map<std::string, std::vector<time_t>> tasks = {};
};
class ApplicationData {
public:
ApplicationSettings settings = {};
size_t checklistLength = 0;
std::shared_ptr<AudioData> audioData = std::make_shared<AudioData>();
//ApplicationData(const ApplicationData&) = delete;
//ApplicationData& operator=(const ApplicationData&) = delete;
};