private void HeardIt(UdpReceiverClass u, EventArgs e) { // HELP : example how to call method // Invoke((MethodInvoker)(() => methodName())); if (InvokeRequired) { Invoke((MethodInvoker)(GetCall)); } else { string reception = UdpReceiverClass.ReceivedMessage; CallRecord cRecord = new CallRecord(UdpReceiverClass.ReceivedMessage); string log_id = GetNewLogID(cRecord); AddToCallLog(cRecord, log_id, false); PostCallToCloud(cRecord, log_id); } }
private void ParseCall() { // Parse up call CallRecord call_record; if (PreviousConnection == ConnectionType.Serial) { call_record = new CallRecord(SerialPortReceiverClass.PreviousPacket); } else { call_record = new CallRecord(UdpReceiverClass.ReceivedMessage); } if (!call_record.IsValid) { return; } if (PreviousReceptions.Contains(call_record.Reception_String)) { return; } PreviousReceptions.Add(call_record.Reception_String); if (!Program.AppSettings[(int)Program.AppSetting.RELAY_IP].ToLower().Contains("0.0.0.0") && !string.IsNullOrEmpty(Program.AppSettings[(int)Program.AppSetting.RELAY_IP]) && Program.AppSettings[(int)Program.AppSetting.RELAY_IP] != "Do not Relay Data") { if (PreviousConnection == ConnectionType.Serial) { UdpReceiverClass.SendUDP(call_record.Reception_String, Program.AppSettings[(int)Program.AppSetting.RELAY_IP], 3520); } } timerClearPreviousReceptions.Enabled = true; timerClearPreviousReceptions.Stop(); timerClearPreviousReceptions.Interval = 500; timerClearPreviousReceptions.Start(); bool line_number_too_high = false; if (call_record.Line > 12) { line_number_too_high = true; lbHighLineNumber.Visible = true; } string outbound_name = ""; if (call_record.IsOutbound()) { outbound_name = CallLog.GetNameFromNumberInDatabase(call_record.PhoneNumber); } // Show popup if (call_record.IsStartRecord() && !line_number_too_high) { pController.AddPopup(call_record.Line, call_record.IsInbound(), call_record.PhoneNumber, (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name)); PreviousPacketWasOutbound = !call_record.IsInbound(); } else if (call_record.IsEndRecord()) { PreviousPacketWasOutbound = false; } if (call_record.IsInbound() && bool.Parse(Program.AppSettings[(int)Program.AppSetting.POPUP_INBOUND])) { PreviousCall.Line = call_record.Line; PreviousCall.Number = call_record.PhoneNumber; PreviousCall.Name = (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name); PreviousCall.IsInbound = true; } else if (call_record.IsOutbound() && bool.Parse(Program.AppSettings[(int)Program.AppSetting.POPUP_OUTBOUND])) { PreviousCall.Line = call_record.Line; PreviousCall.Number = call_record.PhoneNumber; PreviousCall.Name = (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name); PreviousCall.IsInbound = false; } if (call_record.Detailed && call_record.DetailedType == "N") { string uString = call_record.Line + " " + (call_record.IsInbound() ? "1" : "0") + " " + call_record.PhoneNumber + " " + (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name); pController.RemovePopup(uString); } if (call_record.Line > 8) { UnHideLines(Lines.EightThroughTwelve); } else if (call_record.Line > 4) { UnHideLines(Lines.FiveThroughEight); } if (line_number_too_high) { if (!call_record.Detailed && call_record.IsStartRecord()) { AddToCallLog((string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name), call_record.PhoneNumber, call_record.DateTime, call_record.Duration, call_record.Line, call_record.InboundOrOutboundOrBlock, call_record.RingNumber.ToString(), call_record.IsEndRecord(), call_record.UniqueID, call_record.Reception_String); } return; } if (PreviousConnection == ConnectionType.Serial) { Common.AttmptWriteToLog(SerialPortReceiverClass.PreviousPacket, true); } else { Common.AttmptWriteToLog(call_record.Reception_String, false); } if (call_record.Detailed) { if (call_record.DetailedType == "R") { tbNames[call_record.Line].Text = "Ringing"; tbNumbers[call_record.Line].Text = "Ringing"; tbNames[call_record.Line].BackColor = Color.Pink; tbNumbers[call_record.Line].BackColor = Color.Pink; } else if (call_record.DetailedType == "F") { if (PreviousPacketWasOutbound) { tbNames[call_record.Line].Text = ""; tbNumbers[call_record.Line].Text = ""; } tbNames[call_record.Line].BackColor = Color.LightYellow; tbNumbers[call_record.Line].BackColor = Color.LightYellow; } else { tbNames[call_record.Line].BackColor = Color.White; tbNumbers[call_record.Line].BackColor = Color.White; } } else { if (call_record.IsEndRecord()) { tbNames[call_record.Line].BackColor = Program.C_CALL_FINISHED_BACKGROUND; tbNumbers[call_record.Line].BackColor = Program.C_CALL_FINISHED_BACKGROUND; } else { if (call_record.IsStartRecord()) { tbNames[call_record.Line].BackColor = Color.White; tbNumbers[call_record.Line].BackColor = Color.White; if (call_record.IsInbound()) { tbNames[call_record.Line].ForeColor = Program.C_INCOMING_CALL_FOREGROUND; tbNumbers[call_record.Line].ForeColor = Program.C_INCOMING_CALL_FOREGROUND; } else { tbNames[call_record.Line].ForeColor = Program.C_OUTGOING_CALL_FOREGROUND; tbNumbers[call_record.Line].ForeColor = Program.C_OUTGOING_CALL_FOREGROUND; } AddToCallLog((string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name), call_record.PhoneNumber, call_record.DateTime, call_record.Duration, call_record.Line, call_record.InboundOrOutboundOrBlock, call_record.RingNumber.ToString(), call_record.IsEndRecord(), call_record.UniqueID, call_record.Reception_String); } } tbNames[call_record.Line].Text = (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name).Trim(); tbNumbers[call_record.Line].Text = call_record.PhoneNumber.Trim(); } if (call_record.IsEndRecord()) { AddToCallLog((string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name), call_record.PhoneNumber, call_record.DateTime, call_record.Duration, call_record.Line, call_record.InboundOrOutboundOrBlock, call_record.RingNumber.ToString(), call_record.IsEndRecord(), call_record.UniqueID, call_record.Reception_String); CallLog.AddCall(call_record.Line.ToString(), call_record.StartOrEnd, call_record.InboundOrOutboundOrBlock, call_record.Duration.ToString().PadLeft(4, '0'), call_record.CheckSum, call_record.RingNumber.ToString(), call_record.DateTime, call_record.PhoneNumber, (string.IsNullOrEmpty(outbound_name) ? call_record.Name : outbound_name), call_record.UniqueID); if (Program.fOptions != null) { if (Program.fOptions.Visible) { Program.fOptions.RefreshLogCount(); } } } }
private void UDPReception(UdpReceiverClass u, EventArgs e) { PreviousConnection = ConnectionType.UDP; Invoke((MethodInvoker)(ParseCall)); }
public void Subscribe(UdpReceiverClass u) { // If UDP event occurs run HeardIt method u.DataReceived += UDPReception; }
public FrmMain() { InitializeComponent(); string old_database = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + @"\CallerID.com\ELPopup\CallDatabase.db3"; if (File.Exists(old_database)) { DialogResult import_result = Common.MessageBox("Import Old Database?", "Old ELPopup database found. Import those call records into ELPopup 5?", true, DialogResult.Yes, true, DialogResult.No, false, DialogResult.None, "Yes", "No", "", 1); if (import_result == DialogResult.Yes) { FrmOptions fOptTemp = new FrmOptions(true); fOptTemp.ImportOldDatabase(old_database); if (fOptTemp.Visible) { fOptTemp.Close(); } fOptTemp = null; } else { DialogResult not_show_again = Common.MessageBox("Remind Me?", "Remind me later to Import?", true, DialogResult.Yes, true, DialogResult.No, false, DialogResult.None, "Yes", "No", "", 1); if (not_show_again == DialogResult.No) { File.Move(old_database, old_database.Replace(".db3", "-skipped.db3")); } } } lbLines[1] = lbL1; lbLines[2] = lbL2; lbLines[3] = lbL3; lbLines[4] = lbL4; lbLines[5] = lbL5; lbLines[6] = lbL6; lbLines[7] = lbL7; lbLines[8] = lbL8; lbLines[9] = lbL9; lbLines[10] = lbL10; lbLines[11] = lbL11; lbLines[12] = lbL12; tbNumbers[1] = tbL1Number; tbNumbers[2] = tbL2Number; tbNumbers[3] = tbL3Number; tbNumbers[4] = tbL4Number; tbNumbers[5] = tbL5Number; tbNumbers[6] = tbL6Number; tbNumbers[7] = tbL7Number; tbNumbers[8] = tbL8Number; tbNumbers[9] = tbL9Number; tbNumbers[10] = tbL10Number; tbNumbers[11] = tbL11Number; tbNumbers[12] = tbL12Number; tbNames[1] = tbL1Name; tbNames[2] = tbL2Name; tbNames[3] = tbL3Name; tbNames[4] = tbL4Name; tbNames[5] = tbL5Name; tbNames[6] = tbL6Name; tbNames[7] = tbL7Name; tbNames[8] = tbL8Name; tbNames[9] = tbL9Name; tbNames[10] = tbL10Name; tbNames[11] = tbL11Name; tbNames[12] = tbL12Name; switch (Program.AppSettings[(int)Program.AppSetting.MAX_LINE_NUMBER]) { case "-1": UnHideLines(Lines.OneThroughFour, true); Program.AppSettings[(int)Program.AppSetting.MAX_LINE_NUMBER] = "4"; Common.SaveSettings(); break; case "4": UnHideLines(Lines.OneThroughFour, true); break; case "8": UnHideLines(Lines.FiveThroughEight, true); break; case "12": UnHideLines(Lines.EightThroughTwelve, true); break; } PreviousCall.Line = -1; if (bool.Parse(Program.AppSettings[(int)Program.AppSetting.USE_CUSTOM_MAIN_WINDOW_SIZING])) { Size = new Size(int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_WIDTH]), int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_HEIGHT])); } if (bool.Parse(Program.AppSettings[(int)Program.AppSetting.USE_CUSTOM_POSITION])) { if (int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_X]) > Screen.PrimaryScreen.Bounds.Width || int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_X]) < 0) { Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_X] = "0"; } if (int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_Y]) > Screen.PrimaryScreen.Bounds.Height || int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_Y]) < 0) { Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_Y] = "0"; } Location = new Point(int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_X]), int.Parse(Program.AppSettings[(int)Program.AppSetting.MAIN_WINDOW_Y])); } else { this.CenterToScreen(); } UdpReceiver = new UdpReceiverClass(); _udpReceiveThread = new Thread(UdpReceiver.UdpIdleReceive); Program.COM_PORTS.Add("None"); string[] com_ports = SerialPort.GetPortNames(); string found_port_name = ""; foreach (string port_name in com_ports) { PortScan = new SerialPort(port_name, 9600, Parity.None, 8, StopBits.One); string found_text = ""; try { PortScan.DataReceived += new SerialDataReceivedEventHandler(PortTest); PortScan.Open(); PortScan.Write("@"); PortScan.ReadTimeout = 900; Common.WaitFor(1000); if (SerialReadIn == "#") { found_port_name = port_name; found_text = " (Unit Detected)"; } PortScan.Close(); } catch (Exception ex) { Console.Write(ex.ToString()); found_text = " (Another app using COM Port)"; } Program.COM_PORTS.Add(port_name + found_text); } if (found_port_name != "" && found_port_name != "None") { Program.AppSettings[(int)Program.AppSetting.SS_COM_PORT] = found_port_name; Common.SaveSettings(); } SerialReceiver = new SerialPortReceiverClass(Program.AppSettings[(int)Program.AppSetting.SS_COM_PORT]); sys_tray_icon = new NotifyIcon(); sys_tray_icon.Icon = new Icon("phone.ico"); ContextMenuStrip sys_tray_menu = new ContextMenuStrip(); sys_tray_icon.DoubleClick += new EventHandler(SysTrayMenuOpen_Clicked); sys_tray_icon.Click += new EventHandler(SysTrayMenuOptions_Single_Click); ToolStripMenuItem sys_tray_menu_open = new ToolStripMenuItem(); sys_tray_menu_open.Text = "Main Window"; sys_tray_menu_open.Click += new EventHandler(SysTrayMenuOpen_Clicked); sys_tray_menu.Items.Add(sys_tray_menu_open); ToolStripMenuItem sys_tray_menu_options = new ToolStripMenuItem(); sys_tray_menu_options.Text = "Options"; sys_tray_menu_options.Click += new EventHandler(SysTrayMenuOptions_Clicked); sys_tray_menu.Items.Add(sys_tray_menu_options); ToolStripMenuItem sys_tray_menu_user_manual = new ToolStripMenuItem(); sys_tray_menu_user_manual.Text = "User Manual"; sys_tray_menu_user_manual.Click += new EventHandler(SysTrayUserManual_Clicked); sys_tray_menu.Items.Add(sys_tray_menu_user_manual); ToolStripMenuItem sys_tray_menu_close = new ToolStripMenuItem(); sys_tray_menu_close.Text = "Close ELPopup"; sys_tray_menu_close.Click += new EventHandler(SysTrayMenuClose_Clicked); sys_tray_menu.Items.Add(sys_tray_menu_close); sys_tray_icon.ContextMenuStrip = sys_tray_menu; sys_tray_icon.Text = "ELPopup 5"; // Initialize popup controller pController = new PopupController(); // Start listener for UDP traffic Subscribe(UdpReceiver); _udpReceiveThread.IsBackground = true; _udpReceiveThread.Start(); // Start listener for SERIAL traffic SerialSubscribe(SerialReceiver); SerialReceiver.OpenCOMPort(); PopulateCallLog(); UpdateTitleBar(); sys_tray_icon.Visible = true; dgvCallLog.ClearSelection(); ndDisplayCount.Value = int.Parse(Program.AppSettings[(int)Program.AppSetting.DISPLAY_RECORD_COUNT]); if (bool.Parse(Program.AppSettings[(int)Program.AppSetting.START_MINIMIZED])) { timerAutoHide.Enabled = true; timerAutoHide.Start(); } }