#pragma once #define invoke_mem_fn(object,ptrToMember) ((object).*(ptrToMember)) #define pinvoke_mem_fn(object,ptrToMember) ((object)->*(ptrToMember)) /* #ifndef QTBLESSED */ /* //#define Q_OBJECT */ /* class QWidget{}; */ /* class QMainWindow{}; */ /* #endif */ class EndpointWidget; class Endpoint; class EndpointCallback; class Overseer; enum AudioChannel { CHANNEL_LEFT = (1 << 0), CHANNEL_RIGHT = (1 << 1), CHANNEL_MAIN = ~0, }; struct NGuid { uint32_t data1; uint16_t data2; uint16_t data3; unsigned char data4[8]; }; class EndpointHandler { public: EndpointHandler(uint64_t idx); //TODO: get(); Endpoint *ep = nullptr; EndpointCallback *epc = nullptr; //std::wstring epName; uint32_t getChannelCount(); void setIndex(uint64_t idx); uint64_t getIndex(); void setVolume(int channel, float volume); std::wstring getName(); float getVolume(int channel); bool getMute(); void setVolume(NGuid* guid, int channel, int value); void setMute(NGuid* guid, bool muted); ~EndpointHandler(); private: uint64_t idx; //QSlider *slidy; //signals: }; class OverseerHandler { public: //OverseerHandler(); void setEndpointHandlers(std::vector ephs); std::vector getEndpointHandlers(); std::vector getPlaybackEndpoints(); uint64_t getPlaybackEndpointsCount(); void reloadEndpointHandlers(); NGuid* getGuid(); void updateMuteCallback(uint64_t idx, bool muted); void setFrontMuteCallback(std::function f); void setFrontVolumeCallback(std::function f); //void updateMainVolumeCallback(uint64_t idx, float newVal); void updateVolumeCallback(uint64_t idx, uint32_t channel, float newVal); private: static Overseer os; std::vector endpointHandlers; std::function updateFrontVolumeCallback; std::function updateFrontMuteCallback; };