コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
            }
        }
コード例 #3
0
 public static bool IsEnded(this SyncOperationStatus status)
 {
     return(status == SyncOperationStatus.Canceled ||
            status == SyncOperationStatus.Failed ||
            status == SyncOperationStatus.Finished);
 }