OSDN Git Service

na-get-lib,パフォーマンスチューニングなど(動作変更なし)
[applistation/AppliStation.git] / AppliStation / InstallationConfirmForm.cs
index 7c06074..3b7ed56 100644 (file)
@@ -12,10 +12,12 @@ namespace AppliStation
        /// </summary>\r
        public partial class InstallationConfirmForm : Form\r
        {\r
-               private Installation[] requiredInstallations = null;\r
-               \r
                private Installation[] selectedInstallations = null;\r
                \r
+               private Installation[] updateInstallations = null;\r
+               \r
+               private Installation[] requiredInstallations = null;\r
+               \r
                private PackageListsManager pkgListMan;\r
 \r
                public IEnumerable<Installation> Installations {\r
@@ -23,8 +25,22 @@ namespace AppliStation
                                return NaGet.Utils.MergeEnumerable<Installation>(requiredInstallations, selectedInstallations);\r
                        }\r
                        set {\r
+                               List<Installation> selectedInstList = new List<Installation>();\r
+                               List<Installation> updateInstList = new List<Installation>();\r
+                               \r
                                requiredInstallations = null;\r
-                               selectedInstallations = NaGet.Utils.IEnumerable2Array<Installation>(value);\r
+                               foreach (Installation inst in value) {\r
+                                       Package instPkg = pkgListMan.InstalledPkgList.GetPackageForName(inst.InstalledPackage.Name) ??\r
+                                               pkgListMan.SystemInstalledPkgList.GetPackageForName(inst.InstalledPackage.Name);\r
+                                       \r
+                                       if (instPkg != null) {\r
+                                               updateInstList.Add(inst);\r
+                                       } else {\r
+                                               selectedInstList.Add(inst);\r
+                                       }\r
+                               }\r
+                               selectedInstallations = selectedInstList.ToArray();\r
+                               updateInstallations = updateInstList.ToArray();\r
                                \r
                                updateInstsListView();\r
                        }\r
@@ -72,6 +88,7 @@ namespace AppliStation
                        \r
                        addInstsListItemPerGroup(requiredInstallations, instsListView.Groups["requires"], true);\r
                        addInstsListItemPerGroup(selectedInstallations, instsListView.Groups["install"], false);\r
+                       addInstsListItemPerGroup(updateInstallations, instsListView.Groups["update"], false);\r
                        \r
                        InstsListViewItemChecked(instsListView, null);\r
                        instsListView.Refresh();\r
@@ -105,6 +122,7 @@ namespace AppliStation
                                itemData[versionColumnHeader.Index]        = pkg.Version;\r
                                itemData[currentVersionColumnHeader.Index] = (curPkg != null)? curPkg.Version : "-";\r
                                // itemData[silentInstColumnHeader.Index] の設定は instViewUpdateSilentInstallView で\r
+                               itemData[pkgListNameColumnHeader.Index]    = pkg.PackageListName;\r
                                \r
                                ListViewItem item = new ListViewItem(itemData);\r
                                item.Tag = inst;\r