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

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "Windows.Foundation.idl";
import "Windows.UI.Popups.idl";
// Additional imports to ensure that all required headers are included
cpp_quote("#if defined(__cplusplus)")
cpp_quote("}")
cpp_quote("#endif // defined(__cplusplus)")
cpp_quote("#include <Windows.Foundation.h>")
cpp_quote("#if !defined(__windows2Eui2Epopups_h__)")
cpp_quote("#include <Windows.UI.Popups.h>")
cpp_quote("#endif // !defined(__windows2Eui2Epopups_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace UI
    {
        namespace Popups
        {
            interface IUICommand;

            delegate UICommandInvokedHandler;
        }
    }
}
namespace Windows
{
    namespace UI
    {
        namespace ApplicationSettings
        {
            typedef enum SettingsEdgeLocation SettingsEdgeLocation;

            interface ISettingsCommandFactory;

            interface ISettingsPaneCommandsRequest;

            interface ISettingsPaneCommandsRequestedEventArgs;

            interface ISettingsPaneStatics;

            interface ISettingsPane;

            runtimeclass SettingsCommand;

            runtimeclass SettingsPaneCommandsRequest;

            runtimeclass SettingsPaneCommandsRequestedEventArgs;

            runtimeclass SettingsPane;
        }
    }
}

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

                interface Windows.Foundation.Collections.IIterator<Windows.UI.ApplicationSettings.SettingsCommand*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.UI.ApplicationSettings.SettingsCommand*>;

                interface Windows.Foundation.Collections.IVector<Windows.UI.ApplicationSettings.SettingsCommand*>;

                interface Windows.Foundation.TypedEventHandler<Windows.UI.ApplicationSettings.SettingsPane*, Windows.UI.ApplicationSettings.SettingsPaneCommandsRequestedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace UI
    {
        namespace ApplicationSettings
        {
            [version(0x06020000)]
            enum SettingsEdgeLocation
            {
                Right = 0,
                Left  = 1
            };

            [uuid(68E15B33-1C83-433A-AA5A-CEEEA5BD4764)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.ApplicationSettings.SettingsCommand)]
            interface ISettingsCommandFactory : IInspectable
            {
                [overload("Create")] HRESULT CreateSettingsCommand([in] IInspectable* settingsCommandId, [in] HSTRING label, [in] Windows.UI.Popups.UICommandInvokedHandler* handler, [out] [retval] Windows.UI.ApplicationSettings.SettingsCommand** instance);
            }

            [uuid(44DF23AE-5D6E-4068-A168-F47643182114)]
            [exclusiveto(Windows.UI.ApplicationSettings.SettingsPaneCommandsRequest)]
            [version(0x06020000)]
            interface ISettingsPaneCommandsRequest : IInspectable
            {
                [propget] HRESULT ApplicationCommands([out] [retval] Windows.Foundation.Collections.IVector<Windows.UI.ApplicationSettings.SettingsCommand*>** value);
            }

            [uuid(205F5D24-1B48-4629-A6CA-2FDFEDAFB75D)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.ApplicationSettings.SettingsPaneCommandsRequestedEventArgs)]
            interface ISettingsPaneCommandsRequestedEventArgs : IInspectable
            {
                [propget] HRESULT Request([out] [retval] Windows.UI.ApplicationSettings.SettingsPaneCommandsRequest** request);
            }

            [uuid(1C6A52C5-FF19-471B-BA6B-F8F35694AD9A)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.ApplicationSettings.SettingsPane)]
            interface ISettingsPaneStatics : IInspectable
            {
                HRESULT GetForCurrentView([out] [retval] Windows.UI.ApplicationSettings.SettingsPane** current);
                HRESULT Show();
                [propget] HRESULT Edge([out] [retval] Windows.UI.ApplicationSettings.SettingsEdgeLocation* value);
            }

            [uuid(B1CD0932-4570-4C69-8D38-89446561ACE0)]
            [version(0x06020000)]
            [exclusiveto(Windows.UI.ApplicationSettings.SettingsPane)]
            interface ISettingsPane : IInspectable
            {
                [eventadd] HRESULT CommandsRequested([in] Windows.Foundation.TypedEventHandler<Windows.UI.ApplicationSettings.SettingsPane*, Windows.UI.ApplicationSettings.SettingsPaneCommandsRequestedEventArgs*>* handler, [out] [retval] EventRegistrationToken* cookie);
                [eventremove] HRESULT CommandsRequested([in] EventRegistrationToken cookie);
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            [activatable(Windows.UI.ApplicationSettings.ISettingsCommandFactory, 0x06020000)]
            runtimeclass SettingsCommand
            {
                [default] interface Windows.UI.Popups.IUICommand;
            }

            [version(0x06020000)]
            [marshaling_behavior(none)]
            runtimeclass SettingsPaneCommandsRequest
            {
                [default] interface Windows.UI.ApplicationSettings.ISettingsPaneCommandsRequest;
            }

            [marshaling_behavior(none)]
            [version(0x06020000)]
            runtimeclass SettingsPaneCommandsRequestedEventArgs
            {
                [default] interface Windows.UI.ApplicationSettings.ISettingsPaneCommandsRequestedEventArgs;
            }

            [marshaling_behavior(none)]
            [static(Windows.UI.ApplicationSettings.ISettingsPaneStatics, 0x06020000)]
            [version(0x06020000)]
            runtimeclass SettingsPane
            {
                [default] interface Windows.UI.ApplicationSettings.ISettingsPane;
            }
        }
    }
}
