BF2Statistics.ScoreSettings.ExportSettingsMenuItem_Click C# (CSharp) Method

ExportSettingsMenuItem_Click() private method

private ExportSettingsMenuItem_Click ( object sender, EventArgs e ) : void
sender object
e EventArgs
return void
        private void ExportSettingsMenuItem_Click(object sender, EventArgs e)
        {
            // Warn the user about saved changes
            DialogResult res = MessageBox.Show(
                "Changes made since this window was opened will not reflect in the ScoringSettings.xml file "
                + "without reloading the saved changes. Would you like me to reload the last saved values?",
                "Reload Settings", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question
            );

            // Return if user cancels
            if (res == DialogResult.Cancel) return;

            // Show loading form
            LoadingForm.ShowScreen(this);

            // Reload settings!
            if (res == DialogResult.Yes && (!LoadConqFile() || !LoadCoopFile() || !LoadScoringCommon()))
            {
                LoadingForm.CloseForm();
                return;
            }

            try
            {
                // Define our file path and
                string file = Path.Combine(Paths.DocumentsFolder, "ScoringSettings.xml");

                // Generate our mappings
                Dictionary<string, string[]>[] types = { Scores, ConqScores, CoopScores };
                string[] names = { "general", "conquest", "coop" };

                // Create XML Settings
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.Indent = true;
                settings.IndentChars = "\t";
                settings.NewLineChars = Environment.NewLine;
                settings.NewLineHandling = NewLineHandling.Replace;

                // Write to file
                using (FileStream stream = File.Open(file, FileMode.Create))
                using (XmlWriter Writer = XmlWriter.Create(stream, settings))
                {
                    // Player Element
                    Writer.WriteStartDocument();

                    // Write editing warning
                    Writer.WriteComment(" Auto Generated :: Please DO NOT Edit Me! ");

                    // Begin
                    Writer.WriteStartElement("settings");

                    // Itterate through all setting catagories
                    for (int i = 0; i < 3; i++)
                    {
                        // Start general Element
                        Writer.WriteStartElement(names[i]);

                        // Add each scoring item to the XML
                        foreach (KeyValuePair<string, string[]> item in types[i])
                        {
                            // Open Row tag
                            Writer.WriteStartElement("item");
                            Writer.WriteAttributeString("name", item.Key);
                            Writer.WriteValue(item.Value[0]);
                            Writer.WriteEndElement();
                        }

                        // Close settings element
                        Writer.WriteEndElement();
                    }

                    // Close Tags and File
                    Writer.WriteEndElement();  // Close general Element
                    Writer.WriteEndDocument(); // End and Save file
                }

                // Notify user
                Notify.Show("Settings Exported", "Scoring settings were exported successfully!", AlertType.Success);
            }
            finally
            {
                LoadingForm.CloseForm();
            }
        }