Ejemplo n.º 1
0
        /// <summary>
        /// Aktualisiert die Anzeige der Datenströme.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void updater_Tick(object sender, EventArgs e)
        {
            // None
            if (m_Streams.Count < 1)
            {
                return;
            }

            // Forward to all
            foreach (StreamItem stream in m_Streams)
            {
                stream.Update();
            }

            // Signal information available?
            if (!txSignal.Visible)
            {
                return;
            }

            // Reset color
            txSignal.BackColor = m_Signal;

            // Attach to selection
            SourceItem source = (SourceItem)selSource.SelectedItem;

            // Load information
            var signal = ((null == source) || (null == m_HardwareManager)) ? null : source.Source.GetHardware().CurrentSignal;

            // Check mode
            if (null == signal)
            {
                // Warn
                txSignal.BackColor = Color.Yellow;
                txSignal.Text      = null;
            }
            else
            {
                // Not locked
                if (signal.Locked.HasValue)
                {
                    if (!signal.Locked.Value)
                    {
                        txSignal.BackColor = Color.Red;
                    }
                }

                // Report
                txSignal.Text = string.Format("{0}dB / {1}%", signal.Strength.HasValue ? signal.Strength.ToString() : "-", signal.Quality.HasValue ? ((int)(100 * signal.Quality)).ToString() : "-");
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Wird aufgerufen, sobald das Element angezeigt werden soll.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void StreamDisplay_Load(object sender, EventArgs e)
        {
            // Create all
            List <SourceItem> items = SourceItem.CreateSortedListFromProfile(PlugIn.Profile);

            // Load
            selSource.Items.AddRange(items.ToArray());

            // Try to find the last selection
            if (null != PlugIn.LastSource)
            {
                selSource.SelectedItem = items.Find(s => s.Source.CompareTo(PlugIn.LastSource));
            }

            // Update
            selSource_SelectionChangeCommitted(selSource, EventArgs.Empty);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Der Anwender hat die Auswahl der Datenquelle verändert.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selSource_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // Attach to selection
            SourceItem item = (SourceItem)selSource.SelectedItem;

            // None
            if (null == item)
            {
                return;
            }

            // Reset
            selPid.Value        = WellKnownTable.GetWellKnownStream <EIT>();
            optStandard.Checked = true;

            // Remember
            PlugIn.LastSource = item.Source;

            // Refresh
            AdminSite.UpdateGUI();
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Bereitet die Auswahl für eine bekannte Konfiguration vor.
        /// </summary>
        /// <param name="item">Die zugehörige Quelle.</param>
        /// <param name="pid">Die Datenstromkennung für den Datenstrom.</param>
        /// <param name="extended">Gesetzt, wenn erweiterte Tabellenkennungen verwendet werden.</param>
        private void SelectSpecial(SourceItem item, ushort pid, bool extended)
        {
            // Remember
            PlugIn.LastSource = item.Source;

            // Select all
            selSource.SelectedItem   = item;
            selPIDType.SelectedIndex = 0;
            selPid.Value             = pid;

            // Set option field
            if (extended)
            {
                optExtended.Checked = true;
            }
            else
            {
                optStandard.Checked = true;
            }

            // Refresh
            AdminSite.UpdateGUI();
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Wird bei der ersten Anzeige des Dialogs aufgerufen.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void DumperDialog_Load(object sender, EventArgs e)
        {
            // Load all sources
            List <SourceItem> sources = SourceItem.CreateSortedListFromProfile(PlugIn.Profile);

            // Load
            selSource.Items.AddRange(sources.ToArray());

            // Find the special sources
            SourceSelection freeSat    = PlugIn.Profile.FindSource(EIT.FreeSatEPGTriggerSource).FirstOrDefault();
            SourceSelection premDirect = PlugIn.Profile.FindSource(DirectCIT.TriggerSource).FirstOrDefault();
            SourceSelection premSport  = PlugIn.Profile.FindSource(SportCIT.TriggerSource).FirstOrDefault();

            // Map to sources
            m_DirectEPG = sources.Find(s => s.Source.CompareTo(premDirect));
            m_SportEPG  = sources.Find(s => s.Source.CompareTo(premSport));
            m_FreeSat   = sources.Find(s => s.Source.CompareTo(freeSat));

            // Delete as needed
            if (null == m_FreeSat)
            {
                // Get rid
                selType.Items.RemoveAt(m_FreeSatIndex);

                // Correct
                m_FreeSatIndex = -1;
                m_DirectIndex -= 1;
                m_SportIndex  -= 1;
            }
            if (null == m_DirectEPG)
            {
                // Get rid
                selType.Items.RemoveAt(m_DirectIndex);

                // Correct
                m_DirectIndex -= 1;
                m_SportIndex  -= 1;
            }
            if (null == m_SportEPG)
            {
                // Get rid
                selType.Items.RemoveAt(m_SportIndex);

                // Correct
                m_SportIndex -= 1;
            }

            // Start with default
            selPid.Value = WellKnownTable.GetWellKnownStream <EIT>();

            // Choose
            selSource.SelectedItem = sources.Find(s => s.Source.CompareTo(PlugIn.LastSource));
            selType.SelectedIndex  = 0;

            // Specials
            if (null == selSource.SelectedItem)
            {
                PlugIn.LastSource = null;
            }
            else if (selSource.SelectedItem == m_FreeSat)
            {
                selType.SelectedIndex = m_FreeSatIndex;
            }
            else if (selSource.SelectedItem == m_DirectEPG)
            {
                selType.SelectedIndex = m_DirectIndex;
            }
            else if (selSource.SelectedItem == m_SportEPG)
            {
                selType.SelectedIndex = m_SportIndex;
            }

            // Finish
            selType_SelectionChangeCommitted(selType, EventArgs.Empty);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Der Anwender hat eine neue Quelle ausgewählt.
        /// </summary>
        /// <param name="sender">Wird ignoriert.</param>
        /// <param name="e">Wird ignoriert.</param>
        private void selSource_SelectionChangeCommitted(object sender, EventArgs e)
        {
            // Reset color
            lstStreams.BackColor = m_Background;
            txSignal.BackColor   = m_Signal;
            txSignal.Text        = null;

            // Stop all activities
            CloseStreams();

            // Clear list
            lstStreams.Items.Clear();

            // Attach to selection
            SourceItem source = (SourceItem)selSource.SelectedItem;

            // Nothing to do
            if (null == source)
            {
                return;
            }

            // Remember
            PlugIn.LastSource = source.Source;

            // Be as safe as possible
            try
            {
                // Make sure that hardware is controlled
                if (m_HardwareManager == null)
                {
                    m_HardwareManager = HardwareManager.Open();
                }

                // Select the source
                source.Source.SelectGroup();

                // Get the stream information
                var info = source.Source.GetSourceInformationAsync().CancelAfter(5000).Result;
                if (info == null)
                {
                    return;
                }

                // Attach to the hardware
                Hardware device = source.Source.GetHardware();

                // Silent decrypt
                if (info.IsEncrypted)
                {
                    try
                    {
                        // Process
                        device.Decrypt(source.Source.Source);

                        // Did it
                        lstStreams.BackColor = Color.Green;
                    }
                    catch
                    {
                        // Failed
                        lstStreams.BackColor = Color.Red;
                    }
                }

                // Video
                if (info.VideoType == VideoTypes.MPEG2)
                {
                    m_Streams.Add(new StreamItem(device, info.VideoStream, StreamTypes.Video, "SDTV", false));
                }
                else if (info.VideoType == VideoTypes.H264)
                {
                    m_Streams.Add(new StreamItem(device, info.VideoStream, StreamTypes.Video, "HDTV", true));
                }

                // Audio
                foreach (AudioInformation audio in info.AudioTracks)
                {
                    m_Streams.Add(new StreamItem(device, audio.AudioStream, StreamTypes.Audio, string.Format("{0} {1}", audio.AudioType, audio.Language)));
                }

                // DVB subtitles
                foreach (SubtitleInformation sub in info.Subtitles)
                {
                    m_Streams.Add(new StreamItem(device, sub.SubtitleStream, StreamTypes.SubTitle, string.Format("{0} {1}", sub.SubtitleType, sub.Language)));
                }

                // Videotext
                if (0 != info.TextStream)
                {
                    m_Streams.Add(new StreamItem(device, info.TextStream, StreamTypes.VideoText, "TTX"));
                }
            }
            catch (Exception ex)
            {
                // Report
                MessageBox.Show(this, ex.Message, string.Format(Properties.Resources.Exception_Source_Title, source));
            }

            // Add to list
            lstStreams.Items.AddRange(m_Streams.ToArray());

            // Set column widths
            foreach (ColumnHeader column in lstStreams.Columns)
            {
                // First width
                column.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);

                // Remember
                int width1 = column.Width;

                // Second width
                column.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);

                // Remember
                int width2 = column.Width;

                // Reset
                column.AutoResize(ColumnHeaderAutoResizeStyle.None);

                // Set width
                column.Width = Math.Max(width1, width2);
            }
        }