|
10 | 10 | #include <shobjidl_core.h> |
11 | 11 | #include <winrt/Microsoft.UI.Interop.h> |
12 | 12 | #include "TerminalVelocityFeatures-StoragePickers.h" |
| 13 | +#include "TerminalVelocityFeatures-StoragePickers2.h" |
13 | 14 | #include "PickerCommon.h" |
14 | 15 | #include "PickFileResult.h" |
15 | 16 | #include "PickerLocalization.h" |
@@ -49,17 +50,46 @@ namespace winrt::Microsoft::Windows::Storage::Pickers::implementation |
49 | 50 | PickerCommon::ValidateStringNoEmbeddedNulls(value); |
50 | 51 | m_commitButtonText = value; |
51 | 52 | } |
52 | | - winrt::Windows::Foundation::Collections::IVector<hstring> FileOpenPicker::FileTypeFilter() |
| 53 | + winrt::Windows::Foundation::Collections::IMap<winrt::hstring, winrt::Windows::Foundation::Collections::IVector<winrt::hstring>> FileOpenPicker::FileTypeChoices() |
| 54 | + { |
| 55 | + THROW_HR_IF(E_NOTIMPL, !::Microsoft::Windows::Storage::Pickers::Feature_StoragePickers2::IsEnabled()); |
| 56 | + return m_fileTypeChoices; |
| 57 | + } |
| 58 | + winrt::Windows::Foundation::Collections::IVector<winrt::hstring> FileOpenPicker::FileTypeFilter() |
53 | 59 | { |
54 | 60 | return m_fileTypeFilter; |
55 | 61 | } |
| 62 | + winrt::hstring FileOpenPicker::SuggestedFolder() |
| 63 | + { |
| 64 | + THROW_HR_IF(E_NOTIMPL, !::Microsoft::Windows::Storage::Pickers::Feature_StoragePickers2::IsEnabled()); |
| 65 | + return m_suggestedFolder; |
| 66 | + } |
| 67 | + void FileOpenPicker::SuggestedFolder(winrt::hstring const& value) |
| 68 | + { |
| 69 | + THROW_HR_IF(E_NOTIMPL, !::Microsoft::Windows::Storage::Pickers::Feature_StoragePickers2::IsEnabled()); |
| 70 | + PickerCommon::ValidateFolderPath(value, "SuggestedFolder"); |
| 71 | + m_suggestedFolder = value; |
| 72 | + } |
| 73 | + winrt::hstring FileOpenPicker::SuggestedStartFolder() |
| 74 | + { |
| 75 | + THROW_HR_IF(E_NOTIMPL, !::Microsoft::Windows::Storage::Pickers::Feature_StoragePickers2::IsEnabled()); |
| 76 | + return m_suggestedStartFolder; |
| 77 | + } |
| 78 | + void FileOpenPicker::SuggestedStartFolder(winrt::hstring const& value) |
| 79 | + { |
| 80 | + THROW_HR_IF(E_NOTIMPL, !::Microsoft::Windows::Storage::Pickers::Feature_StoragePickers2::IsEnabled()); |
| 81 | + PickerCommon::ValidateFolderPath(value, "SuggestedStartFolder"); |
| 82 | + m_suggestedStartFolder = value; |
| 83 | + } |
56 | 84 |
|
57 | 85 | void FileOpenPicker::CaptureParameters(PickerCommon::PickerParameters& parameters) |
58 | 86 | { |
59 | 87 | parameters.HWnd = winrt::Microsoft::UI::GetWindowFromWindowId(m_windowId); |
60 | 88 | parameters.CommitButtonText = m_commitButtonText; |
61 | | - parameters.PickerLocationId = m_suggestedStartLocation; |
62 | | - parameters.CaptureFilterSpec(m_fileTypeFilter.GetView()); |
| 89 | + parameters.SuggestedFolder = m_suggestedFolder; |
| 90 | + parameters.SuggestedStartLocation = m_suggestedStartLocation; |
| 91 | + parameters.SuggestedStartFolder = m_suggestedStartFolder; |
| 92 | + parameters.CaptureFilterSpecData(m_fileTypeFilter.GetView(), m_fileTypeChoices.GetView()); |
63 | 93 | } |
64 | 94 |
|
65 | 95 | winrt::Windows::Foundation::IAsyncOperation<winrt::Microsoft::Windows::Storage::Pickers::PickFileResult> FileOpenPicker::PickSingleFileAsync() |
@@ -87,7 +117,6 @@ namespace winrt::Microsoft::Windows::Storage::Pickers::implementation |
87 | 117 | auto dialog = create_instance<IFileOpenDialog>(CLSID_FileOpenDialog, CLSCTX_INPROC_SERVER); |
88 | 118 |
|
89 | 119 | parameters.ConfigureDialog(dialog); |
90 | | - check_hresult(dialog->SetFileTypeIndex(parameters.FileTypeFilterPara.size())); |
91 | 120 |
|
92 | 121 | { |
93 | 122 | auto hr = dialog->Show(parameters.HWnd); |
@@ -142,7 +171,6 @@ namespace winrt::Microsoft::Windows::Storage::Pickers::implementation |
142 | 171 | auto dialog = create_instance<IFileOpenDialog>(CLSID_FileOpenDialog, CLSCTX_INPROC_SERVER); |
143 | 172 |
|
144 | 173 | parameters.ConfigureDialog(dialog); |
145 | | - check_hresult(dialog->SetFileTypeIndex(parameters.FileTypeFilterPara.size())); |
146 | 174 |
|
147 | 175 | FILEOPENDIALOGOPTIONS dialogOptions; |
148 | 176 | check_hresult(dialog->GetOptions(&dialogOptions)); |
|
0 commit comments