/******************************************************************************

Copyright (c) 1999 Microsoft Corporation

Module Name:
    HelpCtrUI.idl

Abstract:
    This file contains the declaration of the set of  coclasses and interfaces
    implemented by the Scripting Framework.

Revision History:
    Davide Massarenti   (Dmassare)  07/21/99
        created

******************************************************************************/

cpp_quote( "#include <HelpCtrUIDID.h>" )
cpp_quote( "#include <rdchost.h>" )
cpp_quote( "#include <rdshost.h>" )
cpp_quote( "#include <rdschan.h>" )
cpp_quote( "#include <safrdm.h>" )
#include <HelpCtrUIDID.h>

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E11-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHHelpCenterExternal Interface"),
    pointer_default(unique)
]
interface IPCHHelpCenterExternal : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_HCE__HELPSESSION  )] HRESULT HelpSession  ( [out, retval] IPCHHelpSession*      *pVal );
    [propget, id(DISPID_PCH_HCE__CHANNELS     )] HRESULT Channels     ( [out, retval] ISAFReg*              *pVal );
    [propget, id(DISPID_PCH_HCE__USERSETTINGS )] HRESULT UserSettings ( [out, retval] IPCHUserSettings2*    *pVal );
    [propget, id(DISPID_PCH_HCE__SECURITY     )] HRESULT Security     ( [out, retval] IPCHSecurity*         *pVal );
    [propget, id(DISPID_PCH_HCE__CONNECTIVITY )] HRESULT Connectivity ( [out, retval] IPCHConnectivity*     *pVal );
    [propget, id(DISPID_PCH_HCE__DATABASE     )] HRESULT Database     ( [out, retval] IPCHTaxonomyDatabase* *pVal );
    [propget, id(DISPID_PCH_HCE__TEXTHELPERS  )] HRESULT TextHelpers  ( [out, retval] IPCHTextHelpers*      *pVal );

    [propget, id(DISPID_PCH_HCE__EXTRAARGUMENT)] HRESULT ExtraArgument( [out, retval] BSTR                  *pVal );


    [propget, id(DISPID_PCH_HCE__HELPVIEWER   )] HRESULT HelpViewer   ( [out, retval] IUnknown*             *pVal );

    [propget, id(DISPID_PCH_HCE__UI_NAVBAR    )] HRESULT UI_NavBar    ( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__UI_MININAVBAR)] HRESULT UI_MiniNavBar( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__UI_CONTEXT   )] HRESULT UI_Context   ( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__UI_CONTENTS  )] HRESULT UI_Contents  ( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__UI_HHWINDOW  )] HRESULT UI_HHWindow  ( [out, retval] IUnknown*             *pVal );

    [propget, id(DISPID_PCH_HCE__WEB_CONTEXT  )] HRESULT WEB_Context  ( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__WEB_CONTENTS )] HRESULT WEB_Contents ( [out, retval] IUnknown*             *pVal );
    [propget, id(DISPID_PCH_HCE__WEB_HHWINDOW )] HRESULT WEB_HHWindow ( [out, retval] IUnknown*             *pVal );

    //
    // Methods
    //
    [id(DISPID_PCH_HCE__REGISTEREVENTS  )] HRESULT RegisterEvents  ( [in] BSTR id, [in] long pri, [in] IDispatch* function, [out,retval] long *cookie );
    [id(DISPID_PCH_HCE__UNREGISTEREVENTS)] HRESULT UnregisterEvents(                                                        [in]         long  cookie );

    ////////////////////////////////////////

    [id(DISPID_PCH_HCE__CREATEOBJECT_SEARCHENGINEMGR)] HRESULT CreateObject_SearchEngineMgr( [out, retval] IPCHSEManager*      *ppSE );
    [id(DISPID_PCH_HCE__CREATEOBJECT_DATACOLLECTION )] HRESULT CreateObject_DataCollection ( [out, retval] ISAFDataCollection* *ppDC );
    [id(DISPID_PCH_HCE__CREATEOBJECT_CABINET        )] HRESULT CreateObject_Cabinet        ( [out, retval] ISAFCabinet*        *ppCB );
    [id(DISPID_PCH_HCE__CREATEOBJECT_ENCRYPTION     )] HRESULT CreateObject_Encryption     ( [out, retval] ISAFEncrypt*        *ppEn );
    [id(DISPID_PCH_HCE__CREATEOBJECT_INCIDENT       )] HRESULT CreateObject_Incident       ( [out, retval] ISAFIncident*       *ppIn );
    [id(DISPID_PCH_HCE__CREATEOBJECT_CHANNEL        )] HRESULT CreateObject_Channel        ( [in         ] BSTR bstrVendorID         ,
                                                                                             [in         ] BSTR bstrProductID        ,
                                                                                             [out, retval] ISAFChannel*        *ppSh );

    ////////////////////

    [id(DISPID_PCH_HCE__CREATEOBJECT_REMOTEDESKTOPSESSION     )] HRESULT CreateObject_RemoteDesktopSession     ( [in         ] long                         lTimeout    ,
                                                                                                                 [in         ] BSTR                  bstrConnectionParms,
                                                                                                                 [in         ] BSTR                     bstrUserHelpBlob,
                                                                                                                 [out, retval] ISAFRemoteDesktopSession*      *ppRCS    );

    [id(DISPID_PCH_HCE__CONNECTTOEXPERT                       )] HRESULT ConnectToExpert                      (  [in         ] BSTR bstrExpertConnectParm,
                                                                                                                 [in         ] LONG lTimeout,
                                                                                                                 [out, retval] LONG *lSafErrorCode);


    [id(DISPID_PCH_HCE__CREATEOBJECT_REMOTEDESKTOPMANAGER     )] HRESULT CreateObject_RemoteDesktopManager     ( [out, retval] ISAFRemoteDesktopManager*      *ppRDM    );
    [id(DISPID_PCH_HCE__CREATEOBJECT_REMOTEDESKTOPCONNECTION  )] HRESULT CreateObject_RemoteDesktopConnection  ( [out, retval] ISAFRemoteDesktopConnection*   *ppRDC    );

    ////////////////////

    [id(DISPID_PCH_HCE__CREATEOBJECT_INTERCOMCLIENT)] HRESULT CreateObject_IntercomClient ([out, retval] ISAFIntercomClient*  *ppI );
    [id(DISPID_PCH_HCE__CREATEOBJECT_INTERCOMSERVER)] HRESULT CreateObject_IntercomServer ([out, retval] ISAFIntercomServer*  *ppI );

    ////////////////////

    [id(DISPID_PCH_HCE__CREATEOBJECT_CONTEXTMENU)] HRESULT CreateObject_ContextMenu( [out, retval] IPCHContextMenu* *ppCM  );
    [id(DISPID_PCH_HCE__CREATEOBJECT_PRINTENGINE)] HRESULT CreateObject_PrintEngine( [out, retval] IPCHPrintEngine* *ppPE  );

    ////////////////////////////////////////////////////////////

    [id(DISPID_PCH_HCE__OPENFILEASSTREAM  )] HRESULT OpenFileAsStream  ( [in] BSTR bstrFilename, [out, retval] IUnknown* *stream );
    [id(DISPID_PCH_HCE__CREATEFILEASSTREAM)] HRESULT CreateFileAsStream( [in] BSTR bstrFilename, [out, retval] IUnknown* *stream );
    [id(DISPID_PCH_HCE__COPYSTREAMTOFILE  )] HRESULT CopyStreamToFile  ( [in] BSTR bstrFilename, [in]          IUnknown*  stream );

    [id(DISPID_PCH_HCE__NETWORKALIVE        )] HRESULT NetworkAlive        (                    [out, retval] VARIANT_BOOL *pVal );
    [id(DISPID_PCH_HCE__DESTINATIONREACHABLE)] HRESULT DestinationReachable( [in] BSTR bstrURL, [out, retval] VARIANT_BOOL *pVal );

    [id(DISPID_PCH_HCE__FORMATERROR)] HRESULT FormatError( [in] VARIANT vError, [out, retval] BSTR *pVal );

    [id(DISPID_PCH_HCE__REGREAD  )] HRESULT RegRead  ( [in] BSTR bstrKey, [out, retval] VARIANT *pVal                                );
    [id(DISPID_PCH_HCE__REGWRITE )] HRESULT RegWrite ( [in] BSTR bstrKey, [in         ] VARIANT  newVal, [in,optional] VARIANT vKind );
    [id(DISPID_PCH_HCE__REGDELETE)] HRESULT RegDelete( [in] BSTR bstrKey                                                             );

    ////////////////////////////////////////

    [id(DISPID_PCH_HCE__CLOSE    )] HRESULT Close    ();
    [id(DISPID_PCH_HCE__REFRESHUI)] HRESULT RefreshUI();


    [id(DISPID_PCH_HCE__PRINT)] HRESULT Print( [in] VARIANT window, [in] VARIANT_BOOL fEvent, [out, retval] VARIANT_BOOL *pVal );

    [id(DISPID_PCH_HCE__HIGHLIGHTWORDS)] HRESULT HighlightWords( [in] VARIANT window, [in] VARIANT words );

    [id(DISPID_PCH_HCE__MESSAGEBOX  )] HRESULT MessageBox  ( [in] BSTR bstrText , [in] BSTR bstrKind   , [out, retval] BSTR *pVal );
    [id(DISPID_PCH_HCE__SELECTFOLDER)] HRESULT SelectFolder( [in] BSTR bstrTitle, [in] BSTR bstrDefault, [out, retval] BSTR *pVal );
};

