#ifndef NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPPAGE_HEADER #define NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPPAGE_HEADER #if defined(_MSC_VER) && (_MSC_VER >= 1020) #pragma once #endif #include #include #include "../../winamp/setup/ifc_setuppage.h" #include "../../winamp/setup/ifc_setupjob.h" #include "./setupGroupList.h" class SetupListboxLabel; #define ID_KNOWNGROUP 0 #define ID_FEATUREDGROUP 1 #define MPIID_SETUPPAGE 10 #define MPIID_SETUPJOB 20 #define SPM_FIRST (WM_APP + 2) #define SPM_UPDATELIST (SPM_FIRST + 0) class SetupPage : public MultiPatch, public MultiPatch { protected: typedef enum { flagInitWasabi = 0x00000001, }; protected: SetupPage(); virtual ~SetupPage(); public: static SetupPage* CreateInstance(); public: /* Dispatchable */ size_t AddRef(); size_t Release(); int QueryInterface(GUID interface_guid, void **object); /* ifc_setuppage */ HRESULT GetName(bool bShort, const wchar_t **pszName); HRESULT Save(HWND hText); HRESULT CreateView(HWND hParent, HWND *phwnd); HRESULT Revert(void); HRESULT IsDirty(void); HRESULT Validate(void); /* ifc_setupjob */ HRESULT Execute(HWND hwndText); HRESULT Cancel(HWND hwndText); HRESULT IsCancelSupported(void); public: BOOL AttachWindow(HWND hAttach); void DetachWindow(); void ListboxSelectionChanged(); BOOL UpdateListAsync(INT groupId); protected: HRESULT InitializeServices(); private: size_t ref; HWND hwnd; LPWSTR name; LPWSTR title; SetupGroupList *groupList; HANDLE completeEvent; BOOL servicesInitialized; protected: RECVS_MULTIPATCH; }; #endif //NULLOSFT_ONLINEMEDIA_PLUGIN_SETUPPAGE_HEADER