protected override void OnPaint(PaintEventArgs pe)
{
var gMic = pe.Graphics;
var rc = ClientRectangle;
string m = "", txt = Micobject.name;
if (IsEnabled)
{
var l = _levels;
if (l != null && !AudioSourceErrorState)
{
int bh = (rc.Height - 20)/Micobject.settings.channels - (Micobject.settings.channels - 1)*2;
if (bh <= 2)
bh = 2;
using (var lgb = new SolidBrush(MainForm.VolumeLevelColor))
{
for (int j = 0; j < Micobject.settings.channels; j++)
{
float f = 0f;
if (j < l.Length)
f = l[j];
if (f > 1) f = 1;
int drawW = Convert.ToInt32(Convert.ToDouble(rc.Width*f) - 1.0);
if (drawW < 1)
drawW = 1;
gMic.FillRectangle(lgb, rc.X + 2, rc.Y + 2 + j*bh + (j*2), drawW - 4, bh);
}
var d = (Convert.ToDouble(rc.Width - 4)/100.00);
var mx1 = (float) (d*Micobject.detector.minsensitivity);
var mx2 = (float) (d*Micobject.detector.maxsensitivity);
gMic.DrawLine(_vline, mx1, 2, mx1, rc.Height - 20);
gMic.DrawLine(_vline, mx2, 2, mx2, rc.Height - 20);
if (Listening)
{
gMic.DrawString("LIVE", MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, 4));
}
if (Recording)
{
gMic.FillEllipse(MainForm.RecordBrush, new Rectangle(rc.Width - 14, 2, 8, 8));
}
}
}
else
{
var img = Properties.Resources.connecting;
gMic.DrawImage(img, Width - img.Width-2, 2, img.Width, img.Height);
}
}
else
{
txt += ": " + LocRm.GetString("Offline");
gMic.DrawString(SourceType + ": " + Micobject.name, MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, 5));
}
string flags = "";
if (Micobject.alerts.active)
flags += "!";
if (ForcedRecording)
flags += "F";
else
{
if (Micobject.detector.recordondetect)
flags += "D";
else
{
if (Micobject.detector.recordonalert)
flags += "A";
else
{
flags += "N";
}
}
}
if (Micobject.schedule.active)
flags += "S";
if (flags != "")
m = flags + " " + m;
gMic.DrawString(m + txt, MainForm.Drawfont, MainForm.CameraDrawBrush, new PointF(5, rc.Height - 18));
if (_mouseMove > Helper.Now.AddSeconds(-3) && MainForm.Conf.ShowOverlayControls)
{
DrawOverlay(gMic);
}
using (var grabBrush = new SolidBrush(BorderColor))
using (var borderPen = new Pen(grabBrush, BorderWidth))
{
if (!Paired && !MainForm.LockLayout)
{
var grabPoints = new[]
{
new Point(rc.Width - 15, rc.Height), new Point(rc.Width, rc.Height - 15),
new Point(rc.Width, rc.Height)
};
gMic.FillPolygon(grabBrush, grabPoints);
}
if (!Paired)
gMic.DrawRectangle(borderPen, 0, 0, rc.Width - 1, rc.Height - 1);
else
{
gMic.DrawLine(borderPen, 0, 0, 0, rc.Height - 1);
gMic.DrawLine(borderPen, 0, rc.Height - 1, rc.Width - 1, rc.Height - 1);
gMic.DrawLine(borderPen, rc.Width - 1, rc.Height - 1, rc.Width - 1, 0);
}
}
base.OnPaint(pe);
}