/// <summary>
        /// Ermittelt das Geräteprofile mit der Senderliste für eine Quellinformation.
        /// </summary>
        /// <param name="selection">Die betroffene Quellinformation.</param>
        /// <returns>Das zugehörige Profil mit der Senderliste, das durchaus von <see cref="GetProfile"/>
        /// abweichen kann.</returns>
        /// <exception cref="ArgumentNullException">Es wurde keine Quellinformation angegeben.</exception>
        public static Profile GetLeafProfile(this SourceSelection selection)
        {
            // Forward
            Profile profile = selection.GetProfile();

            // Check result
            if (null == profile)
            {
                return(null);
            }
            else
            {
                return(profile.LeafProfile);
            }
        }
 /// <summary>
 /// Beginnt mit dem Auslesen der Quelldaten.
 /// </summary>
 /// <param name="source">Alle Informationen zur Quelle.</param>
 /// <returns>Die Hintergrundaufgabe zum Auslesen der Quelldaten.</returns>
 public static CancellableTask <SourceInformation> GetSourceInformationAsync(this SourceSelection source)
 {
     return(source.GetHardware().GetSourceInformationAsync(source.Source, source.GetProfile()));
 }
Exemplo n.º 3
0
        /// <summary>
        /// Füllt die Informationen über die aktiven Quellen.
        /// </summary>
        /// <param name="streams">Die Liste der aktiven Quellen.</param>
        /// <param name="selection">Die aktive Quellgruppe.</param>
        private void LoadStreams( IEnumerable<StreamInformation> streams, SourceSelection selection )
        {
            // Reset
            lstStreams.Items.Clear();

            // Find the profile
            Profile profile = (null == selection) ? null : selection.GetProfile();

            // Process all
            foreach (StreamInformation stream in streams)
            {
                // Create the item
                ListViewItem item = lstStreams.Items.Add( stream.Source.ToString() );

                // No profile
                if (null != profile)
                    foreach (SourceSelection match in profile.FindSource( stream.Source ))
                    {
                        // Check for location match
                        if (null != selection.Location)
                            if (!Equals( selection.Location, match.Location ))
                                continue;

                        // Check for group match
                        if (null != selection.Group)
                            if (!Equals( selection.Group, match.Group ))
                                continue;

                        // Update name
                        item.Text = match.DisplayName;
                        // Skip the rest
                        break;
                    }

                // Add additional data
                item.SubItems.Add( (null == stream.Streams) ? null : string.Join( ", ", stream.Streams.MP2Tracks.Languages.ToArray() ) );
                item.SubItems.Add( (null == stream.Streams) ? null : string.Join( ", ", stream.Streams.AC3Tracks.Languages.ToArray() ) );
                item.SubItems.Add( (null == stream.Streams) ? null : string.Join( ", ", stream.Streams.SubTitles.Languages.ToArray() ) );
                item.SubItems.Add( (null == stream.Streams) ? null : (stream.Streams.Videotext ? "x" : null) );
                item.SubItems.Add( (null == stream.Streams) ? null : (stream.Streams.ProgramGuide ? "x" : null) );
                item.SubItems.Add( string.Format( "{0} ({1})", stream.BytesReceived, stream.CurrentAudioVideoBytes ) );
                item.SubItems.Add( stream.IsDecrypting ? "x" : null );
                item.SubItems.Add( stream.StreamTarget );
                item.SubItems.Add( stream.TargetPath );
                item.SubItems.Add( stream.ConsumerCount.ToString() );
                item.SubItems.Add( string.Join( ", ", stream.AllFiles.Select( f => string.Format( "{0} ({1})", f.FilePath, f.VideoType ) ).ToArray() ) );
            }

            // Set columns
            foreach (ColumnHeader column in lstStreams.Columns)
            {
                // First
                column.AutoResize( ColumnHeaderAutoResizeStyle.ColumnContent );

                // Remember
                int w = column.Width;

                // Second
                column.AutoResize( ColumnHeaderAutoResizeStyle.HeaderSize );

                // Both
                column.Width = Math.Max( column.Width, w );
            }
        }