Пример #1
0
        private bool dispatchRecvMsg(APISpectrum apiSpec)
        {
            // Handle messages received from network

            try
            {
                // Session spectrum received successfully
                Spectrum spec = new Spectrum(apiSpec);

                // Normal session spectrum received
                log.Info(spec.Label + " received");

                // Add spectrum to session
                if (session != null && session.IsLoaded && session.Name == spec.SessionName)
                {
                    session.Add(spec);

                    // Add spectrum to UI list
                    bool updateSelectedIndex = false;
                    if (lbSession.SelectedIndex == 0)
                    {
                        updateSelectedIndex = true;
                    }

                    int index = 0, last_index = 0;

                    for (int i = 0; i < lbSession.Items.Count; i++)
                    {
                        Spectrum s = lbSession.Items[i] as Spectrum;
                        last_index = s.SessionIndex;
                        if (last_index < spec.SessionIndex)
                        {
                            index = i;
                            break;
                        }
                    }

                    if (last_index > spec.SessionIndex)
                    {
                        lbSession.Items.Add(spec);
                    }
                    else
                    {
                        lbSession.Items.Insert(index, spec);
                    }

                    if (updateSelectedIndex)
                    {
                        lbSession.ClearSelected();
                        lbSession.SetSelected(0, true);
                    }

                    // Notify external forms about new spectrum

                    parent.AddSpectrum(spec);

                    if (session.Spectrums.Count == 1)
                    {
                        parent.PositionMap(spec.Latitude, spec.Longitude);
                    }

                    if (progress.Value < progress.Maximum)
                    {
                        progress.Value++;
                    }

                    if (progress.Value >= progress.Maximum)
                    {
                        progress.Visible = false;
                    }
                }
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
                return(false);
            }

            return(true);
        }