예제 #1
0
        public void OnRtxChanged(object sender, EventArgs e)
        {
            if (_StateManager.Radio.Rtx > 0)
            {
                _RtxBT.Text            = "Rtx " + (char)('G' + _StateManager.Radio.Rtx - 1);
                _RtxBT.ButtonColor     = _RtxBlinkOn ? VisualStyle.Colors.Yellow : VisualStyle.ButtonColor;
                _RtxBlinkTimer.Enabled = true;
            }
            else
            {
                _RtxBlinkTimer.Enabled = false;
                _RtxBlinkOn            = true;
                _RtxBT.Text            = "Rtx";
                _RtxBT.ButtonColor     = VisualStyle.ButtonColor;
            }

            int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                RdButton bt  = _RdButtons[i];
                RdDst    dst = _StateManager.Radio[i + absPageBegin];

                Reset(bt, dst);
            }
        }
예제 #2
0
        public void OnRadioChanged(object sender, RangeMsg e)
        {
            Debug.Assert(e.Count > 0);
            int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

            for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++)
            {
                RdButton bt  = _RdButtons[i - absPageBegin];
                RdDst    dst = _StateManager.Radio[i];

                /*
                 * if (!dst.Restored || dst.Unavailable)
                 * {
                 *  Reset(bt, dst);
                 *
                 *  if (!dst.Unavailable && i < Settings.Default.AssignatedStates.Count)
                 *  {
                 *      Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin);
                 *      Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx +
                 *                                          "," + dst.AudioVia + "," + dst.Unavailable);
                 *  }
                 *  else if (!dst.Unavailable)
                 *  {
                 *      Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx +
                 *                                          "," + dst.AudioVia + "," + dst.Unavailable);
                 *  }
                 *  // Envío de vuelta confirmación para que Engine envíe histórico (si corresponde)
                 *  // De momento a este comando solo se atiende si Engine es OPE (CD30)
                 *  _CmdManager.SendCmdHistoricalEvent(_StateManager.Title.Id, dst.Frecuency);
                 * }
                 * else*/
                {
                    EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin];
                    Reset(bt, dst, ref estado);
                    //Reset(bt, dst);
                    _EstadosAsignacion[i - absPageBegin] = estado;

                    if (/*!dst.Unavailable &&*/ i < Settings.Default.AssignatedStates.Count)
                    {
                        Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin);
                        Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + estado._Rx.ToString() + "," + estado._Tx +
                                                                 "," + dst.AudioVia + "," + dst.Unavailable);
                    }
                    else //if (!dst.Unavailable)
                    {
                        Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + estado._Rx.ToString() + "," + estado._Tx +
                                                              "," + dst.AudioVia + "," + dst.Unavailable);
                    }

                    // Envío de vuelta confirmación para que Engine envíe histórico (si corresponde)
                    // De momento a este comando solo se atiende si Engine es OPE (CD30)
                    _CmdManager.SendCmdHistoricalEvent(_StateManager.Title.Id, dst.Frecuency);
                }
            }

            Settings.Default.Save();

            _RtxBT.Enabled = _RtxEnabled;
        }
