HamBook – Rev
?pathlinks?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HamBook.Radios.Generic
{
public class CtcssMode
{
public int Mode { get; set; }
public CtcssMode(string mode) : this()
{
Mode = Parse(mode);
}
public CtcssMode(int mode) : this()
{
Mode = Parse(mode);
}
public CtcssMode()
{
}
public static bool TryParse(string mode, out CtcssMode ctcssMode)
{
switch (mode)
{
case "Off":
case "Enc/Dec":
case "Enc":
ctcssMode = new CtcssMode(mode);
return true;
default:
ctcssMode = null;
return false;
}
}
public static bool TryParse(int mode, out CtcssMode ctcssMode)
{
switch (mode)
{
case 0:
case 1:
case 2:
ctcssMode = new CtcssMode(mode);
return true;
default:
ctcssMode = null;
return false;
}
}
private int Parse(string mode)
{
switch (mode)
{
case "Off":
return 0;
case "Enc/Dec":
return 1;
case "Enc":
return 2;
default:
throw new ArgumentException();
}
}
private int Parse(int mode)
{
switch (mode)
{
case 0:
case 1:
case 2:
return mode;
default:
throw new ArgumentException();
}
}
public static implicit operator CtcssMode(string mode)
{
return new CtcssMode(mode);
}
public static implicit operator string(CtcssMode ctcssMode)
{
switch (ctcssMode.Mode)
{
case 0:
return "Off";
case 1:
return "Enc/Dec";
case 2:
return "Enc";
default:
throw new ArgumentException();
}
}
public static implicit operator CtcssMode(int mode)
{
return new CtcssMode(mode);
}
public static implicit operator int(CtcssMode ctcssMode)
{
return ctcssMode.Mode;
}
}
}