diff options
Diffstat (limited to 'plugins/wmpa')
53 files changed, 5247 insertions, 0 deletions
diff --git a/plugins/wmpa/ReadMe.txt b/plugins/wmpa/ReadMe.txt new file mode 100644 index 00000000..00a549f8 --- /dev/null +++ b/plugins/wmpa/ReadMe.txt @@ -0,0 +1,70 @@ +======================================================================== + MICROSOFT FOUNDATION CLASS LIBRARY : wmpa +======================================================================== + + +AppWizard has created this wmpa DLL for you. This DLL not only +demonstrates the basics of using the Microsoft Foundation classes but +is also a starting point for writing your DLL. + +This file contains a summary of what you will find in each of the files that +make up your wmpa DLL. + +wmpa.dsp + This file (the project file) contains information at the project level and + is used to build a single project or subproject. Other users can share the + project (.dsp) file, but they should export the makefiles locally. + +wmpa.h + This is the main header file for the DLL. It declares the + CWmpaApp class. + +wmpa.cpp + This is the main DLL source file. It contains the class CWmpaApp. + It also contains the OLE entry points required of inproc servers. + +wmpa.odl + This file contains the Object Description Language source code for the + type library of your DLL. + +wmpa.rc + This is a listing of all of the Microsoft Windows resources that the + program uses. It includes the icons, bitmaps, and cursors that are stored + in the RES subdirectory. This file can be directly edited in Microsoft + Visual C++. + +wmpa.clw + This file contains information used by ClassWizard to edit existing + classes or add new classes. ClassWizard also uses this file to store + information needed to create and edit message maps and dialog data + maps and to create prototype member functions. + +res\wmpa.rc2 + This file contains resources that are not edited by Microsoft + Visual C++. You should place all resources not editable by + the resource editor in this file. + +wmpa.def + This file contains information about the DLL that must be + provided to run with Microsoft Windows. It defines parameters + such as the name and description of the DLL. It also exports + functions from the DLL. + +///////////////////////////////////////////////////////////////////////////// +Other standard files: + +StdAfx.h, StdAfx.cpp + These files are used to build a precompiled header (PCH) file + named wmpa.pch and a precompiled types file named StdAfx.obj. + +Resource.h + This is the standard header file, which defines new resource IDs. + Microsoft Visual C++ reads and updates this file. + +///////////////////////////////////////////////////////////////////////////// +Other notes: + +AppWizard uses "TODO:" to indicate parts of the source code you +should add to or customize. + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/wmpa/StdAfx.cpp b/plugins/wmpa/StdAfx.cpp new file mode 100644 index 00000000..ae3c5313 --- /dev/null +++ b/plugins/wmpa/StdAfx.cpp @@ -0,0 +1,8 @@ +// stdafx.cpp : source file that includes just the standard includes +// wmpa.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + + + diff --git a/plugins/wmpa/StdAfx.h b/plugins/wmpa/StdAfx.h new file mode 100644 index 00000000..f88a91f3 --- /dev/null +++ b/plugins/wmpa/StdAfx.h @@ -0,0 +1,62 @@ +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#if !defined(AFX_STDAFX_H__33D7BD1A_A9B6_4BDE_B867_5278529B95B2__INCLUDED_) +#define AFX_STDAFX_H__33D7BD1A_A9B6_4BDE_B867_5278529B95B2__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers + +#include <afxwin.h> // MFC core and standard components +#include <afxext.h> // MFC extensions + +#ifndef _AFX_NO_OLE_SUPPORT +#include <afxole.h> // MFC OLE classes +#include <afxodlgs.h> // MFC OLE dialog classes +#include <afxdisp.h> // MFC Automation classes +#endif // _AFX_NO_OLE_SUPPORT + + +#ifndef _AFX_NO_DB_SUPPORT +#include <afxdb.h> // MFC ODBC database classes +#endif // _AFX_NO_DB_SUPPORT + +#ifndef _AFX_NO_DAO_SUPPORT +#include <afxdao.h> // MFC DAO database classes +#endif // _AFX_NO_DAO_SUPPORT + +#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include <afxcmn.h> // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +/****************************************************************** +* Includes +******************************************************************/ +#include "wmpcdrom.h" +#include "wmpcdromcollection.h" +#include "wmpclosedcaption.h" +#include "wmpcontrols.h" +#include "wmpdvd.h" +#include "wmperror.h" +#include "wmperroritem.h" +#include "wmpmedia.h" +#include "wmpmediacollection.h" +#include "wmpnetwork.h" +#include "wmpplayer4.h" +#include "wmpplayerapplication.h" +#include "wmpplaylist.h" +#include "wmpplaylistarray.h" +#include "wmpplaylistcollection.h" +#include "wmpsettings.h" +#include "wmpstringcollection.h" + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_STDAFX_H__33D7BD1A_A9B6_4BDE_B867_5278529B95B2__INCLUDED_) diff --git a/plugins/wmpa/res/wmpa.rc2 b/plugins/wmpa/res/wmpa.rc2 new file mode 100644 index 00000000..a45caf5c --- /dev/null +++ b/plugins/wmpa/res/wmpa.rc2 @@ -0,0 +1,13 @@ +// +// WMPA.RC2 - resources Microsoft Visual C++ does not edit directly +// + +#ifdef APSTUDIO_INVOKED + #error this file is not editable by Microsoft Visual C++ +#endif //APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// Add manually edited resources here... + +///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/wmpa/resource.h b/plugins/wmpa/resource.h new file mode 100644 index 00000000..0ce93a4c --- /dev/null +++ b/plugins/wmpa/resource.h @@ -0,0 +1,22 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by wmpa.rc +// +#define IDD_WMPADIALOG 2000 +#define IDC_PLAYLIST 2001 +#define IDC_STATIC1 2002 +#define IDC_WMP 2005 +#define IDI_XCHAT 2005 +#define IDC_SONGLIST 2006 +#define IDC_STATIC2 2007 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 2006 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 2008 +#define _APS_NEXT_SYMED_VALUE 2000 +#endif +#endif diff --git a/plugins/wmpa/wmpa.clw b/plugins/wmpa/wmpa.clw new file mode 100644 index 00000000..6d850e3e --- /dev/null +++ b/plugins/wmpa/wmpa.clw @@ -0,0 +1,43 @@ +; CLW file contains information for the MFC ClassWizard + +[General Info] +Version=1 +ODLFile=wmpa.odl +ClassCount=2 +Class1=CWmpaApp +LastClass=CWMPADialog +NewFileInclude2=#include "wmpa.h" +ResourceCount=1 +NewFileInclude1=#include "stdafx.h" +Class2=CWMPADialog +LastTemplate=CDialog +Resource1=IDD_WMPADIALOG + +[CLS:CWmpaApp] +Type=0 +HeaderFile=wmpa.h +ImplementationFile=wmpa.cpp +Filter=N +LastObject=CWmpaApp +BaseClass=CWinApp +VirtualFilter=AC + +[DLG:IDD_WMPADIALOG] +Type=1 +Class=CWMPADialog +ControlCount=5 +Control1=IDC_PLAYLIST,listbox,1353777409 +Control2=IDC_STATIC1,static,1342308352 +Control3=IDC_WMP,{6BF52A52-394A-11D3-B153-00C04F79FAA6},1342242816 +Control4=IDC_SONGLIST,listbox,1352728833 +Control5=IDC_STATIC2,static,1342308352 + +[CLS:CWMPADialog] +Type=0 +HeaderFile=wmpadialog.h +ImplementationFile=wmpadialog.cpp +BaseClass=CDialog +LastObject=CWMPADialog +Filter=D +VirtualFilter=dWC + diff --git a/plugins/wmpa/wmpa.cpp b/plugins/wmpa/wmpa.cpp new file mode 100644 index 00000000..d9488f6d --- /dev/null +++ b/plugins/wmpa/wmpa.cpp @@ -0,0 +1,212 @@ +/****************************************************************** +* $Id$ +* +* $Log$ +* +* Copyright © 2005 David Cullen, All rights reserved +* +******************************************************************/ +#include "stdafx.h" +#include "wmpa.h" +#include "WMPADialog.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +// +// Note! +// +// If this DLL is dynamically linked against the MFC +// DLLs, any functions exported from this DLL which +// call into MFC must have the AFX_MANAGE_STATE macro +// added at the very beginning of the function. +// +// For example: +// +// extern "C" BOOL PASCAL EXPORT ExportedFunction() +// { +// AFX_MANAGE_STATE(AfxGetStaticModuleState()); +// // normal function body here +// } +// +// It is very important that this macro appear in each +// function, prior to any calls into MFC. This means that +// it must appear as the first statement within the +// function, even before any object variable declarations +// as their constructors may generate calls into the MFC +// DLL. +// +// Please see MFC Technical Notes 33 and 58 for additional +// details. +// + +///////////////////////////////////////////////////////////////////////////// +// CWmpaApp + +BEGIN_MESSAGE_MAP(CWmpaApp, CWinApp) + //{{AFX_MSG_MAP(CWmpaApp) + // NOTE - the ClassWizard will add and remove mapping macros here. + // DO NOT EDIT what you see in these blocks of generated code! + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CWmpaApp construction + +CWmpaApp::CWmpaApp() +{ + // TODO: add construction code here, + // Place all significant initialization in InitInstance + m_pDialog = NULL; +} + +///////////////////////////////////////////////////////////////////////////// +// The one and only CWmpaApp object + +CWmpaApp theApp; + +///////////////////////////////////////////////////////////////////////////// +// CWmpaApp initialization + +BOOL CWmpaApp::InitInstance() +{ + // Register all OLE server (factories) as running. This enables the + // OLE libraries to create objects from other applications. + COleObjectFactory::RegisterAll(); + + // WARNING: This function enables the ActiveX control container + // Without this function you will not be able to load the WMP + // In fact you will get the following error: + // >>> If this dialog has OLE controls: + // >>> AfxEnableControlContainer has not been called yet. + // >>> You should call it in your app's InitInstance function. + AfxEnableControlContainer(); + + // WARNING: This function initializes the COM library for use + // Without this function you will not be able to load the WMP + // In fact you will get the following error: + // CoCreateInstance of OLE control {6BF52A52-394A-11D3-B153-00C04F79FAA6} failed. + // >>> Result code: 0x800401f0 + // >>> Is the control is properly registered? + // The Error Lookup tool will tell you result code 0x800401F0 means + // CoInitialize has not been called. + CoInitialize(NULL); + + return TRUE; +} + +/****************************************************************** +* ShowWMPA +******************************************************************/ +BOOL CWmpaApp::ShowWMPA(void) +{ + HRESULT result = FALSE; + BOOL created; + + // WARNING: The following two funcions make sure we look for + // our resources in our DLL not in the calling EXE + // Without these functions you will not be able to load the + // Windows Media Player + HMODULE hModule = GetModuleHandle("WMPA.DLL"); + AfxSetResourceHandle((HINSTANCE) hModule); + + if (m_pDialog == NULL) m_pDialog = new CWMPADialog; + + created = m_pDialog->Create(IDD_WMPADIALOG, m_pDialog); + if (!created) return(E_FAIL); + m_pDialog->m_hIcon = LoadIcon(IDI_XCHAT); + m_pDialog->SetIcon(m_pDialog->m_hIcon, TRUE); + + result = m_pDialog->ShowWindow(SW_SHOWNORMAL); + + return(created); +} + +///////////////////////////////////////////////////////////////////////////// +// Special entry points required for inproc servers + +STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + return AfxDllGetClassObject(rclsid, riid, ppv); +} + +STDAPI DllCanUnloadNow(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + return AfxDllCanUnloadNow(); +} + +// by exporting DllRegisterServer, you can use regsvr.exe +STDAPI DllRegisterServer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + COleObjectFactory::UpdateRegistryAll(); + return(S_OK); +} + +/****************************************************************** +* DestroyWMPA +******************************************************************/ +BOOL CWmpaApp::DestroyWMPA(void) +{ + if (theApp.m_pDialog == NULL) return(FALSE); + + theApp.m_pDialog->m_WMP.GetControls().stop(); + theApp.m_pDialog->DeleteTrayIcon(); + theApp.m_pDialog->DestroyWindow(); + + return(TRUE); +} + +/****************************************************************** +* StartWindowsMediaPlayer +******************************************************************/ +BOOL StartWindowsMediaPlayer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + BOOL result = theApp.ShowWMPA(); + + return(result); +} + +/****************************************************************** +* StopWindowsMediaPlayer +******************************************************************/ +BOOL StopWindowsMediaPlayer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + BOOL result = theApp.DestroyWMPA(); + + return(result); +} + +/****************************************************************** +* GetWindowsMediaPlayer +******************************************************************/ +CWMPPlayer4 *GetWindowsMediaPlayer(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + if (theApp.m_pDialog == NULL) return(NULL); + + return(&(theApp.m_pDialog->m_WMP)); +} + +/****************************************************************** +* GetWMPADialog +******************************************************************/ +CWMPADialog *GetWMPADialog(void) +{ + AFX_MANAGE_STATE(AfxGetStaticModuleState()); + + if (theApp.m_pDialog == NULL) return(NULL); + + return(theApp.m_pDialog); +} + diff --git a/plugins/wmpa/wmpa.def b/plugins/wmpa/wmpa.def new file mode 100644 index 00000000..d3162b7d --- /dev/null +++ b/plugins/wmpa/wmpa.def @@ -0,0 +1,16 @@ +; wmpa.def : Declares the module parameters for the DLL. + +LIBRARY "wmpa" +DESCRIPTION 'wmpa Windows Dynamic Link Library' + +EXPORTS + ; Explicit exports can go here + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE + DllRegisterServer PRIVATE + xchat_plugin_init + xchat_plugin_deinit + xchat_plugin_get_info + StartWindowsMediaPlayer + GetWindowsMediaPlayer + GetWMPADialog diff --git a/plugins/wmpa/wmpa.dsp b/plugins/wmpa/wmpa.dsp new file mode 100644 index 00000000..6f2e7458 --- /dev/null +++ b/plugins/wmpa/wmpa.dsp @@ -0,0 +1,421 @@ +# Microsoft Developer Studio Project File - Name="wmpa" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 + +CFG=wmpa - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "wmpa.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "wmpa.mak" CFG="wmpa - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "wmpa - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE "wmpa - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +MTL=midl.exe +RSC=rc.exe + +!IF "$(CFG)" == "wmpa - Win32 Release" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "C:\Program Files\Microsoft Platform SDK\Include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /Yu"stdafx.h" /FD /c +# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "NDEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /machine:I386 +# ADD LINK32 /nologo /subsystem:windows /dll /machine:I386 +# Begin Custom Build +InputPath=.\Release\wmpa.dll +InputName=wmpa +SOURCE="$(InputPath)" + +"C:\msys\1.0\local\src\xchat\src\fe-gtk\plugins\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy /Y $(InputPath) "C:\msys\1.0\local\src\xchat\src\fe-gtk\plugins\$(InputName).dll" + +# End Custom Build + +!ELSEIF "$(CFG)" == "wmpa - Win32 Debug" + +# PROP BASE Use_MFC 6 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 6 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W4 /Gm /GX /ZI /Od /I "C:\Program Files\Microsoft Platform SDK\Include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_WINDLL" /D "_AFXDLL" /D "_MBCS" /D "_USRDLL" /FR /Yu"stdafx.h" /FD /GZ /c +# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 +# ADD BASE RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +# ADD RSC /l 0x409 /d "_DEBUG" /d "_AFXDLL" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# ADD LINK32 /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept +# Begin Custom Build +InputPath=.\Debug\wmpa.dll +InputName=wmpa +SOURCE="$(InputPath)" + +"C:\msys\1.0\local\src\xchat\src\fe-gtk\plugins\$(InputName).dll" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + copy /Y $(InputPath) "C:\msys\1.0\local\src\xchat\src\fe-gtk\plugins\$(InputName).dll" + +# End Custom Build + +!ENDIF + +# Begin Target + +# Name "wmpa - Win32 Release" +# Name "wmpa - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\StdAfx.cpp +# ADD CPP /Yc"stdafx.h" +# End Source File +# Begin Source File + +SOURCE=.\wmpa.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpa.def +# End Source File +# Begin Source File + +SOURCE=.\wmpa.odl +# End Source File +# Begin Source File + +SOURCE=.\wmpa.rc +# End Source File +# Begin Source File + +SOURCE=.\WMPADialog.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpcdrom.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpcdromcollection.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpclosedcaption.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpcontrols.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpdvd.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmperror.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmperroritem.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpmedia.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpmediacollection.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpnetwork.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpplayer4.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpplayerapplication.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylist.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylistarray.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylistcollection.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpsettings.cpp +# End Source File +# Begin Source File + +SOURCE=.\wmpstringcollection.cpp +# End Source File +# Begin Source File + +SOURCE=".\xchat-plugin.cpp" +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\Resource.h +# End Source File +# Begin Source File + +SOURCE=.\StdAfx.h +# End Source File +# Begin Source File + +SOURCE=.\wmpa.h +# End Source File +# Begin Source File + +SOURCE=.\WMPADIALOG.h +# End Source File +# Begin Source File + +SOURCE=.\wmpcdrom.h +# End Source File +# Begin Source File + +SOURCE=.\wmpcdromcollection.h +# End Source File +# Begin Source File + +SOURCE=.\wmpclosedcaption.h +# End Source File +# Begin Source File + +SOURCE=.\wmpcontrols.h +# End Source File +# Begin Source File + +SOURCE=.\wmpdvd.h +# End Source File +# Begin Source File + +SOURCE=.\wmperror.h +# End Source File +# Begin Source File + +SOURCE=.\wmperroritem.h +# End Source File +# Begin Source File + +SOURCE=.\wmpmedia.h +# End Source File +# Begin Source File + +SOURCE=.\wmpmediacollection.h +# End Source File +# Begin Source File + +SOURCE=.\wmpnetwork.h +# End Source File +# Begin Source File + +SOURCE=.\wmpplayer4.h +# End Source File +# Begin Source File + +SOURCE=.\wmpplayerapplication.h +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylist.h +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylistarray.h +# End Source File +# Begin Source File + +SOURCE=.\wmpplaylistcollection.h +# End Source File +# Begin Source File + +SOURCE=.\wmpsettings.h +# End Source File +# Begin Source File + +SOURCE=.\wmpstringcollection.h +# End Source File +# Begin Source File + +SOURCE=".\xchat-plugin.h" +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# Begin Source File + +SOURCE=.\res\wmpa.rc2 +# End Source File +# Begin Source File + +SOURCE=.\xchat.ico +# End Source File +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project +# Section wmpa : {10A13217-23A7-439B-B1C0-D847C79B7774} +# 2:5:Class:CWMPPlaylistCollection +# 2:10:HeaderFile:wmpplaylistcollection.h +# 2:8:ImplFile:wmpplaylistcollection.cpp +# End Section +# Section wmpa : {EC21B779-EDEF-462D-BBA4-AD9DDE2B29A7} +# 2:5:Class:CWMPNetwork +# 2:10:HeaderFile:wmpnetwork.h +# 2:8:ImplFile:wmpnetwork.cpp +# End Section +# Section wmpa : {4A976298-8C0D-11D3-B389-00C04F68574B} +# 2:5:Class:CWMPStringCollection +# 2:10:HeaderFile:wmpstringcollection.h +# 2:8:ImplFile:wmpstringcollection.cpp +# End Section +# Section wmpa : {B7ABC220-DF71-11CF-8E74-00A0C90F26F8} +# 2:5:Class:Cmci +# 2:10:HeaderFile:mci.h +# 2:8:ImplFile:mci.cpp +# End Section +# Section wmpa : {8363BC22-B4B4-4B19-989D-1CD765749DD1} +# 2:5:Class:CWMPMediaCollection +# 2:10:HeaderFile:wmpmediacollection.h +# 2:8:ImplFile:wmpmediacollection.cpp +# End Section +# Section wmpa : {679409C0-99F7-11D3-9FB7-00105AA620BB} +# 2:5:Class:CWMPPlaylistArray +# 2:10:HeaderFile:wmpplaylistarray.h +# 2:8:ImplFile:wmpplaylistarray.cpp +# End Section +# Section wmpa : {74C09E02-F828-11D2-A74B-00A0C905F36E} +# 2:5:Class:CWMPControls +# 2:10:HeaderFile:wmpcontrols.h +# 2:8:ImplFile:wmpcontrols.cpp +# End Section +# Section wmpa : {CFAB6E98-8730-11D3-B388-00C04F68574B} +# 2:5:Class:CWMPCdrom +# 2:10:HeaderFile:wmpcdrom.h +# 2:8:ImplFile:wmpcdrom.cpp +# End Section +# Section wmpa : {8DA61686-4668-4A5C-AE5D-803193293DBE} +# 2:5:Class:CWMPDVD +# 2:10:HeaderFile:wmpdvd.h +# 2:8:ImplFile:wmpdvd.cpp +# End Section +# Section wmpa : {6C497D62-8919-413C-82DB-E935FB3EC584} +# 2:5:Class:CWMPPlayer4 +# 2:10:HeaderFile:wmpplayer4.h +# 2:8:ImplFile:wmpplayer4.cpp +# End Section +# Section wmpa : {40897764-CEAB-47BE-AD4A-8E28537F9BBF} +# 2:5:Class:CWMPPlayerApplication +# 2:10:HeaderFile:wmpplayerapplication.h +# 2:8:ImplFile:wmpplayerapplication.cpp +# End Section +# Section wmpa : {6BF52A52-394A-11D3-B153-00C04F79FAA6} +# 2:21:DefaultSinkHeaderFile:wmpplayer4.h +# 2:16:DefaultSinkClass:CWMPPlayer4 +# End Section +# Section wmpa : {C1A8AF25-1257-101B-8FB0-0020AF039CA3} +# 2:21:DefaultSinkHeaderFile:mci.h +# 2:16:DefaultSinkClass:Cmci +# End Section +# Section wmpa : {9104D1AB-80C9-4FED-ABF0-2E6417A6DF14} +# 2:5:Class:CWMPSettings +# 2:10:HeaderFile:wmpsettings.h +# 2:8:ImplFile:wmpsettings.cpp +# End Section +# Section wmpa : {A12DCF7D-14AB-4C1B-A8CD-63909F06025B} +# 2:5:Class:CWMPError +# 2:10:HeaderFile:wmperror.h +# 2:8:ImplFile:wmperror.cpp +# End Section +# Section wmpa : {7BF80981-BF32-101A-8BBB-00AA00300CAB} +# 2:5:Class:CPicture +# 2:10:HeaderFile:picture.h +# 2:8:ImplFile:picture.cpp +# End Section +# Section wmpa : {D5F0F4F1-130C-11D3-B14E-00C04F79FAA6} +# 2:5:Class:CWMPPlaylist +# 2:10:HeaderFile:wmpplaylist.h +# 2:8:ImplFile:wmpplaylist.cpp +# End Section +# Section wmpa : {EE4C8FE2-34B2-11D3-A3BF-006097C9B344} +# 2:5:Class:CWMPCdromCollection +# 2:10:HeaderFile:wmpcdromcollection.h +# 2:8:ImplFile:wmpcdromcollection.cpp +# End Section +# Section wmpa : {4F2DF574-C588-11D3-9ED0-00C04FB6E937} +# 2:5:Class:CWMPClosedCaption +# 2:10:HeaderFile:wmpclosedcaption.h +# 2:8:ImplFile:wmpclosedcaption.cpp +# End Section +# Section wmpa : {94D55E95-3FAC-11D3-B155-00C04F79FAA6} +# 2:5:Class:CWMPMedia +# 2:10:HeaderFile:wmpmedia.h +# 2:8:ImplFile:wmpmedia.cpp +# End Section +# Section wmpa : {3614C646-3B3B-4DE7-A81E-930E3F2127B3} +# 2:5:Class:CWMPErrorItem +# 2:10:HeaderFile:wmperroritem.h +# 2:8:ImplFile:wmperroritem.cpp +# End Section diff --git a/plugins/wmpa/wmpa.dsw b/plugins/wmpa/wmpa.dsw new file mode 100644 index 00000000..e0098b15 --- /dev/null +++ b/plugins/wmpa/wmpa.dsw @@ -0,0 +1,31 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "wmpa"=".\wmpa.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ + {6BF52A52-394A-11D3-B153-00C04F79FAA6} + {C1A8AF25-1257-101B-8FB0-0020AF039CA3} +}}} + +############################################################################### + diff --git a/plugins/wmpa/wmpa.h b/plugins/wmpa/wmpa.h new file mode 100644 index 00000000..39961835 --- /dev/null +++ b/plugins/wmpa/wmpa.h @@ -0,0 +1,61 @@ +/****************************************************************** +* $Id$ +* +* $Log$ +* +* Copyright © 2005 David Cullen, All rights reserved +* +******************************************************************/ +#if !defined(AFX_WMPA_H__11200FE3_F137_48DD_8020_91CF7BBB283B__INCLUDED_) +#define AFX_WMPA_H__11200FE3_F137_48DD_8020_91CF7BBB283B__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#ifndef __AFXWIN_H__ + #error include 'stdafx.h' before including this file for PCH +#endif + +#include "resource.h" // main symbols +#include "WMPADialog.h" + +///////////////////////////////////////////////////////////////////////////// +// CWmpaApp +// See wmpa.cpp for the implementation of this class +// + +class CWmpaApp : public CWinApp +{ +public: + CWmpaApp(); + + BOOL ShowWMPA(void); + BOOL DestroyWMPA(void); + + CWMPADialog *m_pDialog; +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CWmpaApp) + public: + virtual BOOL InitInstance(); + //}}AFX_VIRTUAL + + //{{AFX_MSG(CWmpaApp) + // NOTE - the ClassWizard will add and remove member functions here. + // DO NOT EDIT what you see in these blocks of generated code ! + //}}AFX_MSG + DECLARE_MESSAGE_MAP() +}; + +BOOL StartWindowsMediaPlayer(void); +BOOL StopWindowsMediaPlayer(void); +CWMPPlayer4 *GetWindowsMediaPlayer(void); +CWMPADialog *GetWMPADialog(void); + +///////////////////////////////////////////////////////////////////////////// + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPA_H__11200FE3_F137_48DD_8020_91CF7BBB283B__INCLUDED_) diff --git a/plugins/wmpa/wmpa.odl b/plugins/wmpa/wmpa.odl new file mode 100644 index 00000000..1c354c34 --- /dev/null +++ b/plugins/wmpa/wmpa.odl @@ -0,0 +1,44 @@ +// wmpa.odl : type library source for wmpa.dll + +// This file will be processed by the MIDL compiler to produce the +// type library (wmpa.tlb). + +[ uuid(2D225385-EFD3-4DD8-9377-A7F244C522D0), version(1.0) ] +library Wmpa +{ + importlib("stdole32.tlb"); + importlib("stdole2.tlb"); + + + + + // Primary dispatch interface for CWMPADIALOG + + [ uuid(01C1B3AA-C7FC-4023-89A5-C814E1B62B9B) ] + dispinterface IWMPADIALOG + { + properties: + // NOTE - ClassWizard will maintain property information here. + // Use extreme caution when editing this section. + //{{AFX_ODL_PROP(CWMPADIALOG) + //}}AFX_ODL_PROP + + methods: + // NOTE - ClassWizard will maintain method information here. + // Use extreme caution when editing this section. + //{{AFX_ODL_METHOD(CWMPADIALOG) + //}}AFX_ODL_METHOD + + }; + + // Class information for CWMPADIALOG + + [ uuid(9007B1B4-0006-453D-A799-DB8CBA1AE22A) ] + coclass WMPADIALOG + { + [default] dispinterface IWMPADIALOG; + }; + + //{{AFX_APPEND_ODL}} + //}}AFX_APPEND_ODL}} +}; diff --git a/plugins/wmpa/wmpa.plg b/plugins/wmpa/wmpa.plg new file mode 100644 index 00000000..a1b967ae --- /dev/null +++ b/plugins/wmpa/wmpa.plg @@ -0,0 +1,16 @@ +<html> +<body> +<pre> +<h1>Build Log</h1> +<h3> +--------------------Configuration: wmpa - Win32 Release-------------------- +</h3> +<h3>Command Lines</h3> + + + +<h3>Results</h3> +wmpa.dll - 0 error(s), 0 warning(s) +</pre> +</body> +</html> diff --git a/plugins/wmpa/wmpa.rc b/plugins/wmpa/wmpa.rc new file mode 100644 index 00000000..367805a5 --- /dev/null +++ b/plugins/wmpa/wmpa.rc @@ -0,0 +1,204 @@ +//Microsoft Developer Studio generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "#define _AFX_NO_SPLITTER_RESOURCES\r\n" + "#define _AFX_NO_OLE_RESOURCES\r\n" + "#define _AFX_NO_TRACKER_RESOURCES\r\n" + "#define _AFX_NO_PROPERTY_RESOURCES\r\n" + "\r\n" + "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n" + "#ifdef _WIN32\r\n" + "LANGUAGE 9, 1\r\n" + "#pragma code_page(1252)\r\n" + "#endif //_WIN32\r\n" + "#include ""res\\wmpa.rc2"" // non-Microsoft Visual C++ edited resources\r\n" + "#include ""afxres.rc"" // Standard components\r\n" + "#endif\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +#ifndef _MAC +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "\0" + VALUE "FileDescription", "wmpa DLL\0" + VALUE "FileVersion", "1, 0, 0, 1\0" + VALUE "InternalName", "wmpa\0" + VALUE "LegalCopyright", "Copyright (C) 2005\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "wmpa.DLL\0" + VALUE "ProductName", "wmpa Dynamic Link Library\0" + VALUE "ProductVersion", "1, 0, 0, 1\0" + VALUE "OLESelfRegister", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // !_MAC + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_WMPADIALOG DIALOG DISCARDABLE 0, 0, 317, 236 +STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Unitialized" +FONT 8, "MS Sans Serif" +BEGIN + LISTBOX IDC_PLAYLIST,165,15,145,145,LBS_NOINTEGRALHEIGHT | + WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + LTEXT "Play Lists (Double-click to play)",IDC_STATIC1,165,5, + 145,10 + CONTROL "",IDC_WMP,"{6BF52A52-394A-11D3-B153-00C04F79FAA6}", + WS_TABSTOP,5,5,155,155 + LISTBOX IDC_SONGLIST,5,175,305,55,LBS_NOINTEGRALHEIGHT | + WS_VSCROLL | WS_TABSTOP + LTEXT "Song List (Double-click to play)",IDC_STATIC2,5,165,305, + 10 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_WMPADIALOG, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 310 + TOPMARGIN, 7 + BOTTOMMARGIN, 229 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog Info +// + +IDD_WMPADIALOG DLGINIT +BEGIN + IDC_WMP, 0x376, 166, 0 +0x0000, 0x0000, 0x0300, 0x0000, 0x0008, 0x0000, 0x0000, 0x0005, 0x0000, +0x0000, 0x0000, 0x3ff0, 0x0003, 0x0000, 0x0000, 0x0005, 0x0000, 0x0000, +0x0000, 0x0000, 0x0008, 0x0002, 0x0000, 0x0000, 0x0003, 0x0001, 0x0000, +0x000b, 0xffff, 0x0003, 0x0000, 0x0000, 0x000b, 0xffff, 0x0008, 0x0002, +0x0000, 0x0000, 0x0003, 0x0032, 0x0000, 0x000b, 0x0000, 0x0008, 0x000a, +0x0000, 0x0066, 0x0075, 0x006c, 0x006c, 0x0000, 0x000b, 0x0000, 0x000b, +0x0000, 0x000b, 0xffff, 0x000b, 0xffff, 0x000b, 0x0000, 0x0008, 0x0002, +0x0000, 0x0000, 0x0008, 0x0002, 0x0000, 0x0000, 0x0008, 0x0002, 0x0000, +0x0000, 0x0008, 0x0002, 0x0000, 0x0000, 0x000b, 0x0000, 0x1815, 0x0000, +0x1a0c, 0x0000, + 0 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_XCHAT ICON DISCARDABLE "xchat.ico" +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// +#define _AFX_NO_SPLITTER_RESOURCES +#define _AFX_NO_OLE_RESOURCES +#define _AFX_NO_TRACKER_RESOURCES +#define _AFX_NO_PROPERTY_RESOURCES + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE 9, 1 +#pragma code_page(1252) +#endif //_WIN32 +#include "res\wmpa.rc2" // non-Microsoft Visual C++ edited resources +#include "afxres.rc" // Standard components +#endif + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/plugins/wmpa/wmpadialog.cpp b/plugins/wmpa/wmpadialog.cpp new file mode 100644 index 00000000..b0cdd16e --- /dev/null +++ b/plugins/wmpa/wmpadialog.cpp @@ -0,0 +1,375 @@ +/****************************************************************** +* $Id$ +* +* $Log$ +* +* Copyright © 2005 David Cullen, All rights reserved +* +******************************************************************/ +#include "stdafx.h" +#include "wmpa.h" +#include "WMPADialog.h" +#include "shellapi.h" +#include "xchat-plugin.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#undef THIS_FILE +static char THIS_FILE[] = __FILE__; +#endif + +#define ID_TRAY_ICON 1000 +#define WM_TRAY_ICON (WM_APP + 1) + +///////////////////////////////////////////////////////////////////////////// +// CWMPADialog dialog + +CWMPADialog::CWMPADialog(CWnd* pParent /*=NULL*/) + : CDialog(CWMPADialog::IDD, pParent) +{ + EnableAutomation(); + + //{{AFX_DATA_INIT(CWMPADialog) + //}}AFX_DATA_INIT +} + + +void CWMPADialog::OnFinalRelease() +{ + // When the last reference for an automation object is released + // OnFinalRelease is called. The base class will automatically + // deletes the object. Add additional cleanup required for your + // object before calling the base class. + + CDialog::OnFinalRelease(); +} + +void CWMPADialog::DoDataExchange(CDataExchange* pDX) +{ + CDialog::DoDataExchange(pDX); + //{{AFX_DATA_MAP(CWMPADialog) + DDX_Control(pDX, IDC_SONGLIST, m_SongListBox); + DDX_Control(pDX, IDC_PLAYLIST, m_PlaylistBox); + DDX_Control(pDX, IDC_WMP, m_WMP); + //}}AFX_DATA_MAP +} + + +BEGIN_MESSAGE_MAP(CWMPADialog, CDialog) + //{{AFX_MSG_MAP(CWMPADialog) + ON_LBN_DBLCLK(IDC_PLAYLIST, OnDblclkPlaylist) + ON_WM_SHOWWINDOW() + ON_WM_CLOSE() + ON_LBN_DBLCLK(IDC_SONGLIST, OnDblclkSonglist) + ON_WM_DESTROY() + ON_WM_SIZE() + //}}AFX_MSG_MAP +END_MESSAGE_MAP() + +BEGIN_DISPATCH_MAP(CWMPADialog, CDialog) + //{{AFX_DISPATCH_MAP(CWMPADialog) + // NOTE - the ClassWizard will add and remove mapping macros here. + //}}AFX_DISPATCH_MAP +END_DISPATCH_MAP() + +// Note: we add support for IID_IWMPADialog to support typesafe binding +// from VBA. This IID must match the GUID that is attached to the +// dispinterface in the .ODL file. + +// {01C1B3AA-C7FC-4023-89A5-C814E1B62B9B} +static const IID IID_IWMPADialog = +{ 0x1c1b3aa, 0xc7fc, 0x4023, { 0x89, 0xa5, 0xc8, 0x14, 0xe1, 0xb6, 0x2b, 0x9b } }; + +BEGIN_INTERFACE_MAP(CWMPADialog, CDialog) + INTERFACE_PART(CWMPADialog, IID_IWMPADialog, Dispatch) +END_INTERFACE_MAP() + +///////////////////////////////////////////////////////////////////////////// +// CWMPADialog message handlers + +void CWMPADialog::OnDblclkPlaylist() +{ + // TODO: Add your control notification handler code here + long index; + + // Get the playlist name + index = m_PlaylistBox.GetCurSel(); + CString playlistName; + m_PlaylistBox.GetText(index, playlistName); + + // Get the playlist + CWMPPlaylistCollection pc = m_WMP.GetPlaylistCollection(); + CWMPPlaylistArray pa = pc.getByName((LPCTSTR) playlistName); + CWMPPlaylist playlist = pa.Item(0); + m_WMP.SetCurrentPlaylist(playlist); + + // Set the song list + UpdateSongList(); + + m_WMP.GetControls().play(); + if (autoAnnounce) { + xchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + else { + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } +} + +void CWMPADialog::OnShowWindow(BOOL bShow, UINT nStatus) +{ + CDialog::OnShowWindow(bShow, nStatus); + + // TODO: Add your message handler code here + if (bShow) { + if (!trayInit) { + ZeroMemory(&nid, sizeof(nid)); + nid.cbSize = sizeof(nid); + nid.hWnd = m_hWnd; + nid.uID = ID_TRAY_ICON; + nid.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP; + nid.uCallbackMessage = WM_TRAY_ICON; + nid.hIcon = m_hIcon; + strcpy(nid.szTip, "WMPA"); + strcat(nid.szTip, VER_STRING); + strcat(nid.szTip, "\nWindows Media\nPlayer Announcer"); + nid.dwState = 0; + nid.dwStateMask = 0; + strcpy(nid.szInfo, "WMPA "); + strcat(nid.szInfo, VER_STRING); + nid.uTimeout = 10000; // 10 second time out + strcat(nid.szInfoTitle, "WMPA"); + nid.dwInfoFlags = 0; + trayInit = TRUE; + } + } + +} + + +void CWMPADialog::PostNcDestroy() +{ + // TODO: Add your specialized code here and/or call the base class + delete this; + + CDialog::PostNcDestroy(); +} + + +BOOL CWMPADialog::OnInitDialog() +{ + CDialog::OnInitDialog(); + + CString title = "WMPA"; + title += " "; + title += VER_STRING; + SetWindowText((LPCTSTR) title); + + UpdatePlayLists(); + + autoAnnounce = FALSE; + trayInit = FALSE; + trayClicked = FALSE; + + return TRUE; // return TRUE unless you set the focus to a control + // EXCEPTION: OCX Property Pages should return FALSE +} + +void CWMPADialog::OnClose() +{ + // TODO: Add your message handler code here and/or call default + Shell_NotifyIcon(NIM_ADD, &nid); + ShowWindow(SW_HIDE); + + // Don't let the user close the dialog +// CDialog::OnClose(); +} + +void CWMPADialog::OnCancel() +{ +// this->DestroyWindow(); +} + +void CWMPADialog::OnDblclkSonglist() +{ + // TODO: Add your control notification handler code here + int index = m_SongListBox.GetCurSel(); + m_WMP.GetControls().playItem(m_WMP.GetCurrentPlaylist().GetItem(index)); + if (autoAnnounce) { + xchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + else { + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } +} + +BEGIN_EVENTSINK_MAP(CWMPADialog, CDialog) + //{{AFX_EVENTSINK_MAP(CWMPADialog) + ON_EVENT(CWMPADialog, IDC_WMP, 5806 /* CurrentItemChange */, OnCurrentItemChangeWmp, VTS_DISPATCH) + ON_EVENT(CWMPADialog, IDC_WMP, 5101 /* PlayStateChange */, OnPlayStateChangeWmp, VTS_I4) + //}}AFX_EVENTSINK_MAP +END_EVENTSINK_MAP() + +void CWMPADialog::OnCurrentItemChangeWmp(LPDISPATCH pdispMedia) +{ + // TODO: Add your control notification handler code here + + int state = m_WMP.GetPlayState(); + if (state == 3) { // Playing + if (autoAnnounce) { + xchat_commandf(ph, "me is playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + else { + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + } + + SelectCurrentSong(); +} + +void CWMPADialog::OnDestroy() +{ + CDialog::OnDestroy(); + + // TODO: Add your message handler code here +} + +void CWMPADialog::UpdateSongList() +{ + char buffer[32]; + CString name; + CString artist; + CString title; + CString album; + CString bitrate; + CString duration; + CString song; + long index; + long count; + + m_SongListBox.ResetContent(); + CWMPPlaylist playlist = m_WMP.GetCurrentPlaylist(); + count = playlist.GetCount(); + m_SongListBox.ResetContent(); + for (index = 0; index < count; index++) { + name = playlist.GetItem(index).GetName(); + artist = playlist.GetItem(index).getItemInfo("Artist"); + title = playlist.GetItem(index).getItemInfo("Title"); + album = playlist.GetItem(index).getItemInfo("Album"); + bitrate = playlist.GetItem(index).getItemInfo("Bitrate"); + duration = playlist.GetItem(index).GetDurationString(); + + long krate = strtoul((LPCTSTR) bitrate, NULL, 10) / 1000; + _ultoa(krate, buffer, 10); + bitrate = CString(buffer); + + if (album.IsEmpty()) { + playlist.removeItem(playlist.GetItem(index)); + count = playlist.GetCount(); + } + else { + song = ""; + song += artist; + if (song.IsEmpty()) song = "Various"; + song += " - "; + song += title; + song += " ("; + song += album; + song += ") ["; + song += duration; + song += "/"; + song += bitrate; + song += "Kbps]"; + m_SongListBox.AddString((LPCTSTR) song); + } + + } + m_SongListBox.SetCurSel(0); +} + +void CWMPADialog::SelectCurrentSong() +{ + CWMPMedia media; + long index; + long count; + + count = m_WMP.GetCurrentPlaylist().GetCount(); + for (index = 0; index < count; index++) { + media = m_WMP.GetCurrentPlaylist().GetItem(index); + if (m_WMP.GetCurrentMedia().GetIsIdentical(media)) { + m_SongListBox.SetCurSel(index); + } + } +} + +void CWMPADialog::UpdatePlayLists() +{ + // TODO: Add extra initialization here + CWMPPlaylistCollection pc = m_WMP.GetPlaylistCollection(); + CWMPPlaylistArray pa = pc.getAll(); + CWMPPlaylist playlist; + + int index; + int count = pa.GetCount(); + m_PlaylistBox.ResetContent(); + for (index = 0; index < count; index++) { + playlist = pa.Item(index); + m_PlaylistBox.AddString((LPCTSTR) playlist.GetName()); + } +} + + +void CWMPADialog::OnPlayStateChangeWmp(long NewState) +{ + // TODO: Add your control notification handler code here +} + +void CWMPADialog::OnSize(UINT nType, int cx, int cy) +{ + CDialog::OnSize(nType, cx, cy); + // TODO: Add your message handler code here + switch (nType) { + case SIZE_MINIMIZED: + break; + + case SIZE_RESTORED: + Shell_NotifyIcon(NIM_DELETE, &nid); + break; + + default: + break; + } +} + +LRESULT CWMPADialog::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) +{ + // TODO: Add your specialized code here and/or call the base class + switch (message) { + case WM_TRAY_ICON: + switch (lParam) { + case WM_LBUTTONDBLCLK: + trayClicked = TRUE; + break; + + case WM_LBUTTONUP: + if (trayClicked == TRUE) { + ShowWindow(SW_RESTORE); + } + break; + + default: + trayClicked = FALSE; + break; + } + return(TRUE); + break; + + default: + return CDialog::WindowProc(message, wParam, lParam); + break; + } +} + +void CWMPADialog::DeleteTrayIcon() +{ + Shell_NotifyIcon(NIM_DELETE, &nid); +} diff --git a/plugins/wmpa/wmpadialog.h b/plugins/wmpa/wmpadialog.h new file mode 100644 index 00000000..43e9a66a --- /dev/null +++ b/plugins/wmpa/wmpadialog.h @@ -0,0 +1,91 @@ +/****************************************************************** +* $Id$ +* +* $Log$ +* +* Copyright © 2005 David Cullen, All rights reserved +* +******************************************************************/ +//{{AFX_INCLUDES() +#include "wmpplayer4.h" +//}}AFX_INCLUDES +#if !defined(AFX_WMPADIALOG_H__D3838BCC_9E26_4FC0_BD42_C8D8EDF057E3__INCLUDED_) +#define AFX_WMPADIALOG_H__D3838BCC_9E26_4FC0_BD42_C8D8EDF057E3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// WMPADialog.h : header file +// + +///////////////////////////////////////////////////////////////////////////// +// CWMPADialog dialog + +class CWMPADialog : public CDialog +{ +// Construction +public: + CWMPADialog(CWnd* pParent = NULL); // standard constructor + virtual void OnCancel(); + void UpdatePlayLists(); + void UpdateSongList(); + void SelectCurrentSong(); + void DeleteTrayIcon(); + BOOL autoAnnounce; + HICON m_hIcon; + +private: + BOOL trayInit; + BOOL trayClicked; + NOTIFYICONDATA nid; + +public: +// Dialog Data + //{{AFX_DATA(CWMPADialog) + enum { IDD = IDD_WMPADIALOG }; + CListBox m_SongListBox; + CListBox m_PlaylistBox; + CWMPPlayer4 m_WMP; + //}}AFX_DATA + + +// Overrides + // ClassWizard generated virtual function overrides + //{{AFX_VIRTUAL(CWMPADialog) + public: + virtual void OnFinalRelease(); + protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support + virtual void PostNcDestroy(); + virtual LRESULT WindowProc(UINT message, WPARAM wParam, LPARAM lParam); + //}}AFX_VIRTUAL + +// Implementation +protected: + + // Generated message map functions + //{{AFX_MSG(CWMPADialog) + afx_msg void OnDblclkPlaylist(); + afx_msg void OnShowWindow(BOOL bShow, UINT nStatus); + virtual BOOL OnInitDialog(); + afx_msg void OnClose(); + afx_msg void OnDblclkSonglist(); + afx_msg void OnCurrentItemChangeWmp(LPDISPATCH pdispMedia); + afx_msg void OnDestroy(); + afx_msg void OnPlayStateChangeWmp(long NewState); + afx_msg void OnSize(UINT nType, int cx, int cy); + DECLARE_EVENTSINK_MAP() + //}}AFX_MSG + DECLARE_MESSAGE_MAP() + // Generated OLE dispatch map functions + //{{AFX_DISPATCH(CWMPADialog) + // NOTE - the ClassWizard will add and remove member functions here. + //}}AFX_DISPATCH + DECLARE_DISPATCH_MAP() + DECLARE_INTERFACE_MAP() +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPADIALOG_H__D3838BCC_9E26_4FC0_BD42_C8D8EDF057E3__INCLUDED_) diff --git a/plugins/wmpa/wmpcdrom.cpp b/plugins/wmpa/wmpcdrom.cpp new file mode 100644 index 00000000..121f0535 --- /dev/null +++ b/plugins/wmpa/wmpcdrom.cpp @@ -0,0 +1,37 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpcdrom.h" + +// Dispatch interfaces referenced by this interface +#include "wmpplaylist.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdrom properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdrom operations + +CString CWMPCdrom::GetDriveSpecifier() +{ + CString result; + InvokeHelper(0xfb, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +CWMPPlaylist CWMPCdrom::GetPlaylist() +{ + LPDISPATCH pDispatch; + InvokeHelper(0xfc, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlaylist(pDispatch); +} + +void CWMPCdrom::eject() +{ + InvokeHelper(0xfd, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} diff --git a/plugins/wmpa/wmpcdrom.h b/plugins/wmpa/wmpcdrom.h new file mode 100644 index 00000000..f52f8f10 --- /dev/null +++ b/plugins/wmpa/wmpcdrom.h @@ -0,0 +1,39 @@ +#if !defined(AFX_WMPCDROM_H__B7B13CE9_E69E_4D54_9370_CCA2D4A42532__INCLUDED_) +#define AFX_WMPCDROM_H__B7B13CE9_E69E_4D54_9370_CCA2D4A42532__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPPlaylist; + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdrom wrapper class + +class CWMPCdrom : public COleDispatchDriver +{ +public: + CWMPCdrom() {} // Calls COleDispatchDriver default constructor + CWMPCdrom(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPCdrom(const CWMPCdrom& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + CString GetDriveSpecifier(); + CWMPPlaylist GetPlaylist(); + void eject(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPCDROM_H__B7B13CE9_E69E_4D54_9370_CCA2D4A42532__INCLUDED_) diff --git a/plugins/wmpa/wmpcdromcollection.cpp b/plugins/wmpa/wmpcdromcollection.cpp new file mode 100644 index 00000000..3e1f7e7d --- /dev/null +++ b/plugins/wmpa/wmpcdromcollection.cpp @@ -0,0 +1,45 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpcdromcollection.h" + +// Dispatch interfaces referenced by this interface +#include "WMPCdrom.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdromCollection properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdromCollection operations + +long CWMPCdromCollection::GetCount() +{ + long result; + InvokeHelper(0x12d, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CWMPCdrom CWMPCdromCollection::Item(long lIndex) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x12e, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + lIndex); + return CWMPCdrom(pDispatch); +} + +CWMPCdrom CWMPCdromCollection::getByDriveSpecifier(LPCTSTR bstrDriveSpecifier) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x12f, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrDriveSpecifier); + return CWMPCdrom(pDispatch); +} diff --git a/plugins/wmpa/wmpcdromcollection.h b/plugins/wmpa/wmpcdromcollection.h new file mode 100644 index 00000000..bdc32b9b --- /dev/null +++ b/plugins/wmpa/wmpcdromcollection.h @@ -0,0 +1,39 @@ +#if !defined(AFX_WMPCDROMCOLLECTION_H__35F03E65_DBA5_47A8_84C1_DAA3D624A4D3__INCLUDED_) +#define AFX_WMPCDROMCOLLECTION_H__35F03E65_DBA5_47A8_84C1_DAA3D624A4D3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPCdrom; + +///////////////////////////////////////////////////////////////////////////// +// CWMPCdromCollection wrapper class + +class CWMPCdromCollection : public COleDispatchDriver +{ +public: + CWMPCdromCollection() {} // Calls COleDispatchDriver default constructor + CWMPCdromCollection(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPCdromCollection(const CWMPCdromCollection& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetCount(); + CWMPCdrom Item(long lIndex); + CWMPCdrom getByDriveSpecifier(LPCTSTR bstrDriveSpecifier); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPCDROMCOLLECTION_H__35F03E65_DBA5_47A8_84C1_DAA3D624A4D3__INCLUDED_) diff --git a/plugins/wmpa/wmpclosedcaption.cpp b/plugins/wmpa/wmpclosedcaption.cpp new file mode 100644 index 00000000..3ea2ec91 --- /dev/null +++ b/plugins/wmpa/wmpclosedcaption.cpp @@ -0,0 +1,75 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpclosedcaption.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPClosedCaption properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPClosedCaption operations + +CString CWMPClosedCaption::GetSAMIStyle() +{ + CString result; + InvokeHelper(0x3b7, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPClosedCaption::SetSAMIStyle(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3b7, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +CString CWMPClosedCaption::GetSAMILang() +{ + CString result; + InvokeHelper(0x3b8, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPClosedCaption::SetSAMILang(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3b8, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +CString CWMPClosedCaption::GetSAMIFileName() +{ + CString result; + InvokeHelper(0x3b9, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPClosedCaption::SetSAMIFileName(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3b9, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +CString CWMPClosedCaption::GetCaptioningId() +{ + CString result; + InvokeHelper(0x3ba, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPClosedCaption::SetCaptioningId(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3ba, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} diff --git a/plugins/wmpa/wmpclosedcaption.h b/plugins/wmpa/wmpclosedcaption.h new file mode 100644 index 00000000..c604c12f --- /dev/null +++ b/plugins/wmpa/wmpclosedcaption.h @@ -0,0 +1,40 @@ +#if !defined(AFX_WMPCLOSEDCAPTION_H__FC0A9836_7517_4898_B25C_74C76E80CE3D__INCLUDED_) +#define AFX_WMPCLOSEDCAPTION_H__FC0A9836_7517_4898_B25C_74C76E80CE3D__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPClosedCaption wrapper class + +class CWMPClosedCaption : public COleDispatchDriver +{ +public: + CWMPClosedCaption() {} // Calls COleDispatchDriver default constructor + CWMPClosedCaption(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPClosedCaption(const CWMPClosedCaption& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + CString GetSAMIStyle(); + void SetSAMIStyle(LPCTSTR lpszNewValue); + CString GetSAMILang(); + void SetSAMILang(LPCTSTR lpszNewValue); + CString GetSAMIFileName(); + void SetSAMIFileName(LPCTSTR lpszNewValue); + CString GetCaptioningId(); + void SetCaptioningId(LPCTSTR lpszNewValue); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPCLOSEDCAPTION_H__FC0A9836_7517_4898_B25C_74C76E80CE3D__INCLUDED_) diff --git a/plugins/wmpa/wmpcontrols.cpp b/plugins/wmpa/wmpcontrols.cpp new file mode 100644 index 00000000..1b3046d0 --- /dev/null +++ b/plugins/wmpa/wmpcontrols.cpp @@ -0,0 +1,123 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpcontrols.h" + +// Dispatch interfaces referenced by this interface +#include "wmpmedia.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPControls properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPControls operations + +BOOL CWMPControls::GetIsAvailable(LPCTSTR bstrItem) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3e, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms, + bstrItem); + return result; +} + +void CWMPControls::play() +{ + InvokeHelper(0x33, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPControls::stop() +{ + InvokeHelper(0x34, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPControls::pause() +{ + InvokeHelper(0x35, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPControls::fastForward() +{ + InvokeHelper(0x36, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPControls::fastReverse() +{ + InvokeHelper(0x37, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +double CWMPControls::GetCurrentPosition() +{ + double result; + InvokeHelper(0x38, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL); + return result; +} + +void CWMPControls::SetCurrentPosition(double newValue) +{ + static BYTE parms[] = + VTS_R8; + InvokeHelper(0x38, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + newValue); +} + +CString CWMPControls::GetCurrentPositionString() +{ + CString result; + InvokeHelper(0x39, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPControls::next() +{ + InvokeHelper(0x3a, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPControls::previous() +{ + InvokeHelper(0x3b, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +CWMPMedia CWMPControls::GetCurrentItem() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x3c, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPMedia(pDispatch); +} + +void CWMPControls::SetCurrentItem(LPDISPATCH newValue) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x3c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + newValue); +} + +long CWMPControls::GetCurrentMarker() +{ + long result; + InvokeHelper(0x3d, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPControls::SetCurrentMarker(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x3d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +void CWMPControls::playItem(LPDISPATCH pIWMPMedia) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x3f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pIWMPMedia); +} diff --git a/plugins/wmpa/wmpcontrols.h b/plugins/wmpa/wmpcontrols.h new file mode 100644 index 00000000..b793bcb1 --- /dev/null +++ b/plugins/wmpa/wmpcontrols.h @@ -0,0 +1,52 @@ +#if !defined(AFX_WMPCONTROLS_H__234DACEF_6ED9_481D_B7E8_03653189E9B2__INCLUDED_) +#define AFX_WMPCONTROLS_H__234DACEF_6ED9_481D_B7E8_03653189E9B2__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPMedia; + +///////////////////////////////////////////////////////////////////////////// +// CWMPControls wrapper class + +class CWMPControls : public COleDispatchDriver +{ +public: + CWMPControls() {} // Calls COleDispatchDriver default constructor + CWMPControls(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPControls(const CWMPControls& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + BOOL GetIsAvailable(LPCTSTR bstrItem); + void play(); + void stop(); + void pause(); + void fastForward(); + void fastReverse(); + double GetCurrentPosition(); + void SetCurrentPosition(double newValue); + CString GetCurrentPositionString(); + void next(); + void previous(); + CWMPMedia GetCurrentItem(); + void SetCurrentItem(LPDISPATCH newValue); + long GetCurrentMarker(); + void SetCurrentMarker(long nNewValue); + void playItem(LPDISPATCH pIWMPMedia); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPCONTROLS_H__234DACEF_6ED9_481D_B7E8_03653189E9B2__INCLUDED_) diff --git a/plugins/wmpa/wmpdvd.cpp b/plugins/wmpa/wmpdvd.cpp new file mode 100644 index 00000000..0eb48f6f --- /dev/null +++ b/plugins/wmpa/wmpdvd.cpp @@ -0,0 +1,52 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpdvd.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPDVD properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPDVD operations + +BOOL CWMPDVD::GetIsAvailable(LPCTSTR bstrItem) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x3e9, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms, + bstrItem); + return result; +} + +CString CWMPDVD::GetDomain() +{ + CString result; + InvokeHelper(0x3ea, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPDVD::topMenu() +{ + InvokeHelper(0x3eb, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPDVD::titleMenu() +{ + InvokeHelper(0x3ec, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPDVD::back() +{ + InvokeHelper(0x3ed, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPDVD::resume() +{ + InvokeHelper(0x3ee, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} diff --git a/plugins/wmpa/wmpdvd.h b/plugins/wmpa/wmpdvd.h new file mode 100644 index 00000000..4710536a --- /dev/null +++ b/plugins/wmpa/wmpdvd.h @@ -0,0 +1,38 @@ +#if !defined(AFX_WMPDVD_H__E83D86CA_08B8_4ACA_A434_0837BA71E3CA__INCLUDED_) +#define AFX_WMPDVD_H__E83D86CA_08B8_4ACA_A434_0837BA71E3CA__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPDVD wrapper class + +class CWMPDVD : public COleDispatchDriver +{ +public: + CWMPDVD() {} // Calls COleDispatchDriver default constructor + CWMPDVD(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPDVD(const CWMPDVD& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + BOOL GetIsAvailable(LPCTSTR bstrItem); + CString GetDomain(); + void topMenu(); + void titleMenu(); + void back(); + void resume(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPDVD_H__E83D86CA_08B8_4ACA_A434_0837BA71E3CA__INCLUDED_) diff --git a/plugins/wmpa/wmperror.cpp b/plugins/wmpa/wmperror.cpp new file mode 100644 index 00000000..2fce2b59 --- /dev/null +++ b/plugins/wmpa/wmperror.cpp @@ -0,0 +1,45 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmperror.h" + +// Dispatch interfaces referenced by this interface +#include "wmperroritem.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPError properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPError operations + +void CWMPError::clearErrorQueue() +{ + InvokeHelper(0x353, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +long CWMPError::GetErrorCount() +{ + long result; + InvokeHelper(0x354, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CWMPErrorItem CWMPError::GetItem(long dwIndex) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x355, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, parms, + dwIndex); + return CWMPErrorItem(pDispatch); +} + +void CWMPError::webHelp() +{ + InvokeHelper(0x356, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} diff --git a/plugins/wmpa/wmperror.h b/plugins/wmpa/wmperror.h new file mode 100644 index 00000000..94ee2fff --- /dev/null +++ b/plugins/wmpa/wmperror.h @@ -0,0 +1,40 @@ +#if !defined(AFX_WMPERROR_H__1E72AC7F_E0AC_4100_B7EF_A5B0D8FA75C3__INCLUDED_) +#define AFX_WMPERROR_H__1E72AC7F_E0AC_4100_B7EF_A5B0D8FA75C3__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPErrorItem; + +///////////////////////////////////////////////////////////////////////////// +// CWMPError wrapper class + +class CWMPError : public COleDispatchDriver +{ +public: + CWMPError() {} // Calls COleDispatchDriver default constructor + CWMPError(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPError(const CWMPError& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + void clearErrorQueue(); + long GetErrorCount(); + CWMPErrorItem GetItem(long dwIndex); + void webHelp(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPERROR_H__1E72AC7F_E0AC_4100_B7EF_A5B0D8FA75C3__INCLUDED_) diff --git a/plugins/wmpa/wmperroritem.cpp b/plugins/wmpa/wmperroritem.cpp new file mode 100644 index 00000000..86e9740c --- /dev/null +++ b/plugins/wmpa/wmperroritem.cpp @@ -0,0 +1,50 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmperroritem.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPErrorItem properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPErrorItem operations + +long CWMPErrorItem::GetErrorCode() +{ + long result; + InvokeHelper(0x385, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPErrorItem::GetErrorDescription() +{ + CString result; + InvokeHelper(0x386, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +VARIANT CWMPErrorItem::GetErrorContext() +{ + VARIANT result; + InvokeHelper(0x387, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL); + return result; +} + +long CWMPErrorItem::GetRemedy() +{ + long result; + InvokeHelper(0x388, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPErrorItem::GetCustomUrl() +{ + CString result; + InvokeHelper(0x389, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} diff --git a/plugins/wmpa/wmperroritem.h b/plugins/wmpa/wmperroritem.h new file mode 100644 index 00000000..de66dc9b --- /dev/null +++ b/plugins/wmpa/wmperroritem.h @@ -0,0 +1,37 @@ +#if !defined(AFX_WMPERRORITEM_H__9399BDE5_C96D_43D3_BF02_E7A5850421B4__INCLUDED_) +#define AFX_WMPERRORITEM_H__9399BDE5_C96D_43D3_BF02_E7A5850421B4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPErrorItem wrapper class + +class CWMPErrorItem : public COleDispatchDriver +{ +public: + CWMPErrorItem() {} // Calls COleDispatchDriver default constructor + CWMPErrorItem(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPErrorItem(const CWMPErrorItem& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetErrorCode(); + CString GetErrorDescription(); + VARIANT GetErrorContext(); + long GetRemedy(); + CString GetCustomUrl(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPERRORITEM_H__9399BDE5_C96D_43D3_BF02_E7A5850421B4__INCLUDED_) diff --git a/plugins/wmpa/wmpmedia.cpp b/plugins/wmpa/wmpmedia.cpp new file mode 100644 index 00000000..63503ab8 --- /dev/null +++ b/plugins/wmpa/wmpmedia.cpp @@ -0,0 +1,167 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpmedia.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPMedia properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPMedia operations + +BOOL CWMPMedia::GetIsIdentical(LPDISPATCH pIWMPMedia) +{ + BOOL result; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x2fb, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms, + pIWMPMedia); + return result; +} + +CString CWMPMedia::GetSourceURL() +{ + CString result; + InvokeHelper(0x2ef, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +CString CWMPMedia::GetName() +{ + CString result; + InvokeHelper(0x2fc, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPMedia::SetName(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x2fc, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +long CWMPMedia::GetImageSourceWidth() +{ + long result; + InvokeHelper(0x2f0, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPMedia::GetImageSourceHeight() +{ + long result; + InvokeHelper(0x2f1, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPMedia::GetMarkerCount() +{ + long result; + InvokeHelper(0x2f2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +double CWMPMedia::getMarkerTime(long MarkerNum) +{ + double result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x2f3, DISPATCH_METHOD, VT_R8, (void*)&result, parms, + MarkerNum); + return result; +} + +CString CWMPMedia::getMarkerName(long MarkerNum) +{ + CString result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x2f4, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + MarkerNum); + return result; +} + +double CWMPMedia::GetDuration() +{ + double result; + InvokeHelper(0x2f5, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL); + return result; +} + +CString CWMPMedia::GetDurationString() +{ + CString result; + InvokeHelper(0x2f6, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +long CWMPMedia::GetAttributeCount() +{ + long result; + InvokeHelper(0x2f7, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPMedia::getAttributeName(long lIndex) +{ + CString result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x2f8, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + lIndex); + return result; +} + +CString CWMPMedia::getItemInfo(LPCTSTR bstrItemName) +{ + CString result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x2f9, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + bstrItemName); + return result; +} + +void CWMPMedia::setItemInfo(LPCTSTR bstrItemName, LPCTSTR bstrVal) +{ + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x2fa, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrItemName, bstrVal); +} + +CString CWMPMedia::getItemInfoByAtom(long lAtom) +{ + CString result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x2fd, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + lAtom); + return result; +} + +BOOL CWMPMedia::isMemberOf(LPDISPATCH pPlaylist) +{ + BOOL result; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x2fe, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + pPlaylist); + return result; +} + +BOOL CWMPMedia::isReadOnlyItem(LPCTSTR bstrItemName) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x2ff, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + bstrItemName); + return result; +} diff --git a/plugins/wmpa/wmpmedia.h b/plugins/wmpa/wmpmedia.h new file mode 100644 index 00000000..3503c403 --- /dev/null +++ b/plugins/wmpa/wmpmedia.h @@ -0,0 +1,50 @@ +#if !defined(AFX_WMPMEDIA_H__7736565E_C037_498E_89F1_9696912C5998__INCLUDED_) +#define AFX_WMPMEDIA_H__7736565E_C037_498E_89F1_9696912C5998__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPMedia wrapper class + +class CWMPMedia : public COleDispatchDriver +{ +public: + CWMPMedia() {} // Calls COleDispatchDriver default constructor + CWMPMedia(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPMedia(const CWMPMedia& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + BOOL GetIsIdentical(LPDISPATCH pIWMPMedia); + CString GetSourceURL(); + CString GetName(); + void SetName(LPCTSTR lpszNewValue); + long GetImageSourceWidth(); + long GetImageSourceHeight(); + long GetMarkerCount(); + double getMarkerTime(long MarkerNum); + CString getMarkerName(long MarkerNum); + double GetDuration(); + CString GetDurationString(); + long GetAttributeCount(); + CString getAttributeName(long lIndex); + CString getItemInfo(LPCTSTR bstrItemName); + void setItemInfo(LPCTSTR bstrItemName, LPCTSTR bstrVal); + CString getItemInfoByAtom(long lAtom); + BOOL isMemberOf(LPDISPATCH pPlaylist); + BOOL isReadOnlyItem(LPCTSTR bstrItemName); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPMEDIA_H__7736565E_C037_498E_89F1_9696912C5998__INCLUDED_) diff --git a/plugins/wmpa/wmpmediacollection.cpp b/plugins/wmpa/wmpmediacollection.cpp new file mode 100644 index 00000000..d50da652 --- /dev/null +++ b/plugins/wmpa/wmpmediacollection.cpp @@ -0,0 +1,133 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpmediacollection.h" + +// Dispatch interfaces referenced by this interface +#include "wmpmedia.h" +#include "wmpplaylist.h" +#include "wmpstringcollection.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPMediaCollection properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPMediaCollection operations + +CWMPMedia CWMPMediaCollection::add(LPCTSTR bstrURL) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c4, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrURL); + return CWMPMedia(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getAll() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x1c5, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getByName(LPCTSTR bstrName) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c6, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrName); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getByGenre(LPCTSTR bstrGenre) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c7, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrGenre); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getByAuthor(LPCTSTR bstrAuthor) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c8, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrAuthor); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getByAlbum(LPCTSTR bstrAlbum) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c9, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrAlbum); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylist CWMPMediaCollection::getByAttribute(LPCTSTR bstrAttribute, LPCTSTR bstrValue) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x1ca, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrAttribute, bstrValue); + return CWMPPlaylist(pDispatch); +} + +void CWMPMediaCollection::remove(LPDISPATCH pItem, BOOL varfDeleteFile) +{ + static BYTE parms[] = + VTS_DISPATCH VTS_BOOL; + InvokeHelper(0x1cb, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pItem, varfDeleteFile); +} + +CWMPStringCollection CWMPMediaCollection::getAttributeStringCollection(LPCTSTR bstrAttribute, LPCTSTR bstrMediaType) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x1cd, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrAttribute, bstrMediaType); + return CWMPStringCollection(pDispatch); +} + +long CWMPMediaCollection::getMediaAtom(LPCTSTR bstrItemName) +{ + long result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1d6, DISPATCH_METHOD, VT_I4, (void*)&result, parms, + bstrItemName); + return result; +} + +void CWMPMediaCollection::setDeleted(LPDISPATCH pItem, BOOL varfIsDeleted) +{ + static BYTE parms[] = + VTS_DISPATCH VTS_BOOL; + InvokeHelper(0x1d7, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pItem, varfIsDeleted); +} + +BOOL CWMPMediaCollection::isDeleted(LPDISPATCH pItem) +{ + BOOL result; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x1d8, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + pItem); + return result; +} diff --git a/plugins/wmpa/wmpmediacollection.h b/plugins/wmpa/wmpmediacollection.h new file mode 100644 index 00000000..aa91026a --- /dev/null +++ b/plugins/wmpa/wmpmediacollection.h @@ -0,0 +1,50 @@ +#if !defined(AFX_WMPMEDIACOLLECTION_H__8C47EB0E_4638_46DA_A405_415AEAE509CE__INCLUDED_) +#define AFX_WMPMEDIACOLLECTION_H__8C47EB0E_4638_46DA_A405_415AEAE509CE__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPMedia; +class CWMPPlaylist; +class CWMPStringCollection; + +///////////////////////////////////////////////////////////////////////////// +// CWMPMediaCollection wrapper class + +class CWMPMediaCollection : public COleDispatchDriver +{ +public: + CWMPMediaCollection() {} // Calls COleDispatchDriver default constructor + CWMPMediaCollection(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPMediaCollection(const CWMPMediaCollection& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + CWMPMedia add(LPCTSTR bstrURL); + CWMPPlaylist getAll(); + CWMPPlaylist getByName(LPCTSTR bstrName); + CWMPPlaylist getByGenre(LPCTSTR bstrGenre); + CWMPPlaylist getByAuthor(LPCTSTR bstrAuthor); + CWMPPlaylist getByAlbum(LPCTSTR bstrAlbum); + CWMPPlaylist getByAttribute(LPCTSTR bstrAttribute, LPCTSTR bstrValue); + void remove(LPDISPATCH pItem, BOOL varfDeleteFile); + CWMPStringCollection getAttributeStringCollection(LPCTSTR bstrAttribute, LPCTSTR bstrMediaType); + long getMediaAtom(LPCTSTR bstrItemName); + void setDeleted(LPDISPATCH pItem, BOOL varfIsDeleted); + BOOL isDeleted(LPDISPATCH pItem); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPMEDIACOLLECTION_H__8C47EB0E_4638_46DA_A405_415AEAE509CE__INCLUDED_) diff --git a/plugins/wmpa/wmpnetwork.cpp b/plugins/wmpa/wmpnetwork.cpp new file mode 100644 index 00000000..87c4d413 --- /dev/null +++ b/plugins/wmpa/wmpnetwork.cpp @@ -0,0 +1,233 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpnetwork.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPNetwork properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPNetwork operations + +long CWMPNetwork::GetBandWidth() +{ + long result; + InvokeHelper(0x321, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetRecoveredPackets() +{ + long result; + InvokeHelper(0x322, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPNetwork::GetSourceProtocol() +{ + CString result; + InvokeHelper(0x323, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetReceivedPackets() +{ + long result; + InvokeHelper(0x324, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetLostPackets() +{ + long result; + InvokeHelper(0x325, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetReceptionQuality() +{ + long result; + InvokeHelper(0x326, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetBufferingCount() +{ + long result; + InvokeHelper(0x327, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetBufferingProgress() +{ + long result; + InvokeHelper(0x328, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetBufferingTime() +{ + long result; + InvokeHelper(0x329, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPNetwork::SetBufferingTime(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x329, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +long CWMPNetwork::GetFrameRate() +{ + long result; + InvokeHelper(0x32a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetMaxBitRate() +{ + long result; + InvokeHelper(0x32b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetBitRate() +{ + long result; + InvokeHelper(0x32c, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::getProxySettings(LPCTSTR bstrProtocol) +{ + long result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x32d, DISPATCH_METHOD, VT_I4, (void*)&result, parms, + bstrProtocol); + return result; +} + +void CWMPNetwork::setProxySettings(LPCTSTR bstrProtocol, long lProxySetting) +{ + static BYTE parms[] = + VTS_BSTR VTS_I4; + InvokeHelper(0x32e, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrProtocol, lProxySetting); +} + +CString CWMPNetwork::getProxyName(LPCTSTR bstrProtocol) +{ + CString result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x32f, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + bstrProtocol); + return result; +} + +void CWMPNetwork::setProxyName(LPCTSTR bstrProtocol, LPCTSTR bstrProxyName) +{ + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x330, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrProtocol, bstrProxyName); +} + +long CWMPNetwork::getProxyPort(LPCTSTR bstrProtocol) +{ + long result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x331, DISPATCH_METHOD, VT_I4, (void*)&result, parms, + bstrProtocol); + return result; +} + +void CWMPNetwork::setProxyPort(LPCTSTR bstrProtocol, long lProxyPort) +{ + static BYTE parms[] = + VTS_BSTR VTS_I4; + InvokeHelper(0x332, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrProtocol, lProxyPort); +} + +CString CWMPNetwork::getProxyExceptionList(LPCTSTR bstrProtocol) +{ + CString result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x333, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + bstrProtocol); + return result; +} + +void CWMPNetwork::setProxyExceptionList(LPCTSTR bstrProtocol, LPCTSTR pbstrExceptionList) +{ + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x334, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrProtocol, pbstrExceptionList); +} + +BOOL CWMPNetwork::getProxyBypassForLocal(LPCTSTR bstrProtocol) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x335, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + bstrProtocol); + return result; +} + +void CWMPNetwork::setProxyBypassForLocal(LPCTSTR bstrProtocol, BOOL fBypassForLocal) +{ + static BYTE parms[] = + VTS_BSTR VTS_BOOL; + InvokeHelper(0x336, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrProtocol, fBypassForLocal); +} + +long CWMPNetwork::GetMaxBandwidth() +{ + long result; + InvokeHelper(0x337, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPNetwork::SetMaxBandwidth(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x337, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +long CWMPNetwork::GetDownloadProgress() +{ + long result; + InvokeHelper(0x338, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetEncodedFrameRate() +{ + long result; + InvokeHelper(0x339, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPNetwork::GetFramesSkipped() +{ + long result; + InvokeHelper(0x33a, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} diff --git a/plugins/wmpa/wmpnetwork.h b/plugins/wmpa/wmpnetwork.h new file mode 100644 index 00000000..1a0e0427 --- /dev/null +++ b/plugins/wmpa/wmpnetwork.h @@ -0,0 +1,60 @@ +#if !defined(AFX_WMPNETWORK_H__50BDAB41_9F78_492A_8A5E_27543B0C0CAF__INCLUDED_) +#define AFX_WMPNETWORK_H__50BDAB41_9F78_492A_8A5E_27543B0C0CAF__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPNetwork wrapper class + +class CWMPNetwork : public COleDispatchDriver +{ +public: + CWMPNetwork() {} // Calls COleDispatchDriver default constructor + CWMPNetwork(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPNetwork(const CWMPNetwork& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetBandWidth(); + long GetRecoveredPackets(); + CString GetSourceProtocol(); + long GetReceivedPackets(); + long GetLostPackets(); + long GetReceptionQuality(); + long GetBufferingCount(); + long GetBufferingProgress(); + long GetBufferingTime(); + void SetBufferingTime(long nNewValue); + long GetFrameRate(); + long GetMaxBitRate(); + long GetBitRate(); + long getProxySettings(LPCTSTR bstrProtocol); + void setProxySettings(LPCTSTR bstrProtocol, long lProxySetting); + CString getProxyName(LPCTSTR bstrProtocol); + void setProxyName(LPCTSTR bstrProtocol, LPCTSTR bstrProxyName); + long getProxyPort(LPCTSTR bstrProtocol); + void setProxyPort(LPCTSTR bstrProtocol, long lProxyPort); + CString getProxyExceptionList(LPCTSTR bstrProtocol); + void setProxyExceptionList(LPCTSTR bstrProtocol, LPCTSTR pbstrExceptionList); + BOOL getProxyBypassForLocal(LPCTSTR bstrProtocol); + void setProxyBypassForLocal(LPCTSTR bstrProtocol, BOOL fBypassForLocal); + long GetMaxBandwidth(); + void SetMaxBandwidth(long nNewValue); + long GetDownloadProgress(); + long GetEncodedFrameRate(); + long GetFramesSkipped(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPNETWORK_H__50BDAB41_9F78_492A_8A5E_27543B0C0CAF__INCLUDED_) diff --git a/plugins/wmpa/wmpplayer4.cpp b/plugins/wmpa/wmpplayer4.cpp new file mode 100644 index 00000000..40050678 --- /dev/null +++ b/plugins/wmpa/wmpplayer4.cpp @@ -0,0 +1,321 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpplayer4.h" + +// Dispatch interfaces referenced by this interface +#include "wmpcontrols.h" +#include "WMPSettings.h" +#include "wmpmedia.h" +#include "wmpmediacollection.h" +#include "wmpplaylistcollection.h" +#include "wmpnetwork.h" +#include "wmpplaylist.h" +#include "wmpcdromcollection.h" +#include "wmpclosedcaption.h" +#include "WMPError.h" +#include "wmpdvd.h" +#include "WMPPlayerApplication.h" + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayer4 + +IMPLEMENT_DYNCREATE(CWMPPlayer4, CWnd) + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayer4 properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayer4 operations + +void CWMPPlayer4::close() +{ + InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +CString CWMPPlayer4::GetUrl() +{ + CString result; + InvokeHelper(0x1, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetUrl(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +long CWMPPlayer4::GetOpenState() +{ + long result; + InvokeHelper(0x2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +long CWMPPlayer4::GetPlayState() +{ + long result; + InvokeHelper(0xa, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CWMPControls CWMPPlayer4::GetControls() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x4, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPControls(pDispatch); +} + +CWMPSettings CWMPPlayer4::GetSettings() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x5, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPSettings(pDispatch); +} + +CWMPMedia CWMPPlayer4::GetCurrentMedia() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x6, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPMedia(pDispatch); +} + +void CWMPPlayer4::SetCurrentMedia(LPDISPATCH newValue) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x6, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + newValue); +} + +CWMPMediaCollection CWMPPlayer4::GetMediaCollection() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x8, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPMediaCollection(pDispatch); +} + +CWMPPlaylistCollection CWMPPlayer4::GetPlaylistCollection() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x9, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlaylistCollection(pDispatch); +} + +CString CWMPPlayer4::GetVersionInfo() +{ + CString result; + InvokeHelper(0xb, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::launchURL(LPCTSTR bstrURL) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0xc, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrURL); +} + +CWMPNetwork CWMPPlayer4::GetNetwork() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x7, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPNetwork(pDispatch); +} + +CWMPPlaylist CWMPPlayer4::GetCurrentPlaylist() +{ + LPDISPATCH pDispatch; + InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlaylist(pDispatch); +} + +void CWMPPlayer4::SetCurrentPlaylist(LPDISPATCH newValue) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0xd, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + newValue); +} + +CWMPCdromCollection CWMPPlayer4::GetCdromCollection() +{ + LPDISPATCH pDispatch; + InvokeHelper(0xe, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPCdromCollection(pDispatch); +} + +CWMPClosedCaption CWMPPlayer4::GetClosedCaption() +{ + LPDISPATCH pDispatch; + InvokeHelper(0xf, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPClosedCaption(pDispatch); +} + +BOOL CWMPPlayer4::GetIsOnline() +{ + BOOL result; + InvokeHelper(0x10, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +CWMPError CWMPPlayer4::GetError() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x11, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPError(pDispatch); +} + +CString CWMPPlayer4::GetStatus() +{ + CString result; + InvokeHelper(0x12, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +CWMPDVD CWMPPlayer4::GetDvd() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x28, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPDVD(pDispatch); +} + +CWMPPlaylist CWMPPlayer4::newPlaylist(LPCTSTR bstrName, LPCTSTR bstrURL) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0x29, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrName, bstrURL); + return CWMPPlaylist(pDispatch); +} + +CWMPMedia CWMPPlayer4::newMedia(LPCTSTR bstrURL) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x2a, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrURL); + return CWMPMedia(pDispatch); +} + +BOOL CWMPPlayer4::GetEnabled() +{ + BOOL result; + InvokeHelper(0x13, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetEnabled(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x13, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +BOOL CWMPPlayer4::GetFullScreen() +{ + BOOL result; + InvokeHelper(0x15, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetFullScreen(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x15, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +BOOL CWMPPlayer4::GetEnableContextMenu() +{ + BOOL result; + InvokeHelper(0x16, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetEnableContextMenu(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x16, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +void CWMPPlayer4::SetUiMode(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x17, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +CString CWMPPlayer4::GetUiMode() +{ + CString result; + InvokeHelper(0x17, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +BOOL CWMPPlayer4::GetStretchToFit() +{ + BOOL result; + InvokeHelper(0x18, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetStretchToFit(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x18, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +BOOL CWMPPlayer4::GetWindowlessVideo() +{ + BOOL result; + InvokeHelper(0x19, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPPlayer4::SetWindowlessVideo(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x19, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +BOOL CWMPPlayer4::GetIsRemote() +{ + BOOL result; + InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +CWMPPlayerApplication CWMPPlayer4::GetPlayerApplication() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x1b, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlayerApplication(pDispatch); +} + +void CWMPPlayer4::openPlayer(LPCTSTR bstrURL) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x1c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrURL); +} diff --git a/plugins/wmpa/wmpplayer4.h b/plugins/wmpa/wmpplayer4.h new file mode 100644 index 00000000..5ec3c331 --- /dev/null +++ b/plugins/wmpa/wmpplayer4.h @@ -0,0 +1,104 @@ +#if !defined(AFX_WMPPLAYER4_H__A318AE12_803B_4EED_B586_1395637CDD35__INCLUDED_) +#define AFX_WMPPLAYER4_H__A318AE12_803B_4EED_B586_1395637CDD35__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPControls; +class CWMPSettings; +class CWMPMedia; +class CWMPMediaCollection; +class CWMPPlaylistCollection; +class CWMPNetwork; +class CWMPPlaylist; +class CWMPCdromCollection; +class CWMPClosedCaption; +class CWMPError; +class CWMPDVD; +class CWMPPlayerApplication; + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayer4 wrapper class + +class CWMPPlayer4 : public CWnd +{ +protected: + DECLARE_DYNCREATE(CWMPPlayer4) +public: + CLSID const& GetClsid() + { + static CLSID const clsid + = { 0x6bf52a52, 0x394a, 0x11d3, { 0xb1, 0x53, 0x0, 0xc0, 0x4f, 0x79, 0xfa, 0xa6 } }; + return clsid; + } + virtual BOOL Create(LPCTSTR lpszClassName, + LPCTSTR lpszWindowName, DWORD dwStyle, + const RECT& rect, + CWnd* pParentWnd, UINT nID, + CCreateContext* pContext = NULL) + { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID); } + + BOOL Create(LPCTSTR lpszWindowName, DWORD dwStyle, + const RECT& rect, CWnd* pParentWnd, UINT nID, + CFile* pPersist = NULL, BOOL bStorage = FALSE, + BSTR bstrLicKey = NULL) + { return CreateControl(GetClsid(), lpszWindowName, dwStyle, rect, pParentWnd, nID, + pPersist, bStorage, bstrLicKey); } + +// Attributes +public: + +// Operations +public: + void close(); + CString GetUrl(); + void SetUrl(LPCTSTR lpszNewValue); + long GetOpenState(); + long GetPlayState(); + CWMPControls GetControls(); + CWMPSettings GetSettings(); + CWMPMedia GetCurrentMedia(); + void SetCurrentMedia(LPDISPATCH newValue); + CWMPMediaCollection GetMediaCollection(); + CWMPPlaylistCollection GetPlaylistCollection(); + CString GetVersionInfo(); + void launchURL(LPCTSTR bstrURL); + CWMPNetwork GetNetwork(); + CWMPPlaylist GetCurrentPlaylist(); + void SetCurrentPlaylist(LPDISPATCH newValue); + CWMPCdromCollection GetCdromCollection(); + CWMPClosedCaption GetClosedCaption(); + BOOL GetIsOnline(); + CWMPError GetError(); + CString GetStatus(); + CWMPDVD GetDvd(); + CWMPPlaylist newPlaylist(LPCTSTR bstrName, LPCTSTR bstrURL); + CWMPMedia newMedia(LPCTSTR bstrURL); + BOOL GetEnabled(); + void SetEnabled(BOOL bNewValue); + BOOL GetFullScreen(); + void SetFullScreen(BOOL bNewValue); + BOOL GetEnableContextMenu(); + void SetEnableContextMenu(BOOL bNewValue); + void SetUiMode(LPCTSTR lpszNewValue); + CString GetUiMode(); + BOOL GetStretchToFit(); + void SetStretchToFit(BOOL bNewValue); + BOOL GetWindowlessVideo(); + void SetWindowlessVideo(BOOL bNewValue); + BOOL GetIsRemote(); + CWMPPlayerApplication GetPlayerApplication(); + void openPlayer(LPCTSTR bstrURL); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPPLAYER4_H__A318AE12_803B_4EED_B586_1395637CDD35__INCLUDED_) diff --git a/plugins/wmpa/wmpplayerapplication.cpp b/plugins/wmpa/wmpplayerapplication.cpp new file mode 100644 index 00000000..d47956a7 --- /dev/null +++ b/plugins/wmpa/wmpplayerapplication.cpp @@ -0,0 +1,39 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpplayerapplication.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayerApplication properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayerApplication operations + +void CWMPPlayerApplication::switchToPlayerApplication() +{ + InvokeHelper(0x44d, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPPlayerApplication::switchToControl() +{ + InvokeHelper(0x44e, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +BOOL CWMPPlayerApplication::GetPlayerDocked() +{ + BOOL result; + InvokeHelper(0x44f, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +BOOL CWMPPlayerApplication::GetHasDisplay() +{ + BOOL result; + InvokeHelper(0x450, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} diff --git a/plugins/wmpa/wmpplayerapplication.h b/plugins/wmpa/wmpplayerapplication.h new file mode 100644 index 00000000..96205aae --- /dev/null +++ b/plugins/wmpa/wmpplayerapplication.h @@ -0,0 +1,36 @@ +#if !defined(AFX_WMPPLAYERAPPLICATION_H__A69CB85C_22A1_4A02_979D_3FFB61135553__INCLUDED_) +#define AFX_WMPPLAYERAPPLICATION_H__A69CB85C_22A1_4A02_979D_3FFB61135553__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlayerApplication wrapper class + +class CWMPPlayerApplication : public COleDispatchDriver +{ +public: + CWMPPlayerApplication() {} // Calls COleDispatchDriver default constructor + CWMPPlayerApplication(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPPlayerApplication(const CWMPPlayerApplication& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + void switchToPlayerApplication(); + void switchToControl(); + BOOL GetPlayerDocked(); + BOOL GetHasDisplay(); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPPLAYERAPPLICATION_H__A69CB85C_22A1_4A02_979D_3FFB61135553__INCLUDED_) diff --git a/plugins/wmpa/wmpplaylist.cpp b/plugins/wmpa/wmpplaylist.cpp new file mode 100644 index 00000000..9308aa5b --- /dev/null +++ b/plugins/wmpa/wmpplaylist.cpp @@ -0,0 +1,132 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpplaylist.h" + +// Dispatch interfaces referenced by this interface +#include "WMPMedia.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylist properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylist operations + +long CWMPPlaylist::GetCount() +{ + long result; + InvokeHelper(0xc9, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPPlaylist::GetName() +{ + CString result; + InvokeHelper(0xca, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPPlaylist::SetName(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0xca, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +long CWMPPlaylist::GetAttributeCount() +{ + long result; + InvokeHelper(0xd2, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPPlaylist::GetAttributeName(long lIndex) +{ + CString result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0xd3, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, parms, + lIndex); + return result; +} + +CWMPMedia CWMPPlaylist::GetItem(long lIndex) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0xd4, DISPATCH_PROPERTYGET, VT_DISPATCH, (void*)&pDispatch, parms, + lIndex); + return CWMPMedia(pDispatch); +} + +CString CWMPPlaylist::getItemInfo(LPCTSTR bstrName) +{ + CString result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0xcb, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + bstrName); + return result; +} + +void CWMPPlaylist::setItemInfo(LPCTSTR bstrName, LPCTSTR bstrValue) +{ + static BYTE parms[] = + VTS_BSTR VTS_BSTR; + InvokeHelper(0xcc, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrName, bstrValue); +} + +BOOL CWMPPlaylist::GetIsIdentical(LPDISPATCH pIWMPPlaylist) +{ + BOOL result; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0xd5, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms, + pIWMPPlaylist); + return result; +} + +void CWMPPlaylist::clear() +{ + InvokeHelper(0xcd, DISPATCH_METHOD, VT_EMPTY, NULL, NULL); +} + +void CWMPPlaylist::insertItem(long lIndex, LPDISPATCH pIWMPMedia) +{ + static BYTE parms[] = + VTS_I4 VTS_DISPATCH; + InvokeHelper(0xce, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + lIndex, pIWMPMedia); +} + +void CWMPPlaylist::appendItem(LPDISPATCH pIWMPMedia) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0xcf, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pIWMPMedia); +} + +void CWMPPlaylist::removeItem(LPDISPATCH pIWMPMedia) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0xd0, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pIWMPMedia); +} + +void CWMPPlaylist::moveItem(long lIndexOld, long lIndexNew) +{ + static BYTE parms[] = + VTS_I4 VTS_I4; + InvokeHelper(0xd1, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + lIndexOld, lIndexNew); +} diff --git a/plugins/wmpa/wmpplaylist.h b/plugins/wmpa/wmpplaylist.h new file mode 100644 index 00000000..1d28ebd1 --- /dev/null +++ b/plugins/wmpa/wmpplaylist.h @@ -0,0 +1,50 @@ +#if !defined(AFX_WMPPLAYLIST_H__B739DAEE_6828_4128_8A0A_E6750502339C__INCLUDED_) +#define AFX_WMPPLAYLIST_H__B739DAEE_6828_4128_8A0A_E6750502339C__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPMedia; + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylist wrapper class + +class CWMPPlaylist : public COleDispatchDriver +{ +public: + CWMPPlaylist() {} // Calls COleDispatchDriver default constructor + CWMPPlaylist(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPPlaylist(const CWMPPlaylist& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetCount(); + CString GetName(); + void SetName(LPCTSTR lpszNewValue); + long GetAttributeCount(); + CString GetAttributeName(long lIndex); + CWMPMedia GetItem(long lIndex); + CString getItemInfo(LPCTSTR bstrName); + void setItemInfo(LPCTSTR bstrName, LPCTSTR bstrValue); + BOOL GetIsIdentical(LPDISPATCH pIWMPPlaylist); + void clear(); + void insertItem(long lIndex, LPDISPATCH pIWMPMedia); + void appendItem(LPDISPATCH pIWMPMedia); + void removeItem(LPDISPATCH pIWMPMedia); + void moveItem(long lIndexOld, long lIndexNew); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPPLAYLIST_H__B739DAEE_6828_4128_8A0A_E6750502339C__INCLUDED_) diff --git a/plugins/wmpa/wmpplaylistarray.cpp b/plugins/wmpa/wmpplaylistarray.cpp new file mode 100644 index 00000000..8baf1a87 --- /dev/null +++ b/plugins/wmpa/wmpplaylistarray.cpp @@ -0,0 +1,35 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpplaylistarray.h" + +// Dispatch interfaces referenced by this interface +#include "wmpplaylist.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistArray properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistArray operations + +long CWMPPlaylistArray::GetCount() +{ + long result; + InvokeHelper(0x1f5, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CWMPPlaylist CWMPPlaylistArray::Item(long lIndex) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x1f6, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + lIndex); + return CWMPPlaylist(pDispatch); +} diff --git a/plugins/wmpa/wmpplaylistarray.h b/plugins/wmpa/wmpplaylistarray.h new file mode 100644 index 00000000..9299b42c --- /dev/null +++ b/plugins/wmpa/wmpplaylistarray.h @@ -0,0 +1,38 @@ +#if !defined(AFX_WMPPLAYLISTARRAY_H__6368C8A4_18CF_4937_993F_F7FBE512B851__INCLUDED_) +#define AFX_WMPPLAYLISTARRAY_H__6368C8A4_18CF_4937_993F_F7FBE512B851__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPPlaylist; + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistArray wrapper class + +class CWMPPlaylistArray : public COleDispatchDriver +{ +public: + CWMPPlaylistArray() {} // Calls COleDispatchDriver default constructor + CWMPPlaylistArray(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPPlaylistArray(const CWMPPlaylistArray& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetCount(); + CWMPPlaylist Item(long lIndex); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPPLAYLISTARRAY_H__6368C8A4_18CF_4937_993F_F7FBE512B851__INCLUDED_) diff --git a/plugins/wmpa/wmpplaylistcollection.cpp b/plugins/wmpa/wmpplaylistcollection.cpp new file mode 100644 index 00000000..f13c98de --- /dev/null +++ b/plugins/wmpa/wmpplaylistcollection.cpp @@ -0,0 +1,82 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpplaylistcollection.h" + +// Dispatch interfaces referenced by this interface +#include "wmpplaylist.h" +#include "WMPPlaylistArray.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistCollection properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistCollection operations + +CWMPPlaylist CWMPPlaylistCollection::newPlaylist(LPCTSTR bstrName) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x228, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrName); + return CWMPPlaylist(pDispatch); +} + +CWMPPlaylistArray CWMPPlaylistCollection::getAll() +{ + LPDISPATCH pDispatch; + InvokeHelper(0x229, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, NULL); + return CWMPPlaylistArray(pDispatch); +} + +CWMPPlaylistArray CWMPPlaylistCollection::getByName(LPCTSTR bstrName) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x22a, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + bstrName); + return CWMPPlaylistArray(pDispatch); +} + +void CWMPPlaylistCollection::remove(LPDISPATCH pItem) +{ + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x22c, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pItem); +} + +void CWMPPlaylistCollection::setDeleted(LPDISPATCH pItem, BOOL varfIsDeleted) +{ + static BYTE parms[] = + VTS_DISPATCH VTS_BOOL; + InvokeHelper(0x230, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + pItem, varfIsDeleted); +} + +BOOL CWMPPlaylistCollection::isDeleted(LPDISPATCH pItem) +{ + BOOL result; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x231, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + pItem); + return result; +} + +CWMPPlaylist CWMPPlaylistCollection::importPlaylist(LPDISPATCH pItem) +{ + LPDISPATCH pDispatch; + static BYTE parms[] = + VTS_DISPATCH; + InvokeHelper(0x232, DISPATCH_METHOD, VT_DISPATCH, (void*)&pDispatch, parms, + pItem); + return CWMPPlaylist(pDispatch); +} diff --git a/plugins/wmpa/wmpplaylistcollection.h b/plugins/wmpa/wmpplaylistcollection.h new file mode 100644 index 00000000..b18d95ce --- /dev/null +++ b/plugins/wmpa/wmpplaylistcollection.h @@ -0,0 +1,44 @@ +#if !defined(AFX_WMPPLAYLISTCOLLECTION_H__D07F4C6A_4574_4463_8A11_4A5654E38062__INCLUDED_) +#define AFX_WMPPLAYLISTCOLLECTION_H__D07F4C6A_4574_4463_8A11_4A5654E38062__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +// Dispatch interfaces referenced by this interface +class CWMPPlaylist; +class CWMPPlaylistArray; + +///////////////////////////////////////////////////////////////////////////// +// CWMPPlaylistCollection wrapper class + +class CWMPPlaylistCollection : public COleDispatchDriver +{ +public: + CWMPPlaylistCollection() {} // Calls COleDispatchDriver default constructor + CWMPPlaylistCollection(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPPlaylistCollection(const CWMPPlaylistCollection& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + CWMPPlaylist newPlaylist(LPCTSTR bstrName); + CWMPPlaylistArray getAll(); + CWMPPlaylistArray getByName(LPCTSTR bstrName); + void remove(LPDISPATCH pItem); + void setDeleted(LPDISPATCH pItem, BOOL varfIsDeleted); + BOOL isDeleted(LPDISPATCH pItem); + CWMPPlaylist importPlaylist(LPDISPATCH pItem); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPPLAYLISTCOLLECTION_H__D07F4C6A_4574_4463_8A11_4A5654E38062__INCLUDED_) diff --git a/plugins/wmpa/wmpsettings.cpp b/plugins/wmpa/wmpsettings.cpp new file mode 100644 index 00000000..662a336a --- /dev/null +++ b/plugins/wmpa/wmpsettings.cpp @@ -0,0 +1,193 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpsettings.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPSettings properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPSettings operations + +BOOL CWMPSettings::GetIsAvailable(LPCTSTR bstrItem) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x71, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, parms, + bstrItem); + return result; +} + +BOOL CWMPSettings::GetAutoStart() +{ + BOOL result; + InvokeHelper(0x65, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetAutoStart(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x65, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +CString CWMPSettings::GetBaseURL() +{ + CString result; + InvokeHelper(0x6c, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetBaseURL(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x6c, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +CString CWMPSettings::GetDefaultFrame() +{ + CString result; + InvokeHelper(0x6d, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetDefaultFrame(LPCTSTR lpszNewValue) +{ + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x6d, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + lpszNewValue); +} + +BOOL CWMPSettings::GetInvokeURLs() +{ + BOOL result; + InvokeHelper(0x67, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetInvokeURLs(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x67, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +BOOL CWMPSettings::GetMute() +{ + BOOL result; + InvokeHelper(0x68, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetMute(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x68, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} + +long CWMPSettings::GetPlayCount() +{ + long result; + InvokeHelper(0x69, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetPlayCount(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x69, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +double CWMPSettings::GetRate() +{ + double result; + InvokeHelper(0x6a, DISPATCH_PROPERTYGET, VT_R8, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetRate(double newValue) +{ + static BYTE parms[] = + VTS_R8; + InvokeHelper(0x6a, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + newValue); +} + +long CWMPSettings::GetBalance() +{ + long result; + InvokeHelper(0x66, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetBalance(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x66, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +long CWMPSettings::GetVolume() +{ + long result; + InvokeHelper(0x6b, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetVolume(long nNewValue) +{ + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x6b, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + nNewValue); +} + +BOOL CWMPSettings::getMode(LPCTSTR bstrMode) +{ + BOOL result; + static BYTE parms[] = + VTS_BSTR; + InvokeHelper(0x6e, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, + bstrMode); + return result; +} + +void CWMPSettings::setMode(LPCTSTR bstrMode, BOOL varfMode) +{ + static BYTE parms[] = + VTS_BSTR VTS_BOOL; + InvokeHelper(0x6f, DISPATCH_METHOD, VT_EMPTY, NULL, parms, + bstrMode, varfMode); +} + +BOOL CWMPSettings::GetEnableErrorDialogs() +{ + BOOL result; + InvokeHelper(0x70, DISPATCH_PROPERTYGET, VT_BOOL, (void*)&result, NULL); + return result; +} + +void CWMPSettings::SetEnableErrorDialogs(BOOL bNewValue) +{ + static BYTE parms[] = + VTS_BOOL; + InvokeHelper(0x70, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, + bNewValue); +} diff --git a/plugins/wmpa/wmpsettings.h b/plugins/wmpa/wmpsettings.h new file mode 100644 index 00000000..423f7e6d --- /dev/null +++ b/plugins/wmpa/wmpsettings.h @@ -0,0 +1,55 @@ +#if !defined(AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_) +#define AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPSettings wrapper class + +class CWMPSettings : public COleDispatchDriver +{ +public: + CWMPSettings() {} // Calls COleDispatchDriver default constructor + CWMPSettings(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPSettings(const CWMPSettings& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + BOOL GetIsAvailable(LPCTSTR bstrItem); + BOOL GetAutoStart(); + void SetAutoStart(BOOL bNewValue); + CString GetBaseURL(); + void SetBaseURL(LPCTSTR lpszNewValue); + CString GetDefaultFrame(); + void SetDefaultFrame(LPCTSTR lpszNewValue); + BOOL GetInvokeURLs(); + void SetInvokeURLs(BOOL bNewValue); + BOOL GetMute(); + void SetMute(BOOL bNewValue); + long GetPlayCount(); + void SetPlayCount(long nNewValue); + double GetRate(); + void SetRate(double newValue); + long GetBalance(); + void SetBalance(long nNewValue); + long GetVolume(); + void SetVolume(long nNewValue); + BOOL getMode(LPCTSTR bstrMode); + void setMode(LPCTSTR bstrMode, BOOL varfMode); + BOOL GetEnableErrorDialogs(); + void SetEnableErrorDialogs(BOOL bNewValue); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPSETTINGS_H__28D3DCCC_3E9A_48AE_97A9_3C1337309AF4__INCLUDED_) diff --git a/plugins/wmpa/wmpstringcollection.cpp b/plugins/wmpa/wmpstringcollection.cpp new file mode 100644 index 00000000..a36d4d9c --- /dev/null +++ b/plugins/wmpa/wmpstringcollection.cpp @@ -0,0 +1,32 @@ +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + + +#include "stdafx.h" +#include "wmpstringcollection.h" + + +///////////////////////////////////////////////////////////////////////////// +// CWMPStringCollection properties + +///////////////////////////////////////////////////////////////////////////// +// CWMPStringCollection operations + +long CWMPStringCollection::GetCount() +{ + long result; + InvokeHelper(0x191, DISPATCH_PROPERTYGET, VT_I4, (void*)&result, NULL); + return result; +} + +CString CWMPStringCollection::Item(long lIndex) +{ + CString result; + static BYTE parms[] = + VTS_I4; + InvokeHelper(0x192, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms, + lIndex); + return result; +} diff --git a/plugins/wmpa/wmpstringcollection.h b/plugins/wmpa/wmpstringcollection.h new file mode 100644 index 00000000..bc03db89 --- /dev/null +++ b/plugins/wmpa/wmpstringcollection.h @@ -0,0 +1,34 @@ +#if !defined(AFX_WMPSTRINGCOLLECTION_H__782BAE9B_652B_476D_9448_808027B17262__INCLUDED_) +#define AFX_WMPSTRINGCOLLECTION_H__782BAE9B_652B_476D_9448_808027B17262__INCLUDED_ + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 +// Machine generated IDispatch wrapper class(es) created by Microsoft Visual C++ + +// NOTE: Do not modify the contents of this file. If this class is regenerated by +// Microsoft Visual C++, your modifications will be overwritten. + +///////////////////////////////////////////////////////////////////////////// +// CWMPStringCollection wrapper class + +class CWMPStringCollection : public COleDispatchDriver +{ +public: + CWMPStringCollection() {} // Calls COleDispatchDriver default constructor + CWMPStringCollection(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {} + CWMPStringCollection(const CWMPStringCollection& dispatchSrc) : COleDispatchDriver(dispatchSrc) {} + +// Attributes +public: + +// Operations +public: + long GetCount(); + CString Item(long lIndex); +}; + +//{{AFX_INSERT_LOCATION}} +// Microsoft Visual C++ will insert additional declarations immediately before the previous line. + +#endif // !defined(AFX_WMPSTRINGCOLLECTION_H__782BAE9B_652B_476D_9448_808027B17262__INCLUDED_) diff --git a/plugins/wmpa/xchat-plugin.cpp b/plugins/wmpa/xchat-plugin.cpp new file mode 100644 index 00000000..c5634064 --- /dev/null +++ b/plugins/wmpa/xchat-plugin.cpp @@ -0,0 +1,590 @@ +/****************************************************************** +* $Id$ +* +* $Log$ +* +* Copyright © 2005 David Cullen, All rights reserved +* +******************************************************************/ +#include "stdafx.h" +#include "xchat-plugin.h" +#include <windows.h> +#include <tchar.h> +#include "wmpa.h" +#include "WMPADialog.h" + +#define XMMS_SESSION 0 + +/****************************************************************** +* Globalss +******************************************************************/ +xchat_plugin *ph = NULL; +CWMPPlayer4 *wmp; +static const char subKey[] = "Software\\FlowerSoft\\WMPA"; + +/****************************************************************** +* xchat_plugin_init +******************************************************************/ +int xchat_plugin_init(xchat_plugin *plugin_handle, + char **plugin_name, + char **plugin_desc, + char **plugin_version, + char *arg) +{ + BOOL success; + + ph = plugin_handle; + + *plugin_name = "WMPA"; + *plugin_desc = "Announce the current song from Windows Media Player."; + *plugin_version = VER_STRING; + + // Show the song browser + success = StartWindowsMediaPlayer(); + if (!success) { + xchat_printf(ph, "WMPA: Failed to show the song browser."); + xchat_printf(ph, "WMPA: Could not load plug-in version %s.", VER_STRING); + return(E_FAIL); + } + + // Get a pointer to the Windows Media Player control + wmp = GetWindowsMediaPlayer(); + if (wmp == NULL) { + xchat_printf(ph, "WMPA: Failed to get a pointer to the Windows Media Player interface."); + xchat_printf(ph, "WMPA: Could not load plug-in version %s.", VER_STRING); + return(E_POINTER); + } + + // Restore the settings (need wmp first) + success = wmpaRestoreSettings(); + if (!success) { + xchat_printf(ph, "WMPA: Failed to restore the settings."); + } + + xchat_hook_command(ph, "auto", XCHAT_PRI_NORM, wmpaAuto, 0, 0); + xchat_hook_command(ph, "curr", XCHAT_PRI_NORM, wmpaCurr, 0, 0); + xchat_hook_command(ph, "find", XCHAT_PRI_NORM, wmpaFind, 0, 0); + xchat_hook_command(ph, "slist", XCHAT_PRI_NORM, wmpaList, 0, 0); + xchat_hook_command(ph, "next", XCHAT_PRI_NORM, wmpaNext, 0, 0); + xchat_hook_command(ph, "play", XCHAT_PRI_NORM, wmpaPlay, 0, 0); + xchat_hook_command(ph, "pause", XCHAT_PRI_NORM, wmpaPause, 0, 0); + xchat_hook_command(ph, "prev", XCHAT_PRI_NORM, wmpaPrev, 0, 0); + xchat_hook_command(ph, "song", XCHAT_PRI_NORM, wmpaSong, 0, 0); + xchat_hook_command(ph, "stop", XCHAT_PRI_NORM, wmpaStop, 0, 0); + xchat_hook_command(ph, "volume", XCHAT_PRI_NORM, wmpaVolume, 0, 0); + xchat_hook_command(ph, "wmpahelp", XCHAT_PRI_NORM, wmpaHelp, 0, 0); + + xchat_printf(ph, "WMPA %s successfully loaded.", VER_STRING); + wmpaCommands(); + xchat_printf(ph, "WMPA: e-mail me if you find any bugs: dcullen@intergate.com"); + + return 1; +} + +/****************************************************************** +* xchat_plugin_deinit +******************************************************************/ +int xchat_plugin_deinit(void) +{ + BOOL success; + + xchat_printf(ph, "WMPA %s is unloading.", VER_STRING); + + // Save the settings + success = wmpaSaveSettings(); + if (!success) { + xchat_printf(ph, "WMPA: Failed to save the settings."); + } + + wmp = NULL; + + BOOL result = StopWindowsMediaPlayer(); + if (!result) { + xchat_printf(ph, "WMPA could not shut down Windows Media Player."); + } + + xchat_printf(ph, "WMPA %s has unloaded.", VER_STRING); + return 1; +} + +/****************************************************************** +* xchat_plugin_get_info +******************************************************************/ +void xchat_plugin_get_info(char **name, char **desc, char **version, void **reserved) +{ + *name = "WMPA"; + *desc = "Announce the current song from Windows Media Player."; + *version = VER_STRING; + if (reserved) *reserved = NULL; +} + +/****************************************************************** +* wmpaCommands +******************************************************************/ +void wmpaCommands(void) +{ + xchat_printf(ph, "WMPA: /auto [on/off] : Turn on/off auto announce of the current song or display the current setting"); + xchat_printf(ph, "WMPA: /curr : Tell what song is currently playing"); + xchat_printf(ph, "WMPA: /find [word] : Find songs with \"word\" in their title, create a new playlist, and play it"); + xchat_printf(ph, "WMPA: /slist [word] : List songs with \"word\" in their title"); + xchat_printf(ph, "WMPA: /next : Play the next song"); + xchat_printf(ph, "WMPA: /play : Play the current song"); + xchat_printf(ph, "WMPA: /pause : Pause the current song"); + xchat_printf(ph, "WMPA: /prev : Play the previous song"); + xchat_printf(ph, "WMPA: /song : Announce the current song from Windows Media Player in xchat"); + xchat_printf(ph, "WMPA: /stop : Stop the current song"); + xchat_printf(ph, "WMPA: /volume [volume] : Set the volume (0 to 100) or display the current volume"); + xchat_printf(ph, "WMPA: /wmpahelp : Display this help."); +} + +/****************************************************************** +* wmpaAuto +******************************************************************/ +int wmpaAuto(char *word[], char *word_eol[], void *user_data) +{ + CWMPADialog *pDialog; + char *state; + + pDialog = GetWMPADialog(); + if (pDialog == NULL) return(XCHAT_EAT_ALL); + + if (CString(word[2]).IsEmpty()) { + if (pDialog->autoAnnounce) { + state = "on"; + } + else { + state = "off"; + } + } + else { + state = word[2]; + if (CString(state) == "on") { + pDialog->autoAnnounce = TRUE; + } + if (CString(state) == "off") { + pDialog->autoAnnounce = FALSE; + } + wmpaSaveSettings(); + } + + xchat_printf(ph, "WMPA: auto is %s", state); + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaCurr +******************************************************************/ +int wmpaCurr(char *word[], char *word_eol[], void *user_data) +{ + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaFind +******************************************************************/ +int wmpaFind(char *word[], char *word_eol[], void *user_data) +{ + long index; + long count; + long found; + + if (wmp != NULL) { + CWMPMediaCollection mc = wmp->GetMediaCollection(); + CWMPPlaylist all = mc.getAll(); + CWMPPlaylistCollection pc = wmp->GetPlaylistCollection(); + CWMPPlaylistArray pa = pc.getAll(); + CWMPPlaylist playlist; + CWMPMedia media; + + for (index = 0; index < pc.getAll().GetCount(); index++) { + if (pc.getAll().Item(index).GetName() == CString(word_eol[2])) { + playlist = pc.getAll().Item(index); + pc.remove(playlist); + } + } + + playlist = pc.newPlaylist(word_eol[2]); + + count = all.GetCount(); + found = 0; + for (index = 0; index < count; index++) { + media = all.GetItem(index); + CString artist = media.getItemInfo("Artist"); + CString title = media.getItemInfo("Title"); + CString album = media.getItemInfo("Album"); + if ( (artist.Find(word_eol[2]) != -1) || + (title.Find(word_eol[2]) != -1) || + (album.Find(word_eol[2]) != -1) ) { + playlist.appendItem(media); + found++; + } + } + + if (found > 0) { + xchat_printf(ph, "WMPA: Found %d songs with \"%s\" in them", found, word_eol[2]); + wmp->SetCurrentPlaylist(playlist); + wmp->GetControls().play(); + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + + CWMPADialog *dialog = GetWMPADialog(); + if (dialog != NULL) { + dialog->UpdateSongList(); + dialog->SelectCurrentSong(); + dialog->UpdatePlayLists(); + } + + } + else { + xchat_printf(ph, "WMPA: Could not find %s", word_eol[2]); + } + + } + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaList +******************************************************************/ +int wmpaList(char *word[], char *word_eol[], void *user_data) +{ + long index; + long count; + long found; + + if (wmp != NULL) { + xchat_printf(ph, "WMPA: Listing songs with \"%s\" in them", word_eol[2]); + + CWMPMediaCollection mc = wmp->GetMediaCollection(); + CWMPPlaylist all = mc.getAll(); + CWMPMedia media; + + count = all.GetCount(); + found = 0; + for (index = 0; index < count; index++) { + media = all.GetItem(index); + CString artist = media.getItemInfo("Artist"); + CString title = media.getItemInfo("Title"); + CString album = media.getItemInfo("Album"); + if ( (artist.Find(word_eol[2]) != -1) || + (title.Find(word_eol[2]) != -1) || + (album.Find(word_eol[2]) != -1) ) { + xchat_printf(ph, "WMPA: Found \"%s - %s (%s)\"", artist, title, album); + found++; + } + } + + if (found > 0) { + if (found == 1) + xchat_printf(ph, "WMPA: Found %d song with \"%s\" in it", found, word_eol[2]); + else + xchat_printf(ph, "WMPA: Found %d songs with \"%s\" in them", found, word_eol[2]); + } + else { + xchat_printf(ph, "WMPA: Could not find any songs with \"%s\" in them", word_eol[2]); + } + + } + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaNext +******************************************************************/ +int wmpaNext(char *word[], char *word_eol[], void *user_data) +{ + if (wmp != NULL) { + wmp->GetControls().next(); + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaPlay +******************************************************************/ +int wmpaPlay(char *word[], char *word_eol[], void *user_data) +{ + if (wmp != NULL) { + wmp->GetControls().play(); + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaPause +******************************************************************/ +int wmpaPause(char *word[], char *word_eol[], void *user_data) +{ + if (wmp != NULL) { + wmp->GetControls().pause(); + xchat_printf(ph, "WMPA: Pausing %s", (LPCTSTR) wmpaGetSongTitle()); + } + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaPrev +******************************************************************/ +int wmpaPrev(char *word[], char *word_eol[], void *user_data) +{ + if (wmp != NULL) { + wmp->GetControls().previous(); + xchat_printf(ph, "WMPA: Playing %s", (LPCTSTR) wmpaGetSongTitle()); + } + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaSong +******************************************************************/ +int wmpaSong(char *word[], char *word_eol[], void *user_data) +{ + CString songTitle = wmpaGetSongTitle(); + + xchat_commandf(ph, "me is playing %s", (LPCTSTR) songTitle); + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaStop +******************************************************************/ +int wmpaStop(char *word[], char *word_eol[], void *user_data) +{ + if (wmp != NULL) { + wmp->GetControls().stop(); + xchat_printf(ph, "WMPA: Stopping %s", (LPCTSTR) wmpaGetSongTitle()); + } + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaHelp +******************************************************************/ +int wmpaHelp(char *word[], char *word_eol[], void *user_data) +{ + xchat_printf(ph, "\n"); + xchat_printf(ph, "WMPA %s Help", VER_STRING); + wmpaCommands(); + xchat_printf(ph, "\n"); + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaVolume +******************************************************************/ +int wmpaVolume(char *word[], char *word_eol[], void *user_data) +{ + char *endPtr; + long volume; + + if (CString(word[2]).IsEmpty()) { + volume = wmp->GetSettings().GetVolume(); + } + else { + volume = strtol(word[2], &endPtr, 10); + + if ((wmp != NULL) && (volume >= 0) && (volume <= 100)) { + wmp->GetSettings().SetVolume(volume); + wmpaSaveSettings(); + } + } + + xchat_printf(ph, "WMPA: volume is %d", volume); + + return(XCHAT_EAT_ALL); +} + +/****************************************************************** +* wmpaRestoreSettings +******************************************************************/ +BOOL wmpaRestoreSettings(void) +{ + CWMPADialog *pDialog; + DWORD type; + int volume; + BOOL autoAnnounce; + DWORD size; + BOOL result; + + if (wmp == NULL) return(FALSE); + + volume = 50; + result = GetSetting("Volume", &type, (LPBYTE) &volume, &size); + wmp->GetSettings().SetVolume(volume); + + autoAnnounce = FALSE; + pDialog = GetWMPADialog(); + if (pDialog != NULL) { + result = result && GetSetting("Auto", &type, (LPBYTE) &autoAnnounce, &size); + pDialog->autoAnnounce = autoAnnounce; + } + else { + result = FALSE; + } + + return(result); +} + +/****************************************************************** +* wmpaSaveSettings +******************************************************************/ +BOOL wmpaSaveSettings(void) +{ + CWMPADialog *pDialog; + int volume; + BOOL autoAnnounce; + BOOL result; + + if (wmp == NULL) return(FALSE); + + volume = wmp->GetSettings().GetVolume(); + result = SaveSetting("Volume", REG_DWORD, (CONST BYTE *) &volume, sizeof(volume)); + + pDialog = GetWMPADialog(); + if (pDialog != NULL) { + autoAnnounce = pDialog->autoAnnounce; + result = result && SaveSetting("Auto", REG_DWORD, (CONST BYTE *) &autoAnnounce, sizeof(autoAnnounce)); + } + else { + result = FALSE; + } + + return(result); +} + +/****************************************************************** +* wmpaGetSongTitle +******************************************************************/ +CString wmpaGetSongTitle(void) +{ + char buffer[32]; + + if (wmp == NULL) return(CString()); + + CWMPMedia media = wmp->GetCurrentMedia(); + if (media == NULL) { + xchat_printf(ph, "WMPA: Could not get current media"); + return(XCHAT_EAT_ALL); + } + + CString artist = media.getItemInfo("Artist"); + CString title = media.getItemInfo("Title"); + CString album = media.getItemInfo("Album"); + CString bitrate = media.getItemInfo("Bitrate"); + CString duration = media.GetDurationString(); + + long krate = strtoul((LPCTSTR) bitrate, NULL, 10) / 1000; + _ultoa(krate, buffer, 10); + bitrate = CString(buffer); + + // Creatte the song title + CString songTitle(""); + songTitle += artist; + if (songTitle.IsEmpty()) songTitle += "Various"; + songTitle += " - "; + songTitle += title; + songTitle += " ("; + songTitle += album; + songTitle += ") ["; + songTitle += duration; + songTitle += "/"; + songTitle += bitrate; + songTitle += "Kbps]"; + + return(songTitle); +} + +/****************************************************************** +* SaveSetting +******************************************************************/ +BOOL SaveSetting(LPCTSTR name, DWORD type, CONST BYTE *value, DWORD size) +{ + HKEY hKey; + DWORD disposition; + LONG result; + + if (wmp == NULL) return(FALSE); + if (name == NULL) return(FALSE); + + result = RegOpenKeyEx(HKEY_CURRENT_USER, + subKey, + 0, + KEY_WRITE, + &hKey); + + if (result != ERROR_SUCCESS) { + result = RegCreateKeyEx(HKEY_CURRENT_USER, + subKey, + 0, + NULL, + REG_OPTION_NON_VOLATILE, + KEY_WRITE, + NULL, + &hKey, + &disposition); + + if (result != ERROR_SUCCESS) return(FALSE); + } + + result = RegSetValueEx(hKey, + name, + 0, + type, + value, + size); + + if (result == ERROR_SUCCESS) { + RegCloseKey(hKey); + return(TRUE); + } + + RegCloseKey(hKey); + return(FALSE); +} + +/****************************************************************** +* GetSetting +******************************************************************/ +BOOL GetSetting(LPCTSTR name, DWORD *type, LPBYTE value, DWORD *size) +{ + HKEY hKey; + LONG result; + + if (wmp == NULL) return(FALSE); + if (type == NULL) return(FALSE); + if (value == NULL) return(FALSE); + if (size == NULL) return(FALSE); + + result = RegOpenKeyEx(HKEY_CURRENT_USER, + subKey, + 0, + KEY_READ, + &hKey); + + if (result != ERROR_SUCCESS) return(FALSE); + + result = RegQueryValueEx(hKey, + name, + 0, + type, + value, + size); + + RegCloseKey(hKey); + + if (result == ERROR_SUCCESS) { + return(TRUE); + } + + RegCloseKey(hKey); + return(FALSE); +} + diff --git a/plugins/wmpa/xchat-plugin.h b/plugins/wmpa/xchat-plugin.h new file mode 100644 index 00000000..ee189ffe --- /dev/null +++ b/plugins/wmpa/xchat-plugin.h @@ -0,0 +1,368 @@ +/* You can distribute this header with your plugins for easy compilation */ +#ifndef XCHAT_PLUGIN_H +#define XCHAT_PLUGIN_H + +#define VER_STRING _T("1.0.2 (BETA)") + +#include "stdafx.h" +#include <windows.h> +#include <time.h> +#include <tchar.h> + +#define XCHAT_IFACE_MAJOR 1 +#define XCHAT_IFACE_MINOR 9 +#define XCHAT_IFACE_MICRO 11 +#define XCHAT_IFACE_VERSION ((XCHAT_IFACE_MAJOR * 10000) + \ + (XCHAT_IFACE_MINOR * 100) + \ + (XCHAT_IFACE_MICRO)) + +#define XCHAT_PRI_HIGHEST 127 +#define XCHAT_PRI_HIGH 64 +#define XCHAT_PRI_NORM 0 +#define XCHAT_PRI_LOW (-64) +#define XCHAT_PRI_LOWEST (-128) + +#define XCHAT_FD_READ 1 +#define XCHAT_FD_WRITE 2 +#define XCHAT_FD_EXCEPTION 4 +#define XCHAT_FD_NOTSOCKET 8 + +#define XCHAT_EAT_NONE 0 /* pass it on through! */ +#define XCHAT_EAT_XCHAT 1 /* don't let xchat see this event */ +#define XCHAT_EAT_PLUGIN 2 /* don't let other plugins see this event */ +#define XCHAT_EAT_ALL (XCHAT_EAT_XCHAT|XCHAT_EAT_PLUGIN) /* don't let anything see this event */ + +#ifdef __cplusplus +extern "C" { +#endif + + + typedef struct _xchat_plugin xchat_plugin; + typedef struct _xchat_list xchat_list; + typedef struct _xchat_hook xchat_hook; +#ifndef PLUGIN_C + typedef struct _xchat_context xchat_context; +#endif + +#ifndef PLUGIN_C + struct _xchat_plugin { + /* these are only used on win32 */ + xchat_hook *(*xchat_hook_command) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + xchat_hook *(*xchat_hook_server) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_print) (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_timer) (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + xchat_hook *(*xchat_hook_fd) (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + void *(*xchat_unhook) (xchat_plugin *ph, + xchat_hook *hook); + void (*xchat_print) (xchat_plugin *ph, + const char *text); + void (*xchat_printf) (xchat_plugin *ph, + const char *format, ...); + void (*xchat_command) (xchat_plugin *ph, + const char *command); + void (*xchat_commandf) (xchat_plugin *ph, + const char *format, ...); + int (*xchat_nickcmp) (xchat_plugin *ph, + const char *s1, + const char *s2); + int (*xchat_set_context) (xchat_plugin *ph, + xchat_context *ctx); + xchat_context *(*xchat_find_context) (xchat_plugin *ph, + const char *servname, + const char *channel); + xchat_context *(*xchat_get_context) (xchat_plugin *ph); + const char *(*xchat_get_info) (xchat_plugin *ph, + const char *id); + int (*xchat_get_prefs) (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + xchat_list * (*xchat_list_get) (xchat_plugin *ph, + const char *name); + void (*xchat_list_free) (xchat_plugin *ph, + xchat_list *xlist); + const char * const * (*xchat_list_fields) (xchat_plugin *ph, + const char *name); + int (*xchat_list_next) (xchat_plugin *ph, + xchat_list *xlist); + const char * (*xchat_list_str) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + int (*xchat_list_int) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + void * (*xchat_plugingui_add) (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + void (*xchat_plugingui_remove) (xchat_plugin *ph, + void *handle); + int (*xchat_emit_print) (xchat_plugin *ph, + const char *event_name, ...); + int (*xchat_read_fd) (xchat_plugin *ph, + void *src, + char *buf, + int *len); + time_t (*xchat_list_time) (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + char *(*xchat_gettext) (xchat_plugin *ph, + const char *msgid); + void (*xchat_send_modes) (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + char *(*xchat_strip) (xchat_plugin *ph, + const char *str, + int len, + int flags); + void (*xchat_free) (xchat_plugin *ph, + void *ptr); + }; +#endif + + + xchat_hook * + xchat_hook_command (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + const char *help_text, + void *userdata); + + xchat_hook * + xchat_hook_server (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], char *word_eol[], void *user_data), + void *userdata); + + xchat_hook * + xchat_hook_print (xchat_plugin *ph, + const char *name, + int pri, + int (*callback) (char *word[], void *user_data), + void *userdata); + + xchat_hook * + xchat_hook_timer (xchat_plugin *ph, + int timeout, + int (*callback) (void *user_data), + void *userdata); + + xchat_hook * + xchat_hook_fd (xchat_plugin *ph, + int fd, + int flags, + int (*callback) (int fd, int flags, void *user_data), + void *userdata); + + void * + xchat_unhook (xchat_plugin *ph, + xchat_hook *hook); + + void + xchat_print (xchat_plugin *ph, + const char *text); + + void + xchat_printf (xchat_plugin *ph, + const char *format, ...); + + void + xchat_command (xchat_plugin *ph, + const char *command); + + void + xchat_commandf (xchat_plugin *ph, + const char *format, ...); + + int + xchat_nickcmp (xchat_plugin *ph, + const char *s1, + const char *s2); + + int + xchat_set_context (xchat_plugin *ph, + xchat_context *ctx); + + xchat_context * + xchat_find_context (xchat_plugin *ph, + const char *servname, + const char *channel); + + xchat_context * + xchat_get_context (xchat_plugin *ph); + + const char * + xchat_get_info (xchat_plugin *ph, + const char *id); + + int + xchat_get_prefs (xchat_plugin *ph, + const char *name, + const char **string, + int *integer); + + xchat_list * + xchat_list_get (xchat_plugin *ph, + const char *name); + + void + xchat_list_free (xchat_plugin *ph, + xchat_list *xlist); + + const char * const * + xchat_list_fields (xchat_plugin *ph, + const char *name); + + int + xchat_list_next (xchat_plugin *ph, + xchat_list *xlist); + + const char * + xchat_list_str (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + + int + xchat_list_int (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + + time_t + xchat_list_time (xchat_plugin *ph, + xchat_list *xlist, + const char *name); + + void * + xchat_plugingui_add (xchat_plugin *ph, + const char *filename, + const char *name, + const char *desc, + const char *version, + char *reserved); + + void + xchat_plugingui_remove (xchat_plugin *ph, + void *handle); + + int + xchat_emit_print (xchat_plugin *ph, + const char *event_name, ...); + + char * + xchat_gettext (xchat_plugin *ph, + const char *msgid); + + void + xchat_send_modes (xchat_plugin *ph, + const char **targets, + int ntargets, + int modes_per_line, + char sign, + char mode); + + char * + xchat_strip (xchat_plugin *ph, + const char *str, + int len, + int flags); + + void + xchat_free (xchat_plugin *ph, + void *ptr); + +#if !defined(PLUGIN_C) && defined(WIN32) +#ifndef XCHAT_PLUGIN_HANDLE +#define XCHAT_PLUGIN_HANDLE (ph) +#endif +#define xchat_hook_command ((XCHAT_PLUGIN_HANDLE)->xchat_hook_command) +#define xchat_hook_server ((XCHAT_PLUGIN_HANDLE)->xchat_hook_server) +#define xchat_hook_print ((XCHAT_PLUGIN_HANDLE)->xchat_hook_print) +#define xchat_hook_timer ((XCHAT_PLUGIN_HANDLE)->xchat_hook_timer) +#define xchat_hook_fd ((XCHAT_PLUGIN_HANDLE)->xchat_hook_fd) +#define xchat_unhook ((XCHAT_PLUGIN_HANDLE)->xchat_unhook) +#define xchat_print ((XCHAT_PLUGIN_HANDLE)->xchat_print) +#define xchat_printf ((XCHAT_PLUGIN_HANDLE)->xchat_printf) +#define xchat_command ((XCHAT_PLUGIN_HANDLE)->xchat_command) +#define xchat_commandf ((XCHAT_PLUGIN_HANDLE)->xchat_commandf) +#define xchat_nickcmp ((XCHAT_PLUGIN_HANDLE)->xchat_nickcmp) +#define xchat_set_context ((XCHAT_PLUGIN_HANDLE)->xchat_set_context) +#define xchat_find_context ((XCHAT_PLUGIN_HANDLE)->xchat_find_context) +#define xchat_get_context ((XCHAT_PLUGIN_HANDLE)->xchat_get_context) +#define xchat_get_info ((XCHAT_PLUGIN_HANDLE)->xchat_get_info) +#define xchat_get_prefs ((XCHAT_PLUGIN_HANDLE)->xchat_get_prefs) +#define xchat_list_get ((XCHAT_PLUGIN_HANDLE)->xchat_list_get) +#define xchat_list_free ((XCHAT_PLUGIN_HANDLE)->xchat_list_free) +#define xchat_list_fields ((XCHAT_PLUGIN_HANDLE)->xchat_list_fields) +#define xchat_list_str ((XCHAT_PLUGIN_HANDLE)->xchat_list_str) +#define xchat_list_int ((XCHAT_PLUGIN_HANDLE)->xchat_list_int) +#define xchat_list_time ((XCHAT_PLUGIN_HANDLE)->xchat_list_time) +#define xchat_list_next ((XCHAT_PLUGIN_HANDLE)->xchat_list_next) +#define xchat_plugingui_add ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_add) +#define xchat_plugingui_remove ((XCHAT_PLUGIN_HANDLE)->xchat_plugingui_remove) +#define xchat_emit_print ((XCHAT_PLUGIN_HANDLE)->xchat_emit_print) +#define xchat_gettext ((XCHAT_PLUGIN_HANDLE)->xchat_gettext) +#define xchat_send_modes ((XCHAT_PLUGIN_HANDLE)->xchat_send_modes) +#define xchat_strip ((XCHAT_PLUGIN_HANDLE)->xchat_strip) +#define xchat_free ((XCHAT_PLUGIN_HANDLE)->xchat_free) +#endif + +#ifdef __cplusplus +} +#endif + +/****************************************************************** +* Globals +******************************************************************/ +extern xchat_plugin *ph; + +/****************************************************************** +* Prototypes +******************************************************************/ +void wmpaCommands(void); +int wmpaAuto(char *word[], char *word_eol[], void *user_data); +int wmpaCurr(char *word[], char *word_eol[], void *user_data); +int wmpaFind(char *word[], char *word_eol[], void *user_data); +int wmpaList(char *word[], char *word_eol[], void *user_data); +int wmpaNext(char *word[], char *word_eol[], void *user_data); +int wmpaPlay(char *word[], char *word_eol[], void *user_data); +int wmpaPause(char *word[], char *word_eol[], void *user_data); +int wmpaPrev(char *word[], char *word_eol[], void *user_data); +int wmpaSong(char *word[], char *word_eol[], void *user_data); +int wmpaStop(char *word[], char *word_eol[], void *user_data); +int wmpaVolume(char *word[], char *word_eol[], void *user_data); +int wmpaHelp(char *word[], char *word_eol[], void *user_data); +BOOL wmpaRestoreSettings(void); +BOOL wmpaSaveSettings(void); +CString wmpaGetSongTitle(void); +BOOL SaveSetting(LPCTSTR name, DWORD type, CONST BYTE *value, DWORD size); +BOOL GetSetting(LPCTSTR name, DWORD *type, LPBYTE value, DWORD *size); + +#endif /* XCHAT_PLUGIN_H */ + diff --git a/plugins/wmpa/xchat.ico b/plugins/wmpa/xchat.ico new file mode 100644 index 00000000..73247fd0 --- /dev/null +++ b/plugins/wmpa/xchat.ico Binary files differ |