package com.sregg.android.tv.spotifyPlayer.settings; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.widget.ArrayAdapter; import com.spotify.sdk.android.player.PlaybackBitrate; import com.sregg.android.tv.spotifyPlayer.R; import com.sregg.android.tv.spotifyPlayer.SpotifyTvApplication; import java.util.ArrayList; import java.util.List; /** * Created by simonreggiani on 15-05-25. */ public class QualitySetting extends Setting { public QualitySetting() { super("{fa-cog}", SpotifyTvApplication.getInstance().getString(R.string.settings_quality)); } @Override public void onClick(final Activity activity) { // TODO use DialogFragment (don't know why it wasn't working...) final List<BitrateItem> itemsList = new ArrayList<>(3); itemsList.add(new BitrateItem(activity.getString(R.string.settings_quality_low), PlaybackBitrate.BITRATE_LOW)); itemsList.add(new BitrateItem(activity.getString(R.string.settings_quality_normal), PlaybackBitrate.BITRATE_NORMAL)); itemsList.add(new BitrateItem(activity.getString(R.string.settings_quality_high), PlaybackBitrate.BITRATE_HIGH)); ArrayAdapter<BitrateItem> adapter = new ArrayAdapter<>(activity, android.R.layout.simple_list_item_single_choice, itemsList); PlaybackBitrate bitrate = UserPreferences.getInstance(activity).getBitrate(); int selectedBitrateIndex = itemsList.indexOf(new BitrateItem(null, bitrate)); AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(R.string.settings_quality_dialog) .setSingleChoiceItems(adapter, selectedBitrateIndex, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { PlaybackBitrate selectedBitrate = itemsList.get(which).getBitrate(); // save in user pref UserPreferences.getInstance(activity).setBitrate(selectedBitrate); // set it in Spotify SDK player SpotifyTvApplication.getInstance().getSpotifyPlayerController().setPlayerBitrate(selectedBitrate); // close the dialog dialog.dismiss(); } }); builder.create().show(); } private class BitrateItem { private String mLabel; private PlaybackBitrate mBitrate; public BitrateItem(String label, PlaybackBitrate bitrate) { mLabel = label; mBitrate = bitrate; } public PlaybackBitrate getBitrate() { return mBitrate; } @Override public String toString() { return mLabel; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; BitrateItem that = (BitrateItem) o; return mBitrate == that.mBitrate; } @Override public int hashCode() { return mBitrate != null ? mBitrate.hashCode() : 0; } } }