package com.ideabag.playtunes.fragment;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.activity.MainActivity;
public class TrackProgressFragment extends Fragment {
private static final int TIMER_MILLISECONDS = 1000;
private MainActivity mActivity;
private SeekBar mBar;
private Handler handle;
private boolean isPlaying = false;
TextView mPlayLength, mPlayPosition;
int mPlayLengthMilli = 0, mPlayPositionMilli = 0;
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
mActivity = ( MainActivity ) activity;
handle = new Handler();
}
@Override public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
mBar = ( SeekBar ) getView().findViewById( R.id.TrackProgressBar );
mPlayLength = ( TextView ) getView().findViewById( R.id.TrackProgressPlayLength );
mPlayPosition = ( TextView ) getView().findViewById( R.id.TrackProgressPlayPosition );
mBar.setOnSeekBarChangeListener( mSeekBarChangedListener );
}
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
return inflater.inflate( R.layout.fragment_track_progress, container, false );
}
@Override public void onResume() {
super.onResume();
startProgress();
}
@Override public void onPause() {
super.onPause();
stopProgress();
}
private OnSeekBarChangeListener mSeekBarChangedListener = new OnSeekBarChangeListener() {
@Override
public void onProgressChanged( SeekBar seekmBar, int progress, boolean fromUser) {
if ( fromUser ) {
stopProgress();
setProgress( progress );
mActivity.mBoundService.setSeekPosition( progress );
}
}
@Override
public void onStartTrackingTouch(SeekBar seekmBar) {
stopProgress();
}
@Override
public void onStopTrackingTouch(SeekBar seekmBar) {
if ( isPlaying ) {
startProgress();
}
}
};
private final Runnable mUpdateTimer = new Runnable() {
@Override public void run() {
//android.util.Log.i("mBar Progress", "" + mBar.getProgress() );
mPlayPositionMilli += TIMER_MILLISECONDS;
setProgress( mPlayPositionMilli );
handle.postDelayed( mUpdateTimer, TIMER_MILLISECONDS );
}
};
//private
public void startProgress() {
stopProgress();
isPlaying = true;
handle.postDelayed( mUpdateTimer, TIMER_MILLISECONDS );
//handle.postDelayed( mUpdateTimer, ONE_SECOND_IN_MILLI );
}
public void stopProgress() {
isPlaying = false;
handle.removeCallbacks( mUpdateTimer );
}
public void setProgress( int progress ) {
stopProgress();
mPlayPositionMilli = progress;
mBar.setProgress( mPlayPositionMilli );
int seconds = progress / TIMER_MILLISECONDS;
int minutes = seconds / 60;
seconds = seconds % 60;
mPlayPosition.setText( minutes + ":" + ( seconds < 10 ? "0" + seconds : seconds ) );
if ( isPlaying ) {
startProgress();
}
}
public void setDuration( int duration ) {
mPlayLengthMilli = duration;
int seconds = duration / TIMER_MILLISECONDS;
int minutes = seconds / 60;
seconds = seconds % 60;
mPlayLength.setText( minutes + ":" + ( seconds < 10 ? "0" + seconds : seconds ) );
//Animation fadeIn = AnimationUtils.loadAnimation(mActivity, R.anim.fadein );
mBar.setMax( mPlayLengthMilli );
//mBar.startAnimation( fadeIn );
}
}