OSDN Git Service

AppliStation-GUI,インストール確認ダイアログで依存関係のインストールのチェッ7を外せないようにした。
[applistation/AppliStation.git] / AppliStation / InstallationConfirmForm.cs
index 5b60704..4127c7a 100644 (file)
@@ -189,6 +189,8 @@ namespace AppliStation
                        System.Windows.Forms.ListView.CheckedListViewItemCollection checkeds = instsListView.CheckedItems;\r
                        \r
                        okButton.Enabled = (checkeds != null) && (checkeds.Count > 0);\r
+                       \r
+                       updateDependeciesIsNeeded();\r
                }\r
                                \r
                void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)\r
@@ -251,7 +253,7 @@ namespace AppliStation
                {\r
                        System.Threading.Thread thread = new System.Threading.Thread(\r
                                new System.Threading.ThreadStart(resolveDependecies));\r
-                       thread.Start();\r
+                       thread.Start(); \r
                }\r
                \r
                /// <summary>\r
@@ -270,7 +272,25 @@ namespace AppliStation
                                \r
                                requiredInstallations = dependencies;\r
                                \r
-                               updateInstsListView();\r
+                               if (InvokeRequired) {\r
+                                       Invoke(new MethodInvoker(updateInstsListView));\r
+                               } else {\r
+                                       updateInstsListView();\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               private void updateDependeciesIsNeeded()\r
+               {\r
+                       List<Package> pkg = new List<Package>();\r
+                       foreach (Installation inst in DependeciesResolver.CreateRequiresInstallations(CheckedInstallations, pkgListMan)) {\r
+                               pkg.Add(inst.InstalledPackage);\r
+                       }\r
+                       \r
+                       foreach (ListViewItem item in instsListView.Items) {\r
+                               if (pkg.IndexOf(((Installation) item.Tag).InstalledPackage) >= 0) {\r
+                                       item.Checked = true;\r
+                               }\r
                        }\r
                }\r
                \r