public MainViewModel(MainWindowViewModel model, PlaylistViewModel playlist) { _nextcmd = new RelayCommand(NextCmd, CanNext); _previouscmd = new RelayCommand(PreviousCmd, CanPrevious); _playlistcmd = new RelayCommand(PlaylistCmd, () => true); _playcmd = new RelayCommand(PlayCmd, () => true); _repeatcmd = new RelayCommand(RepeatCmd, () => true); _randcmd = new RelayCommand(RandCmd, () => true); _stopcmd = new RelayCommand(StopCmd, () => true); _fullscreencmd = new RelayCommand(FullScreenCmd, CanFullScreen); _exitfullscreencmd = new RelayCommand(ExitFullScreenCmd, () => true); _changevolumecmd = new RelayCommand(ChangeVolumeCmd, () => true); _mediainfoscmd = new RelayCommand(MediaInfosCmd, CanMediaInfos); _typeFilter = WMP.Model.MediaFilter.TITLE; _playmediacmd = new RelayCommand(playMediaCmd, () => true); _addvideoscmd = new RelayCommand(addVideoCmd, () => true); _addsongscmd = new RelayCommand(addSongCmd, () => true); _addpicturescmd = new RelayCommand(addPictureCmd, () => true); _addsongtoplaylist = new RelayCommand(addSongToPlayList, () => true); _addvideotoplaylist = new RelayCommand(addVideoToPlayList, () => true); _addpicturetoplaylist = new RelayCommand(addPictureToPlayList, () => true); _deletevideocmd = new RelayCommand(deleteVideoCmd, () => true); _deletesongcmd = new RelayCommand(deleteSongCmd, () => true); _deletepicturecmd = new RelayCommand(deletePictureCmd, () => true); _clearvideos = new RelayCommand(clearVideos, () => true); _clearpictures = new RelayCommand(clearPictures, () => true); _clearsongs = new RelayCommand(clearSongs, () => true); _clearallcmd = new RelayCommand(clearAll, () => true); ListVideos = new ObservableCollection<VideoMedia>(); ListSongs = new ObservableCollection<AudioMedia>(); ListPictures = new ObservableCollection<PictureMedia>(); _rand = 0; _playlist = playlist; _isRandEnabled = false; _repeatState = repeatStatus.NONE ; _model = model; _media = null; _search = ""; _mediaInfosOpen = false; _mediaInfos = new Window[(int)t_MediaType.NONE]; _mediaInfos[(int)t_MediaType.AUDIO] = null; _mediaInfos[(int)t_MediaType.VIDEO] = null; _mediaInfos[(int)t_MediaType.PICTURE] = null; _mediaInfosFillers = new Action[(int)t_MediaType.NONE]; _mediaInfosFillers[(int)t_MediaType.AUDIO] = new Action(FillAudioModel); _mediaInfosFillers[(int)t_MediaType.VIDEO] = new Action(FillVideoModel); _mediaInfosFillers[(int)t_MediaType.PICTURE] = new Action(FillPictureModel); _createMediaWindow = new Func<Window>[(int)t_MediaType.NONE]; _createMediaWindow[(int)t_MediaType.AUDIO] = new Func<Window>(CreateAudioWindow); _createMediaWindow[(int)t_MediaType.VIDEO] = new Func<Window>(CreateVideoWindow); _createMediaWindow[(int)t_MediaType.PICTURE] = new Func<Window>(CreatePictureWindow); _infosModels = new ViewModelBase[(int)t_MediaType.NONE]; _infosModels[(int)t_MediaType.AUDIO] = new AudioMediaViewModel(); _infosModels[(int)t_MediaType.VIDEO] = new VideoMediaViewModel(); _infosModels[(int)t_MediaType.PICTURE] = new PictureMediaViewModel(); _fullScreen = false; _rnd = new Random(); _progress = new Timer(200); _progress.Elapsed += ProgressElapsed; _player = new MediaElement(); _player.LoadedBehavior = MediaState.Manual; _player.MediaOpened += MediaLoaded; _player.MediaEnded += OnMediaEnded; _player.MediaFailed += OnMediaFailed; loadPicturesLibrary(); loadSongsLibrary(); loadVideosLibrary(); }
public void OnAddPlaylist() { if (_playlist.ListMedia.Count > 0 && _media == null) { _media = _playlist.ListMedia[0]; _player.Source = new Uri(_media.FileName); } }
public void OnOpenMedia(string FileName) { if (FileName != null) { Console.WriteLine("FileName : " + FileName); try { _player.Source = new Uri(FileName); _player.Play(); } catch (Exception) { MessageBox.Show("Error occured when trying to open media", "Open error", MessageBoxButton.OK, MessageBoxImage.Error); } if (_media == null) { _media = Media.CreateMedia(true, FileName, false, ExtensionStatic.GetIconsFromExtension(Path.GetExtension(FileName))); _playlist.ListMedia.Add(_media); } else { _playlist.ListMedia.Remove(_media); _media = Media.CreateMedia(true, FileName, false, ExtensionStatic.GetIconsFromExtension(Path.GetExtension(FileName))); _playlist.ListMedia.Add(_media); } } }
private void StopCmd() { _progress.Stop(); OnPropertyChanged("ProgressBar"); if (_playlist.ListMedia.Count > 0) { _media = _playlist.ListMedia[0]; _media.isPlaying = false; _media.isStopped = true; _player.Source = new Uri(_media.FileName); } _player.Stop(); if (_fullScreen) FullScreenCmd(); OnPropertyChanged("StopPlay"); }
private void PreviousCmd() { bool playingNext = _media.isPlaying; if (_isRandEnabled) _media = _playlist.ListMedia[_rand]; else if (_playlist.ListMedia.IndexOf(_media) == 0 && _repeatState == repeatStatus.REPEAT_ALL) _media = _playlist.ListMedia[_playlist.ListMedia.Count - 1]; else if (_repeatState != repeatStatus.REPEAT_ONE) _media = _playlist.ListMedia[_playlist.ListMedia.IndexOf(_media) - 1]; _media.isPlaying = playingNext; _player.Source = new Uri(_media.FileName); OnPropertyChanged("MediaName"); OnPropertyChanged("MediaNameNext"); }
private void playMediaCmd() { IEnumerable<Media> lv = ListVideos.Where(m => m.IsSelected == true); IEnumerable<Media> lm = ListSongs.Where(m => m.IsSelected == true); IEnumerable<Media> lp = ListPictures.Where(m => m.IsSelected == true); if (lv.Count() > 0) { _player.Stop(); _media = lv.ElementAt(0); OnOpenMedia(_media.FileName); } else if (lm.Count() > 0) { _player.Stop(); _media = lm.ElementAt(0); OnOpenMedia(_media.FileName); } else if (lp.Count() > 0) { _player.Stop(); _media = lp.ElementAt(0); OnOpenMedia(_media.FileName); } }
private void NextCmd() { bool playingPrev = _media.isPlaying; if (_isRandEnabled) _media = _playlist.ListMedia[_rand]; else if (_playlist.ListMedia.IndexOf(_media) == (_playlist.ListMedia.Count - 1) && _repeatState == repeatStatus.REPEAT_ALL) _media = _playlist.ListMedia[0]; else if (_repeatState != repeatStatus.REPEAT_ONE) _media = _playlist.ListMedia[_playlist.ListMedia.IndexOf(_media) + 1]; _media.isPlaying = playingPrev; _player.Source = new Uri(_media.FileName); if (_playlist.ListMedia.Count == 1) MediaLoaded(this, null); OnPropertyChanged("MediaName"); OnPropertyChanged("MediaNameNext"); }
public static Media CreateMedia(bool isPlaying, string fileName, bool isStopped, string icon) { t_MediaType type = ExtensionStatic.GetTypeFromExtension(Path.GetExtension(fileName)); Media media; TagLib.File file = null; Console.WriteLine(fileName); try { file = TagLib.File.Create(fileName); } catch (Exception) { } if (type != t_MediaType.NONE) media = createMedia[(int)type](fileName, file); else { media = new Media(); media.MediaType = t_MediaType.NONE; media.Title = Path.GetFileNameWithoutExtension(fileName); } media.isPlaying = isPlaying; media.FileName = fileName; media.isStopped = isStopped; media.Icon = icon; return media; }