[
    object,
    uuid(FC7D9E12-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHEvent Interface"),
    pointer_default(unique)
]
interface IPCHEvent : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_E__ACTION         )] HRESULT Action         ( [out, retval] BSTR                 *  pVal );
    [propget, id(DISPID_PCH_E__CANCEL         )] HRESULT Cancel         ( [out, retval] VARIANT_BOOL         *  pVal );
    [propput, id(DISPID_PCH_E__CANCEL         )] HRESULT Cancel         ( [in         ] VARIANT_BOOL          newVal );

    [propget, id(DISPID_PCH_E__URL            )] HRESULT URL            ( [out, retval] BSTR                 *  pVal );
    [propget, id(DISPID_PCH_E__FRAME          )] HRESULT Frame          ( [out, retval] BSTR                 *  pVal );
    [propget, id(DISPID_PCH_E__PANEL          )] HRESULT Panel          ( [out, retval] BSTR                 *  pVal );
    [propget, id(DISPID_PCH_E__PLACE          )] HRESULT Place          ( [out, retval] BSTR                 *  pVal );

    [propget, id(DISPID_PCH_E__CURRENTCONTEXT )] HRESULT CurrentContext ( [out, retval] IPCHHelpSessionItem* *  pVal );
    [propget, id(DISPID_PCH_E__PREVIOUSCONTEXT)] HRESULT PreviousContext( [out, retval] IPCHHelpSessionItem* *  pVal );
    [propget, id(DISPID_PCH_E__NEXTCONTEXT    )] HRESULT NextContext    ( [out, retval] IPCHHelpSessionItem* *  pVal );
};


