123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- #ifndef NULLSOFT_WINAMP_OMSERVICE_IMPLEMENTATION_HEADER
- #define NULLSOFT_WINAMP_OMSERVICE_IMPLEMENTATION_HEADER
- #if defined(_MSC_VER) && (_MSC_VER >= 1020)
- #pragma once
- #endif
- #include "./ifc_omservice.h"
- #include "./ifc_omservicedetails.h"
- #include "./ifc_omserviceeditor.h"
- #include "./ifc_omservicecopier.h"
- #include "./ifc_omservicecommand.h"
- #include "./ifc_omservicehostext.h"
- #include "./ifc_omserviceeventmngr.h"
- #include "./flagTracker.h"
- #include <vector>
- #include <bfc/multipatch.h>
- #define MPIID_OMSVC 10
- #define MPIID_OMSVCDETAILS 20
- #define MPIID_OMSVCEDITOR 30
- #define MPIID_OMSVCCOPIER 40
- #define MPIID_OMSVCCOMMAND 50
- #define MPIID_OMSVCEVENTMNGR 60
- #define MPIID_OMSVCHOSTEXT 70
- class OmService : public MultiPatch<MPIID_OMSVC, ifc_omservice>,
- public MultiPatch<MPIID_OMSVCDETAILS, ifc_omservicedetails>,
- public MultiPatch<MPIID_OMSVCEDITOR, ifc_omserviceeditor>,
- public MultiPatch<MPIID_OMSVCCOPIER, ifc_omservicecopier>,
- public MultiPatch<MPIID_OMSVCCOMMAND, ifc_omservicecommand>,
- public MultiPatch<MPIID_OMSVCEVENTMNGR, ifc_omserviceeventmngr>,
- public MultiPatch<MPIID_OMSVCHOSTEXT, ifc_omservicehostext>
- {
- protected:
- OmService(UINT serviceId, ifc_omservicehost *serviceHost);
- ~OmService();
- public:
- static HRESULT CreateInstance(UINT serviceId, ifc_omservicehost *serviceHost, OmService **serviceOut);
- public:
- /* Dispatchable */
- size_t AddRef();
- size_t Release();
- int QueryInterface(GUID interface_guid, void **object);
- /* ifc_omservice */
- unsigned int GetId();
- HRESULT GetName(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetUrl(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetUrlDirect(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetIcon(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetExternal(IDispatch **ppDispatch);
- HRESULT GetRating(UINT *rating);
- HRESULT GetVersion(UINT *version);
- HRESULT GetFlags(UINT *flags);
- HRESULT SetAddress(LPCWSTR pszAddress);
- HRESULT GetAddress(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetGeneration(UINT *generation);
- HRESULT UpdateFlags(UINT flags);
- /* ifc_omservicedetails */
- HRESULT GetDescription(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetAuthorFirst(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetAuthorLast(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetUpdated(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetPublished(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetThumbnail(LPWSTR pszBuffer, UINT cchBufferMax);
- HRESULT GetScreenshot(LPWSTR pszBuffer, UINT cchBufferMax);
- /* ifc_omserviceeditor */
- HRESULT SetName(LPCWSTR pszName, BOOL utf8);
- HRESULT SetUrl(LPCWSTR pszUrl, BOOL utf8);
- HRESULT SetIcon(LPCWSTR pszPath, BOOL utf8);
- HRESULT SetRating(UINT nRating);
- HRESULT SetVersion(UINT nVersion);
- HRESULT SetGeneration(UINT nGeneration);
- HRESULT SetFlags(UINT nFlags, UINT nMask);
- HRESULT SetDescription(LPCWSTR pszDescription, BOOL utf8);
- HRESULT SetAuthorFirst(LPCWSTR pszName, BOOL utf8);
- HRESULT SetAuthorLast(LPCWSTR pszName, BOOL utf8);
- HRESULT SetUpdated(LPCWSTR pszDate, BOOL utf8);
- HRESULT SetPublished(LPCWSTR pszDate, BOOL utf8);
- HRESULT SetThumbnail(LPCWSTR pszPath, BOOL utf8);
- HRESULT SetScreenshot(LPCWSTR pszPath, BOOL utf8);
- HRESULT SetModified(UINT nFlags, UINT nMask);
- HRESULT GetModified(UINT *pFlags);
- HRESULT BeginUpdate();
- HRESULT EndUpdate();
- /* ifc_omservicecopier */
- HRESULT CopyTo(ifc_omservice *service, UINT *modifiedFlags);
- /* ifc_omservicecommand */
- HRESULT QueryState(HWND hBrowser, const GUID *commandGroup, UINT commandId);
- HRESULT Exec(HWND hBrowser, const GUID *commandGroup, UINT commandId, ULONG_PTR commandArg);
- /* ifc_omserviceeventmngr */
- HRESULT RegisterEventHandler(ifc_omserviceevent *handler);
- HRESULT UnregisterEventHandler(ifc_omserviceevent *handler);
- HRESULT Signal_ServiceChange(UINT modifiedFlags);
- HRESULT Signal_CommandStateChange(const GUID *commandGroup, UINT commandId);
- /* ifc_omservicehostext */
- HRESULT GetHost(ifc_omservicehost **ppHost);
- HRESULT SetHost(ifc_omservicehost *serviceHost);
- public:
- HRESULT SetId(UINT serviceId);
- private:
- static void CALLBACK ModifiedEvent(UINT nMark, FlagTracker *instance, ULONG_PTR user);
- void UnregisterAllEventHandlers();
- HRESULT StringCchCopyExMT(LPTSTR pszDest, size_t cchDest, LPCTSTR pszSrc, LPTSTR *ppszDestEnd, size_t *pcchRemaining, DWORD dwFlags);
- protected:
- typedef std::vector<ifc_omserviceevent*> EventList;
- protected:
- ULONG ref;
- UINT id;
- LPWSTR name;
- LPWSTR url;
- LPWSTR icon;
- UINT rating;
- UINT version;
- UINT flags;
- UINT generation;
- LPWSTR description;
- LPWSTR authorFirst;
- LPWSTR authorLast;
- LPWSTR published;
- LPWSTR updated;
- LPWSTR thumbnail;
- LPWSTR screenshot;
- FlagTracker modified;
- LPWSTR address;
- ifc_omservicehost *host;
- CRITICAL_SECTION lock;
- EventList eventList;
- CRITICAL_SECTION eventLock;
- protected:
- RECVS_MULTIPATCH;
- };
- #endif //NULLSOFT_WINAMP_OMSERVICE_IMPLEMENTATION_HEADER
|