using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Telerik.WinControls; using Telerik.WinControls.UI; using SafeMobileLib; using System.Text.RegularExpressions; using System.Threading; using System.Collections; using Safedispatch_4_0.Radio; using Console = SafeMobileLib.Utils; namespace Safedispatch_4_0 { public partial class FastCommandWindow : Telerik.WinControls.UI.RadForm { private string name; public String gwandradID = "0.0"; public String IMEI; private MainForm2 parent; private EventType popupType = EventType.ALERT; private int maxCharsNumberForSMS = 0; private Image themeAlert_Image = Console.ChangeColor(Dispatcher.Properties.Resources.l_menu_alert, MainForm2.ButtonColor); private Image themeText_Image = Console.ChangeColor(Dispatcher.Properties.Resources.l_menu_text, MainForm2.ButtonColor); private Image themeVoice_Image = Console.ChangeColor(Dispatcher.Properties.Resources.l_menu_ptt, MainForm2.ButtonColor); private void setLanguage() { try { labelAction.Text = MainForm2.returnLNGString("PushtoTalk"); lbSound.Text = MainForm2.returnLNGString("sound") + ':'; //btPTT.Text = MainForm2.returnLNGString("callptt"); AlarmGridView.Columns[0].HeaderText = MainForm2.returnLNGString("type"); AlarmGridView.Columns[1].HeaderText = MainForm2.returnLNGString("alarmsListColumns1"); AlarmGridView.Columns[2].HeaderText = MainForm2.returnLNGString("lbDescript"); } catch (Exception ex) { SM.Debug("Ex:"+ex.ToString()); } } public Boolean has_voice { get; set; } public Boolean has_text { get; set; } public FastCommandWindow(String _name, String _imei, MainForm2 _parent, EventType popupType, ArrayList predefSMS) { InitializeComponent(); // save desired tab this.popupType = popupType; // do not draw border for alerts grid this.AlarmGridView.GridViewElement.DrawBorder = false; this.AlarmGridView.GridViewElement.GroupPanelElement.DrawBorder = false; // display maximum number of characters maxCharsNumberForSMS = SmsUtils.GetMaxNumberOfCharacters(MainForm2.radioType); if (MainForm2.vehicleHT.Contains(_name)) { ((Vehicle)MainForm2.vehicleHT[_name]).CheckPositionInSystem(); string GatewayAndRadioID = ((Vehicle)MainForm2.vehicleHT[_name]).GwandRadioID; int gwType = (int)GatewayType.Unknown; if (MainForm2.radioGwHT[GatewayAndRadioID] != null) { gwType = ((RadioGateway)MainForm2.radioGwHT[GatewayAndRadioID]).Type; maxCharsNumberForSMS = SmsUtils.GetMaxNumberOfCharacters(gwType); } } tbText.MaxLength = maxCharsNumberForSMS; labelCount.Text = String.Format(MainForm2.returnLNGString("charactersLeft"), (tbText.MaxLength)); ; rdtpSchedule.Value = DateTime.Now; // fix background of ptt picture box pbPTT.BackColor = Color.Transparent; pbPTT.Parent = pbSpectrum; pbPTT.Location = new Point(8, 8); // set prefedSMS lvPredefinedMessages.DataSource = predefSMS; // update calling label labelCalling.Text = String.Format(MainForm2.returnLNGString("privateCallTo"), _name.ToUpper()); try { if (MainForm2.is24hours) { if (MainForm2.DayFirst) ((GridViewDateTimeColumn)AlarmGridView.Columns[1]).FormatString = "{0:dd/MM/yyyy HH:mm:ss}"; else ((GridViewDateTimeColumn)AlarmGridView.Columns[1]).FormatString = "{0:MM/dd/yyyy HH:mm:ss}"; } else { if (MainForm2.DayFirst) ((GridViewDateTimeColumn)AlarmGridView.Columns[1]).FormatString = "{0:dd/MM/yyyy hh:mm:ss tt}"; else ((GridViewDateTimeColumn)AlarmGridView.Columns[1]).FormatString = "{0:MM/dd/yyyy hh:mm:ss tt}"; } } catch (Exception ex) { SM.Debug("Error on gridview DateFormat:" + ex.ToString()); } rlPredefinedMessages.Text = MainForm2.returnLNGString("predefinedMessages"); lbAlerts.Text = MainForm2.returnLNGString("alerts"); lbMessage.Text = MainForm2.returnLNGString("textMessage"); lbCall.Text = MainForm2.returnLNGString("call"); this.Text = String.Format(MainForm2.returnLNGString("fastCommands"), _name.ToUpper()); rlScheduleSending.Text = MainForm2.returnLNGString("schedSending"); btSMS.Text = MainForm2.returnLNGString("sendsms"); //ThemeResolutionService.ApplyThemeToControlTree(this, "ControlDefault"); this.ProgVolum.ProgressBarElement.IndicatorElement1.DrawFill = true; this.ProgVolum.ProgressBarElement.IndicatorElement1.BackColor3 = System.Drawing.SystemColors.ControlLight; this.ProgVolum.ProgressBarElement.IndicatorElement1.BackColor4 = System.Drawing.Color.White; this.ProgVolum.ProgressBarElement.IndicatorElement1.BackColor = System.Drawing.Color.LightGray; this.ProgVolum.ProgressBarElement.IndicatorElement1.BackColor2 = System.Drawing.SystemColors.ControlLight; name = _name; IMEI = _imei; parent = _parent; populate(); setLanguage(); if ((MainForm2.radioType != RADIOTYPE.MOTO) && (MainForm2.radioType != RADIOTYPE.TETRA) && (MainForm2.radioType != RADIOTYPE.CONECTPLUS) || (MainForm2.radioType != RADIOTYPE.REPEATER_TRBO)) { try { switch (MainForm2.radioType) { case RADIOTYPE.HYT: this.Icon = global::Dispatcher.Properties.Resources.HytSmall24; this.BackColor = MainForm2.HyteraColor; break; case RADIOTYPE.HARRIS: this.Icon = global::Dispatcher.Properties.Resources.HarrisSmall; this.lbSound.ForeColor = MainForm2.HarTextColor; break; case RADIOTYPE.ATLAS: this.Icon = global::Dispatcher.Properties.Resources.ATLICO32; //ATLASCHANGE this.lbSound.ForeColor = MainForm2.HarTextColor; break; case RADIOTYPE.REPEATER_TRBO: //this.btPTT.Visible = false; this.lbSound.Visible = false; this.ProgVolum.Visible = false; //this.Size = new Size(this.Size.Width, this.Size.Height-35); break; case RADIOTYPE.SIMOCO: this.Icon = global::Dispatcher.Properties.Resources.simoco_dispatch_24; break; case RADIOTYPE.EXCERA: this.Icon = global::Dispatcher.Properties.Resources.AXYS_ICON; break; } } catch (Exception ex) { SM.Debug("Error on change color hytera:" + ex.ToString()); } } } /// /// Activate the desired tab /// /// The tab type which needs to be activated public void SelectTab(EventType popupType) { switch (popupType) { case EventType.ALERT: pb_Click(pbMenuAlerts, null); break; case EventType.TEXT: pb_Click(pbMenuText, null); tbText.Focus(); break; case EventType.VOICE: pb_Click(pbMenuPTT, null); break; } } public void DisablePTT() { //btPTT.Enabled = false; } public void EnablePTT() { //btPTT.Enabled = true; ProgVolum.Value1 = ProgVolum.Maximum - 0 + ProgVolum.Minimum; } public void checkStatus() { try { if (!MainForm2.VoiceTabStarted) { // Remove picture PTT panel3.Controls.Remove(pbMenuPTT); // Remove label Call this.Controls.Remove(lbCall); // remove voice tab documentTabStrip1.Controls.Remove(this.windowPtt); } /* if (parent.mainRadioForms != null) { foreach (ShapeNew obj in parent.mainRadioForms) if ((obj.typeRadio) && (obj.gwandradID == gwandradID)) { if (!obj.isON) DisablePTT(); break; } }*/ } catch (Exception ex) { SM.Debug("Unable to checkStatus"+ex.ToString()); } } volatile List ListforAlarmList = new List(); volatile String volUnitName = ""; volatile String volDesc = ""; public void populate() { try { SM.Debug("Face populare:" + ((Vehicle)MainForm2.vehicleHT[name]).EventLists.Count); AlarmGridView.Columns[1].SortOrder = RadSortOrder.None; ListforAlarmList.Clear(); foreach (Alarms obj in ((Vehicle)MainForm2.vehicleHT[name]).EventLists) { switch (obj.type) { case rep_type.EMERG: volUnitName = MainForm2.returnLNGString("emergAlarm"); break; case rep_type.SPEED: volUnitName = MainForm2.returnLNGString("alarmSpeed"); break; case rep_type.GEOFENC: volUnitName = MainForm2.returnLNGString("zone"); break; case rep_type.SMSRECIVE: volUnitName = MainForm2.returnLNGString("recsms"); break; case rep_type.SMSSEND: volUnitName = MainForm2.returnLNGString("sendsms"); break; case rep_type.CALLRECIVE: volUnitName = MainForm2.returnLNGString("recivecall"); break; case rep_type.CALLSEND: volUnitName = MainForm2.returnLNGString("makecall"); break; case rep_type.TELEMETRY_ALARM: volUnitName = MainForm2.returnLNGString("tabTelem"); break; case rep_type.JOB_TICKETING: volUnitName = MainForm2.returnLNGString("tabTicketing"); break; } if (obj.type == rep_type.SPEED) { String Speed = obj.descript; Boolean InMessMile = false; if (Speed.Contains("_m")) InMessMile = true; Speed = Speed.Remove(Speed.IndexOf('_')); if ((MainForm2.isInMile) && (!InMessMile)) Speed = Convert.ToString((int)((Convert.ToInt32(Speed)) * 0.621371192)); else if ((!MainForm2.isInMile) && (InMessMile)) Speed = Convert.ToString((int)((Convert.ToInt32(Speed)) * 1.609344)); if (MainForm2.isInMile) Speed += " " + MainForm2.milesh; else Speed += " " + MainForm2.kmh; volDesc = Speed; } else if (obj.type == rep_type.JOB_TICKETING) { string mess = obj.descript.ToString().Replace("", ""); string status = Regex.Replace(mess, "[0-9]", ""); string ticket_id = Regex.Replace(mess, "[a-zA-z]", ""); volDesc = string.Format("{0} - {1}", ticket_id, status); } else volDesc = obj.descript; ListforAlarmList.Add(new DataforAlarmList(volUnitName, obj.time, volDesc)); } try { AlarmGridView.DataSource = null; AlarmGridView.DataSource = ListforAlarmList; } catch (Exception ex) { SM.Debug("Error on populate grid" + ex.ToString()); } AlarmGridView.Columns[1].SortOrder = RadSortOrder.Descending; AlarmGridView.Refresh(); int iVisibleRows = AlarmGridView.TableElement.RowsPerPage; if (AlarmGridView.Rows.Count > iVisibleRows) AlarmGridView.TableElement.ScrollToRow(((Vehicle)MainForm2.vehicleHT[name]).EventLists.Count - iVisibleRows + 3); } catch (Exception ex) { SM.Debug("Error on populate List:"+ex.ToString()); } //AlarmGridView.GridElement.ScrollToRow(AlarmGridView.GridElement // AlarmGridView.GridElement.ScrollToRow(0); } private void radGridView1_CellFormatting(object sender, Telerik.WinControls.UI.CellFormattingEventArgs e) { try { if (e.CellElement.ColumnIndex == 2) e.CellElement.ForeColor = Color.Green; } catch (Exception ex) { SM.Debug("Ex:"+ex.ToString()); } } public void putPTTON() { //btPTT.Enabled = true; ProgVolum.Value1 = ProgVolum.Maximum - 0 + ProgVolum.Minimum; } private void Popupwindow_FormClosing(object sender, FormClosingEventArgs e) { try { MainForm2.PopupOpen.Remove(IMEI); // Unregister from the event parent.OnCallStatusChanged -= parent_OnCallStatusChanged; } catch (Exception ex) { SM.Debug("Erorr remoeve popup window:"+ex.ToString()); } } public void BackVolum(Int32 volum) { try { if ((volum > 50) && (volum < 10000)) ProgVolum.Value1 = ProgVolum.Maximum - (Int32)((volum - 50) / 100) + ProgVolum.Minimum; else ProgVolum.Value1 = ProgVolum.Maximum - 0 + ProgVolum.Minimum; ; } catch (Exception ex) { SM.Debug("Unable to change volume:"+ex.ToString()); } } private void btPTT_MouseDown(object sender, MouseEventArgs e) { try { if (MainForm2.VoiceTabStarted) { } /*if (parent.mainRadioForms != null) { foreach (ShapeNew obj in parent.mainRadioForms) { if ((obj.typeRadio) && (obj.gwandradID == gwandradID)) { ((radioFrom)obj).Send_Private_PTT(IMEI); break; } } }*/ } catch(Exception ex) { SM.Debug("Unable to mouseDown:" + ex.ToString()); } } System.Threading.Timer tCheckSTATUS=null; private void btPTT_MouseUp(object sender, MouseEventArgs e) { try { if (MainForm2.VoiceTabStarted) { } } catch (Exception ex) { SM.Debug("Unable to btPTT_MouseUp:" + ex.ToString()); } } private void WaitPPT_Tick(object sender, EventArgs e) { try { WaitPPT.Stop(); WaitPPT.Enabled = false; //btPTT.Enabled = true; } catch (Exception ex) { SM.Debug("Unable to WaitPPT_Tick:" + ex.ToString()); } } private void btSMS_Click(object sender, EventArgs e) { string sms = tbText.Text; sms = sms.Replace("\'", "\'\'"); if (tbText.Text.Length > 0) { int sc_id = ((Vehicle)MainForm2.vehicleHT[name]).sc_id; int sched_time = (int)DateTime.Now.ToUniversalTime().DateTo70Format(); if (rcbSchedule.Checked) sched_time = (int)rdtpSchedule.Value.ToUniversalTime().DateTo70Format(); //((Vehicle)MainForm2.vehicleHT[name]).CheckPositionInSystem(); ////String Totrans = "#142#" + ((Vehicle)MainForm2.vehicleHT[name]).GwandRadioID + "." + IMEI + "#" + sms + "#" + sched_time + "#"; //String Totrans = "#142#" + ((Vehicle)MainForm2.vehicleHT[name]).GwandRadioID + "." + IMEI + "#" + sms + "#" + sched_time + "#" + MainForm2.userIDX + "#"; //parent.Send_UDP_cmd(Totrans, 0, 0); //((Vehicle)MainForm2.vehicleHT[name]).EventLists.Add(new Alarms(rep_type.SMSSEND, DateTime.Now, "", sms)); //parent.DisplayToast(MainForm2.returnLNGString("txtMsgTo") + " " +((Vehicle)MainForm2.vehicleHT[name]).busName, // string.Format(MainForm2.returnLNGString("MsHTML"), sms)); parent.SendSmsOnMBus(sms, sc_id, sched_time); populate(); tbText.Text = ""; } else { SM.Debug("Error NewSMSForm /btnSendSMS_Click/ message lenght =0 or no radio selected"); } } /// /// Detect which menu button was pressed and then activate the desired window /// from the tabs. In the same time, the UI state will be changed accordingly /// /// /// private void pb_Click(object sender, EventArgs e) { if((PictureBox)sender == pbMenuAlerts) { radDock.ActivateWindow(windowAlerts); pbMenuAlerts.Image = themeAlert_Image; pbMenuText.Image = global::Dispatcher.Properties.Resources.l_menu_text_d; pbMenuPTT.Image = global::Dispatcher.Properties.Resources.l_menu_ptt_d; } else if ((PictureBox)sender == pbMenuText) { radDock.ActivateWindow(windowText); pbMenuAlerts.Image = global::Dispatcher.Properties.Resources.l_menu_alert_d; pbMenuText.Image = themeText_Image; pbMenuPTT.Image = global::Dispatcher.Properties.Resources.l_menu_ptt_d; } else if ((PictureBox)sender == pbMenuPTT) { radDock.ActivateWindow(windowPtt); pbMenuAlerts.Image = global::Dispatcher.Properties.Resources.l_menu_alert_d; pbMenuText.Image = global::Dispatcher.Properties.Resources.l_menu_text_d; pbMenuPTT.Image = themeVoice_Image; } } /// /// Update the number of left character when writing a new text message /// private void tbText_KeyUp(object sender, KeyEventArgs e) { // send text on click if (e.KeyCode == Keys.Enter) btSMS.PerformClick(); } /// /// Focus the text box /// private void windowText_Enter(object sender, EventArgs e) { tbText.Focus(); } #region PTT private void Voice_PTT_confirmed() { try { Thread p = new Thread(delegate() { while (pttIsPressed) { /* this.Invoke((MethodInvoker)delegate() {*/ try { if (pbSpectrum != null) { switch (spectrumCount++ % 13) { case 1: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_01; break; case 2: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_02; break; case 3: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_03; break; case 4: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_04; break; case 5: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_05; break; case 6: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_06; break; case 7: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_07; break; case 8: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_08; break; case 9: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_09; break; case 10: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_10; break; case 11: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_11; break; case 12: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_12; break; default: pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_01; break; } } } catch (Exception ex) { Console.WriteLine("Error on voice pTT confirme"+ex.ToString(),ConsoleColor.Red); } // }); Thread.Sleep(50); } }); p.Start(); } catch (Exception ex) { Utils.WriteLine("Error on PbPtt_MouseDown:" + ex.ToString(), ConsoleColor.Red); } } bool pttIsPressed = false; int spectrumCount = 0; private void pbPTT_MouseDown(object sender, MouseEventArgs e) { try { if (MainForm2.VoiceTabStarted) { parent.RadioTabControl.sendPTT( new Subscriber() { DispatcherName = name, SubscriberType = SubscriberType.SUBSCRIBER, ImageKey = "i_classic_bus_02", IconFilePath = MainForm2.GetIconPathForUnit(name), Sc_id = 0, Imei = IMEI, Gw_and_radioID = parent.RadioTabControl.Valid_GwID_and_RadioID, IP = String.Format("224.10.{0}", parent.RadioTabControl.Valid_GwID_and_RadioID), Favorite = false, canMakeSipCalls = ((Vehicle)MainForm2.vehicleHT[name]).canMakeSipCalls, SipID = ((Vehicle)MainForm2.vehicleHT[name]).sipID }, true ); } else { parent.CheckTabs(track_type.RADIO, parent.GetTabNewRadio); // Didn't sent PTT, put red picture pbPTT.Image = Dispatcher.Properties.Resources.r_ptt_end; System.Threading.Timer t1 = new System.Threading.Timer(Come_back_to_normal_PTT_state, null, 1000, System.Threading.Timeout.Infinite); return; } pbPTT.Image = global::Dispatcher.Properties.Resources.r_ptt_over; pttIsPressed = true; } catch (Exception ex) { SM.Debug("Unable to mouseDown:" + ex.ToString()); } } private void Come_back_to_normal_PTT_state(object state) { try { pbPTT.Image = Dispatcher.Properties.Resources.r_ptt; } catch (Exception ex) { SM.Debug("Ex101:" + ex.ToString()); } } private void pbPTT_MouseUp(object sender, MouseEventArgs e) { if (!pttIsPressed) // nu s-a trmis Ptt pt ca VoiceTab nu era pornit. return; pttIsPressed = false; Thread.Sleep(60); pbSpectrum.Image = global::Dispatcher.Properties.Resources.r_radial_spectrum_00; pbPTT.Image = global::Dispatcher.Properties.Resources.r_ptt; spectrumCount = 0; try { if (MainForm2.VoiceTabStarted) { parent.RadioTabControl.StopPTT( new Subscriber() { DispatcherName = name, SubscriberType = SubscriberType.SUBSCRIBER, //SubscriberImage = Dispatcher.Properties.Resources.i_classic_bus_02, IconFilePath = MainForm2.GetIconPathForUnit(name), ImageKey = "i_classic_bus_02", Sc_id = 0, Imei = IMEI, Gw_and_radioID = parent.RadioTabControl.Valid_GwID_and_RadioID, IP = String.Format("224.10.{0}", parent.RadioTabControl.Valid_GwID_and_RadioID), Favorite = false, canMakeSipCalls = ((Vehicle)MainForm2.vehicleHT[name]).canMakeSipCalls, SipID = ((Vehicle)MainForm2.vehicleHT[name]).sipID } ); } } catch (Exception ex) { SM.Debug("Unable to btPTT_MouseUp:" + ex.ToString()); } } #endregion private void Popupwindow_Load(object sender, EventArgs e) { // Remove voice tab or text messages if not available try { rdtpSchedule.Visible = rlScheduleSending.Visible = rcbSchedule.Visible = MainForm2.radioType != RADIOTYPE.LINX; if ((!has_voice) || (!has_text) || !MainForm2.VoiceTabStarted) { if (!has_voice || !MainForm2.VoiceTabStarted) { // Remove picture PTT panel3.Controls.Remove(pbMenuPTT); // Remove label Call this.Controls.Remove(lbCall); // remove voice tab documentTabStrip1.Controls.Remove(this.windowPtt); } if (!has_text) { // Remove picture text panel3.Controls.Remove(pbMenuText); // Remove label Text this.Controls.Remove(lbMessage); // Remove Text tab documentTabStrip1.Controls.Remove(this.windowText); } // Rearange the panel that contains the pictures (alerts and message) panel3.AutoSize = true; panel3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; Point oldLocation = panel3.Location; panel3.Location = new Point(this.Width / 2 - panel3.Width / 2, oldLocation.Y); } } catch (Exception ex) { SM.Debug("Error on remove voice tab:" + ex.ToString()); } // display form on top of all others this.TopMost = true; rdtpSchedule.ThemeName = "Office2013Dark"; rcbSchedule.Checked = false; btSMS.Enabled = false; // select the desired tab SelectTab(popupType); parent.OnCallStatusChanged += parent_OnCallStatusChanged; } void parent_OnCallStatusChanged(string unitname, bool inCall,Boolean fromField) { Utils.WriteLine("ON call status changed: unit:"+unitname+" incall:"+inCall+" fromField"+fromField,ConsoleColor.DarkGreen); if (unitname.CompareTo(name) == 0) { if (!fromField) { if (inCall) Voice_PTT_confirmed(); else { if (pttIsPressed) { pbPTT.Image = Dispatcher.Properties.Resources.r_ptt_end; System.Threading.Timer t1 = new System.Threading.Timer(Come_back_to_normal_PTT_state, null, 1000, System.Threading.Timeout.Infinite); } } } else { if (inCall) pbPTT.Image = Dispatcher.Properties.Resources.r_ptt_incoming; else pbPTT.Image = Dispatcher.Properties.Resources.r_ptt; } Utils.WriteLine("CallStatus received",ConsoleColor.Blue); } } /// /// Intercept when an item is duble clicked and then set the text to the /// text box and limit its length if more than maximum allowed sized /// private void lvPredefinedMessages_ItemMouseDoubleClick(object sender, ListViewItemEventArgs e) { int maxChar = maxCharsNumberForSMS; // set text to be full text or trimmed to max length tbText.Text = e.Item.Text.Substring(0, (e.Item.Text.Length > maxChar) ? maxChar : e.Item.Text.Length); // update the number of characters labelCount.Text = String.Format(MainForm2.returnLNGString("charactersLeft"), (maxCharsNumberForSMS - tbText.Text.Length));; } /// /// Enable or disable the schebule date time picker with the checkbox /// private void rcbSchedule_ToggleStateChanged(object sender, StateChangedEventArgs args) { rdtpSchedule.Enabled = rcbSchedule.Checked; } /// /// Disable send button when the text is empty /// private void tbText_TextChanged(object sender, EventArgs e) { btSMS.Enabled = (tbText.Text.Length != 0); // update the number of characters labelCount.Text = String.Format(MainForm2.returnLNGString("charactersLeft"), (maxCharsNumberForSMS - tbText.Text.Length)); } /// /// Style button SMS when the enable state changes /// private void btSMS_EnabledChanged(object sender, EventArgs e) { if (btSMS.Enabled) btSMS.ButtonElement.ButtonFillElement.BackColor = MainForm2.ButtonColor; else btSMS.ButtonElement.ButtonFillElement.BackColor = MainForm2.ButtonColorDisabled; } private void Popupwindow_Shown(object sender, EventArgs e) { tbText.Focus(); } private void AlarmGridView_RowFormatting(object sender, RowFormattingEventArgs e) { if (e.RowElement.IsSelected) { e.RowElement.DrawFill = true; e.RowElement.BackColor = MainForm2.GridSelectedRow; e.RowElement.NumberOfColors = 1; } else { e.RowElement.DrawFill = false; } } private void lvPredefinedMessages_VisualItemFormatting(object sender, ListViewVisualItemEventArgs e) { if (e.VisualItem.Selected) { e.VisualItem.DrawFill = true; e.VisualItem.BackColor = MainForm2.GridSelectedRow; e.VisualItem.NumberOfColors = 1; } else e.VisualItem.DrawFill = false; } #region KeyIntercept private void FastCommandWindow_KeyDown(object sender, KeyEventArgs e) { if (e.Alt == true && e.KeyCode == Keys.P) { e.SuppressKeyPress = true; e.Handled = true; if (!pttIsPressed) { pbPTT_MouseDown(null, null); pttIsPressed = true; } } } private void FastCommandWindow_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.P && pttIsPressed) { e.Handled = true; e.SuppressKeyPress = true; pbPTT_MouseUp(null, null); pttIsPressed = false; } } #endregion private void pbPTT_MouseLeave(object sender, EventArgs e) { try { if (MainForm2.VoiceTabStarted) { parent.RadioTabControl.StopPTT( new Subscriber() { DispatcherName = name, SubscriberType = SubscriberType.SUBSCRIBER, //SubscriberImage = Dispatcher.Properties.Resources.i_classic_bus_02, IconFilePath = MainForm2.GetIconPathForUnit(name), ImageKey = "i_classic_bus_02", Sc_id = 0, Imei = IMEI, Gw_and_radioID = parent.RadioTabControl.Valid_GwID_and_RadioID, IP = String.Format("224.10.{0}", parent.RadioTabControl.Valid_GwID_and_RadioID), Favorite = false, canMakeSipCalls = ((Vehicle)MainForm2.vehicleHT[name]).canMakeSipCalls, SipID = ((Vehicle)MainForm2.vehicleHT[name]).sipID } ); } } catch (Exception ex) { Utils.WriteLine("pbPTT_MouseLeave error: " + ex.ToString()); } } } }