[
    object,
    uuid(FC7D9E13-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHScriptableStream Interface"),
    pointer_default(unique)
]
interface IPCHScriptableStream : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_SS__SIZE)] HRESULT Size( [out, retval] long *plSize );

    //
    // Methods
    //
    [id(DISPID_PCH_SS__READ    )] HRESULT Read    ( [in] long lCount , [out, retval] VARIANT *   pvData                                  );
    [id(DISPID_PCH_SS__READHEX )] HRESULT ReadHex ( [in] long lCount , [out, retval] BSTR    *pbstrData                                  );

    [id(DISPID_PCH_SS__WRITE   )] HRESULT Write   ( [in] long lCount , [in         ] VARIANT      vData  , [out, retval] long *plWritten );
    [id(DISPID_PCH_SS__WRITEHEX)] HRESULT WriteHex( [in] long lCount , [in         ] BSTR      bstrData  , [out, retval] long *plWritten );

    [id(DISPID_PCH_SS__SEEK    )] HRESULT Seek    ( [in] long lOffset, [in         ] BSTR      bstrOrigin, [out, retval] long *plNewPos  );
    [id(DISPID_PCH_SS__CLOSE   )] HRESULT Close   (                                                                                      );
};


[
    object,
    uuid(FC7D9E16-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHHelpViewerWrapper Interface"),
    pointer_default(unique)
]
interface IPCHHelpViewerWrapper : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_HVW__WEBBROWSER)] HRESULT WebBrowser( [out, retval] IUnknown* *pVal );

    //
    // Methods
    //
    [id(DISPID_PCH_HVW__NAVIGATE)] HRESULT Navigate( [in] BSTR bstrURL );
    [id(DISPID_PCH_HVW__PRINT   )] HRESULT Print   (                   );
};


////////////////////////////////////////////////////////////////////////////////

typedef [v1_enum] enum tagTB_MODE {
    TB_ALL      = 0x00000000, // All text labels.
    TB_SELECTED = 0x00000001, // Selected text labels.
    TB_NONE     = 0x00000002, // No text labels.
} TB_MODE;

[
    object,
    uuid(FC7D9E18-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHToolBar Interface"),
    pointer_default(unique)
]
interface IPCHToolBar : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_TB__DEFINITION)] HRESULT Definition( [out, retval] BSTR    *  pVal );
    [propput, id(DISPID_PCH_TB__DEFINITION)] HRESULT Definition( [in         ] BSTR     newVal );
    [propget, id(DISPID_PCH_TB__MODE      )] HRESULT Mode      ( [out, retval] TB_MODE *  pVal );
    [propput, id(DISPID_PCH_TB__MODE      )] HRESULT Mode      ( [in         ] TB_MODE  newVal );

    //
    // Methods
    //
    [id(DISPID_PCH_TB__SETSTATE     )] HRESULT SetState     ( [in] BSTR bstrText, [in] VARIANT_BOOL fEnabled );
    [id(DISPID_PCH_TB__SETVISIBILITY)] HRESULT SetVisibility( [in] BSTR bstrText, [in] VARIANT_BOOL fVisible );
};

[
    uuid(FC7D9E19-3F9E-11d3-93C0-00C04F72DAF7),
    helpstring("DPCHToolBarEvents Interface")
]
dispinterface DPCHToolBarEvents
{
    properties:
    methods:
    [id(DISPID_PCH_TBE__ONCOMMAND)] HRESULT onCommand( IPCHToolBar* tb, BSTR bstrID );
};

