From 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d Mon Sep 17 00:00:00 2001 From: Jef Date: Tue, 24 Sep 2024 14:54:57 +0200 Subject: Initial community commit --- Src/xspf/XSPFHandler.cpp | 74 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 Src/xspf/XSPFHandler.cpp (limited to 'Src/xspf/XSPFHandler.cpp') diff --git a/Src/xspf/XSPFHandler.cpp b/Src/xspf/XSPFHandler.cpp new file mode 100644 index 00000000..72c0927e --- /dev/null +++ b/Src/xspf/XSPFHandler.cpp @@ -0,0 +1,74 @@ +#include "XSPFHandler.h" +#include "XSPFLoader.h" +#include "api__xspf.h" +#include "resource.h" + +const wchar_t *XSPFHandler::EnumerateExtensions(size_t n) +{ + switch(n) + { + case 0: + return L"xspf"; + default: + return 0; + } +} + +const char *XSPFHandler::EnumerateMIMETypes(size_t n) +{ + switch(n) + { + case 0: + return "application/xspf+xml"; + default: + return 0; + } +} + +const wchar_t *XSPFHandler::GetName() +{ + static wchar_t xspfpl[64]; + // no point re-loading this all of the time since it won't change once we've been loaded + return (!xspfpl[0]?WASABI_API_LNGSTRINGW_BUF(IDS_XSPF_PLAYLIST,xspfpl,64):xspfpl); +} + +// returns SUCCESS and FAILED, so be careful ... +int XSPFHandler::SupportedFilename(const wchar_t *filename) +{ + size_t filenameLength = wcslen(filename); + size_t extensionLength = wcslen(L".xspf"); + if (filenameLength < extensionLength) return SVC_PLAYLISTHANDLER_FAILED; // too short + if (!_wcsicmp(filename + filenameLength - extensionLength, L".xspf")) + return SVC_PLAYLISTHANDLER_SUCCESS; + else + return SVC_PLAYLISTHANDLER_FAILED; +} + +int XSPFHandler::SupportedMIMEType(const char *type) +{ + if (!strcmp(type, "application/xspf+xml")) + return SVC_PLAYLISTHANDLER_SUCCESS; + else + return SVC_PLAYLISTHANDLER_FAILED; +} + +ifc_playlistloader *XSPFHandler::CreateLoader(const wchar_t *filename) +{ + return new XSPFLoader; +} + +void XSPFHandler::ReleaseLoader(ifc_playlistloader *loader) +{ + delete static_cast(loader); +} + +// Define the dispatch table +#define CBCLASS XSPFHandler +START_DISPATCH; +CB(SVC_PLAYLISTHANDLER_ENUMEXTENSIONS, EnumerateExtensions) +CB(SVC_PLAYLISTHANDLER_ENUMMIMETYPES, EnumerateMIMETypes) +CB(SVC_PLAYLISTHANDLER_SUPPORTFILENAME, SupportedFilename) +CB(SVC_PLAYLISTHANDLER_CREATELOADER, CreateLoader) +VCB(SVC_PLAYLISTHANDLER_RELEASELOADER, ReleaseLoader) +CB(SVC_PLAYLISTHANDLER_GETNAME, GetName) +END_DISPATCH; \ No newline at end of file -- cgit