/********************************************************************
Copyright (c) 1999 Microsoft Corporation
Module Name:
ParamConfig.h
Abstract:
Implements the class CParamList that contains methods for traversing the elements
of XML file that contains the parameters required by the search engine. A sample parameter list
(also known as config file) XML file if shown here -
Choose one of the following products:
Accessibility
DirectX (Home User)
Revision History:
a-prakac created 12/05/2000
********************************************************************/
#if !defined(__INCLUDED___PCH___SELIB_PARAMCONFIG_H___)
#define __INCLUDED___PCH___SELIB_PARAMCONFIG_H___
#include
#include
class CParamList :
public MPC::Config::TypeConstructor,
public MPC::NamedMutex
{
class CParamValue : public MPC::Config::TypeConstructor
{
DECLARE_CONFIG_MAP(CParamValue);
public:
//
// m_bstrValue - The value to be passed to the wrapper when
// this item is selected (used in case of PARAM_LIST)
// m_bstrDisplayString - The display string that needs to be displayed
// on UI (used in case of PARAM_LIST)
// m _bDefault - Bool value that denotes if this is the default value to shown
// in the case PARAM_LIST. This value will show up first in the drop down list.
//
CComBSTR m_bstrValue;
CComBSTR m_bstrDisplayString;
bool m_bDefault;
////////////////////////////////////////
//
// MPC::Config::TypeConstructor
//
DEFINE_CONFIG_DEFAULTTAG();
DECLARE_CONFIG_METHODS();
//
////////////////////////////////////////
};
typedef std::list< CParamValue > ParamValue;
typedef ParamValue::iterator ParamValueIter;
typedef ParamValue::const_iterator ParamValueIterConst;
class CParamItem : public MPC::Config::TypeConstructor
{
DECLARE_CONFIG_MAP(CParamItem);
public:
//
// m_bstrName - Name of the parameter - for ex, "ProdID"
// m_bstrType - Type of the parameter - for ex, "PARAM_LIST"
// m_bstrDescription - Description that is to be shown on UI - for ex, "Please select a product"
// m_bRequired - Whether this parameter is required or not
// m_bVisible - Whether this parameter is visible or not
//
CComBSTR m_bstrName;
CComBSTR m_bstrType;
CComBSTR m_bstrDescription;
bool m_bRequired;
bool m_bVisible;
ParamValue m_lstParamValue;
CComBSTR m_bstrXML;
////////////////////////////////////////
//
// MPC::Config::TypeConstructor
//
DEFINE_CONFIG_DEFAULTTAG();
DECLARE_CONFIG_METHODS();
//
////////////////////////////////////////
bool FindDefaultValue( /*[out]*/ ParamValueIter& it );
};
typedef std::list< CParamItem > ParamItem;
typedef ParamItem::iterator ParamItemIter;
typedef ParamItem::const_iterator ParamItemIterConst;
////////////////////////////////////////
DECLARE_CONFIG_MAP(CParamList);
//
// Attributes of the PARAM_LIST tag in the schema
//
// m_bstrServerURL - This is the server url used for querying
// m_lUpdateFrequency - This is the frequency (in number of days) that the NetSearch wrapper
// should make an attempt to download the latest copy of the config file
// m_bstrErrorInfo - Error info passed by the server if unable to send the
// updated version
// m_bError - Bool value that denotes if an error occured or not
// m_bRemoteServerUrlPresent - This is the URL of the server that sends the updated parameter list
// m_bstrRemoteConfigServerURL - Bool value that dentoes whether the above remote server URL is
// present or not
//
CComBSTR m_bstrServerURL;
long m_lUpdateFrequency;
CComBSTR m_bstrErrorInfo;
bool m_bError;
bool m_bRemoteServerUrlPresent;
CComBSTR m_bstrRemoteConfigServerURL;
CComBSTR m_bstrSearchEngineName;
CComBSTR m_bstrSearchEngineDescription;
CComBSTR m_bstrSearchEngineOwner;
bool m_bStandardSearch;
bool m_bSearchTypePresent;
//
// Private variables that do not map to attributes/elements in the schema
//
CComBSTR m_bstrConfigFilePath;
ParamItem m_lstParamItem;
ParamItemIter m_itCurrentParam;
////////////////////////////////////////
//
// MPC::Config::TypeConstructor
//
DEFINE_CONFIG_DEFAULTTAG();
DECLARE_CONFIG_METHODS ();
//
////////////////////////////////////////
private:
HRESULT get_Type( /*[in]*/ BSTR bstrType, /*[out]*/ ParamTypeEnum& enmParamType );
public:
CParamList ();
~CParamList ();
HRESULT MoveNext ();
HRESULT MoveFirst ();
HRESULT ClearResults ();
bool IsCursorValid();
bool RemoteConfig ();
HRESULT Load( /*[in]*/ BSTR bstrLCID, /*[in]*/ BSTR bstrID, /*[in]*/ BSTR bstrXMLConfigData );
HRESULT get_Name ( /*[out]*/ CComBSTR& bstrName );
HRESULT get_ConfigFilePath ( /*[out]*/ CComBSTR& bstrPath );
HRESULT get_SearchEngineName ( /*[out]*/ CComBSTR& bstrSEName );
HRESULT get_SearchEngineDescription( /*[out]*/ CComBSTR& bstrSEDescription );
HRESULT get_SearchEngineOwner ( /*[out]*/ CComBSTR& bstrSEOwner );
HRESULT get_ServerUrl ( /*[out]*/ CComBSTR& bstrServerUrl );
HRESULT get_UpdateFrequency ( /*[out]*/ long& lUpdateFrequency );
HRESULT get_RemoteServerUrl ( /*[out]*/ CComBSTR& bstrRemoteServerURL );
HRESULT InitializeParamObject( /*[out]*/ SearchEngine::ParamItem_Definition2& def );
HRESULT GetDefaultValue ( /*[in]*/ BSTR bstrParamName, /*[in,out]*/ MPC::wstring& strValue );
bool IsStandardSearch ();
////////////////////////////////////////
};
#endif // !defined(__INCLUDED___PCH___SELIB_PARAMCONFIG_H___)