protected override void OnNavigatedTo(NavigationEventArgs e)
 {
     base.OnNavigatedTo(e);
     if (e.Parameter != null)
         CurrentSong = e.Parameter as SongModel;
     BackgroundMediaPlayer.MessageReceivedFromBackground += BackgroundMediaPlayer_MessageReceivedFromBackground;
     updateui();
 }
 private void PlayButton_Click(object sender, RoutedEventArgs e)
 {
     var song = new SongModel(((sender as Button).DataContext as Song));
     var list = new List<SongModel>();
     foreach (var item in AllSongs)
     {
         list.Add(new SongModel(item));
     }
     MessageService.SendMessageToBackground(new ForePlaybackChangedMessage((PlaybackState.Playing), list, song));
 }
        internal void Set(SongModel currentSong)
        {
            var text = RootGrid.FindName("NowTitle") as TextBlock;
            text.Text = currentSong.Title;
            text = RootGrid.FindName("NowAlbum") as TextBlock;
            text.Text = currentSong.Album;
            text = RootGrid.FindName("NowArtists") as TextBlock;
            var converter = new ArtistsConverter();
            text.Text = (string)converter.Convert(currentSong.Artists, null, false, null);

        }
Exemplo n.º 4
0
     public static void Save(SongModel song)
     {
         ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
         ApplicationDataContainer MainContainer =
 localSettings.CreateContainer(song.FolderToken, ApplicationDataCreateDisposition.Always);
         ApplicationDataContainer SubContainer =
 MainContainer.CreateContainer("Album" + song.Position, ApplicationDataCreateDisposition.Always);
         ApplicationDataContainer triContainer =
 SubContainer.CreateContainer("Song" + song.SubPosition, ApplicationDataCreateDisposition.Always);
         triContainer.Values["PlayTimes"] = song.PlayTimes;
     }
 internal void Update(SongModel song, uint bitRate, ulong size, string musicType)
 {
     FileSize = size;
     MainKey = song.MainKey;
     Duration = song.Duration;
     BitRate = bitRate;
     FileType = musicType;
     Title = song.Title;
     Album = song.Album;
     Artists = song.Artists;
     AlbumArtists = song.AlbumArtists;
     Year = song.Year;
     Genres = song.Genres;
     Rating = song.Rating;
     Track = new uint[] { song.Track, song.TrackCount, song.Disc, song.DiscCount };
 }
 protected override void OnNavigatedFrom(NavigationEventArgs e)
 {
     base.OnNavigatedFrom(e);
     BackgroundMediaPlayer.MessageReceivedFromBackground -= BackgroundMediaPlayer_MessageReceivedFromBackground;
     if (wtftimer != null)
     {
         wtftimer.Cancel();
         wtftimer = null;
     }
     CurrentSong = null;
 }
        private async void BackgroundMediaPlayer_MessageReceivedFromBackground(object sender, MediaPlayerDataReceivedEventArgs e)
        {

            BackPlaybackChangedMessage message;
            if (MessageService.TryParseMessage(e.Data, out message))
            {
                if (message.CurrentSong != null)
                {
                    await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.High, new Windows.UI.Core.DispatchedHandler(() =>
                     {
                         CurrentSong = message.CurrentSong;
                         updateui();
                     }));
                }
                NowState = message.NowState;
            }
            UpdateArtworkMessage artwork;
            if (MessageService.TryParseMessage(e.Data, out artwork))
            {
                var stream = FileHelper.ToStream(artwork.ByteStream);
                await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, new Windows.UI.Core.DispatchedHandler(async () =>
                {
                    MainColor = await BitmapHelper.New(stream);
                    PlayPauseButton.Background = new SolidColorBrush(MainColor);
                }));
            }
            NowListMessage nowList;
            if (MessageService.TryParseMessage(e.Data, out nowList))
            {
                UpdateNowList(nowList);
            }
            FullFileDetailsMessage detail;
            if (MessageService.TryParseMessage(e.Data, out detail))
            {
                updatedetail(detail);
            }
        }
 public BackPlaybackChangedMessage(MediaPlayerState now, SongModel song)
 {
     CurrentSong = song;
     NowState = now;
 }
 public ForePlaybackChangedMessage(PlaybackState state, List<SongModel> songs, SongModel song)
 {
     DesiredPlaybackState = state;
     DesiredSongs = songs;
     Index = song;
 }
