using System; using System.Linq; using System.Text; using System.Windows.Forms; using TweetDuck.Dialogs; using TweetDuck.Management; using TweetLib.Core.Application; using TweetLib.Core.Systems.Dialogs; namespace TweetDuck.Application { sealed class DialogHandler : IAppDialogHandler { public void Information(string caption, string text, string buttonAccept, string buttonCancel = null) { FormManager.RunOnUIThreadAsync(() => FormMessage.Information(caption, text, buttonAccept, buttonCancel)); } public void Error(string caption, string text, string buttonAccept, string buttonCancel = null) { FormManager.RunOnUIThreadAsync(() => FormMessage.Error(caption, text, buttonAccept, buttonCancel)); } public void SaveFile(SaveFileDialogSettings settings, Action<string> onAccepted) { static string FormatFilter(FileDialogFilter filter) { var builder = new StringBuilder(); builder.Append(filter.Name); var extensions = string.Join(";", filter.Extensions.Select(ext => "*" + ext)); if (extensions.Length > 0) { builder.Append(" ("); builder.Append(extensions); builder.Append(")"); } builder.Append('|'); builder.Append(extensions.Length == 0 ? "*.*" : extensions); return builder.ToString(); } FormManager.RunOnUIThreadAsync(() => { using SaveFileDialog dialog = new SaveFileDialog { AutoUpgradeEnabled = true, OverwritePrompt = settings.OverwritePrompt, Title = settings.DialogTitle, FileName = settings.FileName, Filter = settings.Filters == null ? null : string.Join("|", settings.Filters.Select(FormatFilter)) }; if (dialog.ShowDialog() == DialogResult.OK) { onAccepted(dialog.FileName); } }); } } }