diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Library/ml_local/evntsink.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/Plugins/Library/ml_local/evntsink.cpp')
-rw-r--r-- | Src/Plugins/Library/ml_local/evntsink.cpp | 239 |
1 files changed, 239 insertions, 0 deletions
diff --git a/Src/Plugins/Library/ml_local/evntsink.cpp b/Src/Plugins/Library/ml_local/evntsink.cpp new file mode 100644 index 00000000..e3301e39 --- /dev/null +++ b/Src/Plugins/Library/ml_local/evntsink.cpp @@ -0,0 +1,239 @@ +/************************************************************************** + THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF + ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A + PARTICULAR PURPOSE. + + Copyright 1998 Microsoft Corporation. All Rights Reserved. +**************************************************************************/ + +/************************************************************************** + + File: evntsink.cpp + + Description: This file contains the implementation of the event sink. + +**************************************************************************/ + +/************************************************************************** + #include statements +**************************************************************************/ + +#include "main.h" +#include <windows.h> +#include "evntsink.h" + +/************************************************************************** + function prototypes +**************************************************************************/ + +/************************************************************************** + global variables and definitions +**************************************************************************/ + +/************************************************************************** + + CEventSink::CEventSink() + +**************************************************************************/ + +CEventSink::CEventSink() +{ + m_cRefs = 1; +} + +/************************************************************************** + + CEventSink::QueryInterface() + +**************************************************************************/ + +STDMETHODIMP CEventSink::QueryInterface(REFIID riid, PVOID *ppvObject) +{ + if (!ppvObject) + return E_POINTER; + + if (IsEqualIID(riid, IID_IDispatch)) + *ppvObject = (IDispatch *)this; + else if (IsEqualIID(riid, IID_IUnknown)) + *ppvObject = this; + else + { + *ppvObject = NULL; + return E_NOINTERFACE; + } + + AddRef(); + return S_OK; +} + +/************************************************************************** + + CEventSink::AddRef() + +**************************************************************************/ + +ULONG CEventSink::AddRef(void) +{ + return ++m_cRefs; +} + +/************************************************************************** + + CEventSink::Release() + +**************************************************************************/ + +ULONG CEventSink::Release(void) +{ + if (--m_cRefs) + return m_cRefs; + + delete this; + return 0; +} + +/************************************************************************** + + CEventSink::GetIDsOfNames() + +**************************************************************************/ + +HRESULT CEventSink::GetIDsOfNames(REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgdispid) +{ + *rgdispid = DISPID_UNKNOWN; + return DISP_E_UNKNOWNNAME; +} + +/************************************************************************** + + CEventSink::GetTypeInfo() + +**************************************************************************/ + +HRESULT CEventSink::GetTypeInfo(unsigned int itinfo, LCID lcid, ITypeInfo FAR* FAR* pptinfo) +{ + return E_NOTIMPL; +} + +/************************************************************************** + + CEventSink::GetTypeInfoCount() + +**************************************************************************/ + +HRESULT CEventSink::GetTypeInfoCount(unsigned int FAR * pctinfo) +{ + return E_NOTIMPL; +} + +/************************************************************************** + + CEventSink::Invoke() + +**************************************************************************/ + +void main_setStatusText(LPCWSTR txt) +{ + char dest[512]; + dest[0]=0; + WideCharToMultiByte(CP_ACP,0,txt,-1,dest,sizeof(dest),NULL,NULL); + //SetDlgItemText(m_hwnd,IDC_STATUS,dest); +} + +void main_beforeNavigate(LPCWSTR txt) +{ + VARIANT *blah=(VARIANT *)txt; + char dest[512]; + dest[0]=0; + WideCharToMultiByte(CP_ACP,0,blah->bstrVal,-1,dest,sizeof(dest),NULL,NULL); + //SetDlgItemText(m_hwnd,IDC_QUICKSEARCH,dest); +} + +HRESULT CEventSink::Invoke(DISPID dispid, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR *pdispparams, VARIANT FAR *pvarResult, EXCEPINFO FAR * pexecinfo, unsigned int FAR *puArgErr) +{ + switch (dispid) + { + // void StatusTextChange([in] BSTR Text); + case 0x66: + main_setStatusText(pdispparams->rgvarg[0].bstrVal); + //m_pApp->eventStatusTextChange(pdispparams->rgvarg[0].bstrVal); + break; + + // void ProgressChange([in] long Progress, [in] long ProgressMax); + case 0x6c: + break; + + // void CommandStateChange([in] long Command, [in] VARIANT_BOOL Enable); + case 0x69: + //m_pApp->eventCommandStateChange(pdispparams->rgvarg[1].lVal, pdispparams->rgvarg[0].boolVal); + break; + + // void DownloadBegin(); + case 0x6a: + //m_pApp->eventDownloadBegin(); + break; + + // void DownloadComplete(); + case 0x68: + //m_pApp->eventDownloadComplete(); + break; + + // void TitleChange([in] BSTR Text); + case 0x071: + //m_pApp->eventTitleChange(pdispparams->rgvarg[0].bstrVal); + break; + + // void PropertyChange([in] BSTR szProperty); + case 0x70: + //m_pApp->eventPropertyChange(pdispparams->rgvarg[0].bstrVal); + break; + + // void BeforeNavigate2([in] IDispatch* pDisp, [in] VARIANT* URL, [in] VARIANT* Flags, [in] VARIANT* TargetFrameName, [in] VARIANT* PostData, [in] VARIANT* Headers, [in, out] VARIANT_BOOL* Cancel); + case 0xfa: + main_beforeNavigate(pdispparams->rgvarg[5].bstrVal); + break; + + // void NewWindow2([in, out] IDispatch** ppDisp, [in, out] VARIANT_BOOL* Cancel); + case 0xfb: + break; + + // void NavigateComplete2([in] IDispatch* pDisp, [in] VARIANT* URL); + case 0xfc: + break; + + // void DocumentComplete([in] IDispatch* pDisp, [in] VARIANT* URL); + case 0x0103: + break; + + // void OnQuit(); + case 0xfd: + break; + + // void OnVisible([in] VARIANT_BOOL Visible); + case 0xfe: + break; + + // void OnToolBar([in] VARIANT_BOOL ToolBar); + case 0xff: + break; + + // void OnMenuBar([in] VARIANT_BOOL MenuBar); + case 0x0100: + break; + + // void OnStatusBar([in] VARIANT_BOOL StatusBar); + case 0x0101: + break; + + // void OnFullScreen([in] VARIANT_BOOL FullScreen); + case 0x0102: + break; + + // void OnTheaterMode([in] VARIANT_BOOL TheaterMode); + case 0x0104: + break; + } + + return S_OK; +} |