////////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E1A-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHProgressBar Interface"),
    pointer_default(unique)
]
interface IPCHProgressBar : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_PB__LOWLIMIT )] HRESULT LowLimit ( [out, retval] long *  pVal );
    [propput, id(DISPID_PCH_PB__LOWLIMIT )] HRESULT LowLimit ( [in         ] long  newVal );
    [propget, id(DISPID_PCH_PB__HIGHLIMIT)] HRESULT HighLimit( [out, retval] long *  pVal );
    [propput, id(DISPID_PCH_PB__HIGHLIMIT)] HRESULT HighLimit( [in         ] long  newVal );
    [propget, id(DISPID_PCH_PB__POS      )] HRESULT Pos      ( [out, retval] long *  pVal );
    [propput, id(DISPID_PCH_PB__POS      )] HRESULT Pos      ( [in         ] long  newVal );
};

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

typedef [v1_enum] enum tagHS_MODE {
    HS_ALL  = 0x00000000, // All the pages ssen.
    HS_READ = 0x00000001, // Only those seen long enough (X seconds.)
} HS_MODE;


[
    object,
    uuid(FC7D9E20-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHHelpSession Interface"),
    pointer_default(unique)
]
interface IPCHHelpSession : IDispatch
{
    //
    // Properties
    //
    [propget,id(DISPID_PCH_HS__CURRENTCONTEXT)] HRESULT CurrentContext( [out, retval] IPCHHelpSessionItem* *ppHSI );

    //
    // Methods
    //
    [id(DISPID_PCH_HS__VISITEDHELPPAGES)] HRESULT VisitedHelpPages( [in] HS_MODE hsMode, [out, retval] IPCHCollection* *ppC );

    [id(DISPID_PCH_HS__SETTITLE        )] HRESULT SetTitle        ( [in] BSTR bstrURL, [in] BSTR bstrTitle );
    [id(DISPID_PCH_HS__FORCENAVIGATION )] HRESULT ForceNavigation ( [in] BSTR bstrURL                      );
    [id(DISPID_PCH_HS__IGNORENAVIGATION)] HRESULT IgnoreNavigation(                                        );
    [id(DISPID_PCH_HS__ERASENAVIGATION )] HRESULT EraseNavigation (                                        );
    [id(DISPID_PCH_HS__ISNAVIGATING    )] HRESULT IsNavigating    ( [out, retval] VARIANT_BOOL *pVal       );

    [id(DISPID_PCH_HS__BACK            )] HRESULT Back            ( [in] long lLength                                   );
    [id(DISPID_PCH_HS__FORWARD         )] HRESULT Forward         ( [in] long lLength                                   );
    [id(DISPID_PCH_HS__ISVALID         )] HRESULT IsValid         ( [in] long lLength, [out, retval] VARIANT_BOOL *pVal );
    [id(DISPID_PCH_HS__NAVIGATE        )] HRESULT Navigate        ( [in] IPCHHelpSessionItem* pHSI                      );

    [id(DISPID_PCH_HS__CHANGECONTEXT)] HRESULT ChangeContext( [in] BSTR bstrName, [in,optional] VARIANT vInfo, [in,optional] VARIANT vURL );
};

[
    object,
    uuid(FC7D9E21-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHHelpSessionItem Interface"),
    pointer_default(unique)
]
interface IPCHHelpSessionItem : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_HSI__SKU        )] HRESULT SKU        ( [out, retval] BSTR *pVal );
    [propget, id(DISPID_PCH_HSI__LANGUAGE   )] HRESULT Language   ( [out, retval] long *pVal );

    [propget, id(DISPID_PCH_HSI__URL        )] HRESULT URL        ( [out, retval] BSTR *pVal );
    [propget, id(DISPID_PCH_HSI__TITLE      )] HRESULT Title      ( [out, retval] BSTR *pVal );
    [propget, id(DISPID_PCH_HSI__LASTVISITED)] HRESULT LastVisited( [out, retval] DATE *pVal );
    [propget, id(DISPID_PCH_HSI__DURATION   )] HRESULT Duration   ( [out, retval] DATE *pVal );
    [propget, id(DISPID_PCH_HSI__NUMOFHITS  )] HRESULT NumOfHits  ( [out, retval] long *pVal );

    [propget, id(DISPID_PCH_HSI__CONTEXTNAME)] HRESULT ContextName(                     [out, retval] BSTR    *pVal   );
    [propget, id(DISPID_PCH_HSI__CONTEXTINFO)] HRESULT ContextInfo(                     [out, retval] BSTR    *pVal   );
    [propget, id(DISPID_PCH_HSI__CONTEXTURL )] HRESULT ContextURL (                     [out, retval] BSTR    *pVal   );

    [propget, id(DISPID_PCH_HSI__PROPERTY   )] HRESULT Property   ( [in] BSTR bstrName, [out, retval] VARIANT *pVal   );
    [propput, id(DISPID_PCH_HSI__PROPERTY   )] HRESULT Property   ( [in] BSTR bstrName, [in]          VARIANT  newVal );

    //
    // Methods
    //
    [id(DISPID_PCH_HSI__CHECKPROPERTY)] HRESULT CheckProperty( [in] BSTR bstrName, [out, retval] VARIANT_BOOL *pVal );
};

