using bsmd.AIS2Service; using System.ComponentModel; namespace AISAdmin { public partial class Main : Form { private AIS_SQLiteStorage? _storage; private BindingList? _monitorGroups = new(); private MonitorGroup? _currentGroup; public Main() { InitializeComponent(); _currentGroup = null; } private void buttonZoneUp_Click(object sender, EventArgs e) { MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem; int i = this.listBoxZones.SelectedIndex; BindingList zones = (BindingList)this.listBoxZones.DataSource; if (mz != null && (i > 0)) { MonitorZone prevZone = zones[i - 1]; mz.Sequence -= 1; prevZone.Sequence += 1; zones[i - 1] = mz; zones[i] = prevZone; this.listBoxZones.SelectedIndex = i - 1; } } private void buttonZoneDown_Click(object sender, EventArgs e) { MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem; int i = this.listBoxZones.SelectedIndex; BindingList zones = (BindingList) this.listBoxZones.DataSource; if (mz != null && (i < (zones.Count - 1))) { MonitorZone nextZone = zones[i + 1]; mz.Sequence += 1; nextZone.Sequence -= 1; zones[i + 1] = mz; zones[i] = nextZone; this.listBoxZones.SelectedIndex = i + 1; } } private void buttonImportZone_Click(object sender, EventArgs e) { using OpenFileDialog ofd = new(); ofd.Filter = "Google Earth KML files (*.kml)|*.kml|All files (*.*)|*.*"; ofd.RestoreDirectory = true; ofd.Multiselect = false; if (ofd.ShowDialog() == DialogResult.OK) { _monitorGroups = new BindingList(MonitorGroup.LoadGroups(ofd.FileName)); this.comboBoxGroup.DataSource = _monitorGroups; if (_monitorGroups.Count > 0) this.comboBoxGroup.SelectedIndex = 0; this.buttonSaveGroup.Enabled = _monitorGroups.Count > 0; this.listBoxZones.Enabled = _monitorGroups.Count > 0; } } private void buttonEditZone_Click(object sender, EventArgs e) { } private void buttonDeleteZone_Click(object sender, EventArgs e) { } private void buttonNewGroup_Click(object sender, EventArgs e) { this.textBoxGroup.ReadOnly = false; this.buttonSaveGroup.Enabled = true; _currentGroup = new MonitorGroup(-1, ""); this.textBoxGroup.ResetText(); } private void buttonDeleteGroup_Click(object sender, EventArgs e) { } private void buttonSaveGroup_Click(object sender, EventArgs e) { // save everything foreach(MonitorGroup mg in this._monitorGroups) { this._storage?.Save(mg); foreach(MonitorZone mz in mg.Zones) { if (mz.MonitorGroupId < 1) mz.MonitorGroupId = mg.Id; this._storage?.Save(mz); foreach(GeoPoint vertex in mz.Vertices) { if(vertex.MonitorZoneId < 1) vertex.MonitorZoneId = mz.Id; this._storage?.Save(vertex); } } } } private void Main_Load(object sender, EventArgs e) { _storage = new AIS_SQLiteStorage(null); _monitorGroups = new BindingList(_storage.LoadGroups()); List zones = _storage.LoadMonitorZones(); foreach(MonitorGroup mg in _monitorGroups) { foreach(MonitorZone mz in zones) { if (mz.MonitorGroupId == mg.Id) mg.Zones.Add(mz); } } this.comboBoxGroup.DataSource = _monitorGroups; this.comboBoxGroup.DisplayMember = "Name"; if (_monitorGroups.Count > 0) this.comboBoxGroup.SelectedIndex = 0; this.buttonSaveGroup.Enabled = _monitorGroups.Count > 0; this.listBoxZones.Enabled = _monitorGroups.Count > 0; } private void comboBoxGroup_SelectedIndexChanged(object sender, EventArgs e) { _currentGroup = (MonitorGroup) this.comboBoxGroup.SelectedItem; if (_currentGroup != null) { _currentGroup.Zones.Sort(); this.listBoxZones.DataSource = new BindingList(_currentGroup.Zones); } else { this.listBoxZones.DataSource = null; this.textBoxGroup.ResetText(); this.buttonSaveGroup.Enabled = false; this.textBoxGroup.ReadOnly = true; } this.buttonZoneDown.Enabled = (this._currentGroup != null) && (this._currentGroup.Zones.Count > 1); this.buttonZoneUp.Enabled = (this._currentGroup != null) && (this._currentGroup.Zones.Count > 1); } private void checkBoxZoneActive_CheckedChanged(object sender, EventArgs e) { MonitorZone mz = (MonitorZone)this.listBoxZones.SelectedItem; if (mz != null) { mz.Active = this.checkBoxZoneActive.Checked; } } private void listBoxZones_SelectedIndexChanged(object sender, EventArgs e) { MonitorZone mz = (MonitorZone) this.listBoxZones.SelectedItem; if(mz != null) { this.checkBoxZoneActive.Checked = mz.Active; this.textBoxZone.Text = mz.Name; } } } }