Exemplo n.º 10
0
     public static void Love(SongModel currentSong, bool loved)
     {
         currentSong.Loved = loved;
         ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
         ApplicationDataContainer MainContainer =
 localSettings.CreateContainer(currentSong.FolderToken, ApplicationDataCreateDisposition.Always);
         ApplicationDataContainer SubContainer =
 MainContainer.CreateContainer("Album" + currentSong.Position, ApplicationDataCreateDisposition.Always);
         ApplicationDataContainer triContainer =
 SubContainer.CreateContainer("Song" + currentSong.SubPosition, ApplicationDataCreateDisposition.Always);
         triContainer.Values["Loved"] = currentSong.Loved;
     }
        private static TileContent CreateTile(SongModel item)
        {
            var loader = new Windows.ApplicationModel.Resources.ResourceLoader();
            var conver = new ArtistsConverter();
            var artists = (string)conver.Convert(item.Artists, null, true, null);
            TileContent c = new TileContent()
            {
                Visual = new TileVisual()
                {
                    Branding = TileBranding.NameAndLogo,
                    DisplayName = loader.GetString("TileNowDisplayName"),
                    TileWide = new TileBinding()
                    {
                        Branding = TileBranding.Name,

                        Content = new TileBindingContentAdaptive()
                        {
                            TextStacking = TileTextStacking.Center,
                            PeekImage = new TilePeekImage()
                            {
                                Source = new TileImageSource(item.AlbumArtwork)
                            },

                            Children =
                            {
                                  new TileText()
                                  {
                                       Text = item.Title,
                                       Style = TileTextStyle.Body
                                  },

                                  new TileText()
                                  {
                                        Text = artists,
                                        Style = TileTextStyle.CaptionSubtle
                                   },
                                  new TileText()
                                  {
                                      Text = item.Album,
                                      Style = TileTextStyle.Body
                                  }
                            }
                        }
                    },

                    TileLarge = new TileBinding()
                    {
                        Content = new TileBindingContentAdaptive()
                        {
                            TextStacking = TileTextStacking.Center,

                            Children =
                            {
                                new TileGroup()
                                {
                                    Children =
                                    {
                                        new TileSubgroup()
                                        {
                                            Weight = 1
                                        },
                                        new TileSubgroup()
                                        {
                                            Weight = 2,
                                            Children =
                                            {
                                                new TileImage()
                                                {
                                                    Source = new TileImageSource(item.AlbumArtwork)
                                                }
                                            }
                                        },
                                        new TileSubgroup()
                                        {
                                            Weight = 1
                                        }
                                    }
                                },


                                      new TileText()
                                      {
                                          Text = item.Title,
                                          Style = TileTextStyle.Body,
                                          Align = TileTextAlign.Center
                                      },

                                      new TileText()
                                      {
                                           Text = artists,
                                           Style = TileTextStyle.CaptionSubtle,
                                           Align = TileTextAlign.Center
                                      },
                                      new TileText()
                                      {
                                          Text = item.Album,
                                          Style = TileTextStyle.BodySubtle,
                                          Align = TileTextAlign.Center
                                      }
                                  }
                        }
                    },
                    TileMedium = new TileBinding()
                    {
                        Branding = TileBranding.Name,

                        Content = new TileBindingContentAdaptive()
                        {
                            TextStacking = TileTextStacking.Center,
                            PeekImage = new TilePeekImage()
                            {
                                Source = new TileImageSource(item.AlbumArtwork)
                            },
                            Children =
                            {
                                new TileText()
                                {
                                    Text = item.Title,
                                    Style = TileTextStyle.Body,
                                    Align = TileTextAlign.Center
                                },

                                new TileText()
                                {
                                    Text = artists,
                                    Style = TileTextStyle.CaptionSubtle,
                                    Align = TileTextAlign.Center
                                },
                                
                            }
                        }
                    }
                }
            };
            return c;
        }
 private void UpdateTileOnNewTrack(SongModel item)
 {
     var tile = CreateTile(item);
     TileNotification not = new TileNotification(tile.GetXml());
     TileUpdateManager.CreateTileUpdaterForApplication().Update(not);
 }
 public void setPlaybackControl(SongModel currentSong)
 {
     DurationValueConverter converter = new DurationValueConverter();
     TimeRemainingBlock.Text = (string)converter.Convert(currentSong.Duration, null, null, null);
     UpdateTileOnNewTrack(currentSong);
 }
 private void ShufflePlayButton_Click(object sender, RoutedEventArgs e)
 {
     SongModel song = new SongModel((Song)(sender as Button).DataContext);
     var list = new List<SongModel>();
     foreach (var item in (List<Song>)ShuffleListResources.Source)
     {
         list.Add(new SongModel(item));
     }
     MessageService.SendMessageToBackground(new ForePlaybackChangedMessage((PlaybackState.Playing), list, song));
 }
