package com.tassioauad.moviecheck.view.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.squareup.picasso.Picasso; import com.tassioauad.moviecheck.MovieCheckApplication; import com.tassioauad.moviecheck.R; import com.tassioauad.moviecheck.dagger.PersonDetailViewModule; import com.tassioauad.moviecheck.model.entity.Person; import com.tassioauad.moviecheck.presenter.PersonDetailPresenter; import com.tassioauad.moviecheck.view.PersonDetailView; import com.tassioauad.moviecheck.view.activity.FullImageSliderActivity; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; public class PersonDetailFragment extends Fragment implements PersonDetailView { @Inject PersonDetailPresenter presenter; private static final String KEY_PERSON = "PERSON"; private Person person; @Bind(R.id.textview_birthday) TextView textViewBirthday; @Bind(R.id.textview_deathday) TextView textViewDeathday; @Bind(R.id.imageview_poster) ImageView imageViewPhoto; @Bind(R.id.textview_placebirthday) TextView textViewPlaceOfBirth; @Bind(R.id.textview_biography) TextView textViewBiography; @Bind(R.id.progressbar) ProgressBar progressBar; @Bind(R.id.linearlayout_deathday) LinearLayout linearLayoutDeathday; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((MovieCheckApplication) getActivity().getApplication()) .getObjectGraph().plus(new PersonDetailViewModule(this)).inject(this); } @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_persondetail, container, false); ButterKnife.bind(this, view); if(savedInstanceState != null) { person = savedInstanceState.getParcelable(KEY_PERSON); } if(person == null) { person = getArguments().getParcelable(KEY_PERSON); presenter.loadPerson(person.getId()); } showPerson(person); return view; } @Override public void onResume() { super.onResume(); Tracker defaultTracker = ((MovieCheckApplication) getActivity().getApplication()).getDefaultTracker(); defaultTracker.setScreenName("Person Detail Screen"); defaultTracker.send(new HitBuilders.ScreenViewBuilder().build()); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putParcelable(KEY_PERSON, person); } public static PersonDetailFragment newInstance(Person person) { Bundle args = new Bundle(); args.putParcelable(KEY_PERSON, person); PersonDetailFragment fragment = new PersonDetailFragment(); fragment.setArguments(args); return fragment; } @Override public void showBiography(String biography) { textViewBiography.setText(biography); } @Override public void showPlaceOfBirth(String placeOfBirth) { textViewPlaceOfBirth.setText(placeOfBirth); } @Override public void showBirthday(Date birthdayDate) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(getString(R.string.general_date), Locale.getDefault()); textViewBirthday.setText(simpleDateFormat.format(birthdayDate)); } @Override public void showDeathday(Date deathday) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(getString(R.string.general_date), Locale.getDefault()); textViewDeathday.setText(simpleDateFormat.format(deathday)); } @Override public void showPhoto(String photoUrl) { final String pathUrl = getString(R.string.imagetmdb_baseurl) + photoUrl; Picasso.with(getContext()).load(pathUrl).into(imageViewPhoto); imageViewPhoto.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(FullImageSliderActivity.newIntent(getContext(), pathUrl)); } }); } @Override public void showLoading() { progressBar.setVisibility(View.VISIBLE); } @Override public void hideLoading() { progressBar.setVisibility(View.GONE); } @Override public void warnPersonNotFound() { Toast.makeText(getContext(), R.string.persondetailfragment_notfound, Toast.LENGTH_SHORT).show(); } @Override public void warnFailedToLoadPerson() { Toast.makeText(getContext(), R.string.persondetailfragment_failedtoload, Toast.LENGTH_SHORT).show(); } @Override public void showPerson(Person person) { this.person = person; showPhoto(person.getProfilePath()); if (person.getDeathday() != null) { linearLayoutDeathday.setVisibility(View.VISIBLE); showDeathday(person.getDeathday()); } else { linearLayoutDeathday.setVisibility(View.GONE); } if (person.getBirthday() != null) { showBirthday(person.getBirthday()); } showBiography(person.getBiography()); showPlaceOfBirth(person.getPlaceOfBirth()); } }