/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora;
using Aurora.Api;
using VisionCommon;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using VisionCommonUI;
using VisionCommonUI.Resources;
using System.Collections.Generic;
namespace VisionUI.Pattern {
///
/// 캠 패턴 등록 뷰
/// CamPatternRegistrationView.xaml behind code
///
public partial class CamPatternRegistrationView : UserControl {
private static readonly Logger _Logger = new Logger("CamPatternRegistrationView");
private IDisposable _EventDisposable;
private SubSysInfo _SubsysInfo;
private bool _IsViewInitialized = false;
///
/// 생성자
///
public CamPatternRegistrationView(SubSysInfo subSysInfo) {
_SubsysInfo = subSysInfo;
InitializeComponent();
SetObservable();
}
private void SetObservable() {
if (_EventDisposable == null) {
var observable = VisionEventId.GetRecipeUpdateObservable();
_EventDisposable = observable.Subscribe(_ => ClearView());
}
}
private void ClearView() {
if (IsVisible) {
return;
}
Application.Current.Dispatcher.BeginInvoke(
new System.Action(() => {
camTabControl.Items.Clear();
_IsViewInitialized = false;
}));
}
private void InitializeView() {
var camIdFovInfoMap = new Dictionary();
foreach (FovInfo fovInfo in VisionRecipeManager.GetFovInfos(_SubsysInfo)) {
var camRecipe = VisionRecipeManager.GetCamRecipe(fovInfo);
var camId = camRecipe.CamId;
if (!camIdFovInfoMap.ContainsKey(camId)) {
camIdFovInfoMap.Add(camId, fovInfo);
}
}
foreach (var keyValuePair in camIdFovInfoMap) {
var camTabItem = new TabItem() {
Header = keyValuePair.Key.ToString(),
Content = CreatePatternRegistrationView(keyValuePair.Value)
};
camTabItem.Style = FindResource("styleSubMenuRootTabItem") as Style;
camTabControl.Items.Add(camTabItem);
}
camTabControl.SelectedIndex = 0;
_IsViewInitialized = true;
}
private PatternRegistrationView CreatePatternRegistrationView(FovInfo fovInfo) {
var patternRegistrationView = new PatternRegistrationView(fovInfo);
var patternRegistrationViewModel = new PatternRegistrationViewModel(fovInfo);
patternRegistrationView.DataContext = patternRegistrationViewModel;
return patternRegistrationView;
}
private void UserControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) {
bool isVisible = (bool)e.NewValue;
if (isVisible == true) {
if (!_IsViewInitialized) {
InitializeView();
}
}
}
}
}