SDRSharper/SDRSharper.PanView/SDRSharp.PanView/frmStationList.cs

341 lines
11 KiB
C#
Raw Normal View History

using SDRSharp.Radio;
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace SDRSharp.PanView
{
public class frmStationList : Form
{
private const int FREQ = 0;
private const int TIME = 1;
private const int DAYS = 2;
private const int CTRY = 3;
private const int NAME = 4;
private const int LANG = 5;
private const int DBUV = 6;
private const int SITE = 7;
private const int EMP = 8;
private const int DIST = 9;
private const int POWR = 10;
private string _stations;
private int _showDbm;
private IContainer components;
private DataGridView grdStations;
private TextBox txtMaxStation;
private Label label1;
private CheckBox chkFreq;
private CheckBox chkDate;
public int ShowDbm
{
set
{
this._showDbm = value;
}
}
public string Stations
{
get
{
return this._stations;
}
set
{
this._stations = value;
this.ShowStations();
}
}
public event EventHandler StationDataChanged;
public frmStationList()
{
this.InitializeComponent();
base.TopMost = true;
int num = TextRenderer.MeasureText("abcdefghijklmnopqrstuvw", this.grdStations.Font).Width / 26;
this.txtMaxStation.Text = Utils.GetStringSetting("StationlistMax", "10");
this.chkFreq.Checked = Utils.GetBooleanSetting("StationlistFreq");
this.chkDate.Checked = Utils.GetBooleanSetting("StationlistDate");
bool numeric = true;
bool visible = true;
this.grdStations.Columns.Add(this.column("freq", "Freq", num * 12, false, this.chkFreq.Checked));
this.grdStations.Columns.Add(this.column("ctry", "Ctry", num * 10, false, visible));
this.grdStations.Columns.Add(this.column("lang", "Lang", num * 10, false, visible));
this.grdStations.Columns.Add(this.column("name", "Name", num * 40, false, visible));
this.grdStations.Columns.Add(this.column("site", "Site", num * 50, false, visible));
this.grdStations.Columns.Add(this.column("dist", "Km", num * 10, numeric, visible));
this.grdStations.Columns.Add(this.column("powr", "kW", num * 10, numeric, visible));
this.grdStations.Columns.Add(this.column("dbm", "dBm", num * 10, numeric, false));
this.grdStations.Columns.Add(this.column("sig", "Sig", num * 10, numeric, visible));
this.grdStations.Columns.Add(this.column("time", "Time", num * 16, false, this.chkDate.Checked));
this.grdStations.Columns.Add(this.column("days", "Days", num * 15, false, this.chkDate.Checked));
int num2 = 0;
for (int i = 0; i < this.grdStations.Columns.Count; i++)
{
num2 += this.grdStations.Columns[i].Width;
}
base.Width = Utils.GetIntSetting("StationlistWidth", num2);
base.Height = Utils.GetIntSetting("StationlistHeight", 300);
}
private void frmStationList_FormClosing(object sender, FormClosingEventArgs e)
{
Utils.SaveSetting("StationlistFreq", this.chkFreq.Checked);
Utils.SaveSetting("StationlistDate", this.chkDate.Checked);
Utils.SaveSetting("StationlistWidth", base.Width);
Utils.SaveSetting("StationlistHeight", base.Height);
}
private DataGridViewColumn column(string name, string header, int width, bool numeric, bool visible)
{
DataGridViewTextBoxColumn dataGridViewTextBoxColumn = new DataGridViewTextBoxColumn();
dataGridViewTextBoxColumn.Name = name;
dataGridViewTextBoxColumn.HeaderText = header;
dataGridViewTextBoxColumn.Width = width;
if (numeric)
{
dataGridViewTextBoxColumn.ValueType = typeof(int);
}
if (!visible)
{
dataGridViewTextBoxColumn.Visible = false;
}
return dataGridViewTextBoxColumn;
}
private void ShowStations()
{
if (this._stations != null && base.Visible)
{
this.grdStations.Rows.Clear();
string[] array = this._stations.Split(';');
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
string headerText = "dBm";
if (this._showDbm == 1)
{
headerText = "dBuV";
}
if (this._showDbm == 2)
{
headerText = "S-pts";
}
if (this._showDbm == 3)
{
headerText = "%";
}
this.grdStations.Columns["sig"].HeaderText = headerText;
this.grdStations.Columns["sig"].ValueType = ((this._showDbm == 2) ? typeof(string) : typeof(int));
for (int i = 0; i <= array.GetUpperBound(0); i++)
{
if (array[i].Length != 0)
{
string[] array2 = array[i].Split(',');
int upperBound = array2.GetUpperBound(0);
if (9 <= upperBound)
{
int.TryParse(array2[9], out num);
}
if (10 <= upperBound)
{
int.TryParse(array2[10], out num2);
}
if (upperBound >= 7)
{
num3 = Utils.Val(array2[6], 0) - 107;
string text = Utils.Signal(num3, this._showDbm, false);
if (this._showDbm == 2)
{
if (text.IndexOf('S') < 0)
{
text = "S9" + text;
}
this.grdStations.Rows.Add(array2[0], array2[3], array2[5], array2[4], array2[7], num, num2, num3, text, array2[1], array2[2]);
}
else
{
this.grdStations.Rows.Add(array2[0], array2[3], array2[5], array2[4], array2[7], num, num2, num3, Utils.Val(text, 0), array2[1], array2[2]);
}
this.grdStations[3, num4++].ToolTipText = "Double click to set station on top of list";
}
}
}
}
}
private void GetStations()
{
this._stations = "";
string[] array = new string[11];
for (int i = 0; i < this.grdStations.Rows.Count; i++)
{
DataGridViewRow dataGridViewRow = this.grdStations.Rows[i];
array[0] = dataGridViewRow.Cells[0].Value.ToString();
array[3] = dataGridViewRow.Cells[1].Value.ToString();
array[5] = dataGridViewRow.Cells[2].Value.ToString();
array[4] = dataGridViewRow.Cells[3].Value.ToString();
array[7] = dataGridViewRow.Cells[4].Value.ToString();
array[9] = dataGridViewRow.Cells[5].Value.ToString();
array[10] = dataGridViewRow.Cells[6].Value.ToString();
array[6] = ((int)dataGridViewRow.Cells[7].Value + 107).ToString();
array[1] = dataGridViewRow.Cells[9].Value.ToString();
array[2] = dataGridViewRow.Cells[10].Value.ToString();
string str = string.Join(",", array);
this._stations = this._stations + ((this._stations.Length <= 1) ? "" : ";") + str;
}
}
private void grdStations_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
int rowIndex = e.RowIndex;
int index = this.grdStations.Columns["dbm"].Index;
if (rowIndex >= 0 && index != 0)
{
int num = -999;
for (int i = 0; i < this.grdStations.Rows.Count; i++)
{
int num2 = (int)this.grdStations.Rows[i].Cells[index].Value;
if (num2 > num)
{
num = num2;
}
}
this.grdStations.Rows[rowIndex].Cells[index].Value = num + 1;
this.grdStations.Rows[rowIndex].Cells["sig"].Value = Utils.Signal(num + 1, this._showDbm, false);
if (this.grdStations.Rows.Count > 1)
{
this.grdStations.Sort(this.grdStations.Columns[index], ListSortDirection.Descending);
}
this.GetStations();
this.StationDataChanged(this, null);
}
}
private void txtMaxStation_Validated(object sender, EventArgs e)
{
if (Utils.Val(this.txtMaxStation.Text, 0) > 0)
{
Utils.SaveSetting("StationlistMax", Utils.Val(this.txtMaxStation.Text, 0));
MessageBox.Show("Please restart SDR.");
}
}
protected override void Dispose(bool disposing)
{
if (disposing && this.components != null)
{
this.components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
DataGridViewCellStyle dataGridViewCellStyle = new DataGridViewCellStyle();
DataGridViewCellStyle dataGridViewCellStyle2 = new DataGridViewCellStyle();
this.grdStations = new DataGridView();
this.txtMaxStation = new TextBox();
this.label1 = new Label();
this.chkFreq = new CheckBox();
this.chkDate = new CheckBox();
((ISupportInitialize)this.grdStations).BeginInit();
base.SuspendLayout();
this.grdStations.AllowUserToAddRows = false;
this.grdStations.AllowUserToDeleteRows = false;
this.grdStations.AllowUserToResizeRows = false;
dataGridViewCellStyle.BackColor = Color.FromArgb(240, 240, 240);
this.grdStations.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle;
this.grdStations.Anchor = (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right);
this.grdStations.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
dataGridViewCellStyle2.Alignment = DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = SystemColors.Window;
dataGridViewCellStyle2.Font = new Font("Microsoft Sans Serif", 7.8f, FontStyle.Regular, GraphicsUnit.Point, 0);
dataGridViewCellStyle2.ForeColor = SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = DataGridViewTriState.False;
this.grdStations.DefaultCellStyle = dataGridViewCellStyle2;
this.grdStations.Location = new Point(0, 3);
this.grdStations.Margin = new Padding(2);
this.grdStations.MultiSelect = false;
this.grdStations.Name = "grdStations";
this.grdStations.ReadOnly = true;
this.grdStations.RowHeadersVisible = false;
this.grdStations.RowTemplate.Height = 24;
this.grdStations.SelectionMode = DataGridViewSelectionMode.CellSelect;
this.grdStations.Size = new Size(444, 184);
this.grdStations.TabIndex = 0;
this.grdStations.CellMouseDoubleClick += this.grdStations_CellMouseDoubleClick;
this.txtMaxStation.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
this.txtMaxStation.Location = new Point(136, 191);
this.txtMaxStation.Name = "txtMaxStation";
this.txtMaxStation.Size = new Size(39, 20);
this.txtMaxStation.TabIndex = 2;
this.txtMaxStation.Validated += this.txtMaxStation_Validated;
this.label1.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
this.label1.AutoSize = true;
this.label1.Location = new Point(2, 194);
this.label1.Name = "label1";
this.label1.Size = new Size(129, 13);
this.label1.TabIndex = 3;
this.label1.Text = "Max Nr of station per freq:";
this.chkFreq.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
this.chkFreq.AutoSize = true;
this.chkFreq.CheckAlign = ContentAlignment.MiddleRight;
this.chkFreq.Location = new Point(194, 192);
this.chkFreq.Name = "chkFreq";
this.chkFreq.Size = new Size(104, 17);
this.chkFreq.TabIndex = 4;
this.chkFreq.Text = "show Frequency";
this.chkFreq.UseVisualStyleBackColor = true;
this.chkDate.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
this.chkDate.AutoSize = true;
this.chkDate.CheckAlign = ContentAlignment.MiddleRight;
this.chkDate.Location = new Point(302, 192);
this.chkDate.Name = "chkDate";
this.chkDate.Size = new Size(105, 17);
this.chkDate.TabIndex = 5;
this.chkDate.Text = "show Date/Time";
this.chkDate.UseVisualStyleBackColor = true;
base.AutoScaleDimensions = new SizeF(6f, 13f);
base.AutoScaleMode = AutoScaleMode.Font;
base.ClientSize = new Size(444, 210);
base.Controls.Add(this.chkDate);
base.Controls.Add(this.chkFreq);
base.Controls.Add(this.label1);
base.Controls.Add(this.txtMaxStation);
base.Controls.Add(this.grdStations);
base.Margin = new Padding(2);
base.Name = "frmStationList";
this.Text = "StationList";
base.FormClosing += this.frmStationList_FormClosing;
((ISupportInitialize)this.grdStations).EndInit();
base.ResumeLayout(false);
base.PerformLayout();
}
}
}