/// <summary>\r
/// 終了時に何を行うかのフラグ\r
/// </summary>\r
- public enum ActionOnDoneFlags {\r
+ private enum ActionOnDoneFlags {\r
None = 0,\r
FlashWindow = 1,\r
AutoCloseOnSuccess = 2,\r
/// <summary>\r
/// 終了時に何を行うか\r
/// </summary>\r
- public ActionOnDoneFlags ActionOnDone = ActionOnDoneFlags.FlashWindow;\r
+ private ActionOnDoneFlags ActionOnDone = ActionOnDoneFlags.FlashWindow;\r
\r
public ExecutionProgressViewer()\r
{\r
return;\r
}\r
\r
- \r
- if (a.TaskProgressPercent >= 0) {\r
- progressBarSub.Value = (int) a.TaskProgressPercent;\r
- progressBarSub.Style = ProgressBarStyle.Continuous;\r
- } else {\r
- progressBarSub.Style = ProgressBarStyle.Marquee;\r
- }\r
- \r
switch (a.Type) {\r
case DownloadEventType.INITED:\r
case DownloadEventType.CONNECTED:\r
logBox.SelectionColor = logBox.ForeColor;\r
break;\r
}\r
+ \r
+ // ダウンロードの進捗を表示\r
+ if (a.TaskProgressPercent >= 0) {\r
+ progressBarSub.Value = (int) a.TaskProgressPercent;\r
+ progressBarSub.Style = ProgressBarStyle.Continuous;\r
+ } else {\r
+ progressBarSub.Style = ProgressBarStyle.Marquee;\r
+ }\r
}\r
\r
#region NaGetTaskSet関連\r
private void onTaskSetRaised(object sender, NaGetTaskSetEventArgs e)\r
{\r
NaGetTaskSet taskSet = (NaGetTaskSet) sender;\r
- \r
- if (e.TaskProgressPercent >= 0) {\r
- progressBar.Value = (int) e.TaskProgressPercent;\r
- progressBar.Style = ProgressBarStyle.Continuous;\r
- } else {\r
- progressBar.Style = ProgressBarStyle.Marquee;\r
- }\r
- progressLabel.Text = e.TaskMessage ?? string.Empty;\r
+ NativeMethods.ProgressBarState progressState = NativeMethods.ProgressBarState.Normal;\r
\r
cancelButton.Enabled = taskSet.Running && taskSet.Cancelable;\r
\r
}\r
break;\r
case NaGetTaskSetEventType.STARTED_TASKSET:\r
- subtitleLabel.Text = taskSet.TaskSetNames[taskSet.CurrentTaskSetIndex];\r
+ progressLabel.Text = taskSet.TaskSetNames[taskSet.CurrentTaskSetIndex];\r
logBox.AppendText(" " + e.TaskMessage + System.Environment.NewLine);\r
break;\r
case NaGetTaskSetEventType.COMPLETED_TASKSET:\r
if (progressBarSub.Visible) progressBarSub.Hide();\r
if (progressSubLabel.Visible) progressSubLabel.Hide();\r
\r
- NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress色:ノーマル\r
+ progressState = NativeMethods.ProgressBarState.Normal;\r
\r
logBox.AppendText(string.Format(" ... 完了. [{0}%]", (int) e.TaskProgressPercent));\r
logBox.AppendText(System.Environment.NewLine);\r
logBox.AppendText(" [エラー] " + e.TaskMessage + System.Environment.NewLine);\r
logBox.SelectionColor = logBox.ForeColor;\r
\r
- NativeMethods.ProgressBar_SetState(progressBar, 2); // VistaProgress色:エラー\r
+ progressState = NativeMethods.ProgressBarState.Error;\r
\r
autoCloseCheckBox.Enabled = false;\r
okButton.Enabled = true;\r
logBox.AppendText(e.TaskMessage + System.Environment.NewLine);\r
logBox.SelectionColor = logBox.ForeColor;\r
\r
- NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress色:中断\r
+ progressState = NativeMethods.ProgressBarState.Error;\r
\r
autoCloseCheckBox.Enabled = false;\r
okButton.Enabled = true;\r
logBox.AppendText(" [エラー] " + e.TaskMessage + System.Environment.NewLine);\r
logBox.SelectionColor = logBox.ForeColor;\r
\r
+ progressState = NativeMethods.ProgressBarState.Error;\r
+ \r
autoCloseCheckBox.Enabled = false;\r
break;\r
}\r
\r
+ // タスクセット全体の進捗をプログレスバーに表示する\r
+ if (e.TaskProgressPercent >= 0) {\r
+ progressBar.Value = (int) e.TaskProgressPercent;\r
+ progressBar.Style = ProgressBarStyle.Continuous;\r
+ } else {\r
+ progressBar.Style = ProgressBarStyle.Marquee;\r
+ }\r
+ NativeMethods.ProgressBar_SetState(progressBar, progressState);\r
+ NativeMethods.ProgressBar_SetState(progressBarSub, progressState);\r
+ // タスクセット全体の進捗をタスクバーに表示する(Windows 7以降のみ)\r
+ if (e.TaskProgressPercent >= 0 && e.TaskProgressPercent < 100) {\r
+ NativeMethods.Form_SetTaskbarProgressParams(this, progressBar.Style, progressState, (ulong) e.TaskProgressPercent, 100);\r
+ } else {\r
+ NativeMethods.Form_SetTaskbarProgressParams(this, progressBar.Style, progressState, 0, 0);\r
+ }\r
+ \r
+ logBox.Select(logBox.TextLength, 0);\r
+ logBox.ScrollToCaret();\r
+ \r
if (taskSet.Done) {\r
if ((ActionOnDone & ActionOnDoneFlags.FlashWindow) != 0) {\r
NativeMethods.Form_FlashWindow(this,\r
public void StartTaskSet()\r
{\r
tasksetRunningThread = new Thread(taskSet.Run);\r
+ // スレッドをSTAにしないとCOMアクセスできず、ウイルススキャンができない。\r
+ tasksetRunningThread.SetApartmentState(ApartmentState.STA);\r
tasksetRunningThread.Start();\r
}\r
\r
if (taskSet != null && taskSet.Running && taskSet.Cancelable) {\r
cancelButton.Enabled = false;\r
\r
- NativeMethods.ProgressBar_SetState(progressBar, 3); // VistaProgress色:中断\r
+ NativeMethods.ProgressBar_SetState(progressBar, NativeMethods.ProgressBarState.Paused);\r
+ NativeMethods.Form_SetTaskbarProgressParams(this, progressBar.Style,NativeMethods.ProgressBarState.Paused, (ulong) progressBar.Value, (ulong) progressBar.Maximum);\r
\r
taskSet.Cancel();\r
}\r