From 4cc06ee5cdea61865951dbf88b2950a0aa5e1e85 Mon Sep 17 00:00:00 2001 From: Badr Azizi Date: Fri, 10 Nov 2017 12:45:45 +0300 Subject: [PATCH] fix loading movies --- openplex/frmOpenPlex.cs | 68 ++++++++++++++++++++--------------------- 1 file changed, 33 insertions(+), 35 deletions(-) diff --git a/openplex/frmOpenPlex.cs b/openplex/frmOpenPlex.cs index e291a62..90565ce 100644 --- a/openplex/frmOpenPlex.cs +++ b/openplex/frmOpenPlex.cs @@ -233,14 +233,16 @@ void worker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) int countedMovies = 0; string selectedGenre = ""; - private object MovieLock = new object(); - private object[] FetchMovieData() + List MoviesPosters = new List(); + public List LoadMovies(int loadCount) { - lock (MovieLock) + int loadedCount = 0; + + foreach (string movie in dataMoviesJson.Reverse().Skip(countedMovies)) { - foreach (string movie in dataMoviesJson.Reverse().Skip(countedMovies)) + if (loadedCount < loadCount) { - if (!string.IsNullOrEmpty(movie)) + if (string.IsNullOrEmpty(movie) == false) { var data = OMDbEntity.FromJson(movie); @@ -262,7 +264,7 @@ private object[] FetchMovieData() ctrlPoster.infoPoster.BackgroundImage = LoadPicture(data.Poster); ctrlPoster.infoImagePoster = data.Poster; - + ctrlPoster.Name = data.ImdbID; ctrlPoster.infoMovieLinks = data.Sources; try @@ -270,44 +272,40 @@ private object[] FetchMovieData() string jsonData = client.DownloadString("https://tv-v2.api-fetch.website/movie/" + data.ImdbID); var jsonDataPT = PopcornTimeEntity.FromJson(jsonData); ctrlPoster.infoImageFanart = jsonDataPT.Images.Fanart; - ctrlPoster.infoTrailer = jsonDataPT.Trailer; } catch { } - countedMovies += 1; - - return new object[] { ctrlPoster, data.ImdbID, }; + ctrlPoster.Show(); + MoviesPosters.Add(ctrlPoster); + loadedCount += 1; } - return new object[0]; + countedMovies += 1; } - return new object[0]; } - return new object[0]; } + return MoviesPosters; } - public void loadMovies(int loadCount) + delegate void loadMoviesCallBack(int count); + public void loadMovies(int count) { - for (int i = 0; i < loadCount; i++) - { - BackGroundWorker.RunWorkAsync(() => FetchMovieData(), (movie) => - { - if (movie.Length <= 0) - return; - else if ((ctrlMoviesPoster)movie[0] == null) - return; - - ctrlMoviesPoster ctrlPoster = (ctrlMoviesPoster)movie[0]; - string ImdbID = (string)movie[1]; - - ctrlPoster.Show(); - ctrlPoster.Name = ImdbID; - - panelMovies.Controls.Add(ctrlPoster); - }); - } - - tab.SelectedTab = tabMovies; + MoviesPosters = new List(); + BackGroundWorker.RunWorkAsync>(() => LoadMovies(count), (data) => + { + if (panelMovies.InvokeRequired) + { + loadMoviesCallBack b = new loadMoviesCallBack(loadMovies); + Invoke(b, new object[] { count }); + } + else + { + foreach (ctrlMoviesPoster item in data) + { + panelMovies.Controls.Add(item); + } + tab.SelectedTab = tabMovies; + } + }); } @@ -655,4 +653,4 @@ private void panelDownloadItems_ControlRemoved(object sender, ControlEventArgs e if (panelDownloads.Controls.Count == 0) { lblNoDownloads.Visible = true; } else { lblNoDownloads.Visible = false; } } } -} \ No newline at end of file +}