コード例 #1
0
        private void UpdateDetails(CodingIncidentMessage codingIncidentMsg)
        {
            //check whether msg is in failed msg list else display
            if (FailedCodingID.Contains(codingIncidentMsg.CodingID))
            {
                //Create a console log entry, do not need as it wont appear at all
                CreateConsoleLogEntry("Failed");

                //Empty Display
                EmptyDisplay();

                lblStatus = "Failed";

                FailedCodingID.Remove(codingIncidentMsg.CodingID);

                //Take out from msg queue and show on display
                NotifyNewMsg();
            }
            else
            {
                //increase incident count
                foreach (StatsRecord record in StatsRecordList)
                {
                    if (record.ConsoleName.Equals(Properties.Settings.Default.CurrentID))
                    {
                        record.IncidentCount++;
                        break;
                    }
                }

                //Update the Display panel details
                this.txtIncidentSummary.Text = (codingIncidentMsg.IncidentNo + ": " + codingIncidentMsg.IncidentType).ToUpper();
                this.txtLocationSummary.Text = codingIncidentMsg.IncidentType + " at " + codingIncidentMsg.IncidentLocation.Street;
                string prioralarm = "PRIORITY: " + codingIncidentMsg.IncidentPriority.ToString() +
                                    "  - ALARM: " + codingIncidentMsg.IncidentAlarm.ToString() +
                                    "  - DISPATCHED: " + String.Format("{0:g}", codingIncidentMsg.DispatchDateTime);
                this.txtPriorAlarm.Text = prioralarm;

                this.txtLocationName.Text      = codingIncidentMsg.IncidentLocation.Name.ToUpper();
                this.txtLocationStreet.Text    = codingIncidentMsg.IncidentLocation.Street;
                this.txtLocationUnit.Text      = codingIncidentMsg.IncidentLocation.Unit;
                this.txtLocationStateCity.Text = "City: " + codingIncidentMsg.IncidentLocation.City +
                                                 " - State: " + codingIncidentMsg.IncidentLocation.State;
                this.txtLocationPostal.Text = "Singapore " + codingIncidentMsg.IncidentLocation.PostalCode;

                //Update the hidden value
                lblCodingID = codingIncidentMsg.CodingID;
                lblStatus   = "";

                //Disable status record panel
                this.panelStatus.Visibility = Visibility.Collapsed;

                //the red top bar and unit listview visible
                this.gIncidentSummary.Visibility = Visibility.Visible;
                this.gPriorAlarm.Visibility      = Visibility.Visible;
                this.gAddress.Visibility         = Visibility.Visible;
                this.lvUnits.Visibility          = Visibility.Visible;

                this.btnAck.Visibility    = Visibility.Visible;
                this.btnReject.Visibility = Visibility.Visible;

                //Clear and add new unit into the list
                _UnitsStatusList.Clear();

                foreach (CodingUnits unit in codingIncidentMsg.DispatchUnits)
                {
                    if (unit.UnitCurrentStation.Equals(Properties.Settings.Default.CurrentID))
                    {
                        UnitsStatus unitstatus = new UnitsStatus();
                        unitstatus.CallSign = unit.Callsign;
                        unitstatus.UnitType = unit.UnitType;
                        _UnitsStatusList.Add(unitstatus);
                    }

                    //For test message data
                    if (unit.UnitCurrentStation.Equals("Test"))
                    {
                        UnitsStatus unitstatus = new UnitsStatus();
                        unitstatus.CallSign = unit.Callsign;
                        unitstatus.UnitType = unit.UnitType;
                        _UnitsStatusList.Add(unitstatus);
                    }
                }

                this.lvUnits.ItemsSource = null;
                this.lvUnits.ItemsSource = _UnitsStatusList;

                //Update current codingID
                _currIncidentNo = codingIncidentMsg.IncidentNo;
                _currCodingID   = codingIncidentMsg.CodingID;

                //--------------------------Display Completed!!!---------------------------

                if (isInternetup)
                {
                    //Send to trigger gateway start timeout
                    _CallOut_CodingService.MsgDisplayedResponse(Properties.Settings.Default.CurrentID, codingIncidentMsg);
                }

                //Text to speech
                string IncidentNoSpeech = "Incident Number, " + codingIncidentMsg.IncidentNo + ". ";
                //string IncidentnoSpeech = "Incident Number : " + codingIncidentMsg.IncidentNo + ", Incident Type : "+ codingIncidentMsg.IncidentType;
                string PriorAlarmSpeech = "PRIORITY, " + codingIncidentMsg.IncidentPriority.ToString() +
                                          "  . ALARM, " + codingIncidentMsg.IncidentAlarm.ToString() +
                                          "  . DISPATCHED, " + String.Format("{0:g}", codingIncidentMsg.DispatchDateTime);
                speechsentence = IncidentNoSpeech + this.txtLocationSummary.Text + ". " + PriorAlarmSpeech;
                string strURL = string.Format(URL, "en", speechsentence.ToLower().Replace(" ", "%20"));

                //Setting up message alarm
                WaveFileReader wavreader = new WaveFileReader(Properties.Resources.incomingmsg);
                waveOut = new WaveOut();
                waveOut.Init(wavreader);
                waveOut.Play();
                isMsgAlarmPlayed = true;
                System.Timers.Timer MsgAlarmTimer = new System.Timers.Timer();
                MsgAlarmTimer.Interval  = wavreader.Length / 100;
                MsgAlarmTimer.Elapsed  += delegate { MsgAlarmCompleted(strURL, speechsentence); };
                MsgAlarmTimer.AutoReset = false;
                MsgAlarmTimer.Start();


                //Start timer for 10 sec to auto reject, tag with coding ID more unqiue
                System.Timers.Timer AutoRejectTimer = new System.Timers.Timer();
                AutoRejectTimer.Interval  = 30000; //30 sec
                AutoRejectTimer.Elapsed  += delegate { Timeout(codingIncidentMsg.CodingID); };
                AutoRejectTimer.AutoReset = false;
                AutoRejectTimer.Start();
            }
        }