| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344 |
- using DevExpress.Xpo;
- using DevExpress.XtraBars;
- using DevExpress.XtraEditors.Controls;
- using Ips.Library.Basic;
- using Ips.Library.Entity;
- using Ips.Sps.Emts;
- using Ips.Sps.IfeScans;
- using Ips.Sps.Maps;
- using Ips.Sps.Sats;
- using Ips.Sps.Tsks;
- using System.Data;
- namespace Ips.Sps.Sigs
- {
- public partial class SigListCtrl : DevExpress.XtraEditors.XtraUserControl
- {
- public SigListCtrl()
- {
- InitializeComponent();
- }
- public string CtrlCaption
- {
- get => txtListCaption.Caption;
- set => txtListCaption.Caption = value;
- }
- private SignalCategory? SigCategory { get; set; } = null;
- private SignalType? SigType { get; set; } = null;
- private bool ShowEditBar { get; set; } = true;
- private bool ShowScanFreq { get; set; } = false;
- private IList<Sat> SatList { get; set; }
- private IList<Emt> EmtList { get; set; }
- private XPBaseCollection sigList { get; set; }
- private Session _session { get; set; }
- private string _defaultMainSatText, _defaultMainAdjaSatText;
- private TskAdCard _adCard;
- private List<Sat> _adSatList
- {
- get
- {
- if (_adCard != null)
- {
- var adSatIds = _adCard.Channels.SelectMany(m => m.GetSatIds()).ToList();
- var adSatList = SatList.Where(m => adSatIds.Contains(m.Oid)).ToList();
- return adSatList;
- }
- return null;
- }
- }
- private int? _defaultMainSatId
- {
- get
- {
- if (_adCard != null && _adCard.Channels.IsNotNullOrEmpty() && _adSatList != null)
- {
- var satId = _adCard.Channels.OrderBy(m => m.ChNum).First().GetSatIds().FirstOrDefault();
- return satId == 0 ? null : satId;
- }
- return null;
- }
- }
- private void grdSigList_Load(object sender, EventArgs e)
- {
- }
- public void SetSigProperties(SignalCategory? sigCategory, SignalType? sigType, bool showEditBar, bool showScanFreq, IList<Sat> sats, IList<Emt> emts)
- {
- SigCategory = sigCategory;
- SigType = sigType;
- ShowEditBar = showEditBar;
- ShowScanFreq = showScanFreq;
- SatList = sats;
- EmtList = emts;
- InitCtrl();
- }
- public void SetDataSource(XPBaseCollection sigList)
- {
- _session = sigList.Session;
- this.sigList = sigList;
- bsSigList.DataSource = sigList;
- InitCtrl();
- }
- public void SetAdCardInfo(TskAdCard adCard)
- {
- _adCard = adCard;
- }
- public void SetDefaultSatText(string mainSatText, string adjaSatsText)
- {
- mainSatEdit.NullText = _defaultMainSatText = mainSatText;
- adjaSatEdit.NullText = _defaultMainAdjaSatText = adjaSatsText;
- }
- private void InitCtrl()
- {
- btnScanAdd.Visibility = ShowScanFreq ? BarItemVisibility.Always : BarItemVisibility.Never;
- barSigEdit.Visible = ShowEditBar;
- gvSigList.OptionsBehavior.Editable = ShowEditBar;
- bsEmtList.DataSource = EmtList;
- bsSatList.DataSource = SatList;
- colOid.Visible = false;
- colSigType.Visible = false;
- if (!SigCategory.HasValue)
- {
- colSigFreq.Visible = false;
- colFreqStart.Visible = false;
- colFreqEnd.Visible = false;
- colFreqStep.Visible = false;
- }
- else
- {
- colSigCategory.Visible = false;
- colRemark.Visible = !ShowEditBar;
- switch (SigCategory.Value)
- {
- case Library.Entity.SignalCategory.TarSig:
- case Library.Entity.SignalCategory.RefSig:
- colFreqStart.Visible = false;
- colFreqEnd.Visible = false;
- colFreqStep.Visible = false;
- colSigFreqText.Visible = false;
- break;
- case Library.Entity.SignalCategory.SctSig:
- colSigFreqText.Visible = false;
- colSigFreq.Visible = false;
- colEmtId.Visible = false;
- break;
- }
- }
- switch (SigType)
- {
- case SignalType.NORMAL:
- break;
- case SignalType.DAMA:
- colSigLen.Visible = false;
- colEmtId.Visible = false;
- break;
- }
- }
- private void btnImport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- SigSelectForm form = new SigSelectForm(SigCategory, SigType);
- if (form.ShowDialog() != DialogResult.OK || form.SelectSigList.IsNullOrEmpty()) return;
- if (bsSigList.ObjectType == typeof(TskSignal))
- {
- var tskSigList = bsSigList.DataSource as XPCollection<TskSignal>;
- var selectSigList = form.SelectSigList.Select(m =>
- {
- var tskSig = TskSignal.CreateFrom(m, _session);
- if (tskSig.AdjaSatIds.IsNotNullOrWhitespace())
- {
- var adjaSatIds = tskSig.AdjaSatIds.Split(",").Where(m => m.IsNotNullOrWhitespace()).Select(m => int.Parse(m));
- adjaSatIds = adjaSatIds.Where(m => SatList.Any(sat => sat.Oid == m));
- tskSig.AdjaSatIds = adjaSatIds.JoinAsString(",");
- }
- if (!tskSig.MainSatId.HasValue || !SatList.Any(m => m.Oid == tskSig.MainSatId))
- {
- tskSig.MainSatId = null;
- }
- tskSig.SigCategory = SigCategory ?? Library.Entity.SignalCategory.TarSig;
- return tskSig;
- }).ToList();
- tskSigList?.AddRange(selectSigList);
- }
- else if (bsSigList.ObjectType == typeof(Signal))
- {
- var sigList = bsSigList.DataSource as XPCollection<Signal>;
- sigList?.AddRange(form.SelectSigList);
- }
- }
- private void btnAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- gvSigList.AddNewRow();
- }
- private void btnDelete_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- var selectRows = gvSigList.GetSelectedRows();
- if (selectRows.Length > 0)
- {
- gvSigList.DeleteSelectedRows();
- }
- else if (gvSigList.FocusedRowHandle >= 0)
- {
- gvSigList.DeleteRow(gvSigList.FocusedRowHandle);
- }
- }
- private void sigRangeButtonEdit_ButtonClick(object sender, ButtonPressedEventArgs e)
- {
- var sig = gvSigList.GetFocusedRow() as SignalBasic;
- if (sig == null) return;
- if (e.Button.Kind == ButtonPredefines.Clear)
- {
- sig.HasRange = false;
- }
- else if (e.Button.Kind == ButtonPredefines.Ellipsis)
- {
- MapRangeSelectForm selectForm = new MapRangeSelectForm();
- if (sig.HasRange)
- {
- selectForm.SelectRange = new GeoRange(sig.SigLon, sig.SigLat, sig.SigAlt, sig.LonRange, sig.LatRange);
- }
- if (selectForm.ShowDialog() != DialogResult.OK) return;
- if (selectForm.SelectRange != null)
- {
- var range = selectForm.SelectRange;
- SetSigRange(sig, range);
- }
- else
- {
- sig.HasRange = false;
- }
- }
- }
- private void SetSigRange(SignalBasic sig, GeoRange range)
- {
- sig.SigLon = range.Lon;
- sig.SigLat = range.Lat;
- sig.SigAlt = range.Alt;
- sig.LonRange = range.LonRange;
- sig.LatRange = range.LatRange;
- sig.HasRange = true;
- }
- private void gvSigList_InitNewRow(object sender, DevExpress.XtraGrid.Views.Grid.InitNewRowEventArgs e)
- {
- if (SigCategory.HasValue)
- {
- gvSigList.SetRowCellValue(e.RowHandle, colSigCategory, SigCategory);
- }
- if (SigType.HasValue)
- {
- gvSigList.SetRowCellValue(e.RowHandle, colSigType, SigType);
- }
- if (_adCard != null)
- {
- var adSatIds = _adCard.Channels.SelectMany(m => m.GetSatIds()).ToList();
- var adSatList = SatList.Where(m => adSatIds.Contains(m.Oid)).ToList();
- if (adSatList.IsNotNullOrEmpty())
- {
- mainSatEdit.DataSource = adSatList;
- adjaSatEdit.DataSource = adSatList;
- }
- var defaultChannel = _adCard.Channels.FirstOrDefault(m => m.SatIds.IsNotNullOrWhitespace());
- if (defaultChannel != null)
- {
- var defaultSatId = defaultChannel.GetSatIds()[0];
- gvSigList.SetRowCellValue(e.RowHandle, colMainSatId, defaultSatId);
- }
- }
- }
- private void emtLookUpEdit_EditValueChanged(object sender, EventArgs e)
- {
- var arg = e as ChangingEventArgs;
- if (arg == null || arg.NewValue == null) return;
- var emt = emtLookUpEdit.GetDataSourceRowByKeyValue(arg.NewValue) as Emt;
- if (emt != null && emt.EmtType == EmtType.FixSation)
- {
- var sig = gvSigList.GetFocusedRow() as SignalBasic;
- SetSigRange(sig, new GeoRange(emt.Lon, emt.Lat, emt.Alt, 3, 3));
- }
- }
- private void btnScanAdd_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
- {
- var form = new IfeScanForm() { StartPosition = FormStartPosition.CenterScreen };
- form.BindSatList(_adSatList ?? SatList, _defaultMainSatId);
- form.SetAdCardInfo(_adCard);
- if (form.ShowDialog() == DialogResult.OK)
- {
- foreach (var item in form.SelectedFreq)
- {
- var model = Activator.CreateInstance(bsSigList.ObjectType, sigList.Session) as SignalBasic;
- model.MainSatId = form.SatId;
- model.SigFreq = item.SigFreq;
- model.BandWidth = item.BandWidth;
- model.SigLen = 10;
- if (_adCard != null)
- {
- var adjaSatIds = _adCard.Channels.SelectMany(m => m.GetSatIds()).WhereIf(form.SatId.HasValue, m => m != form.SatId).Distinct();
- model.AdjaSatIds = adjaSatIds.JoinAsString(",");
- }
- sigList.BaseAdd(model);
- }
- }
- }
- private void gvSigList_CustomColumnDisplayText(object sender, DevExpress.XtraGrid.Views.Base.CustomColumnDisplayTextEventArgs e)
- {
- if (e.Column == colAdjaSatIds)
- {
- if (e.DisplayText.IsNullOrWhitespace())
- {
- e.DisplayText = _defaultMainAdjaSatText.IfNullOrWhitespace("自动匹配");
- }
- }
- else if (e.Column == colMainSatId)
- {
- if (e.DisplayText.IsNullOrWhitespace())
- e.DisplayText = _defaultMainSatText.IfNullOrWhitespace("无");
- }
- }
- private void btnSetGR_ItemClick(object sender, ItemClickEventArgs e)
- {
- SetGREditForm editForm = new SetGREditForm();
- editForm.ShowDialog();
- }
- private void gvSigList_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
- {
- //参考信号不添加干扰信号
- if (SigCategory.HasValue && SigCategory.Value == SignalCategory.RefSig) return;
- if (e.Button == MouseButtons.Right && e.Clicks == 1)
- {
- popSigMenu.ShowPopup(Cursor.Position);
- }
- }
- }
- }
|