Exemple #1
0
        public virtual async Task <int> GetImportCount(StableContent content, CancellationToken cancellationToken)
        {
            var stableStorage = GetCurrentStableStorage();

            if (stableStorage == null)
            {
                return(0);
            }

            cancellationToken.ThrowIfCancellationRequested();

            switch (content)
            {
            case StableContent.Beatmaps:
                return(await new LegacyBeatmapImporter(beatmaps).GetAvailableCount(stableStorage));

            case StableContent.Skins:
                return(await new LegacySkinImporter(skins).GetAvailableCount(stableStorage));

            case StableContent.Collections:
                return(await collections.GetAvailableCount(stableStorage));

            case StableContent.Scores:
                return(await new LegacyScoreImporter(scores).GetAvailableCount(stableStorage));

            default:
                throw new ArgumentException($"Only one {nameof(StableContent)} flag should be specified.");
            }
        }
Exemple #2
0
        public async Task ImportFromStableAsync(StableContent content)
        {
            var stableStorage = await getStableStorage().ConfigureAwait(false);

            var importTasks = new List <Task>();

            Task beatmapImportTask = Task.CompletedTask;

            if (content.HasFlagFast(StableContent.Beatmaps))
            {
                importTasks.Add(beatmapImportTask = beatmaps.ImportFromStableAsync(stableStorage));
            }

            if (content.HasFlagFast(StableContent.Skins))
            {
                importTasks.Add(skins.ImportFromStableAsync(stableStorage));
            }

            if (content.HasFlagFast(StableContent.Collections))
            {
                importTasks.Add(beatmapImportTask.ContinueWith(_ => collections.ImportFromStableAsync(stableStorage), TaskContinuationOptions.OnlyOnRanToCompletion));
            }

            if (content.HasFlagFast(StableContent.Scores))
            {
                importTasks.Add(beatmapImportTask.ContinueWith(_ => scores.ImportFromStableAsync(stableStorage), TaskContinuationOptions.OnlyOnRanToCompletion));
            }

            await Task.WhenAll(importTasks.ToArray()).ConfigureAwait(false);
        }
        private void runImport()
        {
            toggleInteraction(false);
            progressText.FadeIn(1000, Easing.OutQuint);

            StableContent importableContent = 0;

            foreach (var c in contentCheckboxes.Where(c => c.Current.Value))
            {
                importableContent |= c.StableContent;
            }

            legacyImportManager.ImportFromStableAsync(importableContent, false).ContinueWith(t => Schedule(() =>
            {
                progressText.FadeOut(500, Easing.OutQuint);

                if (t.IsCompletedSuccessfully)
                {
                    importButton.Complete();
                }
                else
                {
                    toggleInteraction(true);
                    importButton.Abort();
                }
            }));
        }
            public ImportCheckbox(LocalisableString title, StableContent stableContent)
            {
                this.title = title;

                StableContent = stableContent;

                Current.Default = true;
                Current.Value   = true;

                LabelText = title;
            }
Exemple #5
0
        public async Task ImportFromStableAsync(StableContent content, bool interactiveLocateIfNotFound = true)
        {
            var stableStorage = GetCurrentStableStorage();

            if (stableStorage == null)
            {
                if (!interactiveLocateIfNotFound)
                {
                    return;
                }

                var taskCompletionSource = new TaskCompletionSource <string>(TaskCreationOptions.RunContinuationsAsynchronously);
                Schedule(() => dialogOverlay.Push(new StableDirectoryLocationDialog(taskCompletionSource)));
                string stablePath = await taskCompletionSource.Task.ConfigureAwait(false);

                UpdateStorage(stablePath);
                stableStorage = GetCurrentStableStorage();
            }

            var importTasks = new List <Task>();

            Task beatmapImportTask = Task.CompletedTask;

            if (content.HasFlagFast(StableContent.Beatmaps))
            {
                importTasks.Add(beatmapImportTask = new LegacyBeatmapImporter(beatmaps).ImportFromStableAsync(stableStorage));
            }

            if (content.HasFlagFast(StableContent.Skins))
            {
                importTasks.Add(new LegacySkinImporter(skins).ImportFromStableAsync(stableStorage));
            }

            if (content.HasFlagFast(StableContent.Collections))
            {
                importTasks.Add(beatmapImportTask.ContinueWith(_ => collections.ImportFromStableAsync(stableStorage), TaskContinuationOptions.OnlyOnRanToCompletion));
            }

            if (content.HasFlagFast(StableContent.Scores))
            {
                importTasks.Add(beatmapImportTask.ContinueWith(_ => new LegacyScoreImporter(scores).ImportFromStableAsync(stableStorage), TaskContinuationOptions.OnlyOnRanToCompletion));
            }

            await Task.WhenAll(importTasks.ToArray()).ConfigureAwait(false);
        }