aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/setup/svc_setup.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/Winamp/setup/svc_setup.h')
-rw-r--r--Src/Winamp/setup/svc_setup.h123
1 files changed, 123 insertions, 0 deletions
diff --git a/Src/Winamp/setup/svc_setup.h b/Src/Winamp/setup/svc_setup.h
new file mode 100644
index 00000000..d4cd8106
--- /dev/null
+++ b/Src/Winamp/setup/svc_setup.h
@@ -0,0 +1,123 @@
+#ifndef NULLSOFT_WINAMP_SETUP_SERVICE_HEADER
+#define NULLSOFT_WINAMP_SETUP_SERVICE_HEADER
+
+#include <bfc/dispatch.h>
+#include "./ifc_setuppage.h"
+#include "./ifc_setupjob.h"
+
+#include <windows.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif // __cplusplus
+
+#ifdef __cplusplus
+}
+#endif // __cplusplus
+
+class api_service;
+typedef BOOL (__cdecl *Plugin_RegisterSetup)(HINSTANCE /*hInstance*/, api_service* /*serviceApi*/);
+
+class __declspec(novtable) svc_setup : public Dispatchable
+{
+protected:
+ svc_setup(void) {};
+ ~svc_setup(void) {};
+public:
+ HRESULT InsertPage(ifc_setuppage *pPage, int* pIndex);
+ HRESULT RemovePage(int index);
+ HRESULT GetPageCount(int* pCount);
+ HRESULT GetPage(int index, ifc_setuppage **pPage);
+ HRESULT GetActiveIndex(int*pIndex);
+ HRESULT Start(HWND hwndWinamp);
+ HRESULT AddJob(ifc_setupjob *pJob);
+ HRESULT RemoveJob(ifc_setupjob *pJob);
+ HRESULT CreateStatusWnd(HWND *phwndStatus);
+ HRESULT Save(HWND hwndStatus);
+ HRESULT ExecJobs(HWND hwndStatus);
+ HRESULT GetWinampWnd(HWND *phwndWinamp); // this call will return S_OK only after setup->Start()
+
+public:
+ DISPATCH_CODES
+ {
+ API_SETUP_INSERT_PAGE = 10,
+ API_SETUP_REMOVE_PAGE = 20,
+ API_SETUP_GET_PAGE_COUNT= 30,
+ API_SETUP_GET_PAGE= 40,
+ API_SETUP_GET_ACTIVE_INDEX = 50,
+ API_SETUP_START = 60,
+ API_SETUP_ADD_JOB = 70,
+ API_SETUP_REMOVE_JOB = 80,
+ API_SETUP_CREATE_STATUSWND = 90,
+ API_SETUP_SAVE = 100,
+ API_SETUP_EXECJOBS = 110,
+ API_SETUP_GETWINAMPWND = 120,
+
+ };
+};
+
+inline HRESULT svc_setup::InsertPage(ifc_setuppage *pPage, int* pIndex)
+{
+ return _call(API_SETUP_INSERT_PAGE, E_NOTIMPL, pPage, pIndex);
+}
+
+inline HRESULT svc_setup::RemovePage(int index)
+{
+ return _call(API_SETUP_REMOVE_PAGE, E_NOTIMPL, index);
+}
+
+inline HRESULT svc_setup::GetPageCount(int* pCount)
+{
+ return _call(API_SETUP_GET_PAGE_COUNT, E_NOTIMPL, pCount);
+}
+
+inline HRESULT svc_setup::GetPage(int index, ifc_setuppage **pPage)
+{
+ return _call(API_SETUP_GET_PAGE, E_NOTIMPL, index, pPage);
+}
+inline HRESULT svc_setup::GetActiveIndex(int*pIndex)
+{
+ return _call(API_SETUP_GET_ACTIVE_INDEX, E_NOTIMPL, pIndex);
+}
+inline HRESULT svc_setup::Start(HWND hwndWinamp)
+{
+ return _call(API_SETUP_START, E_NOTIMPL, hwndWinamp);
+}
+
+inline HRESULT svc_setup::AddJob(ifc_setupjob *pJob)
+{
+ return _call(API_SETUP_ADD_JOB, E_NOTIMPL, pJob);
+}
+
+inline HRESULT svc_setup::RemoveJob(ifc_setupjob *pJob)
+{
+ return _call(API_SETUP_REMOVE_JOB, E_NOTIMPL, pJob);
+}
+
+inline HRESULT svc_setup::CreateStatusWnd(HWND *phwndStatus)
+{
+ return _call(API_SETUP_CREATE_STATUSWND, E_NOTIMPL, phwndStatus);
+}
+
+inline HRESULT svc_setup::Save(HWND hwndStatus)
+{
+ return _call(API_SETUP_SAVE, E_NOTIMPL, hwndStatus);
+}
+
+inline HRESULT svc_setup::ExecJobs(HWND hwndStatus)
+{
+ return _call(API_SETUP_EXECJOBS, E_NOTIMPL, hwndStatus);
+}
+
+inline HRESULT svc_setup::GetWinampWnd(HWND *phwndWinamp)
+{
+ return _call(API_SETUP_GETWINAMPWND, E_NOTIMPL, phwndWinamp);
+}
+
+
+
+// {A7281DEB-9DA8-4ee9-93A8-2E0B8F5F1805}
+static const GUID UID_SVC_SETUP = { 0xa7281deb, 0x9da8, 0x4ee9, { 0x93, 0xa8, 0x2e, 0xb, 0x8f, 0x5f, 0x18, 0x5 } };
+
+
+#endif //NULLSOFT_WINAMP_SETUP_SERVICE_HEADER