/*
* Copyright (c) 2025 LG Electronics Inc.
* SPDX-License-Identifier: LicenseRef-LGE-Proprietary
*/
using Aurora;
using Aurora.Api;
using Aurora.Api.Devices;
using VisionCommon;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using VisionSequence.Setup;
using DevExpress.Xpo.Logger;
namespace VisionUI.Setup {
///
/// 센터 튜닝 뷰 모델
///
class CenterTuningViewModel : INotifyPropertyChanged {
private Logger Log = new Logger("CenterTuningViewModel");
private SubSysInfo _SubSysInfo;
private int CurrCnt;
private CsvManager _CsvManager = new CsvManager();
public event PropertyChangedEventHandler PropertyChanged;
private CenterTuningSettingViewModel centerTuningSettingViewModel;
/// 센터 튜닝 세팅 뷰 모델
public CenterTuningSettingViewModel CenterTuningSettingViewModel {
get { return centerTuningSettingViewModel; }
set {
centerTuningSettingViewModel = value;
NotifyPropertyChanged("CenterTuningSettingViewModel");
}
}
private CenterTuningLogViewModel centerTuningLogViewModel;
/// 센터 튜닝 로그 뷰 모델
public CenterTuningLogViewModel CenterTuningLogViewModel {
get { return centerTuningLogViewModel; }
set {
centerTuningLogViewModel = value;
NotifyPropertyChanged("CenterTuningLogViewModel");
}
}
///
/// 생성자
///
/// 서브시스템 정보
public CenterTuningViewModel(SubSysInfo subSysInfo) {
_SubSysInfo = subSysInfo;
CenterTuningSettingViewModel = new CenterTuningSettingViewModel(_SubSysInfo);
CenterTuningLogViewModel = new CenterTuningLogViewModel(_SubSysInfo);
CenterTuningSettingViewModel.AlignDelta += AddAlignDelta;
CenterTuningSettingViewModel.SequenceStart += SequenceStart;
//CenterTuningSettingViewModel.CancelSequence += SequenceStop;
}
private void SequenceStart(object sender, EventArgs e) {
CurrCnt = 0;
CenterTuningLogViewModel.CenterTuningLogItems.Clear();
}
private void AddAlignDelta(object sender, Position e) {
try {
var log = new CenterTuningLogItem() {
CurrentCnt = ++CurrCnt,
DeltaX = e.X,
DeltaY = e.Y,
DeltaT = e.T
};
var centerTuningLog = CenterTuningLogItemManager.GetCenterTuningLogItem(_SubSysInfo, log);
Application.Current.Dispatcher.Invoke(() => {
CenterTuningLogViewModel.CenterTuningLogItems.Add(centerTuningLog); });
_CsvManager.SaveCsv(_SubSysInfo, centerTuningLog, eSaveDataType.CenterTuning);
}
catch (Exception ex) {
Log.FuncE($"{ex.Message}");
}
}
private void OnCompleted(SequenceActionResult SeqResult) {
}
private void NotifyPropertyChanged(string propName) {
PropertyChanged?.Invoke(
this,
new PropertyChangedEventArgs(propName));
}
}
}