Skip to content

Commit b98d405

Browse files
committed
Various updates.
1 parent eb06dad commit b98d405

File tree

4 files changed

+137
-28
lines changed

4 files changed

+137
-28
lines changed

EditorWindow.Designer.cs

Lines changed: 29 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

EditorWindow.cs

Lines changed: 80 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ private ATISControl Control
3434
public EventHandler RefreshEvent { get; set; }
3535
public InstalledVoice Voice { get; set; }
3636
public PromptRate Rate { get; set; }
37+
private string ZuluFrequency { get; set; }
3738

3839
public EditorWindow()
3940
{
@@ -98,6 +99,18 @@ private void LoadOptions()
9899
{
99100
comboBoxVoice.Items.Add(voice.VoiceInfo.Name);
100101
}
102+
103+
comboBoxZuluFrequency.Items.Clear();
104+
105+
if (Plugin.Frequencies.Any())
106+
{
107+
foreach (var frequency in Plugin.Frequencies)
108+
{
109+
comboBoxZuluFrequency.Items.Add(string.IsNullOrWhiteSpace(frequency.FriendlyName) ? frequency.Name : frequency.FriendlyName);
110+
}
111+
112+
comboBoxZuluFrequency.SelectedIndex = 0;
113+
}
101114
}
102115

103116
private void RefreshForm()
@@ -114,6 +127,18 @@ private void RefreshForm()
114127

115128
comboBoxTimecheck.SelectedIndex = comboBoxTimecheck.FindStringExact(TimeCheck.ToString());
116129

130+
comboBoxZuluFrequency.Items.Clear();
131+
132+
foreach (var frequency in Plugin.Frequencies)
133+
{
134+
comboBoxZuluFrequency.Items.Add(string.IsNullOrWhiteSpace(frequency.FriendlyName) ? frequency.Name : frequency.FriendlyName);
135+
}
136+
137+
if (!string.IsNullOrWhiteSpace(ZuluFrequency))
138+
{
139+
comboBoxZuluFrequency.SelectedIndex = comboBoxZuluFrequency.FindStringExact(ZuluFrequency);
140+
}
141+
117142
if (Plugin.ATIS1.ICAO != null)
118143
{
119144
buttonATIS1.Text = Plugin.ATIS1.ICAO;
@@ -260,9 +285,13 @@ private void RefreshForm()
260285

261286
if (Control.IsZulu && Network.IsConnected && Control?.ICAO != null)
262287
{
288+
textBoxZulu.TextChanged += TextBox_TextChanged;
289+
290+
textBoxZulu.Visible = true;
291+
comboBoxZuluFrequency.Visible = true;
292+
labelFrequency.Visible = true;
263293
buttonZulu.BackColor = Color.FromName("ControlDarkDark");
264294
buttonZulu.ForeColor = Color.FromName("ControlLightLight");
265-
textBoxZulu.Visible = true;
266295
textBoxAPCH.Visible = false;
267296
textBoxRWY.Visible = false;
268297
textBoxSFCCOND.Visible = false;
@@ -291,9 +320,13 @@ private void RefreshForm()
291320
}
292321
else
293322
{
323+
textBoxZulu.TextChanged -= TextBox_TextChanged;
324+
294325
buttonZulu.BackColor = Color.FromName("Control");
295326
buttonZulu.ForeColor = default;
296327
textBoxZulu.Visible = false;
328+
labelFrequency.Visible = false;
329+
comboBoxZuluFrequency.Visible = false;
297330
textBoxAPCH.Visible = true;
298331
textBoxRWY.Visible = true;
299332
textBoxSFCCOND.Visible = true;
@@ -710,6 +743,7 @@ private void RefreshForm()
710743

711744
textBoxZulu.Enabled = false;
712745
textBoxZulu.Visible = false;
746+
comboBoxZuluFrequency.Visible = false;
713747
textBoxAPCH.Enabled = false;
714748
textBoxRWY.Enabled = false;
715749
textBoxSFCCOND.Enabled = false;
@@ -1054,20 +1088,58 @@ private void ButtonZulu_Click(object sender, EventArgs e)
10541088
if (!Control.IsZulu)
10551089
{
10561090
Control.IsZulu = true;
1057-
var zuluInfo = Plugin.ZuluInfo.FirstOrDefault(x => x.ICAO == ICAO);
1058-
var zuluLine = Control.Lines.FirstOrDefault(x => x.Name == "ZULU");
1059-
if (zuluInfo != null && zuluLine != null)
1060-
{
1061-
zuluLine.Value = zuluInfo.Text;
1062-
textBoxZulu.Text = zuluInfo.Text;
1063-
}
1091+
1092+
GenerateZulu();
10641093
}
10651094
else
10661095
{
10671096
Control.IsZulu = false;
1097+
1098+
textBoxZulu.Text = string.Empty;
1099+
1100+
ZuluFrequency = string.Empty;
10681101
}
10691102

10701103
RefreshForm();
10711104
}
1105+
1106+
private void ComboBoxZuluFrequency_SelectedIndexChanged(object sender, EventArgs e)
1107+
{
1108+
var zuluFrequency = (string)comboBoxZuluFrequency.SelectedItem;
1109+
1110+
if (zuluFrequency == ZuluFrequency) return;
1111+
1112+
ZuluFrequency = zuluFrequency;
1113+
1114+
GenerateZulu();
1115+
1116+
RefreshForm();
1117+
}
1118+
1119+
private void GenerateZulu()
1120+
{
1121+
var zuluInfo = Plugin.ZuluInfo.FirstOrDefault(x => x.ICAO == ICAO);
1122+
1123+
var zuluLine = Control.Lines.FirstOrDefault(x => x.Name == "ZULU");
1124+
1125+
if (zuluInfo == null || zuluLine == null) return;
1126+
1127+
var atis = zuluInfo.Text;
1128+
1129+
var frequency = Plugin.Frequencies.FirstOrDefault(x => x.Name == ZuluFrequency || x.FriendlyName == ZuluFrequency);
1130+
1131+
if (frequency != null)
1132+
{
1133+
var station = string.IsNullOrWhiteSpace(frequency.FriendlyName) ? frequency.Name : frequency.FriendlyName;
1134+
1135+
atis = atis.Replace("{STATION}", station.ToUpper());
1136+
1137+
atis = atis.Replace("{FREQ}", Conversions.FrequencyToString(frequency.Frequency));
1138+
}
1139+
1140+
zuluLine.Value = atis;
1141+
1142+
textBoxZulu.Text = atis;
1143+
}
10721144
}
10731145
}

