tbf/ProductionTracing/Forms/SettingsDlg.cs

127 lines
3.5 KiB
C#

///
/// Copyright (c) 2021 Sensus Slovensko a.s.
///
using System;
using System.Windows.Forms;
using ProductionTracing.Resources;
namespace ProductionTracing.Forms
{
public partial class SettingsDlg : Form
{
private LocalSettings ls;
public SettingsDlg()
{
InitializeComponent();
}
public SettingsDlg(LocalSettings localSettings)
{
InitializeComponent();
this.ls = localSettings;
}
void Localize()
{
Text = Strings.Settings;
languageLabel.Text = Strings.Language;
loginRequiredCheckBox.Text = Strings.User_login_is_required;
saveButton.Text = Strings.Save;
cancelButton.Text = Strings.Cancel;
connStrForTracingGroupBox.Text = Strings.Connection_string_tracing_DB;
connStrForUsersGroupBox.Text = Strings.Connection_string_users_DB;
}
private void SettingsDlg_Load(object sender, EventArgs e)
{
Localize();
if (ls == null) return;
languageComboBox.Items.Add("EN");
languageComboBox.Items.Add("ZH_CN");
languageComboBox.Items.Add("DE");
languageComboBox.Items.Add("SK");
languageComboBox.Text = ls.Language;
loginRequiredCheckBox.Checked = ls.IsUserLoginRequired;
tracingDBConnStringTextBox.Text = ls.ConnectionString;
usersDBConnStringTextBox.Text = ls.UsersDBConnString;
}
/// <summary>
/// Verifies UI content
/// </summary>
/// <returns>None-empty string (message) when invalid</returns>
string IsUIContentValid()
{
if (!languageComboBox.Items.Contains(languageComboBox.Text))
{
return "Invalid language";
}
return null;
}
/// <summary>
/// Updates settings, checks for differences compared to previous setrtings
/// </summary>
/// <returns>true when settings are different</returns>
bool UpdateSettings()
{
if (ls == null) return false;
bool isDifferent = false;
if (ls.Language != languageComboBox.Text)
{
ls.Language = languageComboBox.Text;
isDifferent = true;
}
if (ls.IsUserLoginRequired != loginRequiredCheckBox.Checked)
{
ls.IsUserLoginRequired = loginRequiredCheckBox.Checked;
isDifferent = true;
}
if (ls.ConnectionString != tracingDBConnStringTextBox.Text)
{
ls.ConnectionString = tracingDBConnStringTextBox.Text;
isDifferent = true;
}
if (ls.UsersDBConnString != usersDBConnStringTextBox.Text)
{
ls.UsersDBConnString = usersDBConnStringTextBox.Text;
isDifferent = true;
}
return isDifferent;
}
private void saveButton_Click(object sender, EventArgs e)
{
string message = IsUIContentValid();
if (string.IsNullOrEmpty(message))
{
UpdateSettings();
DialogResult = DialogResult.OK;
Close();
}
else
{
MessageBox.Show(message);
}
}
private void cancelButton_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
Close();
}
}
}