Exemplo n.º 15
0
        private async void BackgroundMediaPlayer_MessageReceivedFromBackground(object sender, MediaPlayerDataReceivedEventArgs e)
        {
            BackgroundConfirmFilesMessage confirming;
            if (MessageService.TryParseMessage(e.Data, out confirming))
            {
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    LoadingFilesBar.IsIndeterminate = false;
                    LoadingFilesBar.Visibility = Visibility.Collapsed;
                });
            }
            BackPlaybackChangedMessage stateChangedMessage;
            if (MessageService.TryParseMessage(e.Data, out stateChangedMessage))
            {
                await this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {

                    // If playback stopped then clear the UI
                    if (stateChangedMessage.CurrentSong == null)
                    {
                        playbackControl.setPlaybackControlDefault();

                    }
                    else
                    {
                        playbackControl.setPlaybackControl(stateChangedMessage.CurrentSong);
                        this.CurrentSong = stateChangedMessage.CurrentSong;
                        nowPlayingHub.Set(stateChangedMessage.CurrentSong);
                        if (NowLrcFrame.Content != null)
                        {
                            NowLrcFrame.Navigate(typeof(LrcPage), CurrentSong);
                        }
                    }
                    NowState = stateChangedMessage.NowState;
                    BackgroundMediaPlayer.Current.Volume = VolumeSlider.Value / 100.0;
                    var converter = ProgressSlider.ThumbToolTipValueConverter as ThumbToolTipConveter;
                    converter.sParameter = stateChangedMessage.CurrentSong.Duration.TotalSeconds;
                    ArtworkLoadingRing.IsActive = true;
                    ArtworkLoadingRing.Visibility = Visibility.Visible;
                });
            }
            FileNotFindMessage notfind;
            if (MessageService.TryParseMessage(e.Data, out notfind))
            {
                this.Dispatcher.RunAsync(CoreDispatcherPriority.High, new DispatchedHandler(() =>
                 {
                     FileErrPanel.Visibility = Visibility.Visible;
                     ErrPanelIn.Begin();
                     ThreadPoolTimer.CreateTimer((a) =>
                    {
                        this.Dispatcher.RunAsync(CoreDispatcherPriority.High, new DispatchedHandler(async () =>
                        {
                            ErrPanelOut.Begin();
                            await Task.Delay(256);
                            FileErrPanel.Visibility = Visibility.Collapsed;
                        }));
                    }, TimeSpan.FromSeconds(3));
                 }));
            }
            UpdateArtworkMessage updateartwork;
            if (MessageService.TryParseMessage(e.Data, out updateartwork))
            {
                IRandomAccessStream stream;
                stream = await FileHelper.ToRandomAccessStream(updateartwork.ByteStream);
                this.ArtworkStream = updateartwork.ByteStream;
                this.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
                {
                    ArtworkLoadingRing.IsActive = false;
                    ArtworkLoadingRing.Visibility = Visibility.Collapsed;
                    BitmapImage image = new BitmapImage();
                    image.SetSource(stream);
                    PlayBackImage.Source = image;
                    PlayBackImage_ImageOpened(stream);
                });
            }
        }
Exemplo n.º 16
0
 public void StopButton_Click(object sender, RoutedEventArgs e)
 {
     MessageService.SendMessageToBackground(new ForePlaybackChangedMessage(PlaybackState.Stopped));
     NowState = MediaPlayerState.Stopped;
     CurrentSong = null;
 }
        private async void StartPlayback(SongModel song)
        {
            if (song != null)
            {
                var index = playbackList.Items.ToList().FindIndex(item =>
                            GetTrackId(item).ToString() == song.MainKey);
                try
                {
                    playbackList.MoveTo((uint)index);
                }
                catch (Exception)
                {
                    await Task.Delay(1000);
                    playbackList.MoveTo((uint)index);
                }

            }

            if (CurrentPosition != null)
            {
                BackgroundMediaPlayer.Current.Position = CurrentPosition;

            }
            else
            {
                BackgroundMediaPlayer.Current.Position = TimeSpan.Zero;
            }
            BackgroundMediaPlayer.Current.Play();
            NowState = MediaPlayerState.Playing;
        }