private static void WorkStatusChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ProgressInfoControl control = (ProgressInfoControl)d; var status = (WorkStatus)e.NewValue; manageWorkStatus(status, control); }
private static async void resetSpinnerAndProgressBarToIdleStateDelayed(ProgressInfoControl control, string fromState) { control.WorkStatus = WorkStatus.Idle; control.WorkStatusTextBlock.Text = fromState; await Task.Delay(2000); control.WorkStatusTextBlock.Text = Constants.IDLE_WORK_STATUS; control.WorkStatus = WorkStatus.Idle; }
private static void ProgressChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ProgressInfoControl control = (ProgressInfoControl)d; var progressValue = (int)e.NewValue; if (progressValue >= 100) { control.WorkProgressBar.IsIndeterminate = true; } else { control.WorkProgressBar.IsIndeterminate = false; control.WorkProgressBar.Value = progressValue; } }
private static void manageWorkStatus(WorkStatus status, ProgressInfoControl control) { switch (status) { case WorkStatus.Idle: { control.WorkStatusTextBlock.Text = Constants.IDLE_WORK_STATUS; control.Spinner.Spin = false; control.WorkProgressBar.IsIndeterminate = false; control.WorkProgressBar.Value = 0; control.WorkProgressBar.Visibility = Visibility.Collapsed; }; break; case WorkStatus.Working: { control.WorkProgressBar.Visibility = Visibility.Visible; control.Spinner.Spin = true; control.WorkStatusTextBlock.Text = Constants.WORKING_WORK_STATUS; }; break; case WorkStatus.Canceled: { resetSpinnerAndProgressBarToIdleStateDelayed(control, Constants.CANCELED_WORK_STATUS); }; break; case WorkStatus.Error: { resetSpinnerAndProgressBarToIdleStateDelayed(control, Constants.ERROR_WORK_STATUS); }; break; case WorkStatus.Done: { resetSpinnerAndProgressBarToIdleStateDelayed(control, Constants.COMPLETED_WORK_STATUS); }; break; } }