agrobot_base/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/ParametrizacaoViewModel.cs

94 lines
3.4 KiB
C#

using AgroBase.Models;
using AgroBase.Models.Operacoes;
using OperationControl.Controls;
using OperationControl.Helpers;
using OperationControl.Models;
using System.ComponentModel;
using System.Windows.Input;
namespace OperationControl.ViewModels.Views.Operacao.Monitoramento
{
public class ParametrizacaoViewModel : INotifyPropertyChanged
{
private OperacaoParametrosModel _parametros = new OperacaoParametrosModel();
public OperacaoParametrosModel Parametros
{
get => _parametros;
set
{
if (_parametros != value)
{
_parametros = value;
OnPropertyChanged(nameof(Parametros));
}
}
}
private bool _operacaoConcluida;
public bool OperacaoConcluida
{
get => _operacaoConcluida;
set
{
_operacaoConcluida = value;
OnPropertyChanged(nameof(OperacaoConcluida));
}
}
private AgroBase.Models.Enums.ModoOperacao? modoOperacaoAtual { get; set; }
public ParametrizacaoViewModel()
{
CarregarParametrosPadraoCommand = new RelayCommand(p => CarregarParametrosPadrao((AgroBase.Models.Enums.ModoOperacao)p));
LerParametrosCommand = new RelayCommand(_ => LerParametrosSolicitado?.Invoke());
SalvarParametrosCommand = new RelayCommand(_ => SalvarParametrosSolicitado?.Invoke(Parametros));
ReiniciarOperacaoCommand = new RelayCommand(_ => ReiniciarOperacao());
}
public event Action? LerParametrosSolicitado;
public event Action<OperacaoParametrosModel>? SalvarParametrosSolicitado;
public ICommand LerParametrosCommand { get; }
public ICommand SalvarParametrosCommand { get; }
public ICommand CarregarParametrosPadraoCommand { get; }
public ICommand ReiniciarOperacaoCommand { get; }
public Array ModosOperacaoDisponiveis { get; } = Enum.GetValues(typeof(AgroBase.Models.Enums.ModoOperacao));
private void CarregarParametrosPadrao(AgroBase.Models.Enums.ModoOperacao modo)
{
var p = OperacaoModel.CarregarParametrosOperacaoPadrao(modo, false);
modoOperacaoAtual = p.Modo;
p.Descricao = $"{p.Modo} - Padrão";
Parametros = p;
VariaveisControleOperacao.RoverEmFoco.Modo = modo;
}
private void ReiniciarOperacao()
{
VariaveisControleOperacao.EnviarComandoIniciarOperacao(false, false);
Models.Variaveis.Dock?._vm?._viewOperacaoCenter?.Mapa?.LimparPontosSelecionados();
}
public void AtualizarParametros(OperacaoParametrosModel origem)
{
if (origem == null) return;
Parametros = origem;
modoOperacaoAtual = origem.Modo;
OperacaoConcluida = (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? AgroBase.Models.Enums.StatusOperacao.NaoIniciado) == AgroBase.Models.Enums.StatusOperacao.Concluido;
}
public void ProcessarStreetMapClicked(MapViewControl.StreetMapClickedEventArgs e)
{
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string nome)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nome));
}
}
}