/// <summary> /// Initializes a new instance of the MainWindow class. /// </summary> public MainWindow() { InitializeComponent(); Closing += (s, e) => { Ookii.Dialogs.Wpf.TaskDialog dialog = new Ookii.Dialogs.Wpf.TaskDialog(); dialog.Buttons.Add(new Ookii.Dialogs.Wpf.TaskDialogButton(Ookii.Dialogs.Wpf.ButtonType.Yes)); dialog.Buttons.Add(new Ookii.Dialogs.Wpf.TaskDialogButton(Ookii.Dialogs.Wpf.ButtonType.No)); dialog.WindowTitle = Extensions.LocalizationManager.Get("Exit confirmation"); dialog.MainIcon = Ookii.Dialogs.Wpf.TaskDialogIcon.Warning; dialog.MainInstruction = Extensions.LocalizationManager.Get("Do you really want to quit?"); if (dialog.ShowDialog(this).ButtonType == Ookii.Dialogs.Wpf.ButtonType.No) { e.Cancel = true; } else { vMixController.Properties.Settings.Default.Save(); ViewModelLocator.Cleanup(); App.Current.Shutdown(); } }; Messenger.Default.Register <LoadingMessage>(this, (msg) => { var fadein = (Storyboard)FindResource("StoryboardFadeIn"); var fadeout = (Storyboard)FindResource("StoryboardFadeOut"); if (msg.Loading && !_loading) { fadein.Begin(Loading); _loading = true; } else if (!msg.Loading && _loading) { fadeout.Begin(Loading); _loading = false; } }); }
/// <summary> /// Initializes a new instance of the MainWindow class. /// </summary> public MainWindow() { InitializeComponent(); Closing += (s, e) => { Ookii.Dialogs.Wpf.TaskDialog dialog = new Ookii.Dialogs.Wpf.TaskDialog(); dialog.Buttons.Add(new Ookii.Dialogs.Wpf.TaskDialogButton(Ookii.Dialogs.Wpf.ButtonType.Yes)); dialog.Buttons.Add(new Ookii.Dialogs.Wpf.TaskDialogButton(Ookii.Dialogs.Wpf.ButtonType.No)); dialog.WindowTitle = Extensions.LocalizationManager.Get("Exit confirmation"); dialog.MainIcon = Ookii.Dialogs.Wpf.TaskDialogIcon.Warning; dialog.MainInstruction = Extensions.LocalizationManager.Get("Do you really want to quit?"); if (dialog.ShowDialog(this).ButtonType == Ookii.Dialogs.Wpf.ButtonType.No) { e.Cancel = true; } else { vMixController.Properties.Settings.Default.Save(); ViewModelLocator.Cleanup(); } }; }
public static void ToExcel(GuildStats stats) { using (CommonSaveFileDialog dialog = new CommonSaveFileDialog()) { dialog.Filters.Add(new CommonFileDialogFilter("Excel file", ".xlsx")); if (dialog.ShowDialog() == CommonFileDialogResult.Ok) { Ookii.Dialogs.Wpf.TaskDialog progressDialog = new Ookii.Dialogs.Wpf.TaskDialog { Content = $"Exporting to \"{Path.GetFileName(dialog.FileName)}.xlsx\"", AllowDialogCancellation = false, WindowTitle = "Exporting to Excel" }; progressDialog.Buttons.Add(new Ookii.Dialogs.Wpf.TaskDialogButton(Ookii.Dialogs.Wpf.ButtonType.Cancel)); progressDialog.ProgressBarState = Ookii.Dialogs.Wpf.ProgressBarState.Normal; progressDialog.ProgressBarStyle = Ookii.Dialogs.Wpf.ProgressBarStyle.MarqueeProgressBar; progressDialog.ProgressBarMaximum = stats.MemberStats.Count() + stats.ChannelStats.Count(); new Thread(() => { try { Application app = new Application(); Workbook workbook = app.Workbooks.Add(); Worksheet memberSheet = workbook.Sheets.Add(); try { App.Current.Dispatcher.Invoke(() => progressDialog.ProgressBarStyle = Ookii.Dialogs.Wpf.ProgressBarStyle.ProgressBar); memberSheet.Name = "Members"; memberSheet.Cells[1, 1] = "Id"; memberSheet.Cells[1, 2] = "Username"; memberSheet.Cells[1, 3] = "Sent Messages"; memberSheet.Cells[1, 4] = "Mentions"; memberSheet.Cells[1, 5] = "Avg Messages / Day"; memberSheet.Cells[1, 6] = "Last Message"; for (int i = 0; i < stats.MemberStats.Count(); i++) { MemberStats stat = stats.MemberStats.ElementAt(i); memberSheet.Cells[i + 2, 1] = stat.Id.ToString(); memberSheet.Cells[i + 2, 2] = stat.Username.Trim('='); memberSheet.Cells[i + 2, 3] = stat.SentMessages; memberSheet.Cells[i + 2, 4] = stat.Mentions; memberSheet.Cells[i + 2, 5] = stat.AvgMessagesPerDay; memberSheet.Cells[i + 2, 6] = stat.LastMessage.ToString(); if ((i % 3) == 0) { App.Current.Dispatcher.Invoke(() => { try { progressDialog.ProgressBarValue = (progressDialog.ProgressBarValue + 3); } catch { } }); } } Worksheet channelsSheet = workbook.Sheets.Add(); channelsSheet.Name = "Channels"; channelsSheet.Cells[1, 1] = "Id"; channelsSheet.Cells[1, 2] = "Name"; channelsSheet.Cells[1, 3] = "Message Count"; channelsSheet.Cells[1, 4] = "Avg Messages / Day"; for (int i = 0; i < stats.ChannelStats.Count(); i++) { ChannelStats stat = stats.ChannelStats.ElementAt(i); channelsSheet.Cells[i + 2, 1] = stat.Id.ToString(); channelsSheet.Cells[i + 2, 2] = stat.Name.Trim('='); channelsSheet.Cells[i + 2, 3] = stat.Messages; channelsSheet.Cells[i + 2, 4] = stat.AvgMessagesPerDay; App.Current.Dispatcher.Invoke(() => { try { progressDialog.ProgressBarValue = (progressDialog.ProgressBarValue + 1); } catch { } }); } } finally { workbook.SaveAs(dialog.FileName); workbook.Close(); app.Quit(); App.Current.Dispatcher.Invoke(() => progressDialog.Dispose()); } } catch (Exception ex) { MainWindow.ShowTaskDialog($"Something went wrong exporting to Excel and an {ex.GetType().Name} occured.", Ookii.Dialogs.Wpf.TaskDialogIcon.Error); App.Current.Dispatcher.Invoke(() => progressDialog.Dispose()); } }).Start(); progressDialog.Show(); } } }