Exemple #1
0
 public ChromecastService(IDeviceLocator deviceLocator, ISender sender)
 {
     DeviceLocator = deviceLocator;
     Sender        = sender;
     sender.GetChannel <IMediaChannel>().StatusChanged    += MediaChannelStatusChanged;
     sender.GetChannel <IReceiverChannel>().StatusChanged += ReceiverChannelStatusChanged;
 }
Exemple #2
0
        /// <summary>
        /// Initializes a new instance of MainViewModel class
        /// </summary>
        /// <param name="deviceLocator">GoogleCast device locator</param>
        /// <param name="sender">GoogleCast sender</param>
        public MainViewModel(IDeviceLocator deviceLocator, ISender sender)
        {
            DeviceLocator = deviceLocator;
            Sender        = sender;
            sender.GetChannel <IMediaChannel>().StatusChanged    += MediaChannelStatusChanged;
            sender.GetChannel <IReceiverChannel>().StatusChanged += ReceiverChannelStatusChanged;
            PlayCommand    = new RelayCommand(async() => await Try(PlayAsync), () => AreButtonsEnabled);
            PauseCommand   = new RelayCommand(async() => await Try(PauseAsync), () => AreButtonsEnabled);
            StopCommand    = new RelayCommand(async() => await Try(StopAsync), () => AreButtonsEnabled);
            RefreshCommand = new RelayCommand(async() => await Try(RefreshAsync), () => IsLoaded);

            if (!IsInDesignMode)
            {
                Task.Run(RefreshAsync);
            }
        }
Exemple #3
0
        public async Task PlayAsync()
        {
            try
            {
                await SendChannelCommandAsync <IMediaChannel>(!IsInitialized || IsStopped,
                                                              async c =>
                {
                    if (insertingItems.Count > 0 && await ConnectAsync())
                    {
                        ISender sender             = MediaSender;
                        IMediaChannel mediaChannel = sender.GetChannel <IMediaChannel>();
                        await sender.LaunchAsync(mediaChannel);

                        Queue <QueueItem> itemsQueue = new Queue <QueueItem>(insertingItems);

                        await mediaChannel.QueueLoadAsync(RepeatMode.RepeatOff, itemsQueue.DequeueChunk(20).ToArray());

                        await RefreshQueueAsync();

                        while (itemsQueue.Count > 0)
                        {
                            await mediaChannel.QueueInsertAsync(itemsQueue.DequeueChunk(20).ToArray());
                        }

                        insertingItems.Clear();

                        IsInitialized = true;
                    }
                },
                                                              async c =>
                {
                    if (insertingItems.Count > 0)
                    {
                        Queue <QueueItem> itemsQueue = new Queue <QueueItem>(insertingItems);

                        while (itemsQueue.Count > 0)
                        {
                            await MediaSender.GetChannel <IMediaChannel>().QueueInsertAsync(itemsQueue.DequeueChunk(20).ToArray());
                        }

                        insertingItems.Clear();
                    }

                    await c.PlayAsync();
                });
            }
            catch
            { }
        }
Exemple #4
0
        public async Task <bool> TryRefreshAsync()
        {
            try
            {
                await ConnectAsync();

                ISender       sender       = MediaSender;
                IMediaChannel mediaChannel = sender.GetChannel <IMediaChannel>();
                await mediaChannel.GetStatusAsync();
                await RefreshQueueAsync();

                return(true);
            }
            catch { }
            return(false);
        }