OSDN Git Service

AppliStation,についてアップデート処理を新方式(NaGetUpdate2)に変更。
authorttp <ttp@users.sourceforge.jp>
Sat, 7 May 2011 02:43:13 +0000 (11:43 +0900)
committerttp <ttp@users.sourceforge.jp>
Sat, 7 May 2011 02:43:13 +0000 (11:43 +0900)
AppliStation/AppliStation.Util/ExecutionProgressViewer.cs
AppliStation/PackageListViewForm.cs

index 7192d91..3dbd187 100644 (file)
@@ -42,6 +42,8 @@ namespace AppliStation.Util
                        toolTip.SetToolTip(autoCloseCheckBox,\r
                                           string.Format("エラーがなく正常に終了した場合、{0}秒後に自動的にこのダイアログを閉じます", autoCloseTimer.Interval/1000));\r
                }\r
+               \r
+               #region Downloader関連\r
                                \r
                private void onDownloadEvent(object sender, DownloadEventArgs a)\r
                {\r
@@ -84,6 +86,8 @@ namespace AppliStation.Util
                        }\r
                }\r
                \r
+               #endregion\r
+               \r
                #region NaGetTaskSet関連\r
                \r
                private void onTaskEventRaised(object sender, TaskEventArgs e)\r
@@ -183,6 +187,46 @@ namespace AppliStation.Util
                        }\r
                }\r
                \r
+               private void onSubTaskEventRaised(object sender, TaskEventArgs e)\r
+               {\r
+                       switch (e.Type) {\r
+                               case TaskEventType.STARTED:\r
+                                       progressSubLabel.Text = e.TaskMessage;\r
+                                       \r
+                                       progressBarSub.Visible = true;\r
+                                       progressSubLabel.Visible = true;\r
+                                       break;\r
+                               case TaskEventType.PING:\r
+                                       progressSubLabel.Text = e.TaskMessage;\r
+                                       break;\r
+                               case TaskEventType.COMPLETED:\r
+                                       progressBarSub.Visible = false;\r
+                                       progressSubLabel.Visible = false;\r
+                                       break;\r
+                               case TaskEventType.WARNING:\r
+                                       logBox.SelectionColor = System.Drawing.Color.Red;\r
+                                       logBox.AppendText("   [エラー] " + e.TaskMessage + System.Environment.NewLine);\r
+                                       logBox.SelectionColor = logBox.ForeColor;\r
+                                       break;\r
+                               case TaskEventType.ERROR:\r
+                                       progressBarSub.Visible = false;\r
+                                       progressSubLabel.Visible = false;\r
+                                       \r
+                                       logBox.SelectionColor = System.Drawing.Color.Red;\r
+                                       logBox.AppendText("   [エラー] " + e.TaskMessage + System.Environment.NewLine);\r
+                                       logBox.SelectionColor = logBox.ForeColor;\r
+                                       break;\r
+                       }\r
+                       \r
+                       // ダウンロードの進捗を表示\r
+                       if (e.ProgressPercent >= 0) {\r
+                               progressBarSub.Value = (int) e.ProgressPercent;\r
+                               progressBarSub.Style = ProgressBarStyle.Continuous;\r
+                       } else {\r
+                               progressBarSub.Style = ProgressBarStyle.Marquee;\r
+                       }\r
+               }\r
+               \r
                private NaGetTaskQueryResult onTaskQueryRaised(object sender, NaGetTaskQueryArgs e)\r
                {\r
                        MessageBoxButtons buttons = MessageBoxButtons.OKCancel;\r
@@ -222,9 +266,20 @@ namespace AppliStation.Util
                                }\r
                        };\r
                        \r
-                       System.Reflection.PropertyInfo fDownloader = taskSet.GetType().GetProperty("Downloader");\r
-                       if (fDownloader != null && (fDownloader.PropertyType == typeof(Downloader))) {\r
-                               ((Downloader) fDownloader.GetValue(taskSet, null)).DownloadEventRaised += onDownloadEvent;\r
+                       NaGetTaskSet2 taskSet2 = taskSet as NaGetTaskSet2;\r
+                       if (taskSet2 != null) {\r
+                               taskSet2.SubTaskEventRaised += delegate(object sender, TaskEventArgs e) {\r
+                                       if (InvokeRequired) {\r
+                                               Invoke(new EventHandler<TaskEventArgs>(onSubTaskEventRaised), sender, e);\r
+                                       } else {\r
+                                               onSubTaskEventRaised(sender, e);\r
+                                       }\r
+                               };\r
+                       } else { // 古いコード\r
+                               System.Reflection.PropertyInfo fDownloader = taskSet.GetType().GetProperty("Downloader");\r
+                               if (fDownloader != null && (fDownloader.PropertyType == typeof(Downloader))) {\r
+                                       ((Downloader) fDownloader.GetValue(taskSet, null)).DownloadEventRaised += onDownloadEvent;\r
+                               }\r
                        }\r
                        \r
                        taskSet.TaskQueryRaised += onTaskQueryRaised;\r
index e348e6f..6bba833 100644 (file)
@@ -232,7 +232,7 @@ namespace AppliStation
                {\r
                        AppliStation.Util.ExecutionProgressViewer prog = new AppliStation.Util.ExecutionProgressViewer();\r
                        prog.Shown += delegate(object sender2, EventArgs e2) {\r
-                               NaGet.SubCommands.NaGetUpdate tasks = new NaGet.SubCommands.NaGetUpdate(pkgListsMan, downloadPackageListsFlag);\r
+                               NaGet.SubCommands.NaGetUpdate2 tasks = new NaGet.SubCommands.NaGetUpdate2(pkgListsMan, downloadPackageListsFlag);\r
                                prog.SetTaskSet(tasks);\r
                                prog.Refresh();\r
                                prog.StartTaskSet();\r