예제 #3
0
        /* VMG 05/09/2018 */
        ///<summary>
        /// Error al confirmar la Transmision. Tick del Timer.
        ///</summary>
        //private void _TxConfirmationDetectionTimer_Tick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        if (_TxConfirmationDetectionTimer.Enabled)
        //        {
        //            var rdButtonList = new Dictionary<RdButton, RdDst>(_PttPushedList);
        //            foreach (KeyValuePair<RdButton, RdDst> p in rdButtonList)
        //            {
        //                if (p.Value.Ptt != PttState.PttOnlyPort && p.Value.Ptt != PttState.PttPortAndMod
        //                    && p.Value.Ptt != PttState.ExternPtt)
        //                {
        //                    General.SafeLaunchEvent(RdPosPttStateEngine, this, new RangeMsg<PttState>(p.Key.Id, PttState.TxError));
        //                    _TxErrorEventFired = true;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        _Logger.Error("ERROR generando timer error recepcion Tx", ex);
        //    }
        //}

        /* VMG 05/09/2018 */
        ///<summary>
        /// Error de Rx al realizar Tx. Tick del Timer.
        ///</summary>
        //private void _CarrierDetectionTimer_Tick(object sender, EventArgs e)
        //{
        //    try
        //    {
        //        if (_CarrierDetectionTimer.Enabled)
        //        {
        //            var rdButtonList = new Dictionary<RdButton, RdDst>(_PttPushedList);
        //            foreach (KeyValuePair<RdButton, RdDst> p in rdButtonList)
        //            {
        //                if (p.Value.Ptt == PttState.PttOnlyPort && p.Value.Squelch == SquelchState.NoSquelch)
        //                {
        //                    General.SafeLaunchEvent(RdPosPttStateEngine, this, new RangeMsg<PttState>(p.Key.Id, PttState.CarrierError));
        //                    _CarrierDetectionEventFired = true;
        //                }
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        _Logger.Error("ERROR generando timer Ptt", ex);
        //    }
        //}

        /** Esta funcion se ha trasladado al MODEL MODULE */
        //private void RecuperaEstadoAsignacionFrecuencias()
        //{
        //	int absPageBegin = _RdPageBT.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 "HfSpeaker":
        //                          eAsignacion._AudioVia = RdRxAudioVia.HfSpeaker;
        //                          break;
        //                      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(RdButton 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);
                }
                else if (estado._AudioVia == RdRxAudioVia.HeadPhones)
                {
                    if (dst.TipoFrecuencia == TipoFrecuencia_t.HF && (dst.AudioVia == RdRxAudioVia.HfSpeaker || dst.AudioVia == RdRxAudioVia.Speaker))
                    {
                        RdButton_RxShortClick(bt, null);
                    }
                    else if (dst.TipoFrecuencia != TipoFrecuencia_t.HF && dst.AudioVia == RdRxAudioVia.Speaker)
                    {
                        RdButton_RxShortClick(bt, null);
                    }
                }
                else if (estado._AudioVia == RdRxAudioVia.HfSpeaker && dst.AudioVia == RdRxAudioVia.Speaker)
                {
                    RdButton_RxShortClick(bt, null);
                }

                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;
        }
예제 #4
0
        public void OnRdPageChanged(object sender, EventArgs e)
        {
            _RdPageBT.Page = _StateManager.Radio.Page;
            int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                RdButton bt  = _RdButtons[i];
                RdDst    dst = _StateManager.Radio[i + absPageBegin];

                Reset(bt, dst);
            }
        }
예제 #5
0
        public void OnHfGlobalStatus(object sender, StateMsg <string> msg)
        {
            if (msg.State != _HfGlobalStatus)
            {
                _HfGlobalStatus = msg.State;

                _RdPageBT.Page = _StateManager.Radio.Page;
                int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

                for (int i = 0; i < _NumPositionsByPage; i++)
                {
                    RdButton bt  = _RdButtons[i];
                    RdDst    dst = _StateManager.Radio[i + absPageBegin];

                    UpdateTx(bt, dst);
                }
            }
        }
