// TaskUI.idl : IDL source for TaskUI.dll
//

// This file will be processed by the MIDL tool to
// produce the type library (TaskUI.tlb) and marshalling code.

import "oaidl.idl";
import "ocidl.idl";
#include "olectl.h"

[
	uuid(D526AD60-3E72-4F6E-BE54-81E6F6A93ADA),
	version(1.0),
	helpstring("TaskUI 1.0 Type Library")
]
library TASKUILib
{
	importlib("stdole2.tlb");

    [
        object,
        uuid(01D5D917-A57E-4472-9B28-41F35AEEAEFB),
        helpstring("ITaskFrame Interface"),
        pointer_default(unique)
    ]
    interface ITaskFrame : IUnknown
    {
        [helpstring("method GetPropertyBag")] HRESULT GetPropertyBag([in] REFIID riid, [out, iid_is(riid), retval] void **ppv);
        [helpstring("method ShowPage")] HRESULT ShowPage([in] REFCLSID rclsidPage, [in] BOOL bTrimHistory);
        [helpstring("method Back")] HRESULT Back([in] UINT cPages);
        [helpstring("method Forward")] HRESULT Forward();
        [helpstring("method Home")] HRESULT Home();
        [helpstring("method Close")] HRESULT Close();
        [helpstring("method SetStatusText")] HRESULT SetStatusText([in, optional] LPCWSTR pszText);
    };

    [
        object,
        uuid(00AD7D5E-78FA-4A43-9C30-5C589E67AF32),
        helpstring("ITaskPageFactory Interface"),
        pointer_default(unique)
    ]
    interface ITaskPageFactory : IUnknown
    {
        [helpstring("method CreatePage")] HRESULT CreatePage([in] REFCLSID rclsidPage, [in] REFIID riid, [out, retval] void **ppv);
    };

    [
        object,
        uuid(66F3137E-2915-442C-9D49-277A7901B091),
        helpstring("ITaskPage Interface"),
        pointer_default(unique)
    ]
    interface ITaskPage : IUnknown
    {
        [helpstring("method SetFrame")] HRESULT SetFrame([in] ITaskFrame* pFrame);
        [helpstring("method GetObjectCount")] HRESULT GetObjectCount([in] UINT nArea, [out, retval] UINT *pVal);
        [helpstring("method CreateObject")] HRESULT CreateObject([in] UINT nArea, [in] UINT nIndex, [in] REFIID riid, [out, iid_is(riid), retval] void **ppv);
	[helpstring("method Reinitialize")] HRESULT Reinitialize([in] ULONG reserved);
        //[helpstring("method Notify")] HRESULT Notify([in] UINT uMsg, [in] WPARAM wParam, [in] LPARAM lParam);
    };

    [
        object,
        uuid(5ACDE375-B874-405D-B59F-7B9932787841),
        helpstring("ITaskSheet Interface"),
        pointer_default(unique)
    ]
    interface ITaskSheet : IUnknown
    {
        [helpstring("method GetPropertyBag")] HRESULT GetPropertyBag([in] REFIID riid, [out, iid_is(riid), retval] void **ppv);
        [helpstring("method Run")] HRESULT Run([in] ITaskPageFactory *pPageFact, [in] REFCLSID rclsidStartPage, [in] HWND hwndOwner);
        [helpstring("method Close")] HRESULT Close();
    };


    //
    // Handle to a property group.  This is returned from CreatePropertyGroup
    // and used to reference a group in various methods.
    //
    typedef int HPROPGROUP;

    interface ITaskSheetPropertyBag;  // fwd decl.

    [
        object,
        uuid(9437CEB1-4BC7-4668-8A44-81BBD5B89DDD),
        helpstring("ITaskSheetPropertyNotifySink interface"),
        pointer_default(unique)
    ]
    interface ITaskSheetPropertyNotifySink : IUnknown
    {
        [helpstring("method OnPropChanged")] HRESULT OnPropChanged([in] ITaskSheetPropertyBag *pBag, [in] HPROPGROUP hGroup, [in] LPCWSTR pszPropName);
    }

    [
        object,
        uuid(EFC6FCE9-FF4B-4111-A9E8-1C2C1183E236),
        helpstring("ITaskSheetPropertyBag interface"),
        pointer_default(unique)
    ]
    interface ITaskSheetPropertyBag : IUnknown
    {
        [helpstring("method CreatePropertyGroup")] HRESULT CreatePropertyGroup([in] REFGUID idGroup, [out, retval] HPROPGROUP *phGroup);
        [helpstring("method RemovePropertyGroup")] HRESULT RemovePropertyGroup([in] HPROPGROUP hGroup);
        [helpstring("method PropertyGroupIdToHandle")] HRESULT PropertyGroupIdToHandle([in] REFGUID idGroup, [out, retval] HPROPGROUP *phGroup);
        [helpstring("method PropertyGroupHandleToId")] HRESULT PropertyGroupHandleToId([in] HPROPGROUP hGroup, [out, retval] GUID *pidGroup);
        [helpstring("method Get")] HRESULT Get([in] HPROPGROUP hGroup, [in] LPCWSTR pszPropName, [out, retval] VARIANT *pVarOut);
        [helpstring("method Set")] HRESULT Set([in] HPROPGROUP hGroup, [in] LPCWSTR pszPropName, [in] VARIANT *pVar);
        [helpstring("method SetConst")] HRESULT SetConst([in] HPROPGROUP hGroup, [in] LPCWSTR pszPropName, [in] VARIANT *pVar);
        [helpstring("method RegisterNotify")] HRESULT RegisterNotify([in] ITaskSheetPropertyNotifySink *pSink, [out, retval] DWORD *pdwCookie);
        [helpstring("method UnregisterNotify")] HRESULT UnregisterNotify([in] DWORD dwCookie);
        [helpstring("method Advise")] HRESULT Advise([in] DWORD dwCookie, [in] HPROPGROUP hGroup, [in] LPCWSTR pszPropName);
    }

    [
        object,
        uuid(AF4ABA62-51ED-415A-B23A-4F9D9D787B52),
        dual,
        helpstring("ITaskUI_HTMLControl Interface"),
        pointer_default(unique)
    ]
    interface ITaskUI_HTMLControl : IDispatch
    {
        [id(1), helpstring("method Initialize")] HRESULT Initialize([in] BSTR strURL, [in] IDispatch* pExternalDispatch);
    };

    [
        uuid(40BEC2FB-F286-453C-B2EB-F9E7429D1A98),
        helpstring("TaskSheet Class")
    ]
    coclass TaskSheet
    {
        [default] interface ITaskSheet;
    };

    [
        uuid(C4BC7F4C-939A-45F6-B5D2-4C1B6D5A75EA),
        helpstring("TaskUI_HTMLControl Class")
    ]
    coclass TaskUI_HTMLControl
    {
        [default] interface ITaskUI_HTMLControl;
    };
};

