package fragments;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import org.unfoldingword.mobile.R;
import model.AudioBitrate;
public class BitrateFragment extends DialogFragment {
private static final String BITRATES_PARAM = "BITRATES_PARAM";
private static final String TITLE_PARAM = "TITLE_PARAM";
private String title;
private AudioBitrate[] bitrates;
private BitrateFragmentListener listener;
public BitrateFragment() {
// Required empty public constructor
}
public static BitrateFragment newInstance(AudioBitrate[] bitrates, String title, BitrateFragmentListener listener) {
Bundle args = new Bundle();
args.putSerializable(BITRATES_PARAM, bitrates);
args.putString(TITLE_PARAM, title);
BitrateFragment fragment = new BitrateFragment();
fragment.setArguments(args);
fragment.listener = listener;
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
bitrates = (AudioBitrate[]) getArguments().getSerializable(BITRATES_PARAM);
title = getArguments().getString(TITLE_PARAM);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_bitrate, container, false);
setupView(view);
return view;
}
private void setupView(View view){
((TextView) view.findViewById(R.id.fragment_bitrate_title)).setText(title);
view.findViewById(R.id.fragment_bitrate_cancel).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelClicked();
}
});
final ListView listview = (ListView) view.findViewById(R.id.fragment_bitrate_list_view);
listview.setAdapter(new ArrayAdapter<>(getActivity().getApplicationContext(),
R.layout.row_bitrate_choosing, R.id.row_bitrate_choosing_text, bitrates));
final BitrateFragment fragment = this;
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
listener.bitrateChosen(fragment, bitrates[position]);
}
});
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
public void cancelClicked() {
listener.dismissed();
dismiss();
}
public interface BitrateFragmentListener {
void bitrateChosen(DialogFragment fragment, AudioBitrate bitrate);
void dismissed();
}
}