#include "main.h"
#include "PlaylistDirectoryCallback.h"

PlaylistDirectoryCallback::PlaylistDirectoryCallback(const char *_extlist, const char *winampIni)
		: extlist(_extlist), recurse(true)
{
	if (winampIni)
	{
		int rofiob = GetPrivateProfileIntA("winamp", "rofiob", 1, winampIni);
		recurse = (rofiob & 2) ? false : true;
	}
}

bool PlaylistDirectoryCallback::ShouldRecurse(const wchar_t *path)
{
	return recurse;
}

bool PlaylistDirectoryCallback::ShouldLoad(const wchar_t *filename)
{
	const wchar_t *ext = PathFindExtensionW(filename);
	if (!*ext)
		return false;

	ext++;

	const char *a = extlist;
	while (a && *a)
	{
		if (!lstrcmpiW(AutoWide(a), ext))
			return true;
		a += lstrlenA(a) + 1;
	}
	return false;
}

#define CBCLASS PlaylistDirectoryCallback
START_DISPATCH;
CB( IFC_PLAYLISTDIRECTORYCALLBACK_SHOULDRECURSE, ShouldRecurse )
CB( IFC_PLAYLISTDIRECTORYCALLBACK_SHOULDLOAD, ShouldLoad )
END_DISPATCH;