protected void LoadPlayList(string strPlayList) { IPlayListIO loader = PlayListFactory.CreateIO(strPlayList); if (loader == null) { return; } PlayList playlist = new PlayList(); if (!loader.Load(playlist, strPlayList)) { TellUserSomethingWentWrong(); return; } playlistPlayer.CurrentPlaylistName = Path.GetFileNameWithoutExtension(strPlayList); if (playlist.Count == 1) { Log.Info("GUIVideoFiles: play single playlist item - {0}", playlist[0].FileName); if (g_Player.Play(playlist[0].FileName)) { if (Util.Utils.IsVideo(playlist[0].FileName)) { g_Player.ShowFullScreenWindow(); } } return; } // clear current playlist playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Clear(); // add each item of the playlist to the playlistplayer for (int i = 0; i < playlist.Count; ++i) { PlayListItem playListItem = playlist[i]; playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Add(playListItem); } // if we got a playlist if (playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Count > 0) { // then get 1st song playlist = playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO); PlayListItem item = playlist[0]; // and start playing it playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_VIDEO; playlistPlayer.Reset(); playlistPlayer.Play(0); // and activate the playlist window if its not activated yet if (GetID == GUIWindowManager.ActiveWindow) { GUIWindowManager.ActivateWindow((int)Window.WINDOW_VIDEO_PLAYLIST); } } }
/// <summary> /// Private method to start playlist (needed for the invoke callback) /// </summary> private static void StartPlayingPlaylist(bool switchToPlaylistView) { if (GUIGraphicsContext.form.InvokeRequired) { StartPlayingPlaylistDelegate d = StartPlayingPlaylist; GUIGraphicsContext.form.Invoke(d, new object[] { switchToPlaylistView }); } else { PlayListPlayer playlistPlayer = PlayListPlayer.SingletonPlayer; PlayList playlist = playlistPlayer.GetPlaylist(mPlaylistStartType); // if we got a playlist if (playlist.Count > 0) { // and activate the playlist window if its not activated yet if (switchToPlaylistView) { if (mPlaylistStartType == PlayListType.PLAYLIST_MUSIC) { WindowPluginHelper.ActivateWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_MUSIC_PLAYLIST); } else if (mPlaylistStartType == PlayListType.PLAYLIST_VIDEO) { WindowPluginHelper.ActivateWindow((int)MediaPortal.GUI.Library.GUIWindow.Window.WINDOW_VIDEO_PLAYLIST); } } // and start playing it playlistPlayer.CurrentPlaylistType = mPlaylistStartType; playlistPlayer.Reset(); playlistPlayer.Play(mPlaylistStartIndex); } } }
protected override void OnPageLoad() { base.OnPageLoad(); // Get notification, that an Internet Stream has changed // Moved out of the constructor, since it would cause loading of BASS in the Main thread, // because it is called by the Plugin Manager if (BassAudioEngine._initialized) { BassMusicPlayer.Player.InternetStreamSongChanged += OnInternetStreamSongChanged; } ImagePathContainer.Clear(); _trackChanged = true; GUIPropertyManager.SetProperty("#currentmodule", String.Format("{0}/{1}", GUILocalizeStrings.Get(100005), GUILocalizeStrings.Get(4540))); if (LblUpNext != null) { LblUpNext.Label = GUILocalizeStrings.Get(4541); } if (GUIPropertyManager.GetProperty("#Play.Next.Title") == string.Empty && LblUpNext != null) { LblUpNext.Visible = false; } ControlsInitialized = true; if (ImageChangeTimer == null) { ImageChangeTimer = new Timer(); ImageChangeTimer.Interval = 3600 * 1000; ImageChangeTimer.Elapsed += new ElapsedEventHandler(OnImageTimerTickEvent); ImageChangeTimer.Start(); } if (ProgramChangeTimer == null) { ProgramChangeTimer = new Timer(); ProgramChangeTimer.Interval = 3 * 1000; ProgramChangeTimer.Elapsed += OnProgramTimerTickEvent; ProgramChangeTimer.Start(); } else { ProgramChangeTimer.Start(); } // Start the VUMeter Update Timer, when it is enabled in skin file GUIPropertyManager.SetProperty("#VUMeterL", @"VU1.png"); GUIPropertyManager.SetProperty("#VUMeterR", @"VU1.png"); if (VUMeterTimer == null && _usingBassEngine && _vuMeter.ToLowerInvariant() != "none") { VUMeterTimer = new Timer(); VUMeterTimer.Interval = 10; VUMeterTimer.Elapsed += new ElapsedEventHandler(OnVUMterTimerTickEvent); VUMeterTimer.Start(); } UpdateImagePathContainer(); if (g_Player.Playing && g_Player.IsRadio) { PlaylistPlayer.Reset(); } if (g_Player.Playing) { OnPlayBackStarted(g_Player.MediaType.Music, g_Player.CurrentFile); _isStopped = false; } else { CurrentTrackTag = null; NextTrackTag = null; UpdateTrackInfo(); } }
/// <summary> /// Tune to a new last.fm radio station and add tracks to playlist /// </summary> /// <param name="strStation">name os station to tune to</param> private void TuneToStation(string strStation) { if (!Win32API.IsConnectedToInternet()) { var dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_NOTIFY); if (null != dlgNotify) { dlgNotify.SetHeading(GUILocalizeStrings.Get(107890)); dlgNotify.SetText(GUILocalizeStrings.Get(34064)); dlgNotify.DoModal(GetID); } return; } Log.Debug("Attempting to Tune to last.fm station: {0}", strStation); // Clear playlist and start playback var pl = _playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_LAST_FM); pl.Clear(); _playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_LAST_FM; _playlistPlayer.Reset(); try { LastFMLibrary.TuneRadio(strStation); } catch (LastFMException ex) { Log.Error(ex); var dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_NOTIFY); if (null != dlgNotify) { dlgNotify.SetHeading(GUILocalizeStrings.Get(107890)); dlgNotify.SetText(ex.Message); dlgNotify.DoModal(GetID); } return; } Log.Debug("Tuned to last.fm station: {0}", strStation); try { AddMoreTracks(); } catch (LastFMException ex) { Log.Error("Unable to add last.fm tracks to playlist"); var errMessage = "Unable to add last.fm tracks to playlist\n"; if (ex.LastFMError == LastFMException.LastFMErrorCode.UnknownError) { Log.Error(ex); errMessage += "Please check logs"; } else { errMessage += ex.Message; } var dlgNotify = (GUIDialogNotify)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_NOTIFY); if (null != dlgNotify) { dlgNotify.SetHeading(GUILocalizeStrings.Get(107890)); dlgNotify.SetText(errMessage); dlgNotify.DoModal(GetID); } return; } _playlistPlayer.Play(0); }
/// <summary> /// Play all episodes of a season /// </summary> /// <param name="seriesId">ID of a series</param> /// <param name="seasonNumber">Number of the season</param> /// <param name="onlyUnwatched">Play only unwatched episodes</param> /// <param name="autostart">If yes, automatically starts playback with the first episode</param> /// <param name="startIndex">Index of the item with which playback should start</param> /// <param name="switchToPlaylistView">If yes the playlistview will be shown</param> public static void PlaySeason(int seriesId, int seasonNumber, bool autostart, int startIndex, bool onlyUnwatched, bool switchToPlaylistView) { if (GUIGraphicsContext.form.InvokeRequired) { PlaySeasonAsyncDelegate d = new PlaySeasonAsyncDelegate(PlaySeason); GUIGraphicsContext.form.Invoke(d, new object[] { seriesId, seasonNumber, autostart, startIndex, onlyUnwatched, switchToPlaylistView }); return; } List <DBEpisode> episodes = DBEpisode.Get(seriesId, seasonNumber); if (episodes == null || episodes.Count == 0) { return; } // filter out anything we can't play episodes.RemoveAll(e => string.IsNullOrEmpty(e[DBEpisode.cFilename])); // filter out watched episodes if (onlyUnwatched) { episodes.RemoveAll(e => e[DBOnlineEpisode.cWatched] != 0); } if (episodes.Count == 0) { return; } // Sort episodes and add them to the MP-TVSeries playlist player // Setup playlist player if (playlistPlayer == null) { playlistPlayer = PlayListPlayer.SingletonPlayer; playlistPlayer.PlaylistAutoPlay = true; playlistPlayer.RepeatPlaylist = DBOption.GetOptions(DBOption.cRepeatPlaylist); } playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_TVSERIES).Clear(); episodes.Sort(); foreach (DBEpisode episode in episodes) { PlayListItem playlistItem = new PlayListItem(episode); playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_TVSERIES).Add(playlistItem); } //automatically start playing the playlist if (autostart) { // and activate the playlist window if its not activated yet if (switchToPlaylistView) { GUIWindowManager.ActivateWindow(GUITVSeriesPlayList.GetWindowID); } playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_TVSERIES; playlistPlayer.Reset(); playlistPlayer.Play(0); } }
/// <summary> /// Loads a playlist and starts the playback /// </summary> /// <param name="playListFileName">Filename of the playlist</param> private void LoadPlayList(string playListFileName) { IPlayListIO loader = PlayListFactory.CreateIO(playListFileName); PlayList playlist = new PlayList(); if (!loader.Load(playlist, playListFileName)) { GUIDialogOK dlgOk = (GUIDialogOK)GUIWindowManager.GetWindow((int)Window.WINDOW_DIALOG_OK); if (dlgOk != null) { dlgOk.SetHeading(6); dlgOk.SetLine(1, 477); dlgOk.SetLine(2, String.Empty); dlgOk.DoModal(GetID); } return; } if (playlist.Count == 1) { string movieFileName = playlist[0].FileName + ".mplayer"; if (movieFileName.StartsWith("rtsp:")) { movieFileName = "ZZZZ:" + movieFileName.Remove(0, 5); } if (g_Player.Play(movieFileName)) { if (g_Player.Player != null && g_Player.IsVideo) { GUIGraphicsContext.IsFullScreenVideo = true; GUIWindowManager.ActivateWindow((int)Window.WINDOW_FULLSCREEN_VIDEO); } } return; } PlaylistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Clear(); for (int i = 0; i < playlist.Count; ++i) { string movieFileName = playlist[i].FileName + ".mplayer"; if (movieFileName.StartsWith("rtsp:")) { movieFileName = "ZZZZ:" + movieFileName.Remove(0, 5); } playlist[i].FileName = movieFileName; PlayListItem playListItem = playlist[i]; playListItem.Type = PlayListItem.PlayListItemType.Unknown; PlaylistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Add(playListItem); } if (PlaylistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO).Count > 0) { PlaylistPlayer.GetPlaylist(PlayListType.PLAYLIST_VIDEO); PlaylistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_VIDEO; PlaylistPlayer.Reset(); PlaylistPlayer.Play(0); if (g_Player.Player != null && g_Player.IsVideo) { GUIGraphicsContext.IsFullScreenVideo = true; GUIWindowManager.ActivateWindow((int)Window.WINDOW_FULLSCREEN_VIDEO); } } }