OSDN Git Service

WinGui:
authorsr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 30 Oct 2008 23:48:35 +0000 (23:48 +0000)
committersr55 <sr55@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 30 Oct 2008 23:48:35 +0000 (23:48 +0000)
- Improved the code which remembers the expanded/collapsed states of each treeview node (presets bar)

git-svn-id: svn://localhost/HandBrake/trunk@1886 b64f7644-9d1e-0410-96f1-a4d463321fa5

win/C#/frmMain.cs

index d3595e4..f7733a1 100644 (file)
@@ -237,6 +237,8 @@ namespace Handbrake
                 MessageBox.Show("Unable to load the presets.dat file. Please select \"Update Built-in Presets\" from the Presets Menu \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
             else\r
                 MessageBox.Show("Presets have been updated!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
+\r
+            treeView_presets.ExpandAll();\r
         }\r
         private void mnu_delete_preset_Click(object sender, EventArgs e)\r
         {\r
@@ -265,8 +267,15 @@ namespace Handbrake
         }\r
         private void btn_new_preset_Click(object sender, EventArgs e)\r
         {\r
+            // Remember each nodes expanded status so we can reload it\r
+            List<Boolean> nodeStatus = saveTreeViewState();\r
+            nodeStatus.Add(true);\r
+\r
             Form preset = new frmAddPreset(this, queryGen.GenerateTheQuery(this), presetHandler);\r
             preset.ShowDialog();\r
+\r
+            // Now reload the TreeView states\r
+            loadTreeViewStates(nodeStatus);\r
         }\r
         #endregion\r
 \r
@@ -323,30 +332,19 @@ namespace Handbrake
                 presetHandler.remove(treeView_presets.SelectedNode.Text);\r
 \r
                 // Remember each nodes expanded status so we can reload it\r
-                List<Boolean> nodeStatus = new List<Boolean>();\r
-                foreach (TreeNode node in treeView_presets.Nodes)\r
-                {\r
-                    nodeStatus.Add(node.IsExpanded);\r
-                }\r
+                List<Boolean> nodeStatus = saveTreeViewState();\r
 \r
+                // Now reload the preset panel\r
                 loadPresetPanel();\r
 \r
-                int i = 0;\r
-                foreach (TreeNode node in treeView_presets.Nodes)\r
-                {\r
-                    if (nodeStatus[i] == true)\r
-                        node.Expand();\r
-\r
-                    i++;\r
-                }\r
+                // Now reload the TreeView states\r
+                loadTreeViewStates(nodeStatus);\r
             }\r
             treeView_presets.Select();\r
         }\r
         #endregion\r
 \r
-\r
         // MainWindow Components, Actions and Functions ***********************\r
-\r
         #region Actions\r
 \r
         // ToolBar\r
@@ -1405,24 +1403,15 @@ namespace Handbrake
         private void btn_addPreset_Click(object sender, EventArgs e)\r
         {\r
             // Remember each nodes expanded status so we can reload it\r
-            List<Boolean> nodeStatus = new List<Boolean>();\r
-            foreach (TreeNode node in treeView_presets.Nodes)\r
-                nodeStatus.Add(node.IsExpanded);\r
+            List<Boolean> nodeStatus = saveTreeViewState();\r
             nodeStatus.Add(true);\r
 \r
             // Now add the new preset\r
             Form preset = new frmAddPreset(this, queryGen.GenerateTheQuery(this), presetHandler);\r
             preset.ShowDialog();\r
 \r
-            // And finally, re-expand any of the nodes if required\r
-            int i = 0;\r
-            foreach (TreeNode node in treeView_presets.Nodes)\r
-            {\r
-                if (nodeStatus[i] == true)\r
-                    node.Expand();\r
-\r
-                i++;\r
-            }\r
+            // Now reload the TreeView states\r
+            loadTreeViewStates(nodeStatus);\r
         }\r
         private void btn_removePreset_Click(object sender, EventArgs e)\r
         {\r
@@ -1433,22 +1422,13 @@ namespace Handbrake
                     presetHandler.remove(treeView_presets.SelectedNode.Text);\r
                \r
                 // Remember each nodes expanded status so we can reload it\r
-                List<Boolean> nodeStatus = new List<Boolean>();\r
-                foreach (TreeNode node in treeView_presets.Nodes)\r
-                    nodeStatus.Add(node.IsExpanded);\r
+                List<Boolean> nodeStatus = saveTreeViewState();\r
 \r
                 // Now reload the preset panel\r
                 loadPresetPanel();\r
 \r
-                // And finally, re-expand any of the nodes if required\r
-                int i = 0;\r
-                foreach (TreeNode node in treeView_presets.Nodes)\r
-                {\r
-                    if (nodeStatus[i] == true)\r
-                        node.Expand();\r
-\r
-                    i++;\r
-                }\r
+                // Now reload the TreeView states\r
+                loadTreeViewStates(nodeStatus);\r
             }\r
             treeView_presets.Select();\r
         }\r
@@ -1515,6 +1495,40 @@ namespace Handbrake
 \r
         #endregion\r
 \r
+        #region Preset Expand / Collaspe\r
+        private List<Boolean> saveTreeViewState()\r
+        {\r
+            // Remember each nodes expanded status so we can reload it\r
+            List<Boolean> nodeStatus = new List<Boolean>();\r
+            foreach (TreeNode node in treeView_presets.Nodes)\r
+            {\r
+                nodeStatus.Add(node.IsExpanded);\r
+                foreach (TreeNode subNode in node.Nodes)\r
+                    nodeStatus.Add(node.IsExpanded);\r
+            }\r
+            return nodeStatus;\r
+        }\r
+\r
+        private void loadTreeViewStates(List<Boolean> nodeStatus)\r
+        {\r
+            // And finally, re-expand any of the nodes if required\r
+            int i = 0;\r
+            foreach (TreeNode node in treeView_presets.Nodes)\r
+            {\r
+                if (nodeStatus[i] == true)\r
+                    node.Expand();\r
+\r
+                foreach (TreeNode subNode in node.Nodes)\r
+                {\r
+                    if (nodeStatus[i] == true)\r
+                        subNode.Expand();\r
+                }\r
+\r
+                i++;\r
+            }\r
+        }\r
+        #endregion\r
+\r
         #region Functions\r
         private void loadNormalPreset()\r
         {\r