diff options
Diffstat (limited to 'Src/devices/deviceConnection.h')
-rw-r--r-- | Src/devices/deviceConnection.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/Src/devices/deviceConnection.h b/Src/devices/deviceConnection.h new file mode 100644 index 00000000..3d2dd8e2 --- /dev/null +++ b/Src/devices/deviceConnection.h @@ -0,0 +1,59 @@ +#ifndef _NULLSOFT_WINAMP_DEVICES_DEVICE_CONNECTION_HEADER +#define _NULLSOFT_WINAMP_DEVICES_DEVICE_CONNECTION_HEADER + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#include "./ifc_deviceconnection.h" +#include "./ifc_deviceconnectioneditor.h" +#include "./ifc_deviceiconstore.h" +#include "./deviceIconStore.h" + +#include <bfc/multipatch.h> + +#define MPIID_DEVICECONNECTION 10 +#define MPIID_DEVICECONNECTIONEDITOR 20 + +class DeviceConnection : public MultiPatch<MPIID_DEVICECONNECTION, ifc_deviceconnection>, + public MultiPatch<MPIID_DEVICECONNECTIONEDITOR, ifc_deviceconnectioneditor> +{ + +protected: + DeviceConnection(); + ~DeviceConnection(); + +public: + static HRESULT CreateInstance(const char *name, DeviceConnection **instance); + +public: + /* Dispatchable */ + size_t AddRef(); + size_t Release(); + int QueryInterface(GUID interface_guid, void **object); + + /* ifc_deviceconnection */ + const char *GetName(); + HRESULT GetIcon(wchar_t *buffer, size_t bufferSize, int width, int height); + HRESULT GetDisplayName(wchar_t *buffer, size_t bufferSize); + + /* ifc_deviceconnectioneditor */ + HRESULT GetIconStore(ifc_deviceiconstore **store); + HRESULT SetDisplayName(const wchar_t *displayName); + +public: + void Lock(); + void Unlock(); + +protected: + size_t ref; + char *name; + wchar_t *displayName; + DeviceIconStore *iconStore; + CRITICAL_SECTION lock; + +protected: + RECVS_MULTIPATCH; +}; + +#endif // _NULLSOFT_WINAMP_DEVICES_DEVICE_CONNECTION_HEADER |