예제 #6
0
        public void OnTitleIdChanged(object sender, EventArgs e)
        {
            if (Settings.Default.Sector != _StateManager.Title.Id)
            {
                int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

                for (int i = absPageBegin, to = absPageBegin + _NumPositionsByPage; i < to; i++)
                {
                    RdButton 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();
            }
        }
예제 #7
0
        /// <summary>
        /// Actualiza el estado habilitado o no del tx del botón, según el estado global Hf
        /// Se llama en los reset generales y en los cambios del estado global Hf
        /// Si la frecuencia no es HF, el TX está siempre habilitado (caso cambio destino en sectorizaciones)
        /// </summary>
        /// <param name="bt" botón sobre el que se actualiza></param>
        /// <param name="dst" destino al que corresponde el botón></param>
        private void UpdateTx(RdButton bt, RdDst dst)
        {
            if (dst.TipoFrecuencia == TipoFrecuencia_t.HF)
            {
                switch (_HfGlobalStatus)
                {
                case "DISC":
                    if (dst.Tx)
                    {
                        // Quitarlo de transimisión, ya que el gestor de HF no esta disponible
                        _CmdManager.RdForceTxOff(bt.Id);
                    }
                    bt.EnableTx(false);
                    break;

                case "NODISP":
                    // Sólo las frecuencias HF que no están ya asignadas en TX se deben de inhabilitar
                    if (!dst.Tx)
                    {
                        bt.EnableTx(false);
                    }
                    break;

                case "DISP":
                    bt.EnableTx(true);
                    break;

                default:
                    _Logger.Warn("Unknown _HfGlobalStatus {0}", _HfGlobalStatus);
                    break;
                }
            }
            else
            {
                bt.EnableTx(true);
            }
        }
예제 #8
0
        public void OnRadioChanged(object sender, RangeMsg e)
        {
            Debug.Assert(e.Count > 0);
            int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

            _Logger.Debug("******** M+N [RadioView::OnRadioChanged]");

            for (int i = Math.Max(e.From, absPageBegin), to = Math.Min(e.From + e.Count, absPageBegin + _NumPositionsByPage); i < to; i++)
            {
                RdButton         bt     = _RdButtons[i - absPageBegin];
                RdDst            dst    = _StateManager.Radio[i];
                EstadoAsignacion estado = _EstadosAsignacion[i - absPageBegin];
                Reset(bt, dst, ref estado);
                //Reset(bt, dst);
                _EstadosAsignacion[i - absPageBegin] = estado;

                /** Esta funcion se ha trasladado al MODEL MODULE */
                //if (i < Settings.Default.AssignatedStates.Count)
                //{
                //    Settings.Default.AssignatedStates.RemoveAt(i - absPageBegin);
                //    Settings.Default.AssignatedStates.Insert(i - absPageBegin, dst.Frecuency + "," + _EstadosAsignacion[i - absPageBegin]._Rx.ToString() + "," +
                //                                        ((dst.TipoFrecuencia == TipoFrecuencia_t.HF) ? false : _EstadosAsignacion[i - absPageBegin]._Tx) +
                //                                            "," + _EstadosAsignacion[i - absPageBegin]._AudioVia + "," + _EstadosAsignacion[i - absPageBegin].Unavailable);
                //}
                //else
                //{
                //    Settings.Default.AssignatedStates.Add(dst.Frecuency + "," + _EstadosAsignacion[i - absPageBegin]._Rx.ToString() + "," +
                //                                        ((dst.TipoFrecuencia == TipoFrecuencia_t.HF) ? false : _EstadosAsignacion[i - absPageBegin]._Tx) +
                //                                            "," + _EstadosAsignacion[i - absPageBegin]._AudioVia + "," + _EstadosAsignacion[i - absPageBegin].Unavailable);
                //}
            }

            /** Esta funcion se ha trasladado al MODEL MODULE */
            //Settings.Default.Save();

            _RtxBT.Enabled = _RtxEnabled;
        }
예제 #9
0
        public void OnRdPageChanged(object sender, EventArgs e)
        {
            _RdPageBT.Page = _StateManager.Radio.Page;
            int absPageBegin = _RdPageBT.Page * _NumPositionsByPage;

            for (int i = 0; i < _NumPositionsByPage; i++)
            {
                RdButton bt  = _RdButtons[i];
                RdDst    dst = _StateManager.Radio[i + absPageBegin];

                //EstadoAsignacion estado = _EstadosAsignacion[i];
                //Reset(bt, dst, ref estado);
                Reset(bt, dst);
                if (i < Settings.Default.AssignatedStates.Count)
                {
                    Settings.Default.AssignatedStates.RemoveAt(i);
                }

                Settings.Default.AssignatedStates.Insert(i, dst.Frecuency + "," + dst.Rx.ToString() + "," + dst.Tx +
                                                         "," + dst.AudioVia + "," + dst.Unavailable);
            }

            Settings.Default.Save();
        }
예제 #10
0
        private void Reset(RdButton 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       = VisualStyle.ButtonColor;
                Color tx          = VisualStyle.ButtonColor;
                Color rx          = VisualStyle.ButtonColor;
                Color txForeColor = VisualStyle.Colors.White;
                Color rxForeColor = VisualStyle.Colors.White;
                Image ptt         = null;
                Image squelch     = null;
                Image audio       = null;
                int   rtxGroup    = 0;
                bool  allAsOneBt  = false;

                if (!dst.Unavailable)
                {
                    rtxGroup = dst.RtxGroup;

                    if (dst.Rx)
                    {
                        title       = rx = VisualStyle.Colors.White;
                        rxForeColor = VisualStyle.Colors.Green;

                        if (dst.Tx)
                        {
                            tx                 = VisualStyle.Colors.White;
                            txForeColor        = VisualStyle.Colors.Green;
                            _PttPushedList[bt] = dst;//VMG lista con los botones seleccionados en la UI

                            if (_StateManager.Radio.Rtx > 0)
                            {
                                rtxGroup = dst.RtxGroup < 0 ? dst.RtxGroup : dst.TempRtxGroup;

                                if (rtxGroup == 0)
                                {
                                    allAsOneBt        = true;
                                    title             = _RtxBlinkOn ? VisualStyle.Colors.Yellow : VisualStyle.ButtonColor;
                                    _RtxBlinkList[bt] = VisualStyle.Colors.Yellow;
                                }
                                else if (rtxGroup == _StateManager.Radio.Rtx)
                                {
                                    allAsOneBt = true;
                                    title      = VisualStyle.Colors.Yellow;
                                }
                            }
                        }
                    }

                    NotifMsg msg = null;
                    switch (dst.Ptt)
                    {
                    case PttState.NoPtt:
                        break;

                    case PttState.ExternPtt:
                    case PttState.PttOnlyPort:
                        ptt = Resources.Ptt;
                        break;

                    case PttState.PttPortAndMod:
                        ptt = _PttBlinkOn ? Resources.Ptt : null;
                        _PttBlinkList[bt]      = Resources.Ptt;
                        _PttBlinkTimer.Enabled = true;
                        break;

                    case PttState.Blocked:
                        ptt = Resources.PttBlocked;
                        break;

                    //VMG 04/09/2018 Cambios en los estados
                    case PttState.Error:    //Error en portadora
                        title       = VisualStyle.Colors.Red;
                        txForeColor = VisualStyle.Colors.Red;
                        msg         = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.CarrierDetectionError, 3000, MessageType.Error, MessageButtons.Ok);
                        General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg);
                        break;

                    //VMG 05/09/2018 Cambios en los estados
                    case PttState.CarrierError:    //Error en portadora
                        title       = VisualStyle.Colors.Red;
                        txForeColor = VisualStyle.Colors.Red;
                        if (!_CarrierDetectionEventFired && !_TxErrorEventFired)
                        {    //Lanzamos el mensaje solo una vez
                            msg = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.CarrierDetectionError, 3000, MessageType.Error, MessageButtons.Ok);
                            General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg);
                        }
                        break;

                    case PttState.TxError:    //Error en la confirmacion de la Tx
                        // PttState.PttNotConfirmed
                        title       = VisualStyle.Colors.Red;
                        txForeColor = VisualStyle.Colors.Red;
                        if (!_TxErrorEventFired && !_CarrierDetectionEventFired)
                        {    //Lanzamos el mensaje solo una vez
                            msg = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.TxConfirmationDetectionError, 3000, MessageType.Error, MessageButtons.Ok);
                            General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg);
                        }
                        break;

                        /*default://Error en la confirmacion de la Tx lo capturamos como PttState.NoPtt
                         *  // PttState.PttNotConfirmed
                         *  title = VisualStyle.Colors.Red;
                         *  txForeColor = VisualStyle.Colors.Red;
                         *  NotifMsg msg2 = new NotifMsg("Bad Operation", Resources.BadOperation, Resources.TxConfirmationDetectionError, 3000, MessageType.Error, MessageButtons.Ok);
                         *  General.SafeLaunchEvent(ShowNotifMsgEngine, this, msg2);
                         *  break;*/
                    }

                    switch (dst.Squelch)
                    {
                    case SquelchState.SquelchOnlyPort:
                        squelch = Resources.Squelch;
                        break;

                    case SquelchState.SquelchPortAndMod:
                        squelch = _SquelchBlinkOn ? Resources.Squelch : null;
                        _SquelchBlinkList[bt]      = Resources.Squelch;
                        _SquelchBlinkTimer.Enabled = true;
                        break;
                    }

                    switch (dst.AudioVia)
                    {
                    case RdRxAudioVia.Speaker:
                        if (_StateManager.Radio.DoubleRadioSpeaker)
                        {
                            audio = Resources.SpeakerUp;
                        }
                        else
                        {
                            audio = Resources.RxSpeaker;
                        }
                        break;

                    case RdRxAudioVia.HeadPhones:
                        audio = Resources.RxHeadPhones;
                        break;

                    case RdRxAudioVia.HfSpeaker:
                        if (_StateManager.Radio.DoubleRadioSpeaker)
                        {
                            audio = Resources.HFSpeakerUp;
                        }
                        else
                        {
                            audio = Resources.HfSpeaker;
                        }
                        break;
                    }
                }

                bt.Reset(dst.Frecuency, dst.Alias, dst.Unavailable, allAsOneBt, rtxGroup, ptt, squelch, audio, title, tx, rx, txForeColor, rxForeColor, dst.TipoFrecuencia == TipoFrecuencia_t.HF ? VisualStyle.Colors.HfColor : VisualStyle.Colors.Black);
                bt.Enabled = _StateManager.Tft.Enabled && _StateManager.Engine.Operative && !dst.Unavailable;
                UpdateTx(bt, dst);
            }

            bt.Visible = dst.IsConfigurated;
        }
