237 lines
7.9 KiB
C#
237 lines
7.9 KiB
C#
using AgroBase.Forms.IHM.Controls;
|
||
using AgroBase.Forms.IHM.Operacao.Parametros;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Drawing;
|
||
using System.Windows.Forms;
|
||
using static AgroBase.Models.Enums;
|
||
|
||
namespace AgroBase.Forms.IHM.Operacao
|
||
{
|
||
public partial class ucOperacaoParametros : UserControl
|
||
{
|
||
private readonly Dictionary<TipoAbaParametros, UserControl> _abas;
|
||
private TipoAbaParametros _abaAtual;
|
||
|
||
private readonly ucParametrosMovimento _ucMovimento;
|
||
private readonly ucParametrosDirecional _ucDirecional;
|
||
private readonly ucParametrosAtuador _ucAtuador;
|
||
private readonly ucParametrosMapa _ucMapa;
|
||
|
||
public event EventHandler RedefinirSolicitado;
|
||
public event EventHandler SalvarSolicitado;
|
||
public event EventHandler ModoOperacaoAlterado;
|
||
public event EventHandler RegistrarPosProcessamentoAlterado;
|
||
|
||
public ucOperacaoParametros()
|
||
{
|
||
InitializeComponent();
|
||
|
||
_ucMovimento = new ucParametrosMovimento();
|
||
_ucDirecional = new ucParametrosDirecional();
|
||
_ucAtuador = new ucParametrosAtuador();
|
||
_ucMapa = new ucParametrosMapa();
|
||
|
||
_abas = new Dictionary<TipoAbaParametros, UserControl>();
|
||
_abas.Add(TipoAbaParametros.Movimento, _ucMovimento);
|
||
_abas.Add(TipoAbaParametros.Direcional, _ucDirecional);
|
||
_abas.Add(TipoAbaParametros.Atuador, _ucAtuador);
|
||
_abas.Add(TipoAbaParametros.Mapa, _ucMapa);
|
||
|
||
ConfigurarSubControles();
|
||
ConfigurarEstadoInicial();
|
||
VincularEventos();
|
||
}
|
||
|
||
private void ConfigurarSubControles()
|
||
{
|
||
foreach (KeyValuePair<TipoAbaParametros, UserControl> item in _abas)
|
||
{
|
||
item.Value.Dock = DockStyle.Fill;
|
||
item.Value.Margin = Padding.Empty;
|
||
item.Value.Visible = false;
|
||
pnlConteudo.Controls.Add(item.Value);
|
||
}
|
||
}
|
||
|
||
private void ConfigurarEstadoInicial()
|
||
{
|
||
cmbModoOperacao.Items.Clear();
|
||
cmbModoOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
|
||
|
||
if (cmbModoOperacao.Items.Count > 1)
|
||
cmbModoOperacao.SelectedIndex = 1;
|
||
|
||
checkPosProcessamento.Checked = true;
|
||
AtualizarAparenciaCheck(checkPosProcessamento);
|
||
|
||
AbrirAba(TipoAbaParametros.Movimento);
|
||
}
|
||
|
||
private void VincularEventos()
|
||
{
|
||
btnAbaMovimento.Click += delegate { AbrirAba(TipoAbaParametros.Movimento); };
|
||
btnAbaDirecional.Click += delegate { AbrirAba(TipoAbaParametros.Direcional); };
|
||
btnAbaAtuador.Click += delegate { AbrirAba(TipoAbaParametros.Atuador); };
|
||
btnAbaMapa.Click += delegate { AbrirAba(TipoAbaParametros.Mapa); };
|
||
|
||
btnRedefinir.Click += delegate
|
||
{
|
||
if (RedefinirSolicitado != null)
|
||
RedefinirSolicitado(this, EventArgs.Empty);
|
||
};
|
||
|
||
btnSalvar.Click += delegate
|
||
{
|
||
if (SalvarSolicitado != null)
|
||
SalvarSolicitado(this, EventArgs.Empty);
|
||
};
|
||
|
||
cmbModoOperacao.SelectedIndexChanged += delegate
|
||
{
|
||
if (ModoOperacaoAlterado != null)
|
||
ModoOperacaoAlterado(this, EventArgs.Empty);
|
||
};
|
||
|
||
checkPosProcessamento.CheckedChanged += delegate
|
||
{
|
||
AtualizarAparenciaCheck(checkPosProcessamento);
|
||
|
||
if (RegistrarPosProcessamentoAlterado != null)
|
||
RegistrarPosProcessamentoAlterado(this, EventArgs.Empty);
|
||
};
|
||
}
|
||
|
||
private void AbrirAba(TipoAbaParametros aba)
|
||
{
|
||
_abaAtual = aba;
|
||
|
||
foreach (KeyValuePair<TipoAbaParametros, UserControl> item in _abas)
|
||
item.Value.Visible = item.Key == aba;
|
||
|
||
UserControl controleAtual;
|
||
if (_abas.TryGetValue(aba, out controleAtual))
|
||
{
|
||
controleAtual.BringToFront();
|
||
controleAtual.Visible = true;
|
||
}
|
||
|
||
AplicarEstadoBotaoAba(btnAbaMovimento, aba == TipoAbaParametros.Movimento);
|
||
AplicarEstadoBotaoAba(btnAbaDirecional, aba == TipoAbaParametros.Direcional);
|
||
AplicarEstadoBotaoAba(btnAbaAtuador, aba == TipoAbaParametros.Atuador);
|
||
AplicarEstadoBotaoAba(btnAbaMapa, aba == TipoAbaParametros.Mapa);
|
||
|
||
AtualizarDescricaoAba(aba);
|
||
}
|
||
|
||
private void AtualizarDescricaoAba(TipoAbaParametros aba)
|
||
{
|
||
switch (aba)
|
||
{
|
||
case TipoAbaParametros.Movimento:
|
||
lblDescricaoAba.Text = "Automação, assistências e velocidades de deslocamento";
|
||
break;
|
||
case TipoAbaParametros.Direcional:
|
||
lblDescricaoAba.Text = "Controle direcional, assistências, ângulo e velocidade";
|
||
break;
|
||
case TipoAbaParametros.Atuador:
|
||
lblDescricaoAba.Text = "Pulverizador, agitador, reservatório e critérios de atuação";
|
||
break;
|
||
case TipoAbaParametros.Mapa:
|
||
lblDescricaoAba.Text = "Mapa da operação, seleção de ruas e parâmetros de navegação";
|
||
break;
|
||
default:
|
||
lblDescricaoAba.Text = string.Empty;
|
||
break;
|
||
}
|
||
}
|
||
|
||
private static void AplicarEstadoBotaoAba(Button button, bool selecionado)
|
||
{
|
||
if (selecionado)
|
||
{
|
||
button.BackColor = Color.FromArgb(46, 31, 63);
|
||
button.ForeColor = Color.FromArgb(190, 121, 255);
|
||
button.FlatAppearance.BorderColor = Color.FromArgb(170, 90, 240);
|
||
}
|
||
else
|
||
{
|
||
button.BackColor = HmiTheme.Surface;
|
||
button.ForeColor = HmiTheme.TextMuted;
|
||
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||
}
|
||
}
|
||
|
||
private static void AtualizarAparenciaCheck(CheckBox check)
|
||
{
|
||
if (check.Checked)
|
||
{
|
||
check.Text = "✓";
|
||
check.ForeColor = HmiTheme.Success;
|
||
check.BackColor = Color.FromArgb(30, 90, 46);
|
||
check.FlatAppearance.BorderColor = HmiTheme.Success;
|
||
}
|
||
else
|
||
{
|
||
check.Text = "×";
|
||
check.ForeColor = HmiTheme.Danger;
|
||
check.BackColor = HmiTheme.Surface;
|
||
check.FlatAppearance.BorderColor = HmiTheme.Danger;
|
||
}
|
||
}
|
||
|
||
public string ModoOperacaoSelecionado
|
||
{
|
||
get { return Convert.ToString(cmbModoOperacao.SelectedItem); }
|
||
set
|
||
{
|
||
if (string.IsNullOrWhiteSpace(value))
|
||
return;
|
||
|
||
int index = cmbModoOperacao.FindStringExact(value);
|
||
if (index >= 0)
|
||
cmbModoOperacao.SelectedIndex = index;
|
||
}
|
||
}
|
||
|
||
public bool RegistrarPosProcessamento
|
||
{
|
||
get { return checkPosProcessamento.Checked; }
|
||
set { checkPosProcessamento.Checked = value; }
|
||
}
|
||
|
||
public TipoAbaParametros AbaAtual
|
||
{
|
||
get { return _abaAtual; }
|
||
}
|
||
|
||
public ucParametrosMovimento Movimento
|
||
{
|
||
get { return _ucMovimento; }
|
||
}
|
||
|
||
public ucParametrosDirecional Direcional
|
||
{
|
||
get { return _ucDirecional; }
|
||
}
|
||
|
||
public ucParametrosAtuador Atuador
|
||
{
|
||
get { return _ucAtuador; }
|
||
}
|
||
|
||
public ucParametrosMapa Mapa
|
||
{
|
||
get { return _ucMapa; }
|
||
}
|
||
}
|
||
|
||
public enum TipoAbaParametros
|
||
{
|
||
Movimento = 0,
|
||
Direcional = 1,
|
||
Atuador = 2,
|
||
Mapa = 3
|
||
}
|
||
}
|