880 lines
36 KiB
C#
880 lines
36 KiB
C#
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());
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// Activate the desired tab
|
|
/// </summary>
|
|
/// <param name="popupType">The tab type which needs to be activated</param>
|
|
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<DataforAlarmList> ListforAlarmList = new List<DataforAlarmList>();
|
|
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("<JTS>", "");
|
|
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");
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Update the number of left character when writing a new text message
|
|
/// </summary>
|
|
private void tbText_KeyUp(object sender, KeyEventArgs e)
|
|
{
|
|
// send text on click
|
|
if (e.KeyCode == Keys.Enter)
|
|
btSMS.PerformClick();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Focus the text box
|
|
/// </summary>
|
|
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);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 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
|
|
/// </summary>
|
|
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));;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Enable or disable the schebule date time picker with the checkbox
|
|
/// </summary>
|
|
private void rcbSchedule_ToggleStateChanged(object sender, StateChangedEventArgs args)
|
|
{
|
|
rdtpSchedule.Enabled = rcbSchedule.Checked;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Disable send button when the text is empty
|
|
/// </summary>
|
|
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));
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Style button SMS when the enable state changes
|
|
/// </summary>
|
|
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());
|
|
}
|
|
}
|
|
}
|
|
}
|