////////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E30-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHUserSettings2 Interface"),
    pointer_default(unique)
]
interface IPCHUserSettings2 : IPCHUserSettings
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_US2__FAVORITES)] HRESULT Favorites( [out, retval] IPCHFavorites* *pVal );
    [propget, id(DISPID_PCH_US2__OPTIONS  )] HRESULT Options  ( [out, retval] IPCHOptions*   *pVal );
    [propget, id(DISPID_PCH_US2__SCOPE    )] HRESULT Scope    ( [out, retval] BSTR           *pVal );

    [propget, id(DISPID_PCH_US2__ISREMOTESESSION     )] HRESULT IsRemoteSession     ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_US2__ISTERMINALSERVER    )] HRESULT IsTerminalServer    ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_US2__ISDESKTOPVERSION    )] HRESULT IsDesktopVersion    ( [out, retval] VARIANT_BOOL *pVal );

    [propget, id(DISPID_PCH_US2__ISADMIN             )] HRESULT IsAdmin             ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_US2__ISPOWERUSER         )] HRESULT IsPowerUser         ( [out, retval] VARIANT_BOOL *pVal );

    [propget, id(DISPID_PCH_US2__ISSTARTPANELON      )] HRESULT IsStartPanelOn      ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_US2__ISWEBVIEWBARRICADEON)] HRESULT IsWebViewBarricadeOn( [out, retval] VARIANT_BOOL *pVal );
};

[
    object,
    uuid(FC7D9E31-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHFavorites Interface"),
    pointer_default(unique)
]
interface IPCHFavorites : IPCHCollection
{
    //
    // Methods
    //
    [id(DISPID_PCH_FAV__ISDUPLICATE)] HRESULT IsDuplicate( [in] BSTR bstrURL,                                  [out, retval] VARIANT_BOOL         *pfDup  );
    [id(DISPID_PCH_FAV__ADD        )] HRESULT Add        ( [in] BSTR bstrURL, [in,optional] VARIANT vTitle   , [out, retval] IPCHHelpSessionItem* *ppItem );
    [id(DISPID_PCH_FAV__RENAME     )] HRESULT Rename     (                    [in]          BSTR    bstrTitle, [in]          IPCHHelpSessionItem*   pItem );
    [id(DISPID_PCH_FAV__MOVE       )] HRESULT Move       ( [in] IPCHHelpSessionItem* pInsertBefore,            [in]          IPCHHelpSessionItem*   pItem );
    [id(DISPID_PCH_FAV__DELETE     )] HRESULT Delete     (                                                     [in]          IPCHHelpSessionItem*   pItem );
};

typedef [v1_enum] enum tagOPT_FONTSIZE {
    OPT_SMALL  = 0x00000000,
    OPT_MEDIUM = 0x00000001,
    OPT_LARGE  = 0x00000002,
} OPT_FONTSIZE;

[
    object,
    uuid(FC7D9E32-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHOptions Interface"),
    pointer_default(unique)
]
interface IPCHOptions : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_O__SHOWFAVORITES        )] HRESULT ShowFavorites        ( [out, retval] VARIANT_BOOL *  pVal );
    [propput, id(DISPID_PCH_O__SHOWFAVORITES        )] HRESULT ShowFavorites        ( [in         ] VARIANT_BOOL  newVal );
    [propget, id(DISPID_PCH_O__SHOWHISTORY          )] HRESULT ShowHistory          ( [out, retval] VARIANT_BOOL *  pVal );
    [propput, id(DISPID_PCH_O__SHOWHISTORY          )] HRESULT ShowHistory          ( [in         ] VARIANT_BOOL  newVal );
    [propget, id(DISPID_PCH_O__FONTSIZE             )] HRESULT FontSize             ( [out, retval] OPT_FONTSIZE *  pVal );
    [propput, id(DISPID_PCH_O__FONTSIZE             )] HRESULT FontSize             ( [in         ] OPT_FONTSIZE  newVal );
    [propget, id(DISPID_PCH_O__TEXTLABELS           )] HRESULT TextLabels           ( [out, retval] TB_MODE      *  pVal );
    [propput, id(DISPID_PCH_O__TEXTLABELS           )] HRESULT TextLabels           ( [in         ] TB_MODE       newVal );
    [propget, id(DISPID_PCH_O__DISABLESCRIPTDEBUGGER)] HRESULT DisableScriptDebugger( [out, retval] VARIANT_BOOL *  pVal );
    [propput, id(DISPID_PCH_O__DISABLESCRIPTDEBUGGER)] HRESULT DisableScriptDebugger( [in         ] VARIANT_BOOL  newVal );

    //
    // Methods
    //
    [id(DISPID_PCH_O__APPLY)] HRESULT Apply();

};

////////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E40-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHContextMenu Interface"),
    pointer_default(unique)
]
interface IPCHContextMenu : IDispatch
{
    //
    // Methods
    //
    [id(DISPID_PCH_CM__ADDITEM     )] HRESULT AddItem     ( [in] BSTR bstrText, [in] BSTR bstrID, [in, optional] VARIANT vFlags );
    [id(DISPID_PCH_CM__ADDSEPARATOR)] HRESULT AddSeparator(                                                                     );
    [id(DISPID_PCH_CM__DISPLAY     )] HRESULT Display     ( [out,retval] BSTR *pVal                                             );
};

