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); }
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; }
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)); }
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); }); } }
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; }