using DevExpress.Xpo.DB.Exceptions; using DevExpress.Xpo; using DevExpress.XtraEditors; using Ips.Library.DxpLib; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Ips.Library.Entity; using DevExpress.XtraEditors.Controls; using Ips.Sps.TskResults.Poses; using DevExpress.XtraLayout.Utils; using DevExpress.XtraLayout; using Ips.Library.Basic; using Ips.Sps.Emts; using Ips.Sps.Maps; namespace Ips.Sps.Sigs { public partial class SigEditForm : DevExpress.XtraEditors.XtraForm { public SigEditForm() { InitializeComponent(); SigCategoryImageComboBoxEdit.Properties.Items.AddEnum(); SigTypeImageComboBoxEdit.Properties.Items.AddEnum(); } public SigEditForm(int? id) : this() { this.Id = id; } public int? Id { get; private set; } protected UnitOfWork UnitOfWork { get; private set; } public Signal EditModel { get => (Signal)bsSig.DataSource; } private void SigEditForm_Load(object sender, EventArgs e) { UnitOfWork = new UnitOfWork(); if (Id.HasValue) bsSig.DataSource = UnitOfWork.GetObjectByKey(Id.Value); else bsSig.DataSource = new Signal(UnitOfWork); } private void btnSave_Click(object sender, EventArgs e) { try { if (EditModel.SigCategory == SignalCategory.SctSig) { EditModel.SigFreq = EditModel.FreqStart; } UnitOfWork.CommitChanges(); Id = ((Signal)(bsSig.DataSource)).Oid; this.DialogResult = DialogResult.OK; Close(); } catch (LockingException) { MsgHelper.ShowError("对象已被修改,请关闭后重新打开进行编辑!"); } } private void btnCancel_Click(object sender, EventArgs e) { Close(); } private void SigRangTextButtonEdit_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e) { if (e.Button.Kind == ButtonPredefines.Clear) { EditModel.HasRange = false; } else if (e.Button.Kind == ButtonPredefines.Ellipsis) { MapRangeSelectForm selectForm = new MapRangeSelectForm(); if (EditModel.HasRange) { selectForm.SelectRange = new GeoRange(EditModel.SigLon, EditModel.SigLat, EditModel.SigAlt, EditModel.LonRange, EditModel.LatRange); } if (selectForm.ShowDialog() != DialogResult.OK) return; if (selectForm.SelectRange != null) { var range = selectForm.SelectRange; SetSigRange(range); } else { EditModel.HasRange = false; } } SigRangTextButtonEdit.EditValue = EditModel.SigRangText; } private void SetSigRange(GeoRange range) { EditModel.SigLon = range.Lon; EditModel.SigLat = range.Lat; EditModel.SigAlt = range.Alt; EditModel.LonRange = range.LonRange; EditModel.LatRange = range.LatRange; EditModel.HasRange = true; } private void SigTypeImageComboBoxEdit_SelectedIndexChanged(object sender, EventArgs e) { var sigType = (SignalType)SigTypeImageComboBoxEdit.EditValue; new[] { ItemForEmtId, ItemForSigLen } .ForEach(m => m.Visibility = LayoutVisibility.Always); switch (sigType) { case SignalType.DAMA: ItemForEmtId.Visibility = LayoutVisibility.Never; ItemForSigLen.Visibility = LayoutVisibility.Never; break; } } private void EmtIdLookUpEdit_ButtonClick(object sender, ButtonPressedEventArgs e) { if (e.Button.Kind == ButtonPredefines.Clear) { EmtIdLookUpEdit.EditValue = null; } } private void SatIdsCheckedComboBoxEdit_ButtonClick(object sender, ButtonPressedEventArgs e) { if (e.Button.Kind == ButtonPredefines.Clear) { AdjaSatIdsCheckedComboBoxEdit.EditValue = null; } } private void MainSatIdLookUpEdit_ButtonClick(object sender, ButtonPressedEventArgs e) { if (e.Button.Kind == ButtonPredefines.Clear) { MainSatIdLookUpEdit.EditValue = null; } } private void SigCategoryImageComboBoxEdit_SelectedIndexChanged(object sender, EventArgs e) { var categy = (SignalCategory)SigCategoryImageComboBoxEdit.EditValue; if (categy == SignalCategory.SctSig) { ItemForSigFreq.Visibility = LayoutVisibility.Never; ItemForFreqStart.Visibility = LayoutVisibility.Always; ItemForFreqEnd.Visibility = LayoutVisibility.Always; ItemForFreqStep.Visibility = LayoutVisibility.Always; } else { ItemForSigFreq.Visibility = LayoutVisibility.Always; ItemForFreqStart.Visibility = LayoutVisibility.Never; ItemForFreqEnd.Visibility = LayoutVisibility.Never; ItemForFreqStep.Visibility = LayoutVisibility.Never; } } private void EmtIdLookUpEdit_EditValueChanging(object sender, ChangingEventArgs e) { var arg = e as ChangingEventArgs; if (arg.IsBoundUpdatingEditValue) return; if (arg == null || arg.NewValue == null) return; var emt = EmtIdLookUpEdit.Properties.GetDataSourceRowByKeyValue(arg.NewValue) as Emt; if (emt != null && emt.EmtType == EmtType.FixSation) { SetSigRange(new GeoRange(emt.Lon, emt.Lat, emt.Alt, 1, 1)); } } } }