cpp_quote("")
cpp_quote("// Well-known properties")
cpp_quote("#define TS_PROP_TITLE                L\"TaskUI_Title\"")
cpp_quote("#define TS_PROP_MODELESS             L\"TaskUI_Modeless\"")
cpp_quote("#define TS_PROP_WIDTH                L\"TaskUI_Width\"")
cpp_quote("#define TS_PROP_HEIGHT               L\"TaskUI_Height\"")
cpp_quote("#define TS_PROP_MINWIDTH             L\"TaskUI_MinWidth\"")
cpp_quote("#define TS_PROP_MINHEIGHT            L\"TaskUI_MinHeight\"")
cpp_quote("#define TS_PROP_RESIZABLE            L\"TaskUI_Resizable\"")
cpp_quote("#define TS_PROP_STATUSBAR            L\"TaskUI_StatusBar\"")
cpp_quote("#define TS_PROP_NAVBAR               L\"TaskUI_NavBar\"")
cpp_quote("#define TS_PROP_ICON                 L\"TaskUI_Icon\"")
cpp_quote("#define TS_PROP_LOGO                 L\"TaskUI_Logo\"")
cpp_quote("#define TS_PROP_WATERMARK            L\"TaskUI_Watermark\"")
cpp_quote("")


cpp_quote("//")
cpp_quote("// Some well-known property group handles.")
cpp_quote("//")
cpp_quote("#define PROPGROUP_INVALID      (HPROPGROUP)   -1")
cpp_quote("#define PROPGROUP_ANY          (HPROPGROUP)65535")
cpp_quote("#define PROPGROUP_GLOBAL       (HPROPGROUP)    0")
cpp_quote("//")
cpp_quote("// Group ID for the 'global' property group.")
cpp_quote("//")
cpp_quote("#define PGID_GLOBAL GUID_NULL")
cpp_quote("//")
cpp_quote("// Macros for creating and examining property IDs.")
cpp_quote("//")
cpp_quote("#define MAKEPROPID(i)  MAKEINTRESOURCE(i)")
cpp_quote("#define IS_PROPID(i)   IS_INTRESOURCE(i)")
cpp_quote("//")
cpp_quote("// Interface-specific HRESULTs for ITaskSheetPropertyBag")
cpp_quote("//")
cpp_quote("//")
cpp_quote("// TSPB == \"Task Sheet Property Bag\"")
cpp_quote("//")
cpp_quote("// Property name not found in property bag.")
cpp_quote("//")
cpp_quote("#define TSPB_E_PROPNOTFOUND  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000200)")
cpp_quote("//")
cpp_quote("// Group handle specified is not present in property bag.")
cpp_quote("//")
cpp_quote("#define TSPB_E_GROUPNOTFOUND  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000201)")
cpp_quote("//")
cpp_quote("// Invalid notify client cookie.")
cpp_quote("//")
cpp_quote("#define TSPB_E_NOTIFYCOOKIE  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000202)")
cpp_quote("//")
cpp_quote("// Attempt to modify a constant property.")
cpp_quote("//")
cpp_quote("#define TSPB_E_MODIFYCONST  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000203)")
cpp_quote("//")
cpp_quote("// Maxiumum number of notification connections have been established.")
cpp_quote("//")
cpp_quote("#define TSPB_E_MAXNOTIFYCNX  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000204)")
cpp_quote("//")
cpp_quote("// Property group already exists.")
cpp_quote("//")
cpp_quote("#define TSPB_E_GROUPEXISTS  MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, 0x00000205)")
cpp_quote("")
