private void UpdateDuration(SyncOperationStatus status) { Assert.IsNotNull(RunningOperation); var duration = !status.IsEnded() || !RunningOperation.FinishedAt.HasValue ? DateTime.UtcNow - RunningOperation.StartedAt.Value : RunningOperation.FinishedAt.Value - RunningOperation.StartedAt.Value; lblDuration.Text = TimeSpanUtils.GetReadableTimespan(duration); }
private void UpdateStatsInfo(SyncOperationStatus status, bool runningRemotely = false) { if (RunningOperation == null) { return; } switch (status) { default: throw new ArgumentException("Unhandled status", "status"); case SyncOperationStatus.Unknown: { this.lblRemoteDirectory.Text = RunningOperation.RemoteRootDirectory; this.lblStatus.Text = LBL_STATUS_STOPPED; this.llblRunNow.Text = LBL_RUNNOW_STOPPED; this.lblTotalFiles.Text = LBL_TOTALFILES_STOPPED; this.lblFilesSynced.Text = LBL_FILESSYNCED_STOPPED; this.lblDuration.Text = LBL_DURATION_INITIAL; this.btnPrevious.Enabled = false; this.btnNext.Enabled = false; this.btnFinish.Enabled = false; break; } case SyncOperationStatus.Started: //case SyncOperationStatus.Resumed: { Assert.IsNotNull(OperationResults); this.lblRemoteDirectory.Text = RunningOperation.RemoteRootDirectory; this.llblRunNow.Text = LBL_RUNNOW_RUNNING; this.lblStatus.Text = LBL_STATUS_STARTED; this.lblDuration.Text = LBL_DURATION_STARTED; this.lblTotalFiles.Text = LBL_TOTALFILES_STARTED; this.lblFilesSynced.Text = LBL_FILESSYNCED_STARTED; timer1.Enabled = true; timer1.Start(); break; } case SyncOperationStatus.ListingUpdated: { long totalSize = OperationResults.Stats.TotalSize; string totalSizeAsStr = totalSize == 0 ? "Completed" : FileSizeUtils.FileSizeToString(totalSize); this.lblTotalFiles.Text = string.Format("{0} files ({1})", OperationResults.Stats.FileCount, totalSizeAsStr); break; } case SyncOperationStatus.SavingUpdated: { Dispatcher.Invoke(() => { this.lblFilesSynced.Text = string.Format("{0} of {1}", OperationResults.Stats.SavedFileCount, OperationResults.Stats.FileCount); }); break; } case SyncOperationStatus.Canceled: case SyncOperationStatus.Failed: { UpdateDuration(status); this.lblRemoteDirectory.Text = RunningOperation.RemoteRootDirectory; this.llblRunNow.Text = LBL_RUNNOW_STOPPED; this.lblStatus.Text = status == SyncOperationStatus.Canceled ? LBL_STATUS_CANCELED : LBL_STATUS_FAILED; this.lblFilesSynced.Text = LBL_FILESSYNCED_STOPPED; timer1.Stop(); timer1.Enabled = false; this.btnPrevious.Enabled = true; this.btnNext.Enabled = true; this.btnFinish.Enabled = true; if (!runningRemotely) { // Update timestamps. Models.Synchronization sync = Model as Models.Synchronization; //sync.LastRunAt = DateTime.UtcNow; _daoSynchronization.Update(sync); } break; } case SyncOperationStatus.Finished: { UpdateDuration(status); this.lblRemoteDirectory.Text = RunningOperation.RemoteRootDirectory; this.llblRunNow.Text = LBL_RUNNOW_STOPPED; this.lblStatus.Text = LBL_STATUS_COMPLETED; timer1.Stop(); timer1.Enabled = false; this.btnPrevious.Enabled = true; this.btnNext.Enabled = true; this.btnFinish.Enabled = true; if (!runningRemotely) { // Update timestamps. Models.Synchronization sync = Model as Models.Synchronization; //sync.LastRunAt = sync.LastSuccessfulRunAt = DateTime.UtcNow; _daoSynchronization.Update(sync); } break; } } }
public static bool IsEnded(this SyncOperationStatus status) { return(status == SyncOperationStatus.Canceled || status == SyncOperationStatus.Failed || status == SyncOperationStatus.Finished); }