From 2bfc7e55467d8e274f3ab205ab5a56b43a404fab Mon Sep 17 00:00:00 2001 From: David Khachaturov Date: Sat, 18 Jan 2020 13:47:18 +0000 Subject: [PATCH] Fixed "Apply" not saving settings back to the config prooperly. --- BetterJoyForCemu/MainForm.Designer.cs | 60 +++++++++++++-------------- BetterJoyForCemu/MainForm.cs | 54 +++++++++++++++++------- BetterJoyForCemu/MainForm.resx | 3 -- 3 files changed, 68 insertions(+), 49 deletions(-) diff --git a/BetterJoyForCemu/MainForm.Designer.cs b/BetterJoyForCemu/MainForm.Designer.cs index 84865f7..b0a45a2 100644 --- a/BetterJoyForCemu/MainForm.Designer.cs +++ b/BetterJoyForCemu/MainForm.Designer.cs @@ -47,9 +47,9 @@ this.startInTrayBox = new System.Windows.Forms.CheckBox(); this.btn_open3rdP = new System.Windows.Forms.Button(); this.groupBox1 = new System.Windows.Forms.GroupBox(); - this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.settingsTable = new System.Windows.Forms.TableLayoutPanel(); this.rightPanel = new System.Windows.Forms.Panel(); - this.button1 = new System.Windows.Forms.Button(); + this.settingsApply = new System.Windows.Forms.Button(); this.AutoCalibrate = new System.Windows.Forms.Button(); this.contextMenu.SuspendLayout(); this.conCntrls.SuspendLayout(); @@ -273,7 +273,7 @@ // // groupBox1 // - this.groupBox1.Controls.Add(this.tableLayoutPanel1); + this.groupBox1.Controls.Add(this.settingsTable); this.groupBox1.Location = new System.Drawing.Point(3, 11); this.groupBox1.Margin = new System.Windows.Forms.Padding(2); this.groupBox1.Name = "groupBox1"; @@ -283,25 +283,25 @@ this.groupBox1.TabStop = false; this.groupBox1.Text = "Config"; // - // tableLayoutPanel1 + // settingsTable // - this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.settingsTable.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.tableLayoutPanel1.AutoScroll = true; - this.tableLayoutPanel1.ColumnCount = 2; - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.90411F)); - this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.09589F)); - this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 17); - this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(2); - this.tableLayoutPanel1.Name = "tableLayoutPanel1"; - this.tableLayoutPanel1.RowCount = 1; - this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle()); - this.tableLayoutPanel1.Size = new System.Drawing.Size(219, 219); - this.tableLayoutPanel1.TabIndex = 1; + this.settingsTable.AutoScroll = true; + this.settingsTable.ColumnCount = 2; + this.settingsTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58.90411F)); + this.settingsTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 41.09589F)); + this.settingsTable.Location = new System.Drawing.Point(4, 17); + this.settingsTable.Margin = new System.Windows.Forms.Padding(2); + this.settingsTable.Name = "settingsTable"; + this.settingsTable.RowCount = 1; + this.settingsTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.settingsTable.Size = new System.Drawing.Size(219, 219); + this.settingsTable.TabIndex = 1; // // rightPanel // - this.rightPanel.Controls.Add(this.button1); + this.rightPanel.Controls.Add(this.settingsApply); this.rightPanel.Controls.Add(this.groupBox1); this.rightPanel.Location = new System.Drawing.Point(289, 1); this.rightPanel.Margin = new System.Windows.Forms.Padding(2, 2, 12, 2); @@ -310,18 +310,18 @@ this.rightPanel.TabIndex = 11; this.rightPanel.Visible = false; // - // button1 + // settingsApply // - this.button1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.button1.Location = new System.Drawing.Point(165, 252); - this.button1.Margin = new System.Windows.Forms.Padding(2); - this.button1.Name = "button1"; - this.button1.Size = new System.Drawing.Size(61, 21); - this.button1.TabIndex = 10; - this.button1.Text = "Apply"; - this.button1.UseVisualStyleBackColor = true; - this.button1.Click += new System.EventHandler(this.button1_Click); + this.settingsApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.settingsApply.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.settingsApply.Location = new System.Drawing.Point(165, 252); + this.settingsApply.Margin = new System.Windows.Forms.Padding(2); + this.settingsApply.Name = "settingsApply"; + this.settingsApply.Size = new System.Drawing.Size(61, 21); + this.settingsApply.TabIndex = 10; + this.settingsApply.Text = "Apply"; + this.settingsApply.UseVisualStyleBackColor = true; + this.settingsApply.Click += new System.EventHandler(this.settingsApply_Click); // // AutoCalibrate // @@ -391,9 +391,9 @@ private System.Windows.Forms.CheckBox startInTrayBox; private System.Windows.Forms.Button btn_open3rdP; private System.Windows.Forms.GroupBox groupBox1; - private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.TableLayoutPanel settingsTable; private System.Windows.Forms.Panel rightPanel; - private System.Windows.Forms.Button button1; + private System.Windows.Forms.Button settingsApply; private System.Windows.Forms.Label foldLbl; private System.Windows.Forms.Button AutoCalibrate; } diff --git a/BetterJoyForCemu/MainForm.cs b/BetterJoyForCemu/MainForm.cs index eeda0e4..147a3b0 100644 --- a/BetterJoyForCemu/MainForm.cs +++ b/BetterJoyForCemu/MainForm.cs @@ -42,8 +42,8 @@ namespace BetterJoyForCemu { string[] myConfigs = ConfigurationManager.AppSettings.AllKeys; Size childSize = new Size(87, 20); for (int i = 0; i != myConfigs.Length; i++) { - tableLayoutPanel1.RowCount++; - tableLayoutPanel1.Controls.Add(new Label() { Text = myConfigs[i], TextAlign = ContentAlignment.BottomLeft, AutoEllipsis = true, Size = childSize }, 0, i); + settingsTable.RowCount++; + settingsTable.Controls.Add(new Label() { Text = myConfigs[i], TextAlign = ContentAlignment.BottomLeft, AutoEllipsis = true, Size = childSize }, 0, i); var value = ConfigurationManager.AppSettings[myConfigs[i]]; Control childControl; @@ -53,8 +53,8 @@ namespace BetterJoyForCemu { childControl = new TextBox() { Text = value, Size = childSize }; } - tableLayoutPanel1.Controls.Add(childControl, 1, i); childControl.MouseClick += cbBox_Changed; + settingsTable.Controls.Add(childControl, 1, i); } } @@ -229,7 +229,27 @@ namespace BetterJoyForCemu { partyForm.ShowDialog(); } - private void button1_Click(object sender, EventArgs e) { + private void settingsApply_Click(object sender, EventArgs e) { + var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); + var settings = configFile.AppSettings.Settings; + + for (int row = 0; row < ConfigurationManager.AppSettings.AllKeys.Length; row++) { + var valCtl = settingsTable.GetControlFromPosition(1, row); + var KeyCtl = settingsTable.GetControlFromPosition(0, row).Text; + + if (valCtl.GetType() == typeof(CheckBox) && settings[KeyCtl] != null) { + settings[KeyCtl].Value = ((CheckBox)valCtl).Checked.ToString().ToLower(); + } else if (valCtl.GetType() == typeof(TextBox) && settings[KeyCtl] != null) { + settings[KeyCtl].Value = ((TextBox)valCtl).Text.ToLower(); + } + } + + try { + configFile.Save(ConfigurationSaveMode.Modified); + } catch (ConfigurationErrorsException) { + AppendTextBox("Error writing app settings.\r\n"); + } + Application.Restart(); Environment.Exit(0); } @@ -250,29 +270,31 @@ namespace BetterJoyForCemu { } private void cbBox_Changed(object sender, EventArgs e) { - var coord = tableLayoutPanel1.GetPositionFromControl(sender as Control); + var coord = settingsTable.GetPositionFromControl(sender as Control); - var valCtl = tableLayoutPanel1.GetControlFromPosition(coord.Column, coord.Row); - var KeyCtl = tableLayoutPanel1.GetControlFromPosition(coord.Column - 1, coord.Row).Text; + var valCtl = settingsTable.GetControlFromPosition(coord.Column, coord.Row); + var KeyCtl = settingsTable.GetControlFromPosition(coord.Column - 1, coord.Row).Text; try { var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var settings = configFile.AppSettings.Settings; - if (sender.GetType() == typeof(CheckBox) && settings[KeyCtl] != null) { + if (valCtl.GetType() == typeof(CheckBox) && settings[KeyCtl] != null) { settings[KeyCtl].Value = ((CheckBox)valCtl).Checked.ToString().ToLower(); - } else if (sender.GetType() == typeof(TextBox) && settings[KeyCtl] != null) { + } else if (valCtl.GetType() == typeof(TextBox) && settings[KeyCtl] != null) { settings[KeyCtl].Value = ((TextBox)valCtl).Text.ToLower(); } - if(KeyCtl == "HomeLEDOn") { - bool on = settings[KeyCtl].Value.ToLower() == "true"; - foreach(Joycon j in Program.mgr.j) { - j.SetHomeLight(on); - } - } + + if (KeyCtl == "HomeLEDOn") { + bool on = settings[KeyCtl].Value.ToLower() == "true"; + foreach (Joycon j in Program.mgr.j) { + j.SetHomeLight(on); + } + } + configFile.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name); } catch (ConfigurationErrorsException) { - Console.WriteLine("Error writing app settings"); + AppendTextBox("Error writing app settings\r\n"); Trace.WriteLine(String.Format("rw {0}, column {1}, {2}, {3}", coord.Row, coord.Column, sender.GetType(), KeyCtl)); } } diff --git a/BetterJoyForCemu/MainForm.resx b/BetterJoyForCemu/MainForm.resx index 9457b0e..330d390 100644 --- a/BetterJoyForCemu/MainForm.resx +++ b/BetterJoyForCemu/MainForm.resx @@ -765,9 +765,6 @@ 247, 17 - - 247, 17 - AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA