private async Task SelectDifferent(string presetFilename = null)
        {
            if (!SettingsHolder.CustomShowroom.CustomShowroomPreviews)
            {
                return;
            }
            using (var waiting = WaitingDialog.Create("Scanning…")) {
                var list         = Entries.ToList();
                var cancellation = waiting.CancellationToken;

                await Task.Run(() => {
                    var checksum = CmPreviewsTools.GetChecksum(presetFilename);
                    for (var i = 0; i < list.Count; i++)
                    {
                        if (cancellation.IsCancellationRequested)
                        {
                            return;
                        }

                        var entry = list[i];
                        waiting.Report(new AsyncProgressEntry(entry.Car.DisplayName, i, list.Count));

                        var selected = entry.Car.EnabledOnlySkins.Where(x => GetChecksum(x.PreviewImage) != checksum).ToList();
                        ActionExtension.InvokeInMainThread(() => entry.SelectedSkins = selected);
                    }
                });
            }
        }
Exemple #2
0
        public static Task <IReadOnlyList <UpdatePreviewError> > Run(this IEnumerable <ToUpdatePreview> toUpdate, UpdatePreviewMode?mode = null, string presetFilename = null)
        {
            var list       = toUpdate.ToIReadOnlyListIfItIsNot();
            var actualMode = mode ?? GetAutoUpdatePreviewsDialogMode();

            if (SettingsHolder.CustomShowroom.CustomShowroomPreviews)
            {
                switch (actualMode)
                {
                case UpdatePreviewMode.Options:
                    return(CmPreviewsWrapper.Run(list, presetFilename));

                case UpdatePreviewMode.StartManual:
                    NonfatalError.Notify("Can’t update previews in Manual Mode with Custom Showroom",
                                         "Why would you need it anyway? Just open Custom Previews settings, locate camera the way you want and update one or all previews.");
                    return(Task.FromResult <IReadOnlyList <UpdatePreviewError> >(null));

                default:
                    return(CmPreviewsTools.UpdatePreview(list, presetFilename));
                }
            }

            var dialog = new CarUpdatePreviewsDialog(list, actualMode);

            return(Task.FromResult <IReadOnlyList <UpdatePreviewError> >(dialog.ShowDialog() ? dialog.Errors.ToList() : null));
        }
Exemple #3
0
 private async Task PreparePreviewsAsync()
 {
     CarPreviews = Skins.ToDictionary(x => x.Id, x => Path.Combine(TemporaryLocation, $"preview_{x.Id}.jpg"));
     using (var op = Log?.BeginParallel("Generating previews with default look", @"Updating skin")) {
         await CmPreviewsTools.UpdatePreviewAsync(new[] {
             new ToUpdatePreview(Target, Skins.Where(x => !File.Exists(CarPreviews[x.Id])).ToList())
         }, WorkshopCarSkinSubmittable.PreviewsOptions(), @"Kunos", destinationOverrideCallback : skin => CarPreviews[skin.Id], progress : op);
     }
 }