Merge branch 'produto' of http://zendioninc.com.br:3000/Zendion/agrobot_base into produto
This commit is contained in:
commit
00c9af952a
|
|
@ -22,6 +22,7 @@ namespace OperationControl.ViewModels
|
|||
public event PropertyChangedEventHandler? PropertyChanged;
|
||||
|
||||
public event Action<string, AgroBase.Models.Enums.TipoMapaOperacao>? CarregarMapaSolicitado;
|
||||
public event Action? EditarMapaSolicitado;
|
||||
|
||||
// Método, latitude, longitude, altitude, offset frontal cm, offset lateral cm
|
||||
public event Action<MetodoFixacaoBase, double?, double?, double?>? FixarBaseSolicitado;
|
||||
|
|
@ -62,6 +63,7 @@ namespace OperationControl.ViewModels
|
|||
};
|
||||
|
||||
public ICommand CarregarMapaCommand { get; }
|
||||
public ICommand EditarMapaCommand { get; }
|
||||
public ICommand FixarBaseCommand { get; }
|
||||
public ICommand AplicarOffsetCommand { get; }
|
||||
public ICommand UsarGnssMovelCommand { get; }
|
||||
|
|
@ -71,6 +73,7 @@ namespace OperationControl.ViewModels
|
|||
public PreparacaoMapaBottomViewModel()
|
||||
{
|
||||
CarregarMapaCommand = new RelayCommand(_ => ExecutarCarregarMapa(), _ => PodeCarregarMapa);
|
||||
EditarMapaCommand = new RelayCommand(_ => EditarMapaSolicitado?.Invoke(), _ => PodeEditarMapa);
|
||||
FixarBaseCommand = new RelayCommand(_ => ExecutarFixarBase(), _ => PodeFixarBase);
|
||||
AplicarOffsetCommand = new RelayCommand(_ => ExecutarAplicarOffset(), _ => PodeEditarOffsetBase);
|
||||
UsarGnssMovelCommand = new RelayCommand(_ => ExecutarUsarGnssMovel(), _ => PodeUsarGnssMovel);
|
||||
|
|
@ -120,13 +123,34 @@ namespace OperationControl.ViewModels
|
|||
|
||||
|
||||
private bool _mapaCarregado;
|
||||
private bool _edicaoMapaAtiva;
|
||||
|
||||
/// <summary>
|
||||
/// Enquanto o editor estiver aberto nesta etapa:
|
||||
/// - não trocamos o arquivo de mapa;
|
||||
/// - não navegamos para outra etapa;
|
||||
/// - não abrimos uma segunda sessão de edição.
|
||||
///
|
||||
/// Os controles de GNSS permanecem disponíveis porque
|
||||
/// o levantamento de borda pode depender do modo móvel.
|
||||
/// </summary>
|
||||
public bool EdicaoMapaAtiva =>
|
||||
_edicaoMapaAtiva;
|
||||
|
||||
public bool PodeEditarMapa =>
|
||||
_mapaCarregado &&
|
||||
!_edicaoMapaAtiva &&
|
||||
!FixacaoEmAndamento &&
|
||||
!AlteracaoPapelGnssEmAndamento;
|
||||
|
||||
public bool PodeContinuar =>
|
||||
_mapaCarregado &&
|
||||
!_edicaoMapaAtiva &&
|
||||
!FixacaoEmAndamento &&
|
||||
!AlteracaoPapelGnssEmAndamento;
|
||||
|
||||
public bool PodeVoltar =>
|
||||
!_edicaoMapaAtiva &&
|
||||
!FixacaoEmAndamento &&
|
||||
!AlteracaoPapelGnssEmAndamento;
|
||||
|
||||
|
|
@ -145,11 +169,51 @@ namespace OperationControl.ViewModels
|
|||
carregado;
|
||||
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeEditarMapa)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeContinuar)
|
||||
);
|
||||
}
|
||||
|
||||
public void DefinirEdicaoMapaAtiva(bool ativa)
|
||||
{
|
||||
if (
|
||||
_edicaoMapaAtiva ==
|
||||
ativa
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
_edicaoMapaAtiva =
|
||||
ativa;
|
||||
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(EdicaoMapaAtiva)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeEditarMapa)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeCarregarMapa)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeContinuar)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeVoltar)
|
||||
);
|
||||
}
|
||||
|
||||
private GnssPapelEstacao _papelGnssAtual = GnssPapelEstacao.Indefinido;
|
||||
public GnssPapelEstacao PapelGnssAtual
|
||||
{
|
||||
|
|
@ -248,6 +312,10 @@ namespace OperationControl.ViewModels
|
|||
nameof(PodeCarregarMapa)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeEditarMapa)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(PodeEditarMetodoFixacao)
|
||||
);
|
||||
|
|
@ -382,6 +450,7 @@ namespace OperationControl.ViewModels
|
|||
|
||||
OnPropertyChanged(nameof(FixacaoEmAndamento));
|
||||
OnPropertyChanged(nameof(PodeCarregarMapa));
|
||||
OnPropertyChanged(nameof(PodeEditarMapa));
|
||||
OnPropertyChanged(nameof(PodeEditarMetodoFixacao));
|
||||
OnPropertyChanged(nameof(PodeEditarCoordenadasManuais));
|
||||
OnPropertyChanged(nameof(PodeEditarOffsetBase));
|
||||
|
|
@ -410,6 +479,7 @@ namespace OperationControl.ViewModels
|
|||
}
|
||||
|
||||
public bool PodeCarregarMapa =>
|
||||
!_edicaoMapaAtiva &&
|
||||
!FixacaoEmAndamento &&
|
||||
!AlteracaoPapelGnssEmAndamento;
|
||||
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ namespace OperationControl.ViewModels
|
|||
|
||||
_viewPreparacaoMapaBottom = new PreparacaoMapaBottomView();
|
||||
_viewPreparacaoMapaBottom._vm.CarregarMapaSolicitado += OnCarregarMapaSolicitado;
|
||||
_viewPreparacaoMapaBottom._vm.EditarMapaSolicitado += OnEditarMapaPreparacaoSolicitado;
|
||||
_viewPreparacaoMapaBottom._vm.FixarBaseSolicitado += OnFixarBaseSolicitado;
|
||||
_viewPreparacaoMapaBottom._vm.AplicarOffsetSolicitado += OnAplicarOffsetSolicitado;
|
||||
_viewPreparacaoMapaBottom._vm.UsarGnssMovelSolicitado += OnUsarGnssMovelSolicitado;
|
||||
|
|
@ -85,6 +86,17 @@ namespace OperationControl.ViewModels
|
|||
.SalvarMapaEditadoSolicitado +=
|
||||
OnSalvarMapaEditadoSolicitado;
|
||||
|
||||
/*
|
||||
* O mesmo cockpit também existe no mapa da preparação.
|
||||
* Assim o botão "Salvar versão editada" funciona antes
|
||||
* mesmo de existir Rover selecionado/conectado.
|
||||
*/
|
||||
_viewPreparacaoMapa
|
||||
.MapaPreparacao
|
||||
.EditorOverlay
|
||||
.SalvarMapaEditadoSolicitado +=
|
||||
OnSalvarMapaEditadoSolicitado;
|
||||
|
||||
_viewOperacaoLeft = new OperacaoLeftView();
|
||||
|
||||
_viewOperacaoRight = new OperacaoRightView();
|
||||
|
|
@ -224,7 +236,12 @@ namespace OperationControl.ViewModels
|
|||
}
|
||||
}
|
||||
|
||||
public bool CanGoBack => CurrentStep != DockStep.ConfigConexao;
|
||||
public bool CanGoBack =>
|
||||
CurrentStep != DockStep.ConfigConexao &&
|
||||
!(
|
||||
CurrentStep == DockStep.PreparacaoMapa &&
|
||||
_mapas.EdicaoAtiva
|
||||
);
|
||||
|
||||
public bool CanGoNext
|
||||
{
|
||||
|
|
@ -232,9 +249,15 @@ namespace OperationControl.ViewModels
|
|||
{
|
||||
return CurrentStep switch
|
||||
{
|
||||
DockStep.ConfigConexao => PodeAvancarConfigConexao(),
|
||||
DockStep.PreparacaoMapa => MapaCarregado,
|
||||
_ => false
|
||||
DockStep.ConfigConexao =>
|
||||
PodeAvancarConfigConexao(),
|
||||
|
||||
DockStep.PreparacaoMapa =>
|
||||
MapaCarregado &&
|
||||
!_mapas.EdicaoAtiva,
|
||||
|
||||
_ =>
|
||||
false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -465,6 +488,12 @@ namespace OperationControl.ViewModels
|
|||
MapaCarregado
|
||||
);
|
||||
|
||||
_viewPreparacaoMapaBottom?
|
||||
._vm?
|
||||
.DefinirEdicaoMapaAtiva(
|
||||
_mapas.EdicaoAtiva
|
||||
);
|
||||
|
||||
SincronizarEstadoGnssPreparacao();
|
||||
break;
|
||||
|
||||
|
|
@ -1330,6 +1359,23 @@ namespace OperationControl.ViewModels
|
|||
|
||||
private void OnEstadoMapaAlterado()
|
||||
{
|
||||
_viewPreparacaoMapaBottom?
|
||||
._vm?
|
||||
.DefinirEdicaoMapaAtiva(
|
||||
_mapas.EdicaoAtiva
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(CanGoBack)
|
||||
);
|
||||
|
||||
OnPropertyChanged(
|
||||
nameof(CanGoNext)
|
||||
);
|
||||
|
||||
CommandManager
|
||||
.InvalidateRequerySuggested();
|
||||
|
||||
AtualizarEstadoMapaParametrizacao();
|
||||
}
|
||||
|
||||
|
|
@ -1496,6 +1542,102 @@ namespace OperationControl.ViewModels
|
|||
);
|
||||
}
|
||||
|
||||
private void OnEditarMapaPreparacaoSolicitado()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (
|
||||
CurrentStep !=
|
||||
DockStep.PreparacaoMapa
|
||||
)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (!_mapas.PossuiMapa)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"Carregue um mapa antes de abrir o editor.",
|
||||
"Editar mapa",
|
||||
MessageBoxButton.OK,
|
||||
MessageBoxImage.Information
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (_mapas.EdicaoAtiva)
|
||||
{
|
||||
/*
|
||||
* Proteção contra uma segunda entrada enquanto
|
||||
* a sessão global de edição já está aberta.
|
||||
*/
|
||||
_viewPreparacaoMapaBottom?
|
||||
._vm?
|
||||
.DefinirEdicaoMapaAtiva(
|
||||
true
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
MapViewControl? mapa =
|
||||
_viewPreparacaoMapa?
|
||||
.MapaPreparacao;
|
||||
|
||||
|
||||
if (mapa == null)
|
||||
return;
|
||||
|
||||
|
||||
/*
|
||||
* Intencionalmente NÃO existe qualquer requisito
|
||||
* de Rover aqui.
|
||||
*
|
||||
* A edição atua somente no Workspace/Documento
|
||||
* e no MapViewControl da tela de preparação.
|
||||
*/
|
||||
_mapas.IniciarEdicao(
|
||||
mapa
|
||||
);
|
||||
|
||||
|
||||
_viewPreparacaoMapaBottom?
|
||||
._vm?
|
||||
.DefinirEdicaoMapaAtiva(
|
||||
true
|
||||
);
|
||||
|
||||
|
||||
Models.Variaveis.MostrarLog(
|
||||
"[MAPA][EDICAO][PREPARACAO] " +
|
||||
"Editor aberto sem dependência de Rover."
|
||||
);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Models.Variaveis.MostrarLog(
|
||||
"[MAPA][EDICAO][PREPARACAO][ERRO] " +
|
||||
ex
|
||||
);
|
||||
|
||||
|
||||
MessageBox.Show(
|
||||
"Não foi possível iniciar a edição do mapa." +
|
||||
Environment.NewLine +
|
||||
Environment.NewLine +
|
||||
ex.Message,
|
||||
"Editar mapa",
|
||||
MessageBoxButton.OK,
|
||||
MessageBoxImage.Error
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnEditarMapaSolicitado()
|
||||
{
|
||||
try
|
||||
|
|
@ -1636,6 +1778,19 @@ namespace OperationControl.ViewModels
|
|||
{
|
||||
try
|
||||
{
|
||||
if (_mapas.EdicaoAtiva)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"Finalize ou cancele a edição atual antes de trocar o mapa.",
|
||||
"Editor de mapa ativo",
|
||||
MessageBoxButton.OK,
|
||||
MessageBoxImage.Information
|
||||
);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
_mapas.CarregarMapaArquivo(caminhoArquivo, tipo);
|
||||
|
||||
_mapas.PrepararMapa(
|
||||
|
|
|
|||
|
|
@ -510,6 +510,14 @@
|
|||
Command="{Binding CarregarMapaCommand}"
|
||||
IsEnabled="{Binding PodeCarregarMapa}"/>
|
||||
|
||||
<Button
|
||||
Content="✎ Editar mapa"
|
||||
Style="{StaticResource PanelButtonStyle}"
|
||||
Command="{Binding EditarMapaCommand}"
|
||||
IsEnabled="{Binding PodeEditarMapa}"
|
||||
Margin="0,8,0,0"
|
||||
ToolTip="Abre o editor operacional neste mapa, sem exigir rover conectado."/>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
</Border>
|
||||
|
|
|
|||
Loading…
Reference in New Issue