@Override
  public void onCreate(Bundle icicle) {
    super.onCreate(icicle);

    setTitle(R.string.playback_view);

    SharedPreferences settings = PlaybackService.getSettings(this);
    int displayMode = Integer.parseInt(settings.getString(PrefKeys.DISPLAY_MODE, "2"));
    mDisplayMode = displayMode;

    int layout = R.layout.full_playback;
    int coverStyle;

    switch (displayMode) {
      default:
        Log.w("VanillaMusic", "Invalid display mode given. Defaulting to widget mode.");
        // fall through
      case DISPLAY_INFO_WIDGETS:
        coverStyle = CoverBitmap.STYLE_NO_INFO;
        layout = R.layout.full_playback_alt;
        break;
      case DISPLAY_INFO_OVERLAP:
        coverStyle = CoverBitmap.STYLE_OVERLAPPING_BOX;
        break;
      case DISPLAY_INFO_BELOW:
        coverStyle = CoverBitmap.STYLE_INFO_BELOW;
        break;
    }

    setContentView(layout);

    CoverView coverView = (CoverView) findViewById(R.id.cover_view);
    coverView.setup(mLooper, this, coverStyle);
    coverView.setOnClickListener(this);
    coverView.setOnLongClickListener(this);
    mCoverView = coverView;

    mControlsBottom = findViewById(R.id.controls_bottom);
    View previousButton = findViewById(R.id.previous);
    previousButton.setOnClickListener(this);
    mPlayPauseButton = (ImageButton) findViewById(R.id.play_pause);
    mPlayPauseButton.setOnClickListener(this);
    View nextButton = findViewById(R.id.next);
    nextButton.setOnClickListener(this);

    TableLayout table = (TableLayout) findViewById(R.id.info_table);
    if (table != null) {
      table.setOnClickListener(this);
      table.setOnLongClickListener(this);
      mInfoTable = table;
    }

    mTitle = (TextView) findViewById(R.id.title);
    mAlbum = (TextView) findViewById(R.id.album);
    mArtist = (TextView) findViewById(R.id.artist);

    mControlsTop = findViewById(R.id.controls_top);
    mElapsedView = (TextView) findViewById(R.id.elapsed);
    mDurationView = (TextView) findViewById(R.id.duration);
    mSeekBar = (SeekBar) findViewById(R.id.seek_bar);
    mSeekBar.setMax(1000);
    mSeekBar.setOnSeekBarChangeListener(this);
    mQueuePosView = (TextView) findViewById(R.id.queue_pos);

    mGenreView = (TextView) findViewById(R.id.genre);
    mTrackView = (TextView) findViewById(R.id.track);
    mYearView = (TextView) findViewById(R.id.year);
    mComposerView = (TextView) findViewById(R.id.composer);
    mFormatView = (TextView) findViewById(R.id.format);

    mShuffleButton = (ImageButton) findViewById(R.id.shuffle);
    mShuffleButton.setOnClickListener(this);
    registerForContextMenu(mShuffleButton);
    mEndButton = (ImageButton) findViewById(R.id.end_action);
    mEndButton.setOnClickListener(this);
    registerForContextMenu(mEndButton);

    setControlsVisible(settings.getBoolean(PrefKeys.VISIBLE_CONTROLS, true));
    setExtraInfoVisible(settings.getBoolean(PrefKeys.VISIBLE_EXTRA_INFO, false));
    setDuration(0);
  }