public void OnRtxChanged(object sender, EventArgs e) { if (_StateManager.Radio.Rtx > 0) { _RtxBT.Text = "Rtx " + (char)('G' + _StateManager.Radio.Rtx - 1); _RtxBT.ButtonColor = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; _RtxBlinkTimer.Enabled = true; // _RtxErrorTimer.Enabled = false; //_RtxErrorActivated = false; } else { _RtxBlinkTimer.Enabled = false; // _RtxErrorTimer.Enabled = true; _RtxBlinkOn = true; _RtxBT.Text = "Rtx"; _RtxBT.ButtonColor = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; } int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { UrrRdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; Reset(bt, dst); } }
/** Esta funcion se ha trasladado al Model Module */ //private void RecuperaEstadoAsignacionFrecuencias() //{ // int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; // for (int i = absPageBegin, to = absPageBegin + _NumPositionsByPage; i < to; i++) // { // if (i < Settings.Default.AssignatedStates.Count) // { // string[] estado = Settings.Default.AssignatedStates[i].Split(','); // EstadoAsignacion eAsignacion = new EstadoAsignacion(); // eAsignacion._Rx = estado[1] == "True"; // eAsignacion._Tx = estado[2] == "True"; // switch (estado[3]) // { // case "HeadPhones": // eAsignacion._AudioVia = RdRxAudioVia.HeadPhones; // break; // case "Speaker": // eAsignacion._AudioVia = RdRxAudioVia.Speaker; // break; // case "NoAudio": // eAsignacion._AudioVia = RdRxAudioVia.NoAudio; // break; // } // _EstadosAsignacion[i - absPageBegin] = eAsignacion; // } // } //} private void Reset(UrrRdButton bt, RdDst dst, ref EstadoAsignacion estado) { Reset(bt, dst); if (!dst.Unavailable && estado.Unavailable && !_StateManager.ScreenSaver.On) { if (estado._Rx && !dst.Rx) { //RdButton_RxShortClick(bt, null); Forced_RxShortClick(bt); } else if (estado._AudioVia == RdRxAudioVia.HeadPhones) { if (dst.TipoFrecuencia == TipoFrecuencia_t.HF && (dst.AudioVia == RdRxAudioVia.HfSpeaker || dst.AudioVia == RdRxAudioVia.Speaker)) { //RdButton_RxShortClick(bt, null); Forced_RxShortClick(bt); } else if (dst.TipoFrecuencia != TipoFrecuencia_t.HF && dst.AudioVia == RdRxAudioVia.Speaker) { //RdButton_RxShortClick(bt, null); Forced_RxShortClick(bt); } } else if (estado._AudioVia == RdRxAudioVia.HfSpeaker && dst.AudioVia == RdRxAudioVia.Speaker) { //RdButton_RxShortClick(bt, null); Forced_RxShortClick(bt); } if (estado._Tx && !dst.Tx) { //RdButton_TxClick(bt, null); try { // Forzar la asignación de Tx independientemente de si está ya asignada en otra posición _CmdManager.RdConfirmTxState(bt.Id); } catch (Exception ex) { int pos = _RdButtons.IndexOf(bt); string msg = string.Format("ERROR modificando Tx de frecuencia RD [Pos={0}] [Id={1}]", pos, bt.Id); _Logger.Error(msg, ex); } } } else if (!dst.Unavailable && !estado.Unavailable) { estado._Tx = dst.Tx; estado._Rx = dst.Rx; estado._AudioVia = dst.AudioVia; } estado.Unavailable = dst.Unavailable || estado._Rx != dst.Rx || estado._Tx != dst.Tx || estado._AudioVia != dst.AudioVia; }
public void SiteChanged(object sender, StateMsg <string> msg) { int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { UrrRdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; Reset(bt, dst); } }
public void OnRdPageChanged(object sender, EventArgs e) { _urrRdPageButton.Page = _StateManager.Radio.Page; int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { UrrRdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; Reset(bt, dst); } }
public void OnRadioChanged(object sender, RangeMsg e) { Debug.Assert(e.Count > 0); int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++) { UrrRdButton bt = _RdButtons[i - absPageBegin]; RdDst dst = _StateManager.Radio[i]; EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin]; Reset(bt, dst, ref estado); } _RtxBT.Enabled = _RtxEnabled; }
public void OnTitleIdChanged(object sender, EventArgs e) { if (Settings.Default.Sector != _StateManager.Title.Id) { int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = absPageBegin, to = absPageBegin + _NumPositionsByPage; i < to; i++) { UrrRdButton bt = _RdButtons[i - absPageBegin]; if (!_StateManager.Radio[i].Unavailable && _StateManager.Radio[i].Rx) { RdButton_RxLongClick(bt, null); } } Settings.Default.Sector = _StateManager.Title.Id; Settings.Default.Save(); } }
private void _SiteManagerBT_Click(object sender, EventArgs e) { try { _CmdManager.RdSiteManagerClick(); int absPageBegin = _urrRdPageButton.Page * _NumPositionsByPage; for (int i = 0; i < _NumPositionsByPage; i++) { UrrRdButton bt = _RdButtons[i]; RdDst dst = _StateManager.Radio[i + absPageBegin]; Reset(bt, dst); } } catch (Exception ex) { _Logger.Error("ERROR iniciando operacion SiteManager", ex); } }
private void Reset(UrrRdButton bt, RdDst dst) { bt.Id = dst.Id; if (_PttBlinkList.Remove(bt) && (_PttBlinkList.Count == 0)) { _PttBlinkTimer.Enabled = false; _PttBlinkOn = true; } if (_SquelchBlinkList.Remove(bt) && (_SquelchBlinkList.Count == 0)) { _SquelchBlinkTimer.Enabled = false; _SquelchBlinkOn = true; } _RtxBlinkList.Remove(bt); _PttPushedList.Remove(bt); if (dst.IsConfigurated) { Color title = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; Color tx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; Color rx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; Color txForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black; Color rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black; Color titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black; Image ptt = null; Image squelch = null; Image audio = null; int rtxGroup = 0; bool allAsOneBt = false; /** 20190121. AGL. ALIAS a mostrar en la tecla... */ // string alias = dst.Alias; string alias = dst.KeyAlias; bool isGreenIcons = false; if (!dst.Unavailable) { rtxGroup = dst.RtxGroup; alias = (dst.TempAlias != string.Empty && dst.TempAlias != dst.Alias) ? dst.TempAlias : alias; if (_StateManager.ManagingSite) { allAsOneBt = true; title = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; _RtxBlinkList[bt] = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow; } else if (dst.Rx) { rx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.White; rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Green; if (dst.Tx) { tx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1; bt.changeTxText("Tx"); txForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Black;//Seleccionado en reposo _PttPushedList[bt] = dst; if (_StateManager.Radio.Rtx > 0) { rtxGroup = dst.RtxGroup < 0 ? dst.RtxGroup : dst.TempRtxGroup; if (rtxGroup == 0) { allAsOneBt = true; title = _RtxBlinkOn ? HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow : bt.CurrentBackColor; _RtxBlinkList[bt] = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow; } else if (rtxGroup == _StateManager.Radio.Rtx) { allAsOneBt = true; title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Yellow; } } } else { bt.changeTxText(""); } } NotifMsg msg = null; switch (dst.Ptt) { case PttState.NoPtt: if (dst.Tx) { tx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1; } else { tx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; } break; case PttState.ExternPtt: titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red; break; case PttState.PttOnlyPort: title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen; break; case PttState.PttPortAndMod: title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen; _PttBlinkList[bt] = Resources.Ptt; _PttBlinkTimer.Enabled = true; break; case PttState.Blocked: title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red; titleForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkRed; break; /** halfduplex */ case PttState.CarrierError: //Error en portadora title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red; break; case PttState.TxError: //Error en la confirmacion de la Tx title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red; break; //Sin default } switch (dst.Squelch) { case SquelchState.SquelchOnlyPort: /** 20190205 */ if (dst.PttSrcId.StartsWith("Rtx_") && dst.Ptt == PttState.ExternPtt) { txForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.Red; } switch (dst.AudioVia) { case RdRxAudioVia.Speaker: rx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen; audio = Resources.RxSpeakerBlack; //Iconos negros isGreenIcons = true; break; case RdRxAudioVia.HeadPhones: rx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen; audio = Resources.RxHeadPhonesBlack; isGreenIcons = true; break; case RdRxAudioVia.NoAudio: rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.StrongGreen; rx = HMI.Presentation.AUrr.UI.VisualStyle.Colors.DarkGreen; break; } break; case SquelchState.SquelchPortAndMod: switch (dst.AudioVia) { case RdRxAudioVia.Speaker: audio = Resources.RxSpeaker; //Iconos verdes isGreenIcons = true; break; case RdRxAudioVia.HeadPhones: audio = Resources.RxHeadPhones; isGreenIcons = true; break; case RdRxAudioVia.NoAudio: rxForeColor = HMI.Presentation.AUrr.UI.VisualStyle.Colors.StrongGreen; break; } _SquelchBlinkList[bt] = Resources.Squelch; _SquelchBlinkTimer.Enabled = true; break; case SquelchState.NoSquelch: break; } if (!isGreenIcons) { switch (dst.AudioVia) { case RdRxAudioVia.Speaker: audio = Resources.RxSpeakerBlack; //Iconos negros break; case RdRxAudioVia.HeadPhones: audio = Resources.RxHeadPhonesBlack; break; } } } else { bt.changeTxText(""); title = HMI.Presentation.AUrr.UI.VisualStyle.Colors.HeaderBlueA1; tx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; rx = HMI.Presentation.AUrr.UI.VisualStyle.ButtonColor; } // Mostrar información Qidx sólo si en HMI.exe.config está habilitado if (Settings.Default.ShowBssProperties) { bt.Reset(dst.Frecuency, dst.TipoFrecuencia == TipoFrecuencia_t.FD ? dst.QidxResource : alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor, dst.QidxResource, dst.QidxValue, dst.State == FrequencyState.Degraded); } else { /** 20190121. AGL. ALIAS a mostrar en la tecla... */ // bt.Reset(dst.Frecuency, dst.TipoFrecuencia == TipoFrecuencia_t.FD ? string.Empty : alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor, bt.Reset(dst.Frecuency, alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, titleForeColor, dst.State == FrequencyState.Degraded); } bt.Enabled = _StateManager.Tft.Enabled && _StateManager.Engine.Operative && !dst.Unavailable; } bt.Visible = dst.IsConfigurated; }
public RadioView([ServiceDependency] IModelCmdManagerService cmdManager, [ServiceDependency] StateManagerService stateManager) { InitializeComponent(); _CmdManager = cmdManager; _StateManager = stateManager; _RdButtonsTLP.RowCount = Settings.Default.RdRows; _RdButtonsTLP.RowStyles.Clear(); for (int i = 0; i < _RdButtonsTLP.RowCount; i++) { RowStyle st = new RowStyle(SizeType.Percent, 100); _RdButtonsTLP.RowStyles.Add(st); } _RdButtonsTLP.ColumnCount = Settings.Default.RdColumns; _RdButtonsTLP.ColumnStyles.Clear(); for (int i = 0; i < _RdButtonsTLP.ColumnCount; i++) { ColumnStyle st = new ColumnStyle(SizeType.Percent, 100); _RdButtonsTLP.ColumnStyles.Add(st); } _NumPositionsByPage = _RdButtonsTLP.RowCount * _RdButtonsTLP.ColumnCount; /** 20190205. Para que funcione la recuperacion de estados RSR */ _StateManager.Radio.PageSize = _NumPositionsByPage; _PttBlinkList = new Dictionary <UrrRdButton, Image>(); _SquelchBlinkList = new Dictionary <UrrRdButton, Image>(); _RtxBlinkList = new Dictionary <UrrRdButton, Color>(); _PttPushedList = new Dictionary <UrrRdButton, RdDst>(); for (int row = 0, pos = 0; row < _RdButtonsTLP.RowCount; row++) { for (int column = 0; column < _RdButtonsTLP.ColumnCount; column++, pos++) { UrrRdButton bt = new UrrRdButton(); _RdButtonsTLP.Controls.Add(bt, column, row); _RdButtons.Add(bt); _EstadosAsignacion.Add(new EstadoAsignacion()); bt.Dock = DockStyle.Fill; bt.Name = "_RdButton" + pos; bt.Visible = false; bt.Id = pos; bt.Click += RdButton_Click; bt.TxClick += RdButton_TxClick; bt.RxLongClick += RdButton_RxLongClick; bt.RxShortClick += RdButton_RxShortClick; } } _UrrRdSpeakerUDB.Level = _StateManager.RdSpeaker.Level; _UrrRdSpeakerUDB.Enabled = _RdSpeakerEnabled; _UrrRdHeadPhonesUDB.Level = _StateManager.RdHeadPhones.Level; _UrrRdHeadPhonesUDB.Enabled = _RdHeadPhonesEnabled; _PttBT.Enabled = _PttEnabled; _RtxBT.Enabled = _RtxEnabled; _urrRdPageButton.Enabled = false; //_RdPageEnabled; _UrrUpPageBT.Enabled = _RdPageEnabled; _UrrDownPageBT.Enabled = _RdPageEnabled; }