2025-04-27 07:49:33 -04:00

85 lines
2.2 KiB
C++

#ifndef _PROGRAMS_H_
#define _PROGRAMS_H_
#define NO_OF_GENRES 146
#define IIDSTANDARDRATINGSET "{f85dddcb-d6e1-4335-b2cb-04de29ed0929}"
#define IIDMPAARATINGSET "{9b76024f-2528-4070-a382-559b265965fa}"
#define IIDCATEGORIESSET "{82edb424-1992-48ae-8bc4-5fdb095656d1}"
#define PROP_TMSCATEGORY_STARTID 200
#define STDRATING_MINAGE "MinimumAge"
#define MPAARATING_RATING "Rating"
#define INVALID_DATE 0
#define INVALID_MINAGE -1
#define INVALID_MPAARATING -1
// gsPrograms - The gsPrograms class manages the Programs
// collection associated with the Guide Store
//
class gsPrograms
{
public:
gsPrograms()
{
m_pPrograms = NULL;
m_pprogsByKey = NULL;
m_pProgramIDProp = NULL;
m_pTVRatingProp = NULL;
m_pMPAARatingProp = NULL;
m_bstrCachedProgramPtr = NULL;
}
~gsPrograms(){}
ULONG Init(IGuideStorePtr pGuideStore);
IProgramPtr AddProgram(_bstr_t bstrTitle,
_bstr_t bstrDescription,
_bstr_t bstrProgramID,
DATE dtCopyrightDate,
long lMinAgeRating,
long lMPAARating);
ULONG AddProgramCategory(IMetaPropertiesPtr pProgramProps, LPTSTR lpCategory);
IProgramPtr FindProgramMatch(_bstr_t bstrProgramTitle, _bstr_t bstrProgramID);
BOOL DoesProgramExist(_bstr_t bstrTitle, _bstr_t bstrDescription);
ULONG RemoveProgram(IProgramPtr pProgramToRemove){};
private:
IMetaPropertyTypePtr AddProgramIDProp(IMetaPropertySetsPtr pPropSets);
IMetaPropertyTypesPtr AddTMSCategories(IMetaPropertySetsPtr pPropSets);
IProgramsPtr m_pPrograms;
IProgramsPtr m_pprogsByKey;
// Source generated program ID metaproperty
//
IMetaPropertyTypePtr m_pProgramIDProp;
// Ratings MetaProperties
//
IMetaPropertyTypePtr m_pTVRatingProp;
IMetaPropertyTypePtr m_pMPAARatingProp;
// Genre Map for CategoryTypes
//
CMapStringToPtr m_CategoryMap;
// Cache the current Program ID and it's Program Pointer
//
_bstr_t m_bstrCachedProgramID;
IProgramPtr m_bstrCachedProgramPtr;
};
#endif // _PROGRAMS_H_