package de.avalax.fitbuddy.presentation.edit.exercise;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import javax.inject.Inject;
import de.avalax.fitbuddy.R;
import de.avalax.fitbuddy.domain.model.exercise.Exercise;
import de.avalax.fitbuddy.domain.model.set.SetException;
import de.avalax.fitbuddy.presentation.FitbuddyApplication;
import de.avalax.fitbuddy.presentation.dialog.EditNameDialogFragment;
import de.avalax.fitbuddy.presentation.dialog.EditRepsDialogFragment;
import de.avalax.fitbuddy.presentation.dialog.EditSetsDialogFragment;
import de.avalax.fitbuddy.presentation.dialog.EditWeightDialogFragment;
import de.avalax.fitbuddy.presentation.helper.ExerciseViewHelper;
public class EditExerciseDialogFragment extends Fragment {
private static final String ARGS_EXERCISE = "exercise";
@Inject
ExerciseViewHelper exerciseViewHelper;
private Exercise exercise;
public static EditExerciseDialogFragment newInstance(Exercise exercise) {
EditExerciseDialogFragment fragment = new EditExerciseDialogFragment();
Bundle args = new Bundle();
args.putSerializable(ARGS_EXERCISE, exercise);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_exercise_edit, container, false);
((FitbuddyApplication) getActivity().getApplication()).getComponent().inject(this);
this.exercise = (Exercise) getArguments().getSerializable(ARGS_EXERCISE);
init(view);
return view;
}
protected void init(View view) {
String reps = String.valueOf(exerciseViewHelper.maxRepsOfExercise(exercise));
String sets = String.valueOf(exerciseViewHelper.setCountOfExercise(exercise));
String name = exerciseViewHelper.nameOfExercise(exercise);
String weight = exerciseViewHelper.weightOfExercise(exercise);
TextView exerciseNameEditText = (TextView) view.findViewById(R.id.exerciseNameEditText);
TextView exerciseWeightExitText = (TextView) view.findViewById(R.id.exerciseWeightExitText);
TextView exerciseSetsTextView = (TextView) view.findViewById(R.id.exerciseSetsTextView);
TextView exerciseRepsTextView = (TextView) view.findViewById(R.id.exerciseRepsTextView);
exerciseNameEditText.setText(name);
exerciseWeightExitText.setText(weight);
exerciseRepsTextView.setText(reps);
exerciseSetsTextView.setText(sets);
view.findViewById(R.id.exerciseName).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
changeName();
}
});
view.findViewById(R.id.exerciseWeight).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
changeWeight();
}
});
view.findViewById(R.id.exerciseSets).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
changeSets();
}
});
view.findViewById(R.id.exerciseReps).setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
changeReps();
}
});
}
private void changeName() {
FragmentManager fm = getActivity().getSupportFragmentManager();
String name = exercise.getName();
String hint = getResources().getString(R.string.new_exercise_name);
EditNameDialogFragment.newInstance(name, hint).show(fm, "fragment_edit_name");
}
private void changeWeight() {
try {
int indexOfCurrentSet = exercise.getSets().indexOfCurrentSet();
double weight = exercise.getSets().get(indexOfCurrentSet).getWeight();
FragmentManager fm = getActivity().getSupportFragmentManager();
EditWeightDialogFragment.newInstance(weight).show(fm, "fragment_edit_weight");
} catch (SetException e) {
Log.d("can't edit weight", e.getMessage(), e);
}
}
private void changeSets() {
FragmentManager fm = getActivity().getSupportFragmentManager();
int sets = exercise.getSets().size();
EditSetsDialogFragment.newInstance(sets).show(fm, "fragment_edit_sets");
}
private void changeReps() {
FragmentManager fm = getActivity().getSupportFragmentManager();
try {
int indexOfCurrentSet = exercise.getSets().indexOfCurrentSet();
int reps = exercise.getSets().get(indexOfCurrentSet).getMaxReps();
EditRepsDialogFragment.newInstance(reps).show(fm, "fragment_edit_reps");
} catch (SetException e) {
Log.d("can't change reps", e.getMessage(), e);
}
}
}