//
// 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.Storage.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(__windows2Estorage_h__)")
cpp_quote("#include <Windows.Storage.h>")
cpp_quote("#endif // !defined(__windows2Estorage_h__)")
cpp_quote("#if defined(__cplusplus)")
cpp_quote("extern \"C\" {")
cpp_quote("#endif // defined(__cplusplus)")

// Forward Declare
namespace Windows
{
    namespace Storage
    {
        runtimeclass StorageFile;

        runtimeclass StorageFolder;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            typedef enum PickerViewMode PickerViewMode;

            typedef enum PickerLocationId PickerLocationId;

            interface IFileOpenPicker;

            interface IFileSavePicker;

            interface IFolderPicker;

            runtimeclass FilePickerSelectedFilesArray;

            runtimeclass FilePickerFileTypesOrderedMap;

            runtimeclass FileExtensionVector;

            runtimeclass FileOpenPicker;

            runtimeclass FileSavePicker;

            runtimeclass FolderPicker;
        }
    }
}

// Generic instantiations

// Type definition
namespace Windows
{
    namespace Storage
    {
        namespace Pickers
        {
            [version(0x06020000)]
            enum PickerViewMode
            {
                List      = 0,
                Thumbnail = 1
            };

            [version(0x06020000)]
            enum PickerLocationId
            {
                DocumentsLibrary = 0,
                ComputerFolder   = 1,
                Desktop          = 2,
                Downloads        = 3,
                HomeGroup        = 4,
                MusicLibrary     = 5,
                PicturesLibrary  = 6,
                VideosLibrary    = 7
            };

            [uuid(2CA8278A-12C5-4C5F-8977-94547793C241)]
            [exclusiveto(Windows.Storage.Pickers.FileOpenPicker)]
            [version(0x06020000)]
            interface IFileOpenPicker : IInspectable
            {
                [propget] HRESULT ViewMode([out] [retval] Windows.Storage.Pickers.PickerViewMode* value);
                [propput] HRESULT ViewMode([in] Windows.Storage.Pickers.PickerViewMode value);
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeFilter([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT PickSingleFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** pickSingleFileOperation);
                HRESULT PickMultipleFilesAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IVectorView<Windows.Storage.StorageFile*>*>** pickMultipleFilesOperation);
            }

            [uuid(3286FFCB-617F-4CC5-AF6A-B3FDF29AD145)]
            [version(0x06020000)]
            [exclusiveto(Windows.Storage.Pickers.FileSavePicker)]
            interface IFileSavePicker : IInspectable
            {
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeChoices([out] [retval] Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>** value);
                [propget] HRESULT DefaultFileExtension([out] [retval] HSTRING* value);
                [propput] HRESULT DefaultFileExtension([in] HSTRING value);
                [propget] HRESULT SuggestedSaveFile([out] [retval] Windows.Storage.StorageFile** value);
                [propput] HRESULT SuggestedSaveFile([in] Windows.Storage.StorageFile* value);
                [propget] HRESULT SuggestedFileName([out] [retval] HSTRING* value);
                [propput] HRESULT SuggestedFileName([in] HSTRING value);
                HRESULT PickSaveFileAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFile*>** pickSaveFileOperation);
            }

            [uuid(084F7799-F3FB-400A-99B1-7B4A772FD60D)]
            [exclusiveto(Windows.Storage.Pickers.FolderPicker)]
            [version(0x06020000)]
            interface IFolderPicker : IInspectable
            {
                [propget] HRESULT ViewMode([out] [retval] Windows.Storage.Pickers.PickerViewMode* value);
                [propput] HRESULT ViewMode([in] Windows.Storage.Pickers.PickerViewMode value);
                [propget] HRESULT SettingsIdentifier([out] [retval] HSTRING* value);
                [propput] HRESULT SettingsIdentifier([in] HSTRING value);
                [propget] HRESULT SuggestedStartLocation([out] [retval] Windows.Storage.Pickers.PickerLocationId* value);
                [propput] HRESULT SuggestedStartLocation([in] Windows.Storage.Pickers.PickerLocationId value);
                [propget] HRESULT CommitButtonText([out] [retval] HSTRING* value);
                [propput] HRESULT CommitButtonText([in] HSTRING value);
                [propget] HRESULT FileTypeFilter([out] [retval] Windows.Foundation.Collections.IVector<HSTRING>** value);
                HRESULT PickSingleFolderAsync([out] [retval] Windows.Foundation.IAsyncOperation<Windows.Storage.StorageFolder*>** pickSingleFolderOperation);
            }

            [version(0x06020000)]
            runtimeclass FilePickerSelectedFilesArray
            {
                [default] interface Windows.Foundation.Collections.IVectorView<Windows.Storage.StorageFile*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Storage.StorageFile*>;
            }

            [version(0x06020000)]
            runtimeclass FilePickerFileTypesOrderedMap
            {
                [default] interface Windows.Foundation.Collections.IMap<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>;
                interface Windows.Foundation.Collections.IIterable<Windows.Foundation.Collections.IKeyValuePair<HSTRING, Windows.Foundation.Collections.IVector<HSTRING>*>*>;
            }

            [version(0x06020000)]
            runtimeclass FileExtensionVector
            {
                [default] interface Windows.Foundation.Collections.IVector<HSTRING>;
                interface Windows.Foundation.Collections.IIterable<HSTRING>;
            }

            [version(0x06020000)]
            [activatable(0x06020000)]
            runtimeclass FileOpenPicker
            {
                [default] interface Windows.Storage.Pickers.IFileOpenPicker;
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            runtimeclass FileSavePicker
            {
                [default] interface Windows.Storage.Pickers.IFileSavePicker;
            }

            [activatable(0x06020000)]
            [version(0x06020000)]
            runtimeclass FolderPicker
            {
                [default] interface Windows.Storage.Pickers.IFolderPicker;
            }
        }
    }
}