////////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E50-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHPrintEngine Interface"),
    pointer_default(unique)
]
interface IPCHPrintEngine : IDispatch
{
    //
    // Properties
    //
    [propput, id(DISPID_PCH_PE__ONPROGRESS)] HRESULT onProgress( [in] IDispatch* function );
    [propput, id(DISPID_PCH_PE__ONCOMPLETE)] HRESULT onComplete( [in] IDispatch* function );

    //
    // Methods
    //
    [id(DISPID_PCH_PE__ADDTOPIC)] HRESULT AddTopic( [in] BSTR bstrURL );

    [id(DISPID_PCH_PE__START)] HRESULT Start();
    [id(DISPID_PCH_PE__ABORT)] HRESULT Abort();
};

[
    uuid(FC7D9E51-3F9E-11d3-93C0-00C04F72DAF7),
    helpstring("DPCHPrintEngineEvents Interface")
]
dispinterface DPCHPrintEngineEvents
{
    properties:
    methods:
    [id(DISPID_PCH_PEE__ONPROGRESS)] HRESULT onProgress( IPCHPrintEngine* pchpe, BSTR bstrURL, long lDone, long lTotal );
    [id(DISPID_PCH_PEE__ONCOMPLETE)] HRESULT onComplete( IPCHPrintEngine* pchpe, HRESULT hrRes                         );
};

