//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        typedef struct Point Point;

        typedef struct Rect Rect;

        apicontract UniversalApiContract;
    }
}
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            typedef enum MessageDialogOptions MessageDialogOptions;

            typedef enum Placement Placement;

            delegate UICommandInvokedHandler;

            interface IMessageDialog;

            interface IMessageDialogFactory;

            interface IPopupMenu;

            interface IUICommand;

            interface IUICommandFactory;

            runtimeclass MessageDialog;

            runtimeclass PopupMenu;

            runtimeclass UICommand;

            runtimeclass UICommandSeparator;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.UI.Popups.IUICommand*>;

                interface Windows.Foundation.Collections.IIterator<Windows.UI.Popups.IUICommand*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.UI.Popups.IUICommand*>;

                interface Windows.Foundation.Collections.IVector<Windows.UI.Popups.IUICommand*>;

                interface Windows.Foundation.IAsyncOperation<Windows.UI.Popups.IUICommand*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [flags]
            enum MessageDialogOptions
            {
                None                      = 0x0,
                AcceptUserInputAfterDelay = 0x1
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            enum Placement
            {
                Default = 0,
                Above   = 1,
                Below   = 2,
                Left    = 3,
                Right   = 4
            };

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(DAF77A4F-C27A-4298-9AC6-2922C45E7DA6)]
            delegate
                HRESULT UICommandInvokedHandler([in] Windows.UI.Popups.IUICommand* command);

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.UI.Popups.MessageDialog)]
            [uuid(33F59B01-5325-43AB-9AB3-BDAE440E4121)]
            interface IMessageDialog : IInspectable
            {
                [propget] HRESULT Title([out] [retval] HSTRING* value);
                [propput] HRESULT Title([in] HSTRING value);
                [propget] HRESULT Commands([out] [retval] Windows.Foundation.Collections.IVector<Windows.UI.Popups.IUICommand*>** value);
                [propget] HRESULT DefaultCommandIndex([out] [retval] UINT32* value);
                [propput] HRESULT DefaultCommandIndex([in] UINT32 value);
                [propget] HRESULT CancelCommandIndex([out] [retval] UINT32* value);
                [propput] HRESULT CancelCommandIndex([in] UINT32 value);
                [propget] HRESULT Content([out] [retval] HSTRING* value);
                [propput] HRESULT Content([in] HSTRING value);
                HRESULT ShowAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Popups.IUICommand*>** messageDialogAsyncOperation);
                [propget] HRESULT Options([out] [retval] Windows.UI.Popups.MessageDialogOptions* value);
                [propput] HRESULT Options([in] Windows.UI.Popups.MessageDialogOptions value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.UI.Popups.MessageDialog)]
            [uuid(2D161777-A66F-4EA5-BB87-793FFA4941F2)]
            interface IMessageDialogFactory : IInspectable
            {
                HRESULT Create([in] HSTRING content, [out] [retval] Windows.UI.Popups.MessageDialog** messageDialog);
                HRESULT CreateWithTitle([in] HSTRING content, [in] HSTRING title, [out] [retval] Windows.UI.Popups.MessageDialog** messageDialog);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.UI.Popups.PopupMenu)]
            [uuid(4E9BC6DC-880D-47FC-A0A1-72B639E62559)]
            interface IPopupMenu : IInspectable
            {
                [propget] HRESULT Commands([out] [retval] Windows.Foundation.Collections.IVector<Windows.UI.Popups.IUICommand*>** value);
                HRESULT ShowAsync([in] Windows.Foundation.Point invocationPoint, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Popups.IUICommand*>** asyncOperation);
                [overload("ShowForSelectionAsync")] HRESULT ShowAsyncWithRect([in] Windows.Foundation.Rect selection, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Popups.IUICommand*>** asyncOperation);
                [overload("ShowForSelectionAsync")] HRESULT ShowAsyncWithRectAndPlacement([in] Windows.Foundation.Rect selection, [in] Windows.UI.Popups.Placement preferredPlacement, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.UI.Popups.IUICommand*>** asyncOperation);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [uuid(4FF93A75-4145-47FF-AC7F-DFF1C1FA5B0F)]
            interface IUICommand : IInspectable
            {
                [propget] HRESULT Label([out] [retval] HSTRING* value);
                [propput] HRESULT Label([in] HSTRING value);
                [propget] HRESULT Invoked([out] [retval] Windows.UI.Popups.UICommandInvokedHandler** value);
                [propput] HRESULT Invoked([in] Windows.UI.Popups.UICommandInvokedHandler* value);
                [propget] HRESULT Id([out] [retval] IInspectable** value);
                [propput] HRESULT Id([in] IInspectable* value);
            }

            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [exclusiveto(Windows.UI.Popups.UICommand)]
            [uuid(A21A8189-26B0-4676-AE94-54041BC125E8)]
            interface IUICommandFactory : IInspectable
            {
                HRESULT Create([in] HSTRING label, [out] [retval] Windows.UI.Popups.UICommand** instance);
                HRESULT CreateWithHandler([in] HSTRING label, [in] Windows.UI.Popups.UICommandInvokedHandler* action, [out] [retval] Windows.UI.Popups.UICommand** instance);
                HRESULT CreateWithHandlerAndId([in] HSTRING label, [in] Windows.UI.Popups.UICommandInvokedHandler* action, [in] IInspectable* commandId, [out] [retval] Windows.UI.Popups.UICommand** instance);
            }

            [activatable(Windows.UI.Popups.IMessageDialogFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(standard)]
            runtimeclass MessageDialog
            {
                [default] interface Windows.UI.Popups.IMessageDialog;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(standard)]
            runtimeclass PopupMenu
            {
                [default] interface Windows.UI.Popups.IPopupMenu;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [activatable(Windows.UI.Popups.IUICommandFactory, Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass UICommand
            {
                [default] interface Windows.UI.Popups.IUICommand;
            }

            [activatable(Windows.Foundation.UniversalApiContract, 1.0)]
            [contract(Windows.Foundation.UniversalApiContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass UICommandSeparator
            {
                [default] interface Windows.UI.Popups.IUICommand;
            }
        }
    }
}
