package com.atomjack.vcfp; import android.app.AlertDialog; import android.content.Context; import android.graphics.PorterDuff; import android.support.v4.content.ContextCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.Spinner; import android.widget.TextView; import com.atomjack.vcfp.adapters.StreamAdapter; import com.atomjack.vcfp.model.PlexClient; import com.atomjack.vcfp.model.PlexMedia; import com.atomjack.vcfp.model.Stream; import java.util.List; public class MediaOptionsDialog extends AlertDialog.Builder { private AppCompatActivity activity; private StreamChangeListener streamChangeListener; public MediaOptionsDialog(final Context context, final PlexMedia media, final PlexClient client) { super(context); activity = (AppCompatActivity)context; final List<Stream> audioStreams = media.getStreams(Stream.AUDIO); final List<Stream> subtitleStreams = media.getStreams(Stream.SUBTITLE); View layout = activity.getLayoutInflater().inflate(R.layout.media_options_dialog, null); if(subtitleStreams.size() > 0) { Spinner subtitlesSpinner = (Spinner) layout.findViewById(R.id.subtitlesSpinner); subtitlesSpinner.getBackground().setColorFilter(ContextCompat.getColor(context, R.color.white), PorterDuff.Mode.SRC_ATOP); StreamAdapter subtitlesStreamAdapter = new StreamAdapter(activity, android.R.layout.simple_spinner_dropdown_item, subtitleStreams); subtitlesSpinner.setAdapter(subtitlesStreamAdapter); subtitlesSpinner.setSelection(subtitleStreams.indexOf(media.getActiveStream(Stream.SUBTITLE)), false); subtitlesSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ((TextView)parent.getChildAt(0)).setTextColor(ContextCompat.getColor(context, R.color.white)); Stream stream = subtitleStreams.get(position); if (!stream.isActive()) { if(streamChangeListener != null) streamChangeListener.setStream(stream); media.setActiveStream(stream); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } else { layout.findViewById(R.id.subtitlesRow).setVisibility(View.GONE); } if(audioStreams.size() > 0) { Spinner audioSpinner = (Spinner) layout.findViewById(R.id.audioSpinner); audioSpinner.getBackground().setColorFilter(ContextCompat.getColor(context, R.color.white), PorterDuff.Mode.SRC_ATOP); StreamAdapter audioStreamAdapter = new StreamAdapter(activity, android.R.layout.simple_spinner_dropdown_item, audioStreams); audioSpinner.setAdapter(audioStreamAdapter); audioSpinner.setSelection(audioStreams.indexOf(media.getActiveStream(Stream.AUDIO)), false); audioSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ((TextView)parent.getChildAt(0)).setTextColor(ContextCompat.getColor(context, R.color.white)); Stream stream = audioStreams.get(position); if (!stream.isActive()) { if(streamChangeListener != null) { streamChangeListener.setStream(stream); } media.setActiveStream(stream); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } else { // For some reason, no audio streams found, so hide the row layout.findViewById(R.id.audioRow).setVisibility(View.GONE); } setView(layout); } public void setStreamChangeListener(StreamChangeListener listener) { streamChangeListener = listener; } public interface StreamChangeListener { void setStream(Stream stream); } }