OSDN Git Service

AppliStation-GUI,とりあえずサイレントインストールをサポート
[applistation/AppliStation.git] / AppliStation / InstallationConfirmForm.cs
index 5fc8f4b..13f812f 100644 (file)
@@ -58,14 +58,20 @@ namespace AppliStation
                                foreach (Installation inst in installations) {\r
                                        Package pkg = inst.InstalledPackage;\r
                                        \r
+                                       string[] itemData = new string[instsListView.Columns.Count];\r
+                                       itemData[nameColumnHeader.Index] = pkg.Name;\r
+                                       \r
                                        Package curPkg = null;\r
                                        if (pkgListMan != null) {       \r
-                                               curPkg = pkgListMan.InstalledPkgList.GetPackageForName(pkg.Name);\r
-                                               if (curPkg == null) curPkg = pkgListMan.SystemInstalledPkgList.GetPackageForName(pkg.Name);\r
+                                               curPkg = pkgListMan.InstalledPkgList.GetPackageForName(pkg.Name) ??\r
+                                                       pkgListMan.SystemInstalledPkgList.GetPackageForName(pkg.Name);\r
                                        }\r
-                                       string curVersion = (curPkg == null)? "-" : curPkg.Version;\r
+                                       itemData[versionColumnHeader.Index]        = pkg.Version;\r
+                                       itemData[currentVersionColumnHeader.Index] = (curPkg != null)? curPkg.Version : "-";\r
+                                       \r
+                                       itemData[instOptsColumnHeader.Index] = inst.Silent? "\83T\83C\83\8c\83\93\83g" : string.Empty;\r
                                        \r
-                                       ListViewItem item = new ListViewItem(new string[]{pkg.Name, pkg.Version, curVersion});\r
+                                       ListViewItem item = new ListViewItem(itemData);\r
                                        item.Tag = inst;\r
                                        item.ToolTipText = pkg.Summary;\r
                                        item.Checked = true;\r
@@ -120,9 +126,42 @@ namespace AppliStation
                                \r
                void InstsListViewContextMenuStripOpening(object sender, System.ComponentModel.CancelEventArgs e)\r
                {\r
-                       System.Windows.Forms.ListView.CheckedIndexCollection coll = instsListView.CheckedIndices;\r
-                       selectAllPackagesStripMenuItem.Enabled = coll.Count < instsListView.Items.Count;\r
-                       unselectAllPackagesStripMenuItem.Enabled = coll.Count > 0;\r
+                       System.Windows.Forms.ListView.CheckedIndexCollection  chkIdxes = instsListView.CheckedIndices;\r
+                       System.Windows.Forms.ListView.SelectedIndexCollection selIdxes = instsListView.SelectedIndices;\r
+                       \r
+                       silentInstallStripMenuItem.Visible = selIdxes.Count > 0;\r
+                       if (selIdxes.Count > 0) {\r
+                               Installation inst0th = ((Installation) instsListView.Items[selIdxes[0]].Tag);\r
+                               bool bChecked = inst0th.Silent;\r
+                               bool bEnabled = (inst0th.IsSupportsSilent && (!inst0th.SupportsSilentOnly));\r
+                               silentInstallStripMenuItem.Checked = bChecked;\r
+                               silentInstallStripMenuItem.Enabled = bEnabled;\r
+                               \r
+                               for (int i = 1; i < selIdxes.Count; i++) {\r
+                                       Installation inst = ((Installation) instsListView.Items[selIdxes[i]].Tag);\r
+                                       \r
+                                       if ( (bChecked != inst.Silent) ||\r
+                                           (bEnabled != (inst.IsSupportsSilent && (!inst.SupportsSilentOnly))) ) {\r
+                                               silentInstallStripMenuItem.CheckState = CheckState.Indeterminate;\r
+                                               silentInstallStripMenuItem.Enabled = false;\r
+                                               break;\r
+                                       }\r
+                               }\r
+                       }\r
+                       instListToolStripSeparator.Visible = selIdxes.Count > 0;\r
+               \r
+                       \r
+                       selectAllInstsStripMenuItem.Enabled = chkIdxes.Count < instsListView.Items.Count;\r
+                       unselectAllInstsStripMenuItem.Enabled = chkIdxes.Count > 0;\r
+               }\r
+               \r
+               void SilentInstallStripMenuItemClick(object sender, EventArgs e)\r
+               {\r
+                       bool silent = ! silentInstallStripMenuItem.Checked;\r
+                       foreach (ListViewItem item in instsListView.CheckedItems) {\r
+                               ((Installation) item.Tag).Silent = silent;\r
+                       }\r
+                       updateInstsListView();\r
                }\r
                                \r
                void SelectAllInstsStripMenuItemClick(object sender, EventArgs e)\r
@@ -207,7 +246,5 @@ namespace AppliStation
                }\r
                \r
                #endregion\r
-\r
-\r
        }\r
 }\r