Plugin.cs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public class Plugin : IPlugin
2626

2727
private static readonly string MetarUri = "https://metar.vatsim.net/metar.php?id=";
2828

29-
public static readonly Version Version = new Version(2, 1);
29+
public static readonly Version Version = new Version(2, 2);
3030
private static readonly string VersionUrl = "https://raw.githubusercontent.com/badvectors/ATISPlugin/master/Version.json";
3131
private static readonly string ZuluUrl = "https://raw.githubusercontent.com/badvectors/ATISPlugin/master/Zulu.json";
3232

@@ -52,15 +52,20 @@ public class Plugin : IPlugin
5252
private static Timer BroadcastTimer { get; set; } = new Timer();
5353
public static List<ATISAudio> ToBroadcast { get; set; } = new List<ATISAudio>();
5454

55+
public static List<VSCSFrequency> Frequencies { get; set; } = new List<VSCSFrequency>();
56+
5557
public Plugin()
5658
{
5759
vatsys.ATIS.Disable();
5860

5961
try
6062
{
61-
Network.Connected += Network_Connected;
63+
Network.Connected += OnUpdate;
6264
Network.Disconnected += Network_Disconnected;
63-
Network.ValidATCChanged += OnUpdate;
65+
66+
Audio.VSCSFrequenciesChanged += Audio_VSCSFrequenciesChanged;
67+
Audio.FrequencyErrorStateChanged += Audio_VSCSFrequenciesChanged;
68+
Network.PrimaryFrequencyChanged += Audio_VSCSFrequenciesChanged;
6469

6570
ATISMenu = new CustomToolStripMenuItem(CustomToolStripMenuItemWindowType.Main, CustomToolStripMenuItemCategory.Windows, new ToolStripMenuItem(DisplayName));
6671
ATISMenu.Item.Click += ATISMenu_Click;
@@ -258,27 +263,31 @@ private async void METARTimer_Elapsed(object sender, ElapsedEventArgs e)
258263
METARTimer.Start();
259264
}
260265

261-
private async void Network_Disconnected(object sender, EventArgs e)
266+
private void Audio_VSCSFrequenciesChanged(object sender, EventArgs e)
262267
{
263-
MMI.InvokeOnGUI((MethodInvoker)delegate ()
264-
{
265-
if (Editor == null || Editor.IsDisposed) return;
266-
Editor.Hide();
267-
});
268-
269-
ToBroadcast.Clear();
268+
Frequencies.Clear();
270269

271-
if (ATIS1 != null) await ATIS1.Delete(false);
272-
if (ATIS2 != null) await ATIS2.Delete(false);
273-
if (ATIS3 != null) await ATIS3.Delete(false);
274-
if (ATIS4 != null) await ATIS4.Delete(false);
270+
foreach (var frequency in Audio.VSCSFrequencies)
271+
{
272+
if (!frequency.Transmit) continue;
275273

276-
Editor?.RefreshEvent.Invoke(this, null);
274+
Frequencies.Add(frequency);
275+
}
277276
}
278277

279-
private void Network_Connected(object sender, EventArgs e)
278+
private async void Network_Disconnected(object sender, EventArgs e)
280279
{
281-
Editor?.RefreshEvent.Invoke(this, null);
280+
if (Editor != null && !Editor.IsDisposed)
281+
{
282+
Editor.Dispose();
283+
}
284+
285+
ToBroadcast.Clear();
286+
287+
await ATIS1?.Delete(false);
288+
await ATIS2?.Delete(false);
289+
await ATIS3?.Delete(false);
290+
await ATIS4?.Delete(false);
282291
}
283292

284293
private void OnUpdate(object sender, EventArgs e)

Version.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
22
"Major": 2,
3-
"Minor": 1
3+
"Minor": 2
44
}

0 commit comments

Comments
 (0)