예제 #11
0
        public RadioView([ServiceDependency] IModelCmdManagerService cmdManager, [ServiceDependency] StateManagerService stateManager)
        {
            InitializeComponent();
            if (!Settings.Default.HFView)
            {
                _RadioTLP.Controls.Remove(_SelCallWS);
                _RadioTLP.RowStyles.Clear();
                _RadioTLP.RowCount = 2;
                this._RadioTLP.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 18F));
                this._RadioTLP.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 82F));
            }
            else
            {
                _SelCallWS.Name = WorkspaceNames.SelCallWorkspace;
            }

            _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;
            /** 20180425. RSR */
            _StateManager.Radio.PageSize = _NumPositionsByPage;

            _PttBlinkList     = new Dictionary <RdButton, Image>();
            _SquelchBlinkList = new Dictionary <RdButton, Image>();
            _RtxBlinkList     = new Dictionary <RdButton, Color>();
            _PttPushedList    = new Dictionary <RdButton, RdDst>();

            for (int row = 0, pos = 0; row < _RdButtonsTLP.RowCount; row++)
            {
                for (int column = 0; column < _RdButtonsTLP.ColumnCount; column++, pos++)
                {
                    RdButton bt = new RdButton();
                    _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;
                }
            }

            _RdSpeakerUDB.Level   = _StateManager.RdSpeaker.Level;
            _RdHfSpeakerUDB.Level = _StateManager.HfSpeaker.Level;
            //En Asecna el doble altavoz es configurable (para Kenia)
            _RdHfSpeakerUDB.Visible  = _StateManager.Radio.DoubleRadioSpeaker;
            _RdHfSpeakerUDB.Enabled  = _RdSpeakerEnabled;
            _RdSpeakerUDB.Enabled    = _RdSpeakerEnabled;
            _RdHfSpeakerUDB.DrawX    = _RdSpeakerUDB.DrawX = true;
            _RdHeadPhonesUDB.Visible = !_StateManager.Tlf.SoloAltavoces;
            _RdHeadPhonesUDB.Level   = _StateManager.RdHeadPhones.Level;
            _RdHeadPhonesUDB.Enabled = _RdHeadPhonesEnabled;
            _PttBT.Enabled           = _PttEnabled;
            _RtxBT.Enabled           = _RtxEnabled;
            _RdPageBT.Enabled        = _RdPageEnabled;
            _RtxBT.Text = _Rtx; // Miguel

            /** Esta funcion se ha trasladado al MODEL MODULE */
            //RecuperaEstadoAsignacionFrecuencias();
        }
