// The InitializeComponent() call is required for Windows Forms designer support.\r
//\r
InitializeComponent();\r
+ \r
+ this.Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath);\r
+ toolTip.SetToolTip(autoCloseCheckBox,\r
+ string.Format("エラーがなく正常に終了した場合、{0}秒後に自動的にこのダイアログを閉じます", autoCloseTimer.Interval/1000));\r
}\r
\r
private void onDownloadEvent(object sender, DownloadEventArgs a)\r
{\r
NaGetTaskSet taskSet = (NaGetTaskSet) sender;\r
\r
+ bool isCursorPositionLast = logBox.SelectionStart >= logBox.TextLength-1;\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
\r
cancelButton.Enabled = taskSet.Running && taskSet.Cancelable;\r
\r
if (taskSet.Done) {\r
okButton.Enabled = true;\r
cancelButton.Enabled = false;\r
+ \r
+ // タスクが完了したらしばらく待って閉じるために、自動クローズタイマーを起動する\r
+ autoCloseTimer.Start();\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
\r
NativeMethods.ProgressBar_SetState(progressBar, 2); // VistaProgress色:エラー\r
\r
+ autoCloseCheckBox.Enabled = false;\r
okButton.Enabled = true;\r
cancelButton.Enabled = false;\r
break;\r
logBox.SelectionColor = logBox.ForeColor;\r
\r
NativeMethods.ProgressBar_SetState(progressBar, 1); // VistaProgress色:中断\r
+ NativeMethods.ProgressBar_SetState(progressBarSub, 1); // VistaProgress色:中断\r
\r
+ autoCloseCheckBox.Enabled = false;\r
okButton.Enabled = true;\r
cancelButton.Enabled = false;\r
break;\r
logBox.AppendText(" [エラー] " + e.TaskMessage + System.Environment.NewLine);\r
logBox.SelectionColor = logBox.ForeColor;\r
\r
+ NativeMethods.ProgressBar_SetState(progressBar, 2); // VistaProgress色:エラー\r
+ \r
+ autoCloseCheckBox.Enabled = false;\r
break;\r
}\r
\r
+ if (isCursorPositionLast && logBox.TextLength > 0) {\r
+ logBox.Select(logBox.TextLength-1, 0);\r
+ }\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
\r
void CancelButtonClickConcrete(object sender, EventArgs e)\r
{\r
+ autoCloseCheckBox.Enabled = false;\r
if (taskSet != null && taskSet.Running && taskSet.Cancelable) {\r
cancelButton.Enabled = false;\r
\r
{\r
this.BringToFront();\r
}\r
+ \r
+ void ExecutionProgressViewerFormClosed(object sender, FormClosedEventArgs e)\r
+ {\r
+ autoCloseTimer.Enabled = false;\r
+ }\r
+ \r
+ void AutoCloseTimerTick(object sender, EventArgs e)\r
+ {\r
+ autoCloseTimer.Stop();\r
+ \r
+ if (InvokeRequired) {\r
+ Invoke(new EventHandler(AutoCloseTimerTickConcrete), sender, e);\r
+ } else {\r
+ AutoCloseTimerTickConcrete(sender,e);\r
+ }\r
+ }\r
+ \r
+ void AutoCloseTimerTickConcrete(object sender, EventArgs e)\r
+ {\r
+ // autoCloseCheckBoxが有効(正常終了)かつチェックのときに限り、OKボタンを自動的にクリック\r
+ if (autoCloseCheckBox.Enabled && autoCloseCheckBox.Checked && okButton.Enabled) {\r
+ OkButtonClick(sender, e);\r
+ } else if (! autoCloseCheckBox.Enabled) {\r
+ // タイマーの時間がすぎて、そのとき自動で閉じないようにしていしてあるならば、手動で閉じるように\r
+ autoCloseCheckBox.Enabled = false;\r
+ }\r
+ }\r
}\r
}\r