OSDN Git Service

AppliStation-GUI,ListViewのちらつき防止。
[applistation/AppliStation.git] / AppliStation / InstallationConfirmForm.cs
index 1cf8311..9cc7f04 100644 (file)
@@ -53,8 +53,13 @@ namespace AppliStation
                                runasCheckBox.Checked = false;\r
                                runasCheckBox.Visible = false;\r
                        }\r
+                       AppliStation.Util.NativeMethods.ListView_EnableVistaExplorerTheme(instsListView);\r
+                       AppliStation.Util.NativeMethods.ListView_SetDoubleBuffer(instsListView, true);\r
                }\r
                \r
+               /// <summary>\r
+               /// インストールリストを更新したなどで、リストの表示を更新する\r
+               /// </summary>\r
                private void updateInstsListView()\r
                {\r
                        instsListView.Items.Clear();\r
@@ -73,17 +78,13 @@ namespace AppliStation
                                        }\r
                                        itemData[versionColumnHeader.Index]        = pkg.Version;\r
                                        itemData[currentVersionColumnHeader.Index] = (curPkg != null)? curPkg.Version : "-";\r
-                                       \r
-                                       itemData[silentInstColumnHeader.Index]     = \r
-                                               (inst.SupportsSilentOnly)? "サイレントインストールのみサポート" :\r
-                                               (inst.Silent)? "サイレントインストール" :\r
-                                               (inst.IsSupportsSilent)? "手動でインストール" :\r
-                                               "サイレントインストールできませんので、手動でインストールします";\r
+                                       // itemData[silentInstColumnHeader.Index] の設定は instViewUpdateSilentInstallView で\r
                                        \r
                                        ListViewItem item = new ListViewItem(itemData);\r
                                        item.Tag = inst;\r
                                        item.ToolTipText = pkg.Summary;\r
                                        item.Checked = true;\r
+                                       instViewUpdateSilentInstallView(item);\r
                                        \r
                                        instsListView.Items.Add(item);\r
                                }\r
@@ -93,6 +94,20 @@ namespace AppliStation
                        instsListView.Refresh();\r
                }\r
                \r
+               /// <summary>\r
+               /// アイテムのサイレントインストール部分の表示の更新を行う。\r
+               /// </summary>\r
+               /// <param name="item">対象のインストーラのリストアイテム</param>\r
+               private void instViewUpdateSilentInstallView(ListViewItem item)\r
+               {\r
+                       Installation inst = (Installation) item.Tag;\r
+                       item.SubItems[silentInstColumnHeader.Index].Text =\r
+                               (inst.SupportsSilentOnly)? "サイレントインストールのみサポート" :\r
+                               (inst.Silent)? "サイレントインストール" :\r
+                               (inst.IsSupportsSilent)? "手動でインストール" :\r
+                               "サイレントインストールできませんので、手動でインストールします";\r
+               }\r
+               \r
                #region instsListViewのオーナードドロー関連\r
                \r
                void InstsListViewDrawSubItem(object sender, DrawListViewSubItemEventArgs e)\r
@@ -210,10 +225,10 @@ namespace AppliStation
                void SilentInstallStripMenuItemClick(object sender, EventArgs e)\r
                {\r
                        bool silent = ! silentInstallStripMenuItem.Checked;\r
-                       foreach (ListViewItem item in instsListView.CheckedItems) {\r
+                       foreach (ListViewItem item in instsListView.SelectedItems) {\r
                                ((Installation) item.Tag).Silent = silent;\r
+                               instViewUpdateSilentInstallView(item);\r
                        }\r
-                       updateInstsListView();\r
                }\r
                                \r
                void SelectAllInstsStripMenuItemClick(object sender, EventArgs e)\r