Beispiel #1
0
        private Task ExternalDeviceService_MustIndexExternalDevice(string deviceId)
        {
            return(Task.Run(async() =>
            {
                await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loading);
                StorageFolder folder;
                // Windows.Devices.Portable.StorageDevice.FromId blocks forever on Xbox... so work around
                if (Helpers.DeviceHelper.GetDeviceType() != DeviceTypeEnum.Xbox &&
                    Helpers.DeviceHelper.GetDeviceType() != DeviceTypeEnum.Phone)
                {
                    folder = Windows.Devices.Portable.StorageDevice.FromId(deviceId);
                }
                else
                {
                    var devices = KnownFolders.RemovableDevices;
                    var allFolders = await devices.GetFoldersAsync();
                    folder = allFolders.Last();
                }

                if (!StorageApplicationPermissions.FutureAccessList.CheckAccess(folder))
                {
                    StorageApplicationPermissions.FutureAccessList.Add(folder);
                }
                await MediaLibraryHelper.ForeachSupportedFile(folder, async(IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files));
                await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loaded);
            }));
        }
        //TODO: Move to a service
        public override async void Execute(object parameter)
        {
            try
            {
                if (parameter is VLCStorageFile)
                {
                    // Copy the selected file.
                    var         file = parameter as VLCStorageFile;
                    StorageFile f    = await StorageFile.GetFileFromPathAsync(file.StorageItem.Path);

                    CopyMediaFileToLocalStorage(f);
                }
                else if (parameter is VLCStorageFolder)
                {
                    // Copy all media files in the selected folder.
                    var           folder = parameter as VLCStorageFolder;
                    StorageFolder d      = await StorageFolder.GetFolderFromPathAsync(folder.StorageItem.Path);

                    await MediaLibraryHelper.ForeachSupportedFile(d, (IReadOnlyList <StorageFile> files) =>
                    {
                        foreach (var f in files)
                        {
                            CopyMediaFileToLocalStorage(f);
                        }
                        return(Task.FromResult(true));
                    });
                }
            }
            catch (Exception e)
            {
                LogHelper.Log(e.Message);
            }
        }
Beispiel #3
0
        async Task PerformMediaLibraryIndexing()
        {
            await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loading);

            StorageFolder folder = await FileUtils.GetLocalStorageMediaFolder();

            await MediaLibraryHelper.ForeachSupportedFile(folder, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files));

            await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.VideosLibrary, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files));

            await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.MusicLibrary, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files));

            await MediaLibraryHelper.ForeachSupportedFile(KnownFolders.CameraRoll, async (IReadOnlyList <StorageFile> files) => await DiscoverMediaItems(files, true));

            // Cortana gets all those artists, albums, songs names
            var artists = LoadArtists(null);

            if (artists != null)
            {
                await CortanaHelper.SetPhraseList("artistName", artists.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).ToList());
            }

            var albums = LoadAlbums(null);

            if (albums != null)
            {
                await CortanaHelper.SetPhraseList("albumName", albums.Where(x => !string.IsNullOrEmpty(x.Name)).Select(x => x.Name).ToList());
            }

            await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Low, () => MediaLibraryIndexingState = LoadingState.Loaded);
        }