using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms; using Netch.Models; using Netch.Utils; namespace Netch.Forms { public partial class Dummy { } partial class MainForm { /// init at private int _sizeHeight; private int _profileConfigurationHeight; private int _profileGroupboxHeight; private int _configurationGroupBoxHeight; private void InitProfile() { // Clear foreach (var button in ProfileButtons) button.Dispose(); ProfileButtons.Clear(); ProfileTable.ColumnStyles.Clear(); ProfileTable.RowStyles.Clear(); var numProfile = Global.Settings.ProfileCount; if (numProfile == 0) { // Hide Profile GroupBox, Change window size configLayoutPanel.RowStyles[2].SizeType = SizeType.Percent; configLayoutPanel.RowStyles[2].Height = 0; ProfileGroupBox.Visible = false; ConfigurationGroupBox.Size = new Size(ConfigurationGroupBox.Size.Width, _configurationGroupBoxHeight - _profileConfigurationHeight); Size = new Size(Size.Width, _sizeHeight - (_profileConfigurationHeight + _profileGroupboxHeight)); } else { // Load Profiles ProfileTable.ColumnCount = numProfile; while (Global.Settings.Profiles.Count < numProfile) { Global.Settings.Profiles.Add(new Profile()); } for (var i = 0; i < numProfile; ++i) { var b = new Button(); b.Click += ProfileButton_Click; b.Dock = DockStyle.Fill; b.Text = !Global.Settings.Profiles[i].IsDummy ? Global.Settings.Profiles[i].ProfileName : i18N.Translate("None"); ProfileTable.Controls.Add(b, i, 0); ProfileButtons.Add(b); } // equal column for (var i = 1; i <= ProfileTable.RowCount; i++) { ProfileTable.RowStyles.Add(new RowStyle(SizeType.Percent, 1)); } for (var i = 1; i <= ProfileTable.ColumnCount; i++) { ProfileTable.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 1)); } if (Size.Height == _sizeHeight) return; configLayoutPanel.RowStyles[2].SizeType = SizeType.AutoSize; ProfileGroupBox.Visible = true; ConfigurationGroupBox.Size = new Size(ConfigurationGroupBox.Size.Width, _configurationGroupBoxHeight); Size = new Size(Size.Width, _sizeHeight); } } private void LoadProfile(int index) { var p = Global.Settings.Profiles[index]; ProfileNameText.Text = p.ModeRemark; if (p.IsDummy) throw new Exception("Profile not found."); var server = ServerComboBox.Items.Cast().FirstOrDefault(s => s.Remark.Equals(p.ServerRemark)); var mode = ModeComboBox.Items.Cast().FirstOrDefault(m => m.Remark.Equals(p.ModeRemark)); if (server == null) { throw new Exception("Server not found."); } if (mode == null) { throw new Exception("Mode not found."); } ServerComboBox.SelectedItem = server; ModeComboBox.SelectedItem = mode; } private void SaveProfile(int index) { var selectedServer = (Server) ServerComboBox.SelectedItem; var selectedMode = (Models.Mode) ModeComboBox.SelectedItem; var name = ProfileNameText.Text; Global.Settings.Profiles[index] = new Profile(selectedServer, selectedMode, name); } private void RemoveProfile(int index) { Global.Settings.Profiles[index] = new Profile(); } private List