/// <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() : "-"); } }
/// <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); }
/// <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(); }
/// <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(); }
/// <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); }
/// <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); } }