public void onContextItemSelected(MenuItem item) {
   final Movie movie =
       (Movie)
           mList
               .getAdapter()
               .getItem(
                   ((FiveLabelsItemView) ((AdapterContextMenuInfo) item.getMenuInfo()).targetView)
                       .position);
   switch (item.getItemId()) {
     case ITEM_CONTEXT_PLAY:
       mControlManager.playFile(
           new DataResponse<Boolean>() {
             public void run() {
               if (value) {
                 mActivity.startActivity(new Intent(mActivity, NowPlayingActivity.class));
               }
             }
           },
           movie.getPath(),
           mActivity.getApplicationContext());
       break;
     case ITEM_CONTEXT_INFO:
       Intent nextActivity = new Intent(mActivity, MovieDetailsActivity.class);
       nextActivity.putExtra(ListController.EXTRA_MOVIE, movie);
       mActivity.startActivity(nextActivity);
       break;
     default:
       return;
   }
 }
 /**
  * Gets all movies from database
  *
  * @param sortBy Sort field, see SortType.*
  * @param sortOrder Sort order, must be either SortType.ASC or SortType.DESC.
  * @return Updated movie
  */
 public Movie updateMovieDetails(INotifiableManager manager, Movie movie) {
   StringBuilder sb = new StringBuilder();
   sb.append("SELECT c03, c01, c04, c18, c12, c19");
   sb.append(
       " FROM movie, files, path WHERE movie.idFile=files.idFile AND path.idPath=files.idPath AND movie.idmovie = ");
   sb.append(movie.getId());
   parseMovieDetails(mConnection.query("QueryVideoDatabase", sb.toString(), manager), movie);
   sb = new StringBuilder();
   sb.append("SELECT actors.idActor, strActor, strRole");
   sb.append(" FROM actors, actorlinkmovie");
   sb.append(" WHERE actors.idActor = actorlinkmovie.idActor");
   sb.append(" AND actorlinkmovie.idMovie =");
   sb.append(movie.getId());
   movie.actors = parseActorRoles(mConnection.query("QueryVideoDatabase", sb.toString(), manager));
   return movie;
 }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.moviedetails);

    // set display size
    final Display display = getWindowManager().getDefaultDisplay();
    ThumbSize.setScreenSize(display.getWidth(), display.getHeight());

    // remove nasty top fading edge
    FrameLayout topFrame = (FrameLayout) findViewById(android.R.id.content);
    topFrame.setForeground(null);

    final Movie movie = (Movie) getIntent().getSerializableExtra(ListController.EXTRA_MOVIE);
    mMovieDetailsController = new MovieDetailsController(this, movie);

    ((TextView) findViewById(R.id.titlebar_text)).setText(movie.getName());

    Log.i(
        "MovieDetailsActivity",
        "rating = " + movie.rating + ", index = " + ((int) Math.round(movie.rating % 10)) + ".");
    if (movie.rating > -1) {
      ((ImageView) findViewById(R.id.moviedetails_rating_stars))
          .setImageResource(sStarImages[(int) Math.round(movie.rating % 10)]);
    }
    ((TextView) findViewById(R.id.moviedetails_director))
        .setText(StringUtil.join(",  ", movie.director));
    ((TextView) findViewById(R.id.moviedetails_genre))
        .setText(StringUtil.join(" / ", movie.genres));
    ((TextView) findViewById(R.id.moviedetails_runtime)).setText(movie.runtime);
    ((TextView) findViewById(R.id.moviedetails_rating)).setText(String.valueOf(movie.rating));

    mMovieDetailsController.setupPlayButton((Button) findViewById(R.id.moviedetails_playbutton));
    mMovieDetailsController.loadCover((JewelView) findViewById(R.id.moviedetails_jewelcase));
    mMovieDetailsController.updateMovieDetails(
        new Handler(),
        (TextView) findViewById(R.id.moviedetails_rating_numvotes),
        (TextView) findViewById(R.id.moviedetails_studio),
        (TextView) findViewById(R.id.moviedetails_plot),
        (TextView) findViewById(R.id.moviedetails_parental),
        (Button) findViewById(R.id.moviedetails_trailerbutton),
        (LinearLayout) findViewById(R.id.moviedetails_datalayout));

    mConfigurationManager = ConfigurationManager.getInstance(this);
  }
 /**
  * Updates a movie object with some more details. Fields must be the following (in this order):
  *
  * <ol>
  *   <li><code>c03</code> (tagline)
  *   <li><code>c01</code> (plot)
  *   <li><code>c04</code> (number of votes)
  *   <li><code>c18</code> (studio)
  *   <li><code>c12</code> (parental rating)
  *   <li><code>c19</code> (trailer)
  * </ol>
  *
  * @param response
  * @param movie
  * @return Updated movie object
  */
 private Movie parseMovieDetails(String response, Movie movie) {
   String[] fields = response.split("<field>");
   try {
     movie.tagline = Connection.trim(fields[1]);
     movie.plot = Connection.trim(fields[2]);
     movie.numVotes = Connection.trimInt(fields[3]);
     movie.studio = Connection.trim(fields[4]);
     movie.rated = Connection.trim(fields[5]);
     movie.trailerUrl = Connection.trim(fields[6]);
   } catch (Exception e) {
     System.err.println("ERROR: " + e.getMessage());
     System.err.println("response = " + response);
     e.printStackTrace();
   }
   return movie;
 }
 /**
  * Returns a pre-resized movie cover. Pre-resizing is done in a way that the bitmap at least as
  * large as the specified size but not larger than the double.
  *
  * @param manager Postback manager
  * @param cover Cover object
  * @param size Minmal size to pre-resize to.
  * @return Thumbnail bitmap
  */
 public Bitmap getCover(INotifiableManager manager, ICoverArt cover, int size) {
   return getCover(
       manager, cover, size, Movie.getThumbUri(cover), Movie.getFallbackThumbUri(cover));
 }