protected virtual void OnMovieSearchCompleted(MovieSearchCompletedEventArgs e) { if (MovieSearchCompleted != null) { MovieSearchCompleted(this, e); } }
void tmdb_MovieSearchCompleted(object sender, TMDB.MovieSearchCompletedEventArgs e) { SearchResults = e.Movies; foreach (TMDB.Movie movie in e.Movies) { listViewResults.Items.Add(new ListViewItem(new string[] { movie.Name, movie.Released.Value.Year.ToString() })); } Program.Tmdb.MovieSearchCompleted -= new TMDB.Api.MovieSearchAsyncCompletedEventHandler(tmdb_MovieSearchCompleted); if (listViewResults.Items.Count > 0) { buttonOk.Enabled = true; } buttonCancel.Enabled = true; buttonSearch.Enabled = true; pictureBoxLoader.Visible = false; }
private void MovieSearchWorker(string title, object userState, AsyncOperation asyncOp) { Exception exception = null; Movie[] movies = null; try { movies = MovieSearch(title); } catch (Exception ex) { exception = ex; } MovieSearchCompletedEventArgs args = new MovieSearchCompletedEventArgs(movies, exception, false, userState); asyncOp.PostOperationCompleted(delegate(object e) { OnMovieSearchCompleted((MovieSearchCompletedEventArgs)e); }, args); }
//--------------------------------------------------------------- void tmdb_MovieSearchCompleted(object sender, TMDB.MovieSearchCompletedEventArgs e) { threadCount -= 1; if (e.Error == null) { if (e.Movies.Length > 0) { MovieTag movietag = (MovieTag)listViewResults.Items[(int)e.UserState].Tag; movietag.Results = e.Movies; listViewResults.Items[(int)e.UserState].Tag = movietag; listViewResults.Items[(int)e.UserState].ForeColor = Color.Blue; listViewResults.Items[(int)e.UserState].SubItems[3].Text = "Match found, downloading info..."; listViewResults.Items[(int)e.UserState].SubItems[1].Text = e.Movies[0].Name; if (e.Movies[0].Released.HasValue) { listViewResults.Items[(int)e.UserState].SubItems[2].Text = e.Movies[0].Released.Value.Year.ToString(); } threadCount += 1; EnsureVisibleScroll((int)e.UserState); Program.Tmdb.GetMovieInfoAsync(e.Movies[0].Id, (int)e.UserState); } else { listViewResults.Items[(int)e.UserState].ForeColor = Color.Red; listViewResults.Items[(int)e.UserState].SubItems[3].Text = "Unable to find match"; progressBarResults.Value += 1; if (searchPos < listViewResults.Items.Count) { MovieTag movietag = (MovieTag)listViewResults.Items[searchPos].Tag; threadCount += 1; EnsureVisibleScroll(searchPos); Program.Tmdb.MovieSearchAsync(movietag.Search, searchPos); searchPos += 1; } } } else { listViewResults.Items[(int)e.UserState].ForeColor = Color.Red; listViewResults.Items[(int)e.UserState].SubItems[3].Text = "Remote server error"; progressBarResults.Value += 1; } progressBarResults.Value += 1; int current = progressBarResults.Value; int max = progressBarResults.Maximum; double percent = ((double)current / (double)max) * 100; if (progressBarResults.Value == progressBarResults.Maximum) { scanning = false; percent = 100; threadCount = 0; } labelProgress.Text = percent.ToString("0.0") + "% (" + completedMatches + " / " + listViewResults.Items.Count + ")"; if (!scanning && threadCount == 0 && percent != 100) { labelProgress.Text = "Aborted (" + completedMatches + " / " + listViewResults.Items.Count + ")"; Program.Tmdb.MovieSearchCompleted -= new TMDB.Api.MovieSearchAsyncCompletedEventHandler(tmdb_MovieSearchCompleted); } else if ((scanning && threadCount == 0) || percent == 100) { buttonResultsAbort.Enabled = true; Program.Tmdb.MovieSearchCompleted -= new TMDB.Api.MovieSearchAsyncCompletedEventHandler(tmdb_MovieSearchCompleted); } if (threadCount == 0) { buttonResultsBack.Enabled = true; buttonResultsAutoId.Enabled = true; buttonResultsAbort.Text = "Close"; foreach (ListViewItem lvi in listViewResults.Items) { if (lvi.ForeColor == Color.Green) { buttonResultsAdd.Enabled = true; break; } } } }