/** Create all the preference widgets in the view */
  private void createView() {
    PreferenceScreen root = getPreferenceManager().createPreferenceScreen(this);
    createRestoreDefaultPrefs(root);
    createTrackPrefs(root);
    createMutePrefs(root);
    createInstrumentPrefs(root);

    PreferenceCategory sheetTitle = new PreferenceCategory(this);
    sheetTitle.setTitle(R.string.sheet_prefs_title);
    root.addPreference(sheetTitle);

    createScrollPrefs(root);
    createShowPianoPrefs(root);
    createShowLyricsPrefs(root);
    if (options.tracks.length != 2) {
      createTwoStaffsPrefs(root);
    }
    createShowLetterPrefs(root);
    createTransposePrefs(root);
    createKeySignaturePrefs(root);
    createTimeSignaturePrefs(root);
    createCombineIntervalPrefs(root);
    createColorPrefs(root);
    createPlayMeasuresInLoopPrefs(root);
    setPreferenceScreen(root);
  }
 /** Create the "Select Tracks to Mute" checkboxes. */
 private void createMutePrefs(PreferenceScreen root) {
   PreferenceCategory muteTracksTitle = new PreferenceCategory(this);
   muteTracksTitle.setTitle(R.string.select_tracks_to_mute);
   root.addPreference(muteTracksTitle);
   muteTracks = new CheckBoxPreference[options.mute.length];
   for (int i = 0; i < options.mute.length; i++) {
     muteTracks[i] = new CheckBoxPreference(this);
     muteTracks[i].setTitle("Track " + i);
     muteTracks[i].setChecked(options.mute[i]);
     root.addPreference(muteTracks[i]);
   }
 }
 /** Create the "Select Tracks to Display" checkboxes. */
 private void createTrackPrefs(PreferenceScreen root) {
   PreferenceCategory selectTracksTitle = new PreferenceCategory(this);
   selectTracksTitle.setTitle(R.string.select_tracks_to_display);
   root.addPreference(selectTracksTitle);
   selectTracks = new CheckBoxPreference[options.tracks.length];
   for (int i = 0; i < options.tracks.length; i++) {
     selectTracks[i] = new CheckBoxPreference(this);
     selectTracks[i].setTitle("Track " + i);
     selectTracks[i].setChecked(options.tracks[i]);
     root.addPreference(selectTracks[i]);
   }
 }
 /**
  * Create the "Select Instruments For Each Track " lists. The list of possible instruments is in
  * MidiFile.java.
  */
 private void createInstrumentPrefs(PreferenceScreen root) {
   PreferenceCategory selectInstrTitle = new PreferenceCategory(this);
   selectInstrTitle.setTitle(R.string.select_instruments_per_track);
   root.addPreference(selectInstrTitle);
   selectInstruments = new ListPreference[options.tracks.length];
   for (int i = 0; i < options.instruments.length; i++) {
     selectInstruments[i] = new ListPreference(this);
     selectInstruments[i].setOnPreferenceChangeListener(this);
     selectInstruments[i].setEntries(MidiFile.Instruments);
     selectInstruments[i].setEntryValues(MidiFile.Instruments);
     selectInstruments[i].setTitle("Track " + i);
     selectInstruments[i].setValueIndex(options.instruments[i]);
     selectInstruments[i].setSummary(selectInstruments[i].getEntry());
     root.addPreference(selectInstruments[i]);
   }
   setAllToPiano = new Preference(this);
   setAllToPiano.setTitle(R.string.set_all_to_piano);
   setAllToPiano.setOnPreferenceClickListener(this);
   root.addPreference(setAllToPiano);
 }
  /**
   * Create the "Play Measures in a Loop" preference.
   *
   * <p>Note that we display the measure numbers starting at 1, but the actual
   * playMeasuresInLoopStart field starts at 0.
   */
  private void createPlayMeasuresInLoopPrefs(PreferenceScreen root) {
    String[] values = new String[options.lastMeasure + 1];
    for (int measure = 0; measure < values.length; measure++) {
      values[measure] = "" + (measure + 1);
    }

    PreferenceCategory playLoopTitle = new PreferenceCategory(this);
    playLoopTitle.setTitle(R.string.play_measures_in_loop_title);
    root.addPreference(playLoopTitle);

    showMeasures = new CheckBoxPreference(this);
    showMeasures.setTitle(R.string.show_measures);
    showMeasures.setChecked(options.showMeasures);
    root.addPreference(showMeasures);

    playMeasuresInLoop = new CheckBoxPreference(this);
    playMeasuresInLoop.setTitle(R.string.play_measures_in_loop);
    playMeasuresInLoop.setChecked(options.playMeasuresInLoop);
    root.addPreference(playMeasuresInLoop);

    loopStart = new ListPreference(this);
    loopStart.setOnPreferenceChangeListener(this);
    loopStart.setTitle(R.string.play_measures_in_loop_start);
    loopStart.setEntries(values);
    loopStart.setEntryValues(values);
    loopStart.setValueIndex(options.playMeasuresInLoopStart);
    loopStart.setSummary(loopStart.getEntry());
    root.addPreference(loopStart);

    loopEnd = new ListPreference(this);
    loopEnd.setOnPreferenceChangeListener(this);
    loopEnd.setTitle(R.string.play_measures_in_loop_end);
    loopEnd.setEntries(values);
    loopEnd.setEntryValues(values);
    loopEnd.setValueIndex(options.playMeasuresInLoopEnd);
    loopEnd.setSummary(loopEnd.getEntry());
    root.addPreference(loopEnd);
  }