/// <summary> /// 双击歌曲项或右键点击播放 /// </summary> /// <param name="listBox"></param> private void DouClickSongItemExecute(Selector listBox) //由于PlayListItem在子类中无法改变,故放于此 { var songListItem = listBox.SelectedItem as SongListStyle; if (songListItem != null) { var targetSong = SongListModel.GetPlayingSong(songListItem.Song.Path); if (!targetSong.Equals(PlayingSong)) { PlayingSong = targetSong; } //PlayingSong = SongListModel.GetPlayingSong(songListItem.Song.Path); } PlayListItem.Clear(); PlayListItem = new List <SongListStyle>(InitialSongs); IsPlayListChanged = true; //播放列表被修改 PlayingListModel.ClearPlayingList(); PlayingListModel.SavePlayingList(PlayListItem.Select(i => i.Song).ToList()); if (ControlService.PlayState != PlayState.播放) { ControlService.PlayState = PlayState.播放; } else { ControlService.PlayService.MediaPlayer.Play(); } }
private void OnDelPlayList(ListBox listBox) { var songListItem = listBox.SelectedItem as SongListStyle; if (songListItem == null) { return; } var delSong = SongListModel.GetPlayingSong(songListItem.Song.Path); var songList = PlayListItem.Select(i => i.Song).ToList(); songList.Remove(delSong); PlayListItem = SongListModel.InitialSongList(songList); IsPlayListChanged = true; PlayingListModel.ClearPlayingList(); PlayingListModel.SavePlayingList(songList); //若删除的歌曲为正在播放的歌曲 if (delSong.Equals(PlayingSong)) { OnNext(); //播放下一曲 } }
/// <summary> /// 编辑歌曲标签按钮命令 /// </summary> /// <param name="listBox"></param> private void SongListEditTagsMenuExecute(ListBox listBox) { var songListItem = listBox.SelectedItem as SongListStyle; if (songListItem == null) { return; } var song = SongListModel.GetPlayingSong(songListItem.Song.Path); TagsEditingWindow tagsEditingWindow = new TagsEditingWindow(); //TagsEditingWindowViewModel.TagsList = // songListStyle?.Song.Tags != null // ? new List<string>(songListStyle.Song.Tags) // : new List<string>(); Songs.SongTags = song.Tags != null ? new List <string>(song.Tags) : new List <string>(); TagsEditingWindowViewModel tagsEditingWindowViewModel = new TagsEditingWindowViewModel(); tagsEditingWindow.DataContext = tagsEditingWindowViewModel; tagsEditingWindow.ShowDialog(); if (tagsEditingWindow.DialogResult != true) { return; } SongListModel.ClearSongTags(songListItem.Song); //将数据库中该歌曲的标签清空 songListItem.Song.Tags = new List <string>(Songs.SongTags /*TagsEditingWindowViewModel.TagsList*/); SongListModel.SaveSongTags(songListItem.Song); }
/// <summary> /// 确认选中的标签,在歌曲列表显示包含选中标签的歌曲 /// </summary> private void OnSelectTags() { //Songs.SongList.Clear(); var songList = SongListModel.GetSelectedSongs(); InitialSongs = new List <SongListStyle>(SongListModel.InitialSongList(songList)); }
/// <summary> /// 双击播放列表歌曲项或右键点击播放 /// </summary> /// <param name="playingList"></param> private void OnDoubleClickPlayingList(ListBox playingList) { var songListItem = playingList.SelectedItem as SongListStyle; if (songListItem == null) { return; } PlayingSong = SongListModel.GetPlayingSong(songListItem.Song.Path); if (ControlService.PlayState != PlayState.播放) { ControlService.PlayState = PlayState.播放; } }
/// <summary> 初始化歌曲列表、播放列表和初始歌曲 </summary> private void InitialSongLists() { InitialSongs = SongListModel.InitialSongList(SongListModel.GetSongsDb()); PlayListItem = SongListModel.InitialSongList(PlayingListModel.GetPlayingList()); var firstOrDefault = PlayListItem.FirstOrDefault(); if (firstOrDefault != null) { PlayingSong = firstOrDefault.Song; ControlService.PlayService.SongPath = PlayingSong.Path; ControlService.PlayState = PlayState.暂停; } }
private void OnAddPlayList(ListBox listBox) { var songList = PlayListItem.Select(i => i.Song).ToList(); var songListItem = listBox.SelectedItem as SongListStyle; if (songListItem == null) { return; } songList.Add(songListItem.Song); PlayListItem = SongListModel.InitialSongList(songList); IsPlayListChanged = true; PlayingListModel.ClearPlayingList(); PlayingListModel.SavePlayingList(songList); }
/// <summary> /// 从目录添加歌曲 /// </summary> private void OnAddSongSet() { var songList = new List <Song>(); using (var dirChooser = new System.Windows.Forms.FolderBrowserDialog()) { if (dirChooser.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var songModel = new SongListModel(); songList = songModel.LoadSongList(dirChooser.SelectedPath); } } var initialSongs = new SongListModel(); initialSongs.SaveSongsDb(songList); InitialSongs = new List <SongListStyle>(initialSongs.InitialSongList(songList)); }
/// <summary> 播放选中标签的歌曲 </summary> private void PlaySongExecute() { PlayListItem.Clear(); var songList = InitialSongs.Select(i => i.Song).ToList(); PlayListItem = SongListModel.InitialSongList(songList); IsPlayListChanged = true; PlayingListModel.ClearPlayingList(); PlayingListModel.SavePlayingList(songList); if (ControlService.PlayState != PlayState.播放) { ControlService.PlayState = PlayState.播放; } }
/// <summary> /// 先初始化构造函数,再初始化属性 /// </summary> public TagsSelectService() { SongListModel = new SongListModel(); PlayingListModel = new PlayingListModel(); ControlService = new ControlService(); PlayMode = PlayMode.列表循环; InitialSongs = new List <SongListStyle>(); PlayListItem = new List <SongListStyle>(); InitialSongLists(); PlayModeService = new PlayModeService(PlayMode); ControlService.PlayService.MediaPlayer.MediaEnded += MediaEnd; SelectTagsCommand = new DelegateCommand(OnSelectTags); PlaySongCommand = new DelegateCommand(PlaySongExecute); AddSongSetCommand = new DelegateCommand(OnAddSongSet); NextCommand = new DelegateCommand(OnNext); LastCommand = new DelegateCommand(OnLast); ModeChangeCommand = new DelegateCommand(OnModeChange); SelectTagCommand = new DelegateCommand <Button>(SelectTagExecute); TestCommand = new DelegateCommand(TestExecute); PlayPauseCommand = new DelegateCommand(OnPlayPause); }