skyscraper8/GUIs/skyscraper8.UI.ImGui/Forms/FoundFrequenciesWindow2.cs
2025-08-28 20:47:56 +02:00

94 lines
2.6 KiB
C#

using SDL2Demo;
using skyscraper8.Skyscraper.FrequencyListGenerator;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ImGuiNET;
using skyscraper5.Skyscraper.IO.CrazycatStreamReader;
namespace SDL2Demo
{
internal class FoundFrequenciesWindow2 : IRenderable
{
private readonly List<BlindscanSearchResult> _foundFrequencies;
public bool doNotAutoZap;
public bool allowZapNow;
public bool zapNowRequested;
private string tableUuid;
public long statusPacketsInTotal;
public long statusPacketsInQueue;
public FoundFrequenciesWindow2(List<BlindscanSearchResult> foundFrequencies)
{
_foundFrequencies = foundFrequencies;
tableUuid = Guid.NewGuid().ToString();
}
public void Render()
{
if (_foundFrequencies.Count == 0)
return;
if (ImGui.Begin("Blind-Scan Results"))
{
ImGui.Checkbox("Do not Auto-Zap", ref doNotAutoZap);
ImGui.SameLine();
ImGui.BeginDisabled(!allowZapNow);
if (ImGui.Button("Zap now"))
{
zapNowRequested = true;
}
ImGui.EndDisabled();
if (allowZapNow)
{
ImGui.Text(String.Format("{0} packets received in total, {1} queued.", statusPacketsInTotal, statusPacketsInQueue));
}
if (ImGui.BeginTable(tableUuid, 5,
ImGuiTableFlags.NoSavedSettings | ImGuiTableFlags.SizingFixedFit))
{
for (int i = 0; i < _foundFrequencies.Count; i++)
{
BlindscanSearchResult blindscanResult = _foundFrequencies[i];
ImGui.TableNextRow();
if (blindscanResult.IsSatellite())
{
ImGui.TableSetColumnIndex(0);
ImGui.Text(String.Format("{0} {1} ", blindscanResult.SearchResult.Freq / 1000,
blindscanResult.SearchResult.Pol == 0 ? "H" : "V"));
ImGui.TableSetColumnIndex(1);
ImGui.Text((blindscanResult.SearchResult.SR / 1000).ToString());
ImGui.TableSetColumnIndex(2);
ImGui.Text(((MOD_TYPE)blindscanResult.SearchResult.ModType).ToString());
ImGui.TableSetColumnIndex(3);
ImGui.Text((blindscanResult.SearchResult.MIS + 1).ToString());
}
else
{
ImGui.TableSetColumnIndex(0);
ImGui.Text((blindscanResult.SearchResult.Freq / 1000).ToString());
ImGui.TableSetColumnIndex(1);
ImGui.Text((blindscanResult.SearchResult.SR / 10).ToString());
ImGui.TableSetColumnIndex(2);
ImGui.Text(((MOD_TYPE)blindscanResult.SearchResult.ModType).ToString());
}
ImGui.TableSetColumnIndex(4);
ImGui.Text(blindscanResult.State.ToString());
}
ImGui.EndTable();
}
ImGui.End();
}
}
}
}