package com.atomjack.vcfp.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.SeekBar;
import com.atomjack.vcfp.R;
import com.atomjack.vcfp.model.PlexResponse;
import com.atomjack.vcfp.net.PlexHttpResponseHandler;
import butterknife.ButterKnife;
public class PlexPlayerFragment extends PlayerFragment {
public PlexPlayerFragment() {
super();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
}
@Override
protected void doRewind() {
if(position > -1) {
client.seekTo((position * 1000) - 15000, nowPlayingMedia.isMusic() ? "music" : "video", new PlexHttpResponseHandler() {
@Override
public void onSuccess(PlexResponse response) {
position -= 15;
}
@Override
public void onFailure(Throwable error) {
}
});
}
}
@Override
protected void doForward() {
if(position > -1) {
client.seekTo((position * 1000) + 30000, nowPlayingMedia.isMusic() ? "music" : "video", new PlexHttpResponseHandler() {
@Override
public void onSuccess(PlexResponse response) {
position += 30;
}
@Override
public void onFailure(Throwable error) {
}
});
}
}
@Override
protected void doPlay() {
client.play(nowPlayingMedia.isMusic() ? "music" : "video", null);
}
@Override
protected void doPause() {
client.pause(nowPlayingMedia.isMusic() ? "music" : "video", null);
}
@Override
protected void doStop() {
client.stop(nowPlayingMedia.isMusic() ? "music" : "video", null);
}
@Override
protected void doNext() {
client.next(nowPlayingMedia.isMusic() ? "music" : "video", null);
}
@Override
protected void doPrevious() { client.previous(nowPlayingMedia.isMusic() ? "music" : "video", null); }
@Override
public void onStopTrackingTouch(SeekBar _seekBar) {
client.seekTo(_seekBar.getProgress()*1000, nowPlayingMedia.isMusic() ? "music" : "video", new PlexHttpResponseHandler() {
@Override
public void onSuccess(PlexResponse response) {
isSeeking = false;
}
@Override
public void onFailure(Throwable error) {
isSeeking = false;
if(!error.getMessage().matches(".*Failure: 200 OK\n.*")) // Some plex clients don't return valid xml, instead returning "Failure: 200 OK" even though the request succeeded
feedback.e(String.format(getString(R.string.error_seeking), error.getMessage()));
}
});
}
}