//+---------------------------------------------------------------------------
//
//  Microsoft Windows
//  Copyright (C) Microsoft Corporation, 1999.
//
//  Contents:   private interface definitions between Custom and msrating
//
//----------------------------------------------------------------------------

cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// Ratingsp.h")
cpp_quote("//=--------------------------------------------------------------------------=")
cpp_quote("// (C) Copyright 1999 Microsoft Corporation.  All Rights Reserved.")
cpp_quote("//")
cpp_quote("//Date : August 18, 1999")
cpp_quote("//DESCRIPTION : private interface definitions between Custom and msrating")
cpp_quote("//")


#ifndef DO_NO_IMPORTS
import "oleidl.idl";
import "oaidl.idl";
#endif

typedef enum tagRATING_BLOCKING_SOURCE
{
    RBS_NO_RATINGS,       // No rating where found
    RBS_PAGE,             // denied by page label
    RBS_RATING_HELPER,    // denied by a rating helper
    RBS_CUSTOM_RATING_HELPER,
    RBS_ERROR
} RATING_BLOCKING_SOURCE;

typedef enum tagRATING_BLOCKING_METHOD
{
    RBM_DENY,
    RBM_LABEL,
    RBM_UNINIT,
    RBM_ERROR_NOT_IN_CUSTOM_MODE,
} RATING_BLOCKING_METHOD;

typedef struct tagRATINGLEVEL
{
    UINT nValue;
    LPWSTR pwszValueName;
    LPWSTR pwszDescription;    
} RATINGLEVEL;

typedef struct tagRATINGCATEGORY
{
    LPWSTR pwszCategoryName;
    LPWSTR pwszTransmitName;
} RATINGCATEGORY;

typedef struct tagRATINGBLOCKINGCATEGORY
{
    LPWSTR pwszCategoryName;
    LPWSTR pwszTransmitName;
    UINT nValue;
    LPWSTR pwszValueName;
} RATINGBLOCKINGCATEGORY;

typedef struct tagRATINGBLOCKINGLABELLIST
{
    LPWSTR pwszRatingSystemName;
    UINT cBlockingLabels;
    RATINGBLOCKINGCATEGORY* paRBLS;
        
} RATINGBLOCKINGLABELLIST;

typedef struct tagRATINGBLOCKINGINFO
{
    LPWSTR pwszDeniedURL;
    RATING_BLOCKING_SOURCE rbSource;
    RATING_BLOCKING_METHOD rbMethod;
    UINT cLabels;
    RATINGBLOCKINGLABELLIST* prbLabelList;
    LPWSTR pwszRatingHelperName;
    LPWSTR pwszRatingHelperReason;
} RATINGBLOCKINGINFO;

typedef struct tagRATINGCATEGORYSETTING
{
    LPSTR pszValueName;
    UINT nValue;
} RATINGCATEGORYSETTING;

typedef struct tagRATINGSYSTEMSETTING
{
    LPSTR pszRatingSystemName;
    UINT cCategories;
    RATINGCATEGORYSETTING* paRCS;
} RATINGSYSTEMSETTING;


interface IRatingNotification;
interface ICustomRatingHelper;

[
    object,
    uuid(639447BD-B2D3-44b9-9FB0-510F23CB45E4),
    pointer_default(unique)
]
interface IRatingNotification : IUnknown
    {
    HRESULT AccessDeniedNotify( [in] RATINGBLOCKINGINFO* rbInfo );
    
    HRESULT IsRatingsEnabled();
    }


cpp_quote("")
cpp_quote("#define SID_SRatingNotification IID_IRatingNotification")
cpp_quote("")

[
    object,
    uuid(D0D9842D-E211-4b2c-88DC-BC729342DFCB),
    pointer_default(unique),
    local
]
interface ICustomRatingHelper : IUnknown
    {
    HRESULT ObtainCustomRating( [in] LPCSTR pszTargetUrl,
                              [in] HANDLE hAbortEvent,
                              [in] IMalloc *pAllocator,
                              [out] LPSTR *ppRatingOut,
                              [out] LPSTR *ppRatingName,
                              [out] LPSTR *ppRatingReason);
    }

cpp_quote("STDAPI RatingCustomInit(BOOL bInit = TRUE);")
cpp_quote("STDAPI RatingCustomAddRatingSystem(LPSTR pszRatingSystemBuffer, UINT nBufferSize);")
cpp_quote("STDAPI RatingCustomSetUserOptions(RATINGSYSTEMSETTING* pRSSettings, UINT cSettings);")
cpp_quote("STDAPI RatingCustomAddRatingHelper(LPCSTR pszLibraryName, CLSID clsid, DWORD dwSort);")
cpp_quote("STDAPI RatingCustomRemoveRatingHelper(CLSID clsid);")
cpp_quote("STDAPI RatingCustomCrackData(LPCSTR pszUsername, void* pvRatingDetails, RATINGBLOCKINGINFO** pprbInfo);")
cpp_quote("STDAPI RatingCustomDeleteCrackedData(RATINGBLOCKINGINFO* prblInfo);")
cpp_quote("STDAPI RatingCustomSetDefaultBureau(LPCSTR pszRatingBureau);")


