using System;
using System.Collections.Generic;
namespace MediaBrowser.Model.SyncPlay
{
    /// 
    /// Class PlayQueueUpdate.
    /// 
    public class PlayQueueUpdate
    {
        /// 
        /// Initializes a new instance of the  class.
        /// 
        /// The reason for the update.
        /// The UTC time of the last change to the playing queue.
        /// The playlist.
        /// The playing item index in the playlist.
        /// The start position ticks.
        /// The playing item status.
        /// The shuffle mode.
        /// The repeat mode.
        public PlayQueueUpdate(PlayQueueUpdateReason reason, DateTime lastUpdate, IReadOnlyList playlist, int playingItemIndex, long startPositionTicks, bool isPlaying, GroupShuffleMode shuffleMode, GroupRepeatMode repeatMode)
        {
            Reason = reason;
            LastUpdate = lastUpdate;
            Playlist = playlist;
            PlayingItemIndex = playingItemIndex;
            StartPositionTicks = startPositionTicks;
            IsPlaying = isPlaying;
            ShuffleMode = shuffleMode;
            RepeatMode = repeatMode;
        }
        /// 
        /// Gets the request type that originated this update.
        /// 
        /// The reason for the update.
        public PlayQueueUpdateReason Reason { get; }
        /// 
        /// Gets the UTC time of the last change to the playing queue.
        /// 
        /// The UTC time of the last change to the playing queue.
        public DateTime LastUpdate { get; }
        /// 
        /// Gets the playlist.
        /// 
        /// The playlist.
        public IReadOnlyList Playlist { get; }
        /// 
        /// Gets the playing item index in the playlist.
        /// 
        /// The playing item index in the playlist.
        public int PlayingItemIndex { get; }
        /// 
        /// Gets the start position ticks.
        /// 
        /// The start position ticks.
        public long StartPositionTicks { get; }
        /// 
        /// Gets a value indicating whether the current item is playing.
        /// 
        /// The playing item status.
        public bool IsPlaying { get; }
        /// 
        /// Gets the shuffle mode.
        /// 
        /// The shuffle mode.
        public GroupShuffleMode ShuffleMode { get; }
        /// 
        /// Gets the repeat mode.
        /// 
        /// The repeat mode.
        public GroupRepeatMode RepeatMode { get; }
    }
}