Ejemplo n.º 1
0
        private void SaveKeyboardLayoutList()
        {
            int idxFilename = lvLayouts.Columns.IndexOf(colFileName);
            int idxDisplay = lvLayouts.Columns.IndexOf(colDisplayText);
            int idxHotkey = lvLayouts.Columns.IndexOf(colHotkey);

            KeyboardLayoutList keyboardList = new KeyboardLayoutList();
            foreach (ListViewItem lvi in lvLayouts.Items)
            {
                keyboardList.Add(new KeyboardLayout(
                    lvi.SubItems[idxFilename].Text,
                    lvi.SubItems[idxDisplay].Text,
                    lvi.SubItems[idxHotkey].Text,
                    lvi.Group.Name == "Enabled"));
            }

            FileStream fs = null;
            System.Xml.XmlWriter writer = null;

            try
            {
                fs = new FileStream(layoutXMLFile, FileMode.Create);

                System.Xml.XmlWriterSettings settings = new System.Xml.XmlWriterSettings();
                settings.Indent = true;
                settings.IndentChars = ("    ");
                writer = System.Xml.XmlWriter.Create(fs, settings);

                writer.WriteStartElement("Layouts");
                keyboardList.WriteXml(writer);
                writer.WriteEndElement();
            }
            catch (UnauthorizedAccessException)
            {
                AskToRunAsAdministrator("Access is denied and failed to save keyboard layouts list. Do you want to run KeyMagic as administrator?");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                if (writer != null) writer.Close();
                if (fs != null) fs.Close();
            }
        }