diff --git a/ArcdpsLogManager/Configuration/DpsReportUploadSettingsPage.cs b/ArcdpsLogManager/Configuration/DpsReportUploadSettingsPage.cs index 6535b2f2..62d9bab0 100644 --- a/ArcdpsLogManager/Configuration/DpsReportUploadSettingsPage.cs +++ b/ArcdpsLogManager/Configuration/DpsReportUploadSettingsPage.cs @@ -11,6 +11,7 @@ public class DpsReportUploadSettingsPage : SettingsPage private readonly RadioButtonList domainList; private readonly CheckBox uploadDetailedWvwCheckbox; private readonly CheckBox autoUploadCheckbox; + private readonly CheckBox autoUploadApplyFiltersCheckbox; private bool EditingUserToken { get; set; } @@ -54,6 +55,11 @@ public DpsReportUploadSettingsPage() uploadDetailedWvwCheckbox = new CheckBox { Text = "Detailed WVW Reports (large files may fail)", Checked = Settings.DpsReportUploadDetailedWvw }; autoUploadCheckbox = new CheckBox { Text = "Automatically upload logs", Checked = Settings.DpsReportAutoUpload }; + autoUploadApplyFiltersCheckbox = new CheckBox { Text = "Only upload successful encounters", Checked = Settings.DpsReportAutoUploadApplyFilters, Enabled = Settings.DpsReportAutoUpload }; + autoUploadCheckbox.CheckedChanged += (sender, args) => + { + autoUploadApplyFiltersCheckbox.Enabled = autoUploadCheckbox.Checked.Value; + }; var userTokenTextBox = new TextBox { ReadOnly = true, Text = "************", Enabled = false }; @@ -102,6 +108,7 @@ public DpsReportUploadSettingsPage() Wrap = WrapMode.Word, }); layout.AddRow(autoUploadCheckbox); + layout.AddRow(autoUploadApplyFiltersCheckbox); } layout.EndGroup(); @@ -162,6 +169,11 @@ public override void SaveSettings() { Settings.DpsReportAutoUpload = autoUploadCheckbox.Checked.Value; } + + if (autoUploadApplyFiltersCheckbox.Checked.HasValue) + { + Settings.DpsReportAutoUploadApplyFilters = autoUploadApplyFiltersCheckbox.Checked.Value; + } } } } \ No newline at end of file diff --git a/ArcdpsLogManager/Configuration/Settings.cs b/ArcdpsLogManager/Configuration/Settings.cs index 17767f9a..3b6d4716 100644 --- a/ArcdpsLogManager/Configuration/Settings.cs +++ b/ArcdpsLogManager/Configuration/Settings.cs @@ -39,6 +39,7 @@ public static class Settings DpsReportUserTokenChanged += (sender, args) => SaveToFile(); DpsReportDomainChanged += (sender, args) => SaveToFile(); DpsReportAutoUploadChanged += (sender, args) => SaveToFile(); + DpsReportAutoUploadApplyFiltersChanged += (sender, args) => SaveToFile(); MinimumLogDurationSecondsChanged += (sender, args) => SaveToFile(); IgnoredUpdateVersionsChanged += (sender, args) => SaveToFile(); DpsReportUploadDetailedWvwChanged += (sender, args) => SaveToFile(); @@ -280,7 +281,18 @@ public static bool DpsReportAutoUpload } } } - + public static bool DpsReportAutoUploadApplyFilters + { + get => Values.DpsReportAutoUploadApplyFilters; + set + { + if (Values.DpsReportAutoUploadApplyFilters != value) + { + Values.DpsReportAutoUploadApplyFilters = value; + OnDpsReportAutoUploadApplyFiltersChanged(); + } + } + } public static bool DpsReportUploadDetailedWvw { get => Values.DpsReportUploadDetailedWvw; @@ -293,7 +305,6 @@ public static bool DpsReportUploadDetailedWvw } } } - public static IReadOnlyList PlayerAccountNames { get => Values.PlayerAccountNames; @@ -331,6 +342,7 @@ public static IReadOnlyList WeeklyClearGroups public static event EventHandler DpsReportUserTokenChanged; public static event EventHandler DpsReportDomainChanged; public static event EventHandler DpsReportAutoUploadChanged; + public static event EventHandler DpsReportAutoUploadApplyFiltersChanged; public static event EventHandler MinimumLogDurationSecondsChanged; public static event EventHandler IgnoredUpdateVersionsChanged; public static event EventHandler DpsReportUploadDetailedWvwChanged; @@ -382,6 +394,11 @@ private static void OnDpsReportAutoUploadChanged() DpsReportAutoUploadChanged?.Invoke(null, EventArgs.Empty); } + private static void OnDpsReportAutoUploadApplyFiltersChanged() + { + DpsReportAutoUploadApplyFiltersChanged?.Invoke(null, EventArgs.Empty); + } + private static void OnMinimumLogDurationSecondsChanged() { MinimumLogDurationSecondsChanged?.Invoke(null, EventArgs.Empty); @@ -406,7 +423,7 @@ private static void OnDpsReportUploadDetailedWvwChanged() { DpsReportUploadDetailedWvwChanged?.Invoke(null, EventArgs.Empty); } - + private static void OnPlayerAccountNamesChanged() { PlayerAccountNamesChanged?.Invoke(null, EventArgs.Empty); diff --git a/ArcdpsLogManager/Configuration/StoredSettings.cs b/ArcdpsLogManager/Configuration/StoredSettings.cs index 9f85eba1..5fa08544 100644 --- a/ArcdpsLogManager/Configuration/StoredSettings.cs +++ b/ArcdpsLogManager/Configuration/StoredSettings.cs @@ -22,6 +22,7 @@ public class StoredSettings public string DpsReportDomain { get; set; } = DpsReportUploader.DefaultDomain.Domain; public bool DpsReportAutoUpload { get; set; } = false; public bool DpsReportUploadDetailedWvw { get; set; } = false; + public bool DpsReportAutoUploadApplyFilters { get; set; } = true; public int? MinimumLogDurationSeconds { get; set; } = null; public List HiddenLogListColumns { get; set; } = diff --git a/ArcdpsLogManager/ManagerForm.cs b/ArcdpsLogManager/ManagerForm.cs index 0a6b5fe6..11f27e34 100644 --- a/ArcdpsLogManager/ManagerForm.cs +++ b/ArcdpsLogManager/ManagerForm.cs @@ -243,8 +243,13 @@ public ManagerForm(LogCache logCache, ApiData apiData) { if (Settings.DpsReportAutoUpload) { + bool filtersMatch = true; + if (Settings.DpsReportAutoUploadApplyFilters) + { + filtersMatch = args.Item.EncounterResult == EVTCAnalytics.Processing.Encounters.Results.EncounterResult.Success; + } var age = DateTimeOffset.Now - args.Item.EncounterStartTime; - if (age < TimeSpan.FromDays(1)) + if (age < TimeSpan.FromDays(1) && filtersMatch) { UploadProcessor.ScheduleDpsReportEIUpload(args.Item); }