예제 #12
0
        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;
            /** 20180425. RSR */
            _StateManager.Radio.PageSize = _NumPositionsByPage;

            _PttBlinkList     = new Dictionary <RdButton, Image>();
            _SquelchBlinkList = new Dictionary <RdButton, Image>();
            _RtxBlinkList     = new Dictionary <RdButton, Color>();
            _PttPushedList    = new Dictionary <RdButton, RdDst>();

            for (int row = 0, pos = 0; row < _RdButtonsTLP.RowCount; row++)
            {
                for (int column = 0; column < _RdButtonsTLP.ColumnCount; column++, pos++)
                {
                    RdButton bt = new RdButton();
                    _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;
                }
            }

            _RdSpeakerUDB.Level      = _StateManager.RdSpeaker.Level;
            _RdSpeakerUDB.Enabled    = _RdSpeakerEnabled;
            _RdHeadPhonesUDB.Level   = _StateManager.RdHeadPhones.Level;
            _RdHeadPhonesUDB.Enabled = _RdHeadPhonesEnabled;
            _PttBT.Enabled           = _PttEnabled;
            _RtxBT.Enabled           = _RtxEnabled;
            _RdPageBT.Enabled        = _RdPageEnabled;
            _RtxBT.Text = _Rtx; // Miguel

            //RecuperaEstadoAsignacionFrecuencias();
        }