public async Task <IDownsizeResponse> Downsize(IDownsizePotential potential, IDownsizeResponse downsizeResponse, StatsUpdater updateStat = null) { try { foreach (CustomLayout layout in potential.UnusedLayouts) { layout.Delete(); downsizeResponse.CustomLayoutsDeleted++; } foreach (Master master in potential.UnusedMasters) { master.Delete(); downsizeResponse.MasterSlidesDeleted++; } downsizeResponse.IsSuccess = true; downsizeResponse.ResultMessage = Constants.Messages.SlideMasterDonwsizeSuccess; } catch (Exception e) { downsizeResponse.Exception = e; downsizeResponse.ResultMessage = Constants.Messages.SlideMasterDonwsizeFailed; } updateStat?.Invoke(downsizeResponse); return(await Task.FromResult(downsizeResponse).ConfigureAwait(false)); }
internal static async Task ReportDownsizePotential(IDownsizePotential potential, bool performDownsize) { var anyPotential = potential.UnusedLayoutsCount > 0 || potential.UnusedMastersCount > 0; var msgBoxIcon = anyPotential ? MessageBoxIcon.Information : MessageBoxIcon.Exclamation; var message = anyPotential ? $"Unused layouts: {potential.UnusedLayoutsCount}{nl}Unused master slides: {potential.UnusedMastersCount}" : Fickles.Messages.NothingToRemove; if (anyPotential) { if (performDownsize) { msgBoxIcon = MessageBoxIcon.Question; message += $"{nl}{nl}Do you want to remove them now?"; var downsize = await Task.FromResult(MessageBox.Show(message, caption, MessageBoxButtons.YesNo, msgBoxIcon, MessageBoxDefaultButton.Button2)).ConfigureAwait(false); if (downsize == DialogResult.Yes) { _ = Performer.DownSize(potential); } } else { await Task.FromResult(MessageBox.Show(message, caption, MessageBoxButtons.OK, msgBoxIcon)).ConfigureAwait(false); } } else { await Task.FromResult(MessageBox.Show(message, caption, MessageBoxButtons.OK, msgBoxIcon)).ConfigureAwait(false); } }
internal static async Task DownSize(IDownsizePotential potential) { try { var downsizeResponse = new DownsizeResponse(); await new SlideMaster.Downsizer().Downsize(potential, downsizeResponse, StatsManager.UpdateStats).ConfigureAwait(false); _ = Reporter.ReportDownsizeStatus(downsizeResponse); } catch (System.Exception e) { _ = Reporter.ReportError($"Failed to downsize the presentation. {nl}{e.Message}"); } }
public async Task <IDownsizePotential> GetDownsizePotential(Presentation activePresentation, IDownsizePotential potential, StatsUpdater updateStat = null) { var designs = activePresentation.Designs; List <Master> availableMasters = new List <Master>(); List <CustomLayout> availableCustomLayouts = new List <CustomLayout>(); List <CustomLayout> usedCustomLayouts = await Task.FromResult((from Slide slide in activePresentation.Slides select slide.CustomLayout).ToList()).ConfigureAwait(false); foreach (Design design in designs) { var slideMaster = design.SlideMaster; availableMasters.Add(slideMaster); List <CustomLayout> designCustomLayouts = await Task.FromResult((from CustomLayout layout in slideMaster.CustomLayouts select layout).ToList()).ConfigureAwait(false); availableCustomLayouts.AddRange(designCustomLayouts); } potential.UnusedLayouts = availableCustomLayouts.Where(layout => !usedCustomLayouts.Contains(layout)).ToList(); potential.UnusedMasters = availableMasters.Where(master => !(from CustomLayout layout in master.CustomLayouts select layout).ToList().Except(potential.UnusedLayouts).Any()).ToList(); updateStat?.Invoke(); return(await Task.FromResult(potential).ConfigureAwait(false)); }