You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.5 KiB
123 lines
3.5 KiB
using Codice.Client.BaseCommands; |
|
using Codice.Client.Commands.CheckIn; |
|
using Codice.Client.Common; |
|
using Codice.CM.Common; |
|
using PlasticGui; |
|
using PlasticGui.WorkspaceWindow; |
|
|
|
namespace Unity.PlasticSCM.Editor.Developer |
|
{ |
|
internal class ProgressOperationHandler |
|
{ |
|
internal ProgressOperationHandler(WorkspaceInfo wkInfo, WorkspaceWindow workspaceWindow) |
|
{ |
|
mWkInfo = wkInfo; |
|
mWorkspaceWindow = workspaceWindow; |
|
} |
|
|
|
internal void Update(double elapsedSeconds) |
|
{ |
|
if (mUpdateProgress == null) |
|
return; |
|
|
|
mSecondsSinceLastProgressUpdate += elapsedSeconds; |
|
if (mSecondsSinceLastProgressUpdate > UPDATE_INTERVAL_SECONDS) |
|
{ |
|
mUpdateProgress.OnUpdateProgress(); |
|
mSecondsSinceLastProgressUpdate -= UPDATE_INTERVAL_SECONDS; |
|
} |
|
} |
|
|
|
internal bool CheckOperationInProgress() |
|
{ |
|
if (IsOperationInProgress()) |
|
{ |
|
GuiMessage.ShowInformation( |
|
PlasticLocalization.GetString(PlasticLocalization.Name.OperationRunning), |
|
PlasticLocalization.GetString(PlasticLocalization.Name.OperationInProgress)); |
|
return true; |
|
} |
|
|
|
return false; |
|
} |
|
|
|
internal bool IsOperationInProgress() |
|
{ |
|
return mProgress != null |
|
|| mUpdateProgress != null |
|
|| mCheckinProgress != null; |
|
} |
|
|
|
internal void ShowProgress() |
|
{ |
|
mProgress = new GenericProgress(mWorkspaceWindow); |
|
} |
|
|
|
internal void RefreshProgress(ProgressData progressData) |
|
{ |
|
mProgress.RefreshProgress(progressData); |
|
} |
|
|
|
internal void EndProgress() |
|
{ |
|
mProgress = null; |
|
mWorkspaceWindow.Progress.ResetProgress(); |
|
mWorkspaceWindow.RequestRepaint(); |
|
} |
|
|
|
internal void ShowUpdateProgress(string title, UpdateNotifier notifier) |
|
{ |
|
mUpdateProgress = new UpdateProgress( |
|
notifier, mWkInfo.ClientPath, title, mWorkspaceWindow); |
|
mUpdateProgress.OnUpdateProgress(); |
|
mSecondsSinceLastProgressUpdate = 0; |
|
} |
|
|
|
internal void ShowCheckinProgress() |
|
{ |
|
mCheckinProgress = new CheckinProgress(mWkInfo, mWorkspaceWindow); |
|
} |
|
|
|
internal void RefreshCheckinProgress( |
|
CheckinStatus checkinStatus, |
|
BuildProgressSpeedAndRemainingTime.ProgressData progressData) |
|
{ |
|
mCheckinProgress.Refresh(checkinStatus, progressData); |
|
} |
|
|
|
internal void CancelCheckinProgress() |
|
{ |
|
mCheckinProgress.CancelPressed = true; |
|
} |
|
|
|
internal void EndUpdateProgress() |
|
{ |
|
mUpdateProgress = null; |
|
mWorkspaceWindow.Progress.ResetProgress(); |
|
mWorkspaceWindow.RequestRepaint(); |
|
} |
|
|
|
internal void EndCheckinProgress() |
|
{ |
|
mCheckinProgress = null; |
|
mWorkspaceWindow.Progress.ResetProgress(); |
|
mWorkspaceWindow.RequestRepaint(); |
|
} |
|
|
|
internal bool HasCheckinCancelled() |
|
{ |
|
return mCheckinProgress.CancelPressed; |
|
} |
|
|
|
double mSecondsSinceLastProgressUpdate = 0; |
|
|
|
GenericProgress mProgress; |
|
UpdateProgress mUpdateProgress; |
|
CheckinProgress mCheckinProgress; |
|
WorkspaceInfo mWkInfo; |
|
|
|
WorkspaceWindow mWorkspaceWindow; |
|
|
|
const double UPDATE_INTERVAL_SECONDS = 0.5; |
|
} |
|
}
|
|
|