// NEW STUFF FOR RTC
///////////////////////////////////////////////////////////////////////////////
[
    object,
    uuid(FC7D9E60-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("ISAFIntercomClient Interface"),
    pointer_default(unique)
]
interface ISAFIntercomClient : IDispatch
{
    //
    // Properties
    //
////[propput, id(DISPID_PCH_INC__ONCONNECTIONCOMPLETE)] HRESULT onConnectionComplete( [in] IDispatch* function );
////[propput, id(DISPID_PCH_INC__ONNEWCONNECTED)]       HRESULT onNewConnected      ( [in] IDispatch* function );
////[propput, id(DISPID_PCH_INC__ONDISCONNECTED)]       HRESULT onDisconnected      ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INC__ONVOICECONNECTED)]     HRESULT onVoiceConnected    ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INC__ONVOICEDISCONNECTED)]  HRESULT onVoiceDisconnected ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INC__ONVOICEDISABLED)]      HRESULT onVoiceDisabled     ( [in] IDispatch* function );

    [propget, id(DISPID_PCH_INC__SAMPLINGRATE)]         HRESULT SamplingRate        ( [out, retval] LONG *  pVal );
    [propput, id(DISPID_PCH_INC__SAMPLINGRATE)]         HRESULT SamplingRate        ( [in]          LONG  newVal );

    //
    // Methods
    //

    [id(DISPID_PCH_INC__CONNECT       )] HRESULT Connect( [in] BSTR bstrIP, [in] BSTR bstrKey);
    [id(DISPID_PCH_INC__DISCONNECT    )] HRESULT Disconnect();
////[id(DISPID_PCH_INC__STOPVOICE     )] HRESULT Stop();
////[id(DISPID_PCH_INC__STARTVOICE    )] HRESULT Start();
    [id(DISPID_PCH_INC__RUNSETUPWIZARD)] HRESULT RunSetupWizard();
    [id(DISPID_PCH_INC__EXIT          )] HRESULT Exit();
};

[
    uuid(FC7D9E61-3F9E-11d3-93C0-00C04F72DAF7),
    helpstring("DSAFIntercomClientEvents Interface")
]
dispinterface DSAFIntercomClientEvents
{
    properties:
    methods:
////[id(DISPID_PCH_INCE__ONCONNECTIONCOMPLETE)] HRESULT onConnectionComplete( ISAFIntercomClient* safi );
////[id(DISPID_PCH_INCE__ONNEWCONNECTED      )] HRESULT onNewConnected      ( ISAFIntercomClient* safi );
////[id(DISPID_PCH_INCE__ONDISCONNECTED      )] HRESULT onDisconnected      ( ISAFIntercomClient* safi );
    [id(DISPID_PCH_INCE__ONVOICECONNECTED    )] HRESULT onVoiceConnected    ( ISAFIntercomClient* safi );
    [id(DISPID_PCH_INCE__ONVOICEDISCONNECTED )] HRESULT onVoiceDisconnected ( ISAFIntercomClient* safi );
    [id(DISPID_PCH_INCE__ONVOICEDISABLED     )] HRESULT onVoiceDisabled     ( ISAFIntercomClient* safi );
};


///////////////////////////////////////////////////////////////////////////////
[
    object,
    uuid(FC7D9E62-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("ISAFIntercomServer Interface"),
    pointer_default(unique)
]
interface ISAFIntercomServer : IDispatch
{
    //
    // Properties
    //
////[propput, id(DISPID_PCH_INS__ONCONNECTIONCOMPLETE)] HRESULT onConnectionComplete( [in] IDispatch* function );
////[propput, id(DISPID_PCH_INS__ONNEWCONNECTED)]       HRESULT onNewConnected      ( [in] IDispatch* function );
////[propput, id(DISPID_PCH_INS__ONDISCONNECTED)]       HRESULT onDisconnected      ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INS__ONVOICECONNECTED)]     HRESULT onVoiceConnected    ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INS__ONVOICEDISCONNECTED)]  HRESULT onVoiceDisconnected ( [in] IDispatch* function );
    [propput, id(DISPID_PCH_INS__ONVOICEDISABLED)]      HRESULT onVoiceDisabled     ( [in] IDispatch* function );

    [propget, id(DISPID_PCH_INS__SAMPLINGRATE)]         HRESULT SamplingRate        ( [out, retval] LONG *  pVal );
    [propput, id(DISPID_PCH_INS__SAMPLINGRATE)]         HRESULT SamplingRate        ( [in         ] LONG  newVal );

    //
    // Methods
    //

    [id(DISPID_PCH_INS__LISTEN        )] HRESULT Listen([out, retval] BSTR * pVal);
    [id(DISPID_PCH_INS__DISCONNECT    )] HRESULT Disconnect();
////[id(DISPID_PCH_INS__STOPVOICE     )] HRESULT Stop();
////[id(DISPID_PCH_INS__STARTVOICE    )] HRESULT Start();
////[id(DISPID_PCH_INS__RESET         )] HRESULT Reset();
    [id(DISPID_PCH_INS__RUNSETUPWIZARD)] HRESULT RunSetupWizard();
    [id(DISPID_PCH_INS__EXIT          )] HRESULT Exit();
};

[
    uuid(FC7D9E63-3F9E-11d3-93C0-00C04F72DAF7),
    helpstring("DSAFIntercomServerEvents Interface")
]
dispinterface DSAFIntercomServerEvents
{
    properties:
    methods:
////[id(DISPID_PCH_INSE__ONCONNECTIONCOMPLETE)] HRESULT onConnectionComplete( ISAFIntercomServer* safi );
////[id(DISPID_PCH_INSE__ONNEWCONNECTED      )] HRESULT onNewConnected      ( ISAFIntercomServer* safi );
////[id(DISPID_PCH_INSE__ONDISCONNECTED      )] HRESULT onDisconnected      ( ISAFIntercomServer* safi );
    [id(DISPID_PCH_INSE__ONVOICECONNECTED    )] HRESULT onVoiceConnected    ( ISAFIntercomServer* safi );
    [id(DISPID_PCH_INSE__ONVOICEDISCONNECTED )] HRESULT onVoiceDisconnected ( ISAFIntercomServer* safi );
    [id(DISPID_PCH_INSE__ONVOICEDISABLED     )] HRESULT onVoiceDisabled     ( ISAFIntercomServer* safi );
};

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E70-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHConnectivity Interface"),
    pointer_default(unique)
]
interface IPCHConnectivity: IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_C__ISAMODEM       )] HRESULT IsAModem       ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_C__ISALAN         )] HRESULT IsALan         ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_C__AUTODIALENABLED)] HRESULT AutoDialEnabled( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_C__HASCONNECTOID  )] HRESULT HasConnectoid  ( [out, retval] VARIANT_BOOL *pVal );
    [propget, id(DISPID_PCH_C__IPADDRESSES    )] HRESULT IPAddresses    ( [out, retval] BSTR         *pVal );


    //
    // Methods
    //
    [id(DISPID_PCH_C__CREATEOBJECT_CONNECTIONCHECK)] HRESULT CreateObject_ConnectionCheck( [out, retval] IPCHConnectionCheck* *ppCB );

    [id(DISPID_PCH_C__NETWORKALIVE        )] HRESULT NetworkAlive        (                    [out, retval] VARIANT_BOOL *pVal );
    [id(DISPID_PCH_C__DESTINATIONREACHABLE)] HRESULT DestinationReachable( [in] BSTR bstrURL, [out, retval] VARIANT_BOOL *pVal );

    [id(DISPID_PCH_C__AUTODIAL      )] HRESULT AutoDial      ( [in] VARIANT_BOOL bUnattended );
    [id(DISPID_PCH_C__AUTODIALHANGUP)] HRESULT AutoDialHangup(                               );

    [id(DISPID_PCH_C__NAVIGATEONLINE)] HRESULT NavigateOnline( [in         ] BSTR    bstrTargetURL  ,
                                                               [in         ] BSTR    bstrTopicTitle ,
                                                               [in         ] BSTR    bstrTopicIntro ,
                                                               [in,optional] VARIANT vOfflineURL    );
};

////////////////////////////////////////

typedef [v1_enum] enum tagCN_STATUS {
    CN_NOTACTIVE   = 0x00000000,
    CN_CHECKING    = 0x00000001,
    CN_IDLE        = 0x00000002,
} CN_STATUS;

typedef [v1_enum] enum tagCN_URL_STATUS {
    CN_URL_INVALID      = 0x00000000,
    CN_URL_NOTPROCESSED = 0x00000001,
    CN_URL_CHECKING     = 0x00000002,
    CN_URL_MALFORMED    = 0x00000003,
    CN_URL_ALIVE        = 0x00000004,
    CN_URL_UNREACHABLE  = 0x00000005,
    CN_URL_ABORTED      = 0x00000006,
} CN_URL_STATUS;

[
    object,
    uuid(FC7D9E71-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHConnectionCheck Interface"),
    pointer_default(unique)
]
interface IPCHConnectionCheck: IDispatch
{
    //
    // Properties
    //
    [propput, id(DISPID_PCH_CN__ONCHECKDONE   )] HRESULT onCheckDone   ( [in]          IDispatch*  function );
    [propput, id(DISPID_PCH_CN__ONSTATUSCHANGE)] HRESULT onStatusChange( [in]          IDispatch*  function );
    [propget, id(DISPID_PCH_CN__STATUS        )] HRESULT Status        ( [out, retval] CN_STATUS  *pVal     );

    //
    // Methods
    //
    [id(DISPID_PCH_CN__STARTURLCHECK)] HRESULT StartUrlCheck( [in] BSTR bstrURL, [in] VARIANT vCtx );
    [id(DISPID_PCH_CN__ABORT        )] HRESULT Abort        (                                      );
};


[
    uuid(FC7D9E72-3F9E-11d3-93C0-00C04F72DAF7),
    helpstring("DPCHConnectionCheckEvents Interface")
]
dispinterface DPCHConnectionCheckEvents
{
    properties:
    methods:
    [id(DISPID_PCH_CNE__ONCHECKDONE   )] HRESULT onCheckDone   ( IPCHConnectionCheck* obj, CN_URL_STATUS lStatus, HRESULT hr, BSTR bstrURL, VARIANT vCtx );
    [id(DISPID_PCH_CNE__ONSTATUSCHANGE)] HRESULT onStatusChange( IPCHConnectionCheck* obj, CN_STATUS     lStatus                                         );
};

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////

[
    object,
    uuid(FC7D9E80-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHTextHelpers Interface"),
    pointer_default(unique)
]
interface IPCHTextHelpers : IDispatch
{
    //
    // Methods
    //
    [id(DISPID_PCH_TH__QUOTEESCAPE)] HRESULT QuoteEscape( [in] BSTR bstrText, [in,optional] VARIANT vQuote        , [out, retval] BSTR *pVal );
    [id(DISPID_PCH_TH__URLUNESCAPE)] HRESULT URLUnescape( [in] BSTR bstrText, [in,optional] VARIANT vAsQueryString, [out, retval] BSTR *pVal );
    [id(DISPID_PCH_TH__URLESCAPE  )] HRESULT URLEscape  ( [in] BSTR bstrText, [in,optional] VARIANT vAsQueryString, [out, retval] BSTR *pVal );
    [id(DISPID_PCH_TH__HTMLESCAPE )] HRESULT HTMLEscape ( [in] BSTR bstrText,                                       [out, retval] BSTR *pVal );

    [id(DISPID_PCH_TH__PARSEURL            )] HRESULT ParseURL            ( [in] BSTR bstrURL, [out, retval] IPCHParsedURL* *pVal );
    [id(DISPID_PCH_TH__GETLCIDDISPLAYSTRING)] HRESULT GetLCIDDisplayString( [in] long lLCID  , [out, retval] BSTR           *pVal );
};

[
    object,
    uuid(FC7D9E81-3F9E-11d3-93C0-00C04F72DAF7),
    dual,
    oleautomation,
    helpstring("IPCHParsedURL Interface"),
    pointer_default(unique)
]
interface IPCHParsedURL : IDispatch
{
    //
    // Properties
    //
    [propget, id(DISPID_PCH_PU__BASEPART       )] HRESULT BasePart       ( [out, retval] BSTR    *  pVal );
    [propput, id(DISPID_PCH_PU__BASEPART       )] HRESULT BasePart       ( [in         ] BSTR     newVal );
    [propget, id(DISPID_PCH_PU__QUERYPARAMETERS)] HRESULT QueryParameters( [out, retval] VARIANT *  pVal );

    //
    // Methods
    //
    [id(DISPID_PCH_PU__GETQUERYPARAMETER   )] HRESULT GetQueryParameter   ( [in] BSTR bstrName, [out, retval] VARIANT*   pvValue );
    [id(DISPID_PCH_PU__SETQUERYPARAMETER   )] HRESULT SetQueryParameter   ( [in] BSTR bstrName, [in         ] BSTR     bstrValue );
    [id(DISPID_PCH_PU__DELETEQUERYPARAMETER)] HRESULT DeleteQueryParameter( [in] BSTR bstrName                                   );

    [id(DISPID_PCH_PU__BUILDFULLURL)] HRESULT BuildFullURL( [out, retval] BSTR *pVal );
};

