/// <summary>Initializes a new instance of the <see cref="TriggerEditDialog"/> class.</summary> /// <param name="trigger">The <see cref="Trigger"/> to edit.</param> /// <param name="supportV1Only">If set to <c>true</c> support V1 triggers only.</param> /// <param name="allowedTriggers">Sets the types of triggers that can be edited. Default is all.</param> public TriggerEditDialog(Trigger trigger, bool supportV1Only = false, AvailableTriggers allowedTriggers = AvailableTriggers.AllTriggers) { InitializeComponent(); showCustom = trigger != null && trigger.TriggerType == TaskTriggerType.Custom; isV2 = !supportV1Only; // Populate combo boxes delaySpan.Items.AddRange(new[] { TimeSpan2.FromSeconds(30), TimeSpan2.FromMinutes(1), TimeSpan2.FromMinutes(30), TimeSpan2.FromHours(1), TimeSpan2.FromHours(8), TimeSpan2.FromDays(1) }); repeatSpan.Items.AddRange(new[] { TimeSpan2.FromMinutes(5), TimeSpan2.FromMinutes(10), TimeSpan2.FromMinutes(15), TimeSpan2.FromMinutes(30), TimeSpan2.FromHours(1) }); durationSpan.Items.AddRange(new[] { TimeSpan2.Zero, TimeSpan2.FromMinutes(15), TimeSpan2.FromMinutes(30), TimeSpan2.FromHours(1), TimeSpan2.FromHours(12), TimeSpan2.FromDays(1) }); durationSpan.FormattedZero = EditorProperties.Resources.TimeSpanIndefinitely; stopIfRunsSpan.Items.AddRange(new[] { TimeSpan2.FromMinutes(30), TimeSpan2.FromHours(1), TimeSpan2.FromHours(2), TimeSpan2.FromHours(4), TimeSpan2.FromHours(8), TimeSpan2.FromHours(12), TimeSpan2.FromDays(1), TimeSpan2.FromDays(3) }); AvailableTriggers = allowedTriggers; if (trigger != null) { Trigger = trigger; } else { Trigger = (AvailableTriggers & CalendarTriggerUI.calendarTriggers) != 0 ? GetFirstAvailableTrigger(CalendarTriggerUI.calendarTriggers) : GetFirstAvailableTrigger(); initialStartBoundary = DateTime.MinValue; } }
internal static AvailableTriggers GetFilteredAvailableTriggers(AvailableTriggers availableTriggers, Version tsVer, bool useUnifiedSchedulingEngine, bool showCustom) { var isV1 = tsVer < TaskServiceVersion.V1_2; var ret = availableTriggers; // Remove all non-V1 triggers if set if (isV1) { ret &= ~(AvailableTriggers.Event | AvailableTriggers.Registration | AvailableTriggers.SessionStateChange); } // Remove custom trigger if not shown or v1 if (!showCustom || isV1) { ret &= ~AvailableTriggers.Custom; } // Remove unsupported USE triggers only on Win7 if (useUnifiedSchedulingEngine && tsVer == TaskServiceVersion.V1_3) { ret &= ~(AvailableTriggers.Monthly | AvailableTriggers.MonthlyDOW); } return(ret != 0 ? ret : throw new InvalidOperationException("No triggers are available to display given the current settings.")); }
/// <summary>Filtered the supplied available triggers based on this version of the Task Scheduler and options that could be set on the <see cref="TaskDefinition"/>.</summary> /// <param name="ts">The <see cref="TaskService"/> instance.</param> /// <param name="availableTriggers">The available triggers.</param> /// <param name="useUnifiedSchedulingEngine">if set to <c>true</c> assume the task will use the Unified Scheduling Engine.</param> /// <returns>The filtered set of available triggers.</returns> public static AvailableTriggers GetFilteredAvailableTriggers(this TaskService ts, AvailableTriggers availableTriggers, bool useUnifiedSchedulingEngine = false) => GetFilteredAvailableTriggers(availableTriggers, ts.HighestSupportedVersion, useUnifiedSchedulingEngine, true);
/// <summary>Filtered the supplied available triggers based on this <see cref="TaskDefinition"/> and the version of the Task Scheduler.</summary> /// <param name="td">The <see cref="TaskDefinition"/> instance.</param> /// <param name="availableTriggers">The available triggers.</param> /// <param name="taskSchedulerVersion">The Task Scheduler version.</param> /// <param name="showCustom">Show <see cref="CustomTrigger"/> instances.</param> /// <returns>The filtered set of available triggers.</returns> public static AvailableTriggers GetFilteredAvailableTriggers(this TaskDefinition td, AvailableTriggers availableTriggers, Version taskSchedulerVersion, bool showCustom = false) => GetFilteredAvailableTriggers(availableTriggers, taskSchedulerVersion, td.Settings.UseUnifiedSchedulingEngine, showCustom);