internal static void CheckAndPlayMovie(bool jumpTo, TraktMovieSummary movie)
{
if (movie == null) return;
CurrentMediaType = MediaType.Movie;
CurrentMovie = movie;
// check for parental controls
if (PromptForPinCode)
{
if (!GUIUtils.ShowPinCodeDialog(TraktSettings.ParentalControlsPinCode))
{
TraktLogger.Warning("Parental controls pin code has not successfully been entered. Window ID = {0}", GUIWindowManager.ActiveWindow);
return;
}
}
TraktLogger.Info("Attempting to play movie. Title = '{0}', Year = '{1}', IMDb ID = '{2}'", movie.Title, movie.Year.ToLogString(), movie.Ids.Imdb.ToLogString());
bool handled = false;
if (TraktHelper.IsMovingPicturesAvailableAndEnabled)
{
TraktLogger.Info("Checking if any movie to watch in MovingPictures");
int? movieid = null;
// Find Movie ID in MovingPictures
// Movie list is now cached internally in MovingPictures so it will be fast
bool movieExists = TraktHandlers.MovingPictures.FindMovieID(movie.Title, movie.Year.GetValueOrDefault(), movie.Ids.Imdb, ref movieid);
if (movieExists)
{
TraktLogger.Info("Found movie in MovingPictures with movie ID '{0}'", movieid.ToString());
if (jumpTo)
{
string loadingParameter = string.Format("movieid:{0}", movieid);
// Open MovingPictures Details view so user can play movie
GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MovingPictures, loadingParameter);
}
else
{
TraktHandlers.MovingPictures.PlayMovie(movieid);
}
handled = true;
}
}
// check if its in My Videos database
if (TraktSettings.MyVideos >= 0 && handled == false)
{
TraktLogger.Info("Checking if any movie to watch in My Videos");
IMDBMovie imdbMovie = null;
if (TraktHandlers.MyVideos.FindMovieID(movie.Title, movie.Year.GetValueOrDefault(), movie.Ids.Imdb, ref imdbMovie))
{
// Open My Videos Video Info view so user can play movie
if (jumpTo)
{
GUIVideoInfo videoInfo = (GUIVideoInfo)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_VIDEO_INFO);
videoInfo.Movie = imdbMovie;
GUIWindowManager.ActivateWindow((int)GUIWindow.Window.WINDOW_VIDEO_INFO);
}
else
{
GUIVideoFiles.PlayMovie(imdbMovie.ID, false);
}
handled = true;
}
}
// check if its in My Films database
if (TraktHelper.IsMyFilmsAvailableAndEnabled && handled == false)
{
TraktLogger.Info("Checking if any movie to watch in My Films");
int? movieid = null;
string config = null;
if (TraktHandlers.MyFilmsHandler.FindMovie(movie.Title, movie.Year.GetValueOrDefault(), movie.Ids.Imdb, ref movieid, ref config))
{
// Open My Films Details view so user can play movie
if (jumpTo)
{
string loadingParameter = string.Format("config:{0}|movieid:{1}", config, movieid);
GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MyFilms, loadingParameter);
}
else
{
// TraktHandlers.MyFilms.PlayMovie(config, movieid); // TODO: Add Player Class to MyFilms
string loadingParameter = string.Format("config:{0}|movieid:{1}|play:{2}", config, movieid, "true");
GUIWindowManager.ActivateWindow((int)ExternalPluginWindows.MyFilms, loadingParameter);
}
handled = true;
}
}
if (TraktHelper.IsTrailersAvailableAndEnabled && handled == false)
{
TraktLogger.Info("There were no movies found in local plugin databases. Attempting to search and/or play trailer(s) from the Trailers plugin");
ShowMovieTrailersPluginMenu(movie);
handled = true;
}
}