diff --git a/AgroBase/OperationControl/Services/GpsService.cs b/AgroBase/OperationControl/Services/GpsService.cs index c13bb1ea2..8ca9e514c 100644 --- a/AgroBase/OperationControl/Services/GpsService.cs +++ b/AgroBase/OperationControl/Services/GpsService.cs @@ -369,6 +369,7 @@ namespace OperationControl.Services Models.Variaveis.MostrarLog(mensagem); ((App)Application.Current)?.Shell?.Dock?._vm?._viewPreparacaoMapaBottom?._vm?.FinalizarFixacao(sucesso, mensagem); + ((App)Application.Current)?.Shell?.Dock?._vm?.FinalizarFixacaoBase(sucesso, mensagem); } private async Task ConfigurarModuloBase(string porta_usb = "com3", string porta_saida = "com2", int tempo_fixacao = 60) diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs index 4a939def3..91c804ab0 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs @@ -16,6 +16,7 @@ namespace OperationControl.ViewModels.Views.Operacao public ICommand AlternarOperacaoCommand { get; } public ICommand ParadaEmergenciaCommand { get; } public ICommand CancelarOperacaoCommand { get; } + private bool _operacaoPausada => (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Pausa ?? false); private bool _operacaoEmExecucao; public bool OperacaoEmExecucao { @@ -33,15 +34,15 @@ namespace OperationControl.ViewModels.Views.Operacao } } - public string TextoBotaoOperacao => OperacaoEmExecucao ? "⏸ Pausar Operação" : "▶ Iniciar Operação"; + public string TextoBotaoOperacao => _operacaoPausada ? "▶ Retomar Operação" : OperacaoEmExecucao ? "⏸ Pausar Operação" : "▶ Iniciar Operação"; public Brush CorBotaoOperacao => - OperacaoEmExecucao + OperacaoEmExecucao && !_operacaoPausada ? new SolidColorBrush(Color.FromRgb(120, 88, 20)) : new SolidColorBrush(Color.FromRgb(30, 90, 58)); public System.Windows.Media.Brush BordaBotaoOperacao => - OperacaoEmExecucao + OperacaoEmExecucao && !_operacaoPausada ? new SolidColorBrush(System.Windows.Media.Color.FromRgb(170, 130, 40)) : new SolidColorBrush(System.Windows.Media.Color.FromRgb(74, 138, 91)); @@ -279,6 +280,9 @@ namespace OperationControl.ViewModels.Views.Operacao OnPropertyChanged(nameof(CorRede)); OnPropertyChanged(nameof(CorGnss)); OnPropertyChanged(nameof(OperacaoEmExecucao)); + OnPropertyChanged(nameof(TextoBotaoOperacao)); + OnPropertyChanged(nameof(CorBotaoOperacao)); + OnPropertyChanged(nameof(BordaBotaoOperacao)); } private void AlternarOperacao() diff --git a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs index 7a91462ca..96c40845e 100644 --- a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs @@ -996,14 +996,20 @@ namespace OperationControl.ViewModels { var dadosMapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa(); var ruasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList() ?? new List(); + var rover = VariaveisControleOperacao.RoverEmFoco; - if (parametros.Modo == AgroBase.Models.Enums.ModoOperacao.MapaGPS && ((dadosMapa?.features?.Count ?? 0) == 0 || !ruasPercorrer.Any())) + if (rover?.DadosLeitura?.Operacao?.Modo != parametros.Modo && (rover?.DadosLeitura?.Operacao?.Iniciada ?? false)) + { + System.Windows.MessageBox.Show($"Já existe uma operação {rover?.DadosLeitura?.Operacao?.Modo ?? AgroBase.Models.Enums.ModoOperacao.NaoDefinido} em andamento. Finalize a operação atual para salvar os novos parametros.", "Mudança de Operação", MessageBoxButton.OK, MessageBoxImage.Warning); + return; + } + + if (!(rover?.DadosLeitura?.Operacao?.Iniciada ?? false) && parametros.Modo == AgroBase.Models.Enums.ModoOperacao.MapaGPS && ((dadosMapa?.features?.Count ?? 0) == 0 || !ruasPercorrer.Any())) { System.Windows.MessageBox.Show("Selecione as ruas no mapa onde o equipamento irá operar", "Ruas não selecionadas", MessageBoxButton.OK, MessageBoxImage.Warning); return; } - var rover = VariaveisControleOperacao.RoverEmFoco; if (rover == null) return; diff --git a/AgroBase/OperationControl/Views/Operacao/OperacaoLeftView.xaml b/AgroBase/OperationControl/Views/Operacao/OperacaoLeftView.xaml index a0213a582..dae77314b 100644 --- a/AgroBase/OperationControl/Views/Operacao/OperacaoLeftView.xaml +++ b/AgroBase/OperationControl/Views/Operacao/OperacaoLeftView.xaml @@ -208,7 +208,7 @@ Background="#7A1E1E" BorderBrush="#B83A3A"/> -