/// <summary> /// Updates the taskbar status based on the current build conditions. /// </summary> private void updateTaskbarStatus() { //TaskbarItemProgressState progressState = TaskbarItemProgressState.None; //a failed build should always be indicated in the taskbar. if (HasBuildFailed) { //progressState = TaskbarItemProgressState.Error; } else { if (IsBuildActive) { if (IsProgressIndeterminate) { //progressState = TaskbarItemProgressState.Indeterminate; } else { //progressState = TaskbarItemProgressState.Normal; } } } //TaskbarItemInfo.ProgressState = progressState; //TaskbarItemInfo.ProgressValue = ProgressPercentage; if (_buildStatusWindow == null) { _buildStatusWindow = new BuildStatusWindow(); } _buildStatusWindow.SetProgress((int)ProgressPercentage); }
/// <summary> /// Build is done. /// </summary> private void buildDone() { if (_buildStatusWindow == null) { _buildStatusWindow = new BuildStatusWindow(); } _buildStatusWindow.SetProgress(100); IsProgressIndeterminate = false; // a failed build needs to displayed in the taskbar. ProgressPercentage = HasBuildFailed ? 100 : 0; IsBuildActive = false; System.Threading.Thread.Sleep(1000); _buildStatusWindow.Close(); }
/// <summary> /// A build has begun. /// </summary> /// <param name="scope">The scope.</param> /// <param name="action">The action.</param> private void buildBegin(vsBuildScope scope, vsBuildAction action) { BuildAction = action; BuildScope = scope; NumberOfProjectsBuilt = 0; if (scope == vsBuildScope.vsBuildScopeSolution) { NumberOfProjectsToBeBuilt = getNumberOfProjectsToBeBuilt(); IsProgressIndeterminate = false; } else { NumberOfProjectsToBeBuilt = 0; IsProgressIndeterminate = true; } // reset the field directly. the property won't allow a "true" to be changed to a "true". _hasBuildFailed = false; IsBuildActive = true; ProgressPercentage = 0; _buildStatusWindow = new BuildStatusWindow(); _buildStatusWindow.Show(); }