package eu.se_bastiaan.popcorntimeremote.fragments;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.support.v4.app.DialogFragment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import java.util.ArrayList;
import butterknife.ButterKnife;
import butterknife.Bind;
import eu.se_bastiaan.popcorntimeremote.R;
import eu.se_bastiaan.popcorntimeremote.activities.ControllerActivity;
import eu.se_bastiaan.popcorntimeremote.rpc.PopcornTimeRpcClient;
import eu.se_bastiaan.popcorntimeremote.widget.SubtitleAdapter;
public class SubtitleSelectorDialogFragment extends DialogFragment {
private ArrayList<String> subsData;
private PopcornTimeRpcClient mRpc;
private Bundle mExtras;
private Handler mHandler;
@Bind(R.id.listView)
ListView listView;
@Bind(R.id.progressBar)
ProgressBar progressBar;
private final PopcornTimeRpcClient.Callback mResponseListener = new PopcornTimeRpcClient.Callback() {
@Override
public void onCompleted(Exception e, PopcornTimeRpcClient.RpcResponse result) {
if(e == null && result != null && result.result != null && result.id == PopcornTimeRpcClient.RequestId.GET_SUBTITLES.ordinal()) {
subsData = (ArrayList<String>) result.getMapResult().get("subtitles");
subsData.add(0, "no-subs");
final SubtitleAdapter adapter = new SubtitleAdapter(getActivity(), subsData);
mHandler.post(new Runnable() {
@Override
public void run() {
progressBar.setVisibility(View.GONE);
listView.setAdapter(adapter);
}
});
}
}
};
protected PopcornTimeRpcClient getClient() {
if(mExtras == null) {
mExtras = getArguments();
}
if (mRpc == null) {
mRpc = new PopcornTimeRpcClient(mExtras.getString(ControllerActivity.KEY_IP), mExtras.getString(ControllerActivity.KEY_PORT), mExtras.getString(ControllerActivity.KEY_USERNAME), mExtras.getString(ControllerActivity.KEY_PASSWORD), mExtras.getString(ControllerActivity.KEY_VERSION));
}
return mRpc;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mHandler = new Handler(Looper.getMainLooper());
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View view = getActivity().getLayoutInflater().inflate(R.layout.fragment_subtitleselector, null, false);
ButterKnife.bind(this, view);
getClient().getSubtitles(mResponseListener);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
getClient().setSubtitle(subsData.get(position), mResponseListener);
dismiss();
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setView(view)
.setTitle(R.string.subtitles)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}
);
return builder.create();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
}