152 lines
5.8 KiB
C#
152 lines
5.8 KiB
C#
using ModVersionChecker.managers.interfaces;
|
|
using ModVersionChecker.model;
|
|
|
|
namespace ModVersionChecker.ui.forms
|
|
{
|
|
public class GlobalConfigForm : Form
|
|
{
|
|
private IConfigRepository _configManager;
|
|
private Config _config;
|
|
|
|
private Label _millislabel, _checkStartupLabel, _runOnStartupLabel;
|
|
private TrackBar _millisField;
|
|
private CheckBox _checkStartupField, _runOnStartupField;
|
|
private Button _saveButton, _cancelButton;
|
|
private TableLayoutPanel _mainLayout, _configsPanel;
|
|
private FlowLayoutPanel _buttonPanel;
|
|
|
|
public GlobalConfigForm(IConfigRepository configManager)
|
|
{
|
|
_configManager = configManager;
|
|
_config = _configManager.GetConfig();
|
|
this.Load += GlobalConfigForm_Load;
|
|
}
|
|
|
|
private void GlobalConfigForm_Load(object sender, EventArgs e)
|
|
{
|
|
// Load existing configurations if needed
|
|
|
|
InitializeComponent();
|
|
|
|
}
|
|
|
|
private void InitializeComponent()
|
|
{
|
|
SuspendLayout();
|
|
|
|
ClientSize = new System.Drawing.Size(600, 250);
|
|
Name = "GlobalConfigForm";
|
|
Text = "Global Configuration";
|
|
StartPosition = FormStartPosition.CenterParent;
|
|
Padding = new Padding(10, 20, 10, 20 );
|
|
_mainLayout = GetMainLayout();
|
|
_configsPanel = GetConfigsPanel();
|
|
|
|
_buttonPanel = GetButtonsPanel();
|
|
|
|
_mainLayout.Controls.Add(_configsPanel, 0, 0);
|
|
_mainLayout.Controls.Add(_buttonPanel, 0, 1);
|
|
|
|
Controls.Add(_mainLayout);
|
|
|
|
|
|
ResumeLayout(false);
|
|
|
|
|
|
}
|
|
|
|
private FlowLayoutPanel GetButtonsPanel()
|
|
{
|
|
var buttonsPanel = new FlowLayoutPanel { FlowDirection = FlowDirection.RightToLeft, AutoSize = true, Dock = DockStyle.Fill };
|
|
_saveButton = new Button { Text = "Save", AutoSize = true };
|
|
_saveButton.Click += (sender, e) =>
|
|
{
|
|
_config.IntervalMinutes = _millisField.Value;
|
|
_config.CheckOnStartup = _checkStartupField.Checked;
|
|
_config.RunOnStartup = _runOnStartupField.Checked;
|
|
_configManager.Save(_config);
|
|
DialogResult = DialogResult.OK;
|
|
UpdateStartupSetting(_config.RunOnStartup);
|
|
Close();
|
|
};
|
|
_cancelButton = new Button { Text = "Cancel", AutoSize = true };
|
|
_cancelButton.Click += (sender, e) =>
|
|
{
|
|
DialogResult = DialogResult.Cancel;
|
|
Close();
|
|
};
|
|
buttonsPanel.Controls.Add(_saveButton);
|
|
buttonsPanel.Controls.Add(_cancelButton);
|
|
return buttonsPanel;
|
|
}
|
|
|
|
private TableLayoutPanel GetConfigsPanel()
|
|
{
|
|
// Initialize the configurations panel
|
|
var configsPanel = new TableLayoutPanel
|
|
{
|
|
AutoSize = true,
|
|
Dock = DockStyle.Fill,
|
|
ColumnCount = 2,
|
|
RowCount = 2,
|
|
ColumnStyles = { new ColumnStyle(SizeType.Absolute, 150), new ColumnStyle(SizeType.Percent, 100) }
|
|
};
|
|
|
|
_millislabel = new Label { Text = "Millis", Width = 150};
|
|
_millisField = new TrackBar { Minimum = 0, Maximum = 120, Value= _config.IntervalMinutes, Width = 300, TickStyle = TickStyle.None };
|
|
FlowLayoutPanel millisPanel = new FlowLayoutPanel { FlowDirection = FlowDirection.LeftToRight, AutoSize = true };
|
|
Label millisValue = new Label { Text = _millisField.Value.ToString() + " minutes", AutoSize = true, Padding = new Padding(10, 10, 0, 0) };
|
|
millisPanel.Controls.Add(_millisField);
|
|
millisPanel.Controls.Add(millisValue);
|
|
|
|
_millisField.Scroll += (sender, e) => { millisValue.Text = _millisField.Value.ToString() + " minutes"; };
|
|
|
|
_checkStartupLabel = new Label { Text = "Check on Application Start:", Width = 150 };
|
|
_checkStartupField = new CheckBox { Checked = _config.CheckOnStartup };
|
|
_runOnStartupLabel= new Label { Text = "Run on Windows Startup:", Width = 150 };
|
|
_runOnStartupField = new CheckBox { Checked = _config.RunOnStartup };
|
|
|
|
configsPanel.Controls.Add(_millislabel, 0, 0);
|
|
configsPanel.Controls.Add(millisPanel, 1, 0);
|
|
configsPanel.Controls.Add(_checkStartupLabel, 0, 1);
|
|
configsPanel.Controls.Add(_checkStartupField, 1, 1);
|
|
configsPanel.Controls.Add(_runOnStartupLabel, 0, 2);
|
|
configsPanel.Controls.Add(_runOnStartupField, 1, 2);
|
|
|
|
return configsPanel;
|
|
}
|
|
|
|
private TableLayoutPanel GetMainLayout()
|
|
{
|
|
// Initialize the main layout panel
|
|
var mainLayout = new TableLayoutPanel
|
|
{
|
|
Dock = DockStyle.Fill,
|
|
RowCount = 2,
|
|
ColumnCount = 1
|
|
};
|
|
mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 150)); // Paths panel height
|
|
mainLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 50)); // Button panel height
|
|
Controls.Add(mainLayout);
|
|
return mainLayout;
|
|
}
|
|
|
|
private void UpdateStartupSetting(bool runOnStartup)
|
|
{
|
|
using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run", true))
|
|
{
|
|
if (runOnStartup)
|
|
{
|
|
key?.SetValue("XintanalabsUpdateChecker", $"\"{Application.ExecutablePath}\"");
|
|
}
|
|
else
|
|
{
|
|
key?.DeleteValue("XintanalabsUpdateChecker", false); // Remove if unchecked
|
|
}
|
|
}
|
|
}
|
|
// Add methods and properties for global configuration management here
|
|
|
|
}
|
|
}
|