62 lines
2.0 KiB
C#
62 lines
2.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Windows.Forms;
|
|
using Shadowsocks.Controller;
|
|
using Shadowsocks.Model;
|
|
using SimpleJson;
|
|
|
|
namespace Shadowsocks.View
|
|
{
|
|
public partial class StatisticsStrategyConfigurationForm: Form
|
|
{
|
|
private readonly ShadowsocksController _controller;
|
|
private StatisticsStrategyConfiguration _configuration;
|
|
|
|
public StatisticsStrategyConfigurationForm(ShadowsocksController controller)
|
|
{
|
|
if (controller == null) return;
|
|
InitializeComponent();
|
|
_controller = controller;
|
|
_controller.ConfigChanged += (sender, args) => LoadConfiguration();
|
|
LoadConfiguration();
|
|
Load += (sender, args) => InitData();
|
|
}
|
|
|
|
private void LoadConfiguration()
|
|
{
|
|
_configuration = _controller.StatisticsConfiguration
|
|
?? new StatisticsStrategyConfiguration();
|
|
if (_configuration.Calculations == null)
|
|
{
|
|
_configuration = new StatisticsStrategyConfiguration();
|
|
}
|
|
}
|
|
|
|
private void InitData()
|
|
{
|
|
bindingConfiguration.Add(_configuration);
|
|
foreach (var kv in _configuration.Calculations)
|
|
{
|
|
var calculation = new CalculationControl(kv.Key, kv.Value);
|
|
calculationContainer.Controls.Add(calculation);
|
|
}
|
|
}
|
|
|
|
private void CancelButton_Click(object sender, EventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
|
|
private void OKButton_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (CalculationControl calculation in calculationContainer.Controls)
|
|
{
|
|
_configuration.Calculations[calculation.Value] = calculation.Factor;
|
|
}
|
|
_controller?.SaveStrategyConfigurations(_configuration);
|
|
_controller?.UpdateStatisticsConfiguration(StatisticsEnabledCheckBox.Checked);
|
|
Close();
|
|
}
|
|
}
|
|
}
|