Example #1
0
        public async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
        {
            try
            {
                var startIn = (options.SuggestedStartLocation as JSStorageItem)?.FileHandle;

                var item = await InvokeAsync <IJSInProcessObjectReference>("StorageProvider.selectFolderDialog", startIn);

                return(item is not null ? new[] { new JSStorageFolder(item) } : Array.Empty <IStorageFolder>());
            }
            catch (JSException ex) when(ex.Message.Contains(PickerCancelMessage, StringComparison.Ordinal))
            {
                return(Array.Empty <IStorageFolder>());
            }
        }
    public async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
    {
        using var documentPicker = OperatingSystem.IsIOSVersionAtLeast(14) ?
                                   new UIDocumentPickerViewController(new[] { UTTypes.Folder }, false) :
                                   new UIDocumentPickerViewController(new string[] { UTTypeLegacy.Folder }, UIDocumentPickerMode.Open);

        if (OperatingSystem.IsIOSVersionAtLeast(13))
        {
            documentPicker.DirectoryUrl = GetUrlFromFolder(options.SuggestedStartLocation);
        }

        if (OperatingSystem.IsIOSVersionAtLeast(11))
        {
            documentPicker.AllowsMultipleSelection = options.AllowMultiple;
        }

        var urls = await ShowPicker(documentPicker);

        return(urls.Select(u => new IOSStorageFolder(u)).ToArray());
    }
Example #3
0
        public override async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
        {
            var files = await ShowFilePicker(
                true, true,
                options.AllowMultiple, false,
                options.Title, null, options.SuggestedStartLocation, null, null);

            return(files.Select(f => new BclStorageFolder(new DirectoryInfo(f))).ToArray());
        }
Example #4
0
 public override Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
 {
     return(Task.FromResult <IReadOnlyList <IStorageFolder> >(Array.Empty <IStorageFolder>()));
 }
Example #5
0
 public abstract Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options);
    public async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
    {
        var provider = await EnsureStorageProvider().ConfigureAwait(false);

        return(await provider.OpenFolderPickerAsync(options).ConfigureAwait(false));
    }
 public override async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
 {
     return(await await RunOnGlibThread(async() =>
     {
         var res = await ShowDialog(options.Title, _window, GtkFileChooserAction.SelectFolder,
                                    options.AllowMultiple, options.SuggestedStartLocation, null,
                                    null, null, false).ConfigureAwait(false);
         return res?.Select(f => new BclStorageFolder(new DirectoryInfo(f))).ToArray() ?? Array.Empty <IStorageFolder>();
     }));
 }
Example #8
0
    public override async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
    {
        var model   = new ManagedFileChooserViewModel(options, _managedOptions);
        var results = await Show(model, _parent);

        return(results.Select(f => new BclStorageFolder(new DirectoryInfo(f))).ToArray());
    }
Example #9
0
        public override async Task <IReadOnlyList <IStorageFolder> > OpenFolderPickerAsync(FolderPickerOpenOptions options)
        {
            using var events = new SystemDialogEvents();

            var suggestedDirectory = options.SuggestedStartLocation?.TryGetUri(out var suggestedDirectoryTmp) == true
                ? suggestedDirectoryTmp.LocalPath : string.Empty;

            _native.SelectFolderDialog((IAvnWindow)_window.Native, events, options.AllowMultiple.AsComBool(), options.Title ?? "", suggestedDirectory);

            var result = await events.Task.ConfigureAwait(false);

            return(result?.Select(f => new BclStorageFolder(new DirectoryInfo(f))).ToArray()
                   ?? Array.Empty <IStorageFolder>());
        }