package com.esoxjem.movieguide.listing.sorting; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import com.esoxjem.movieguide.BaseApplication; import com.esoxjem.movieguide.R; import com.esoxjem.movieguide.listing.MoviesListingPresenter; import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; /** * @author arun */ public class SortingDialogFragment extends DialogFragment implements SortingDialogView, RadioGroup.OnCheckedChangeListener { @Inject SortingDialogPresenter sortingDialogPresenter; @Bind(R.id.most_popular) RadioButton mostPopular; @Bind(R.id.highest_rated) RadioButton highestRated; @Bind(R.id.favorites) RadioButton favorites; @Bind(R.id.sorting_group) RadioGroup sortingOptionsGroup; private static MoviesListingPresenter moviesListingPresenter; public static SortingDialogFragment newInstance(MoviesListingPresenter moviesListingPresenter) { SortingDialogFragment.moviesListingPresenter = moviesListingPresenter; return new SortingDialogFragment(); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRetainInstance(true); ((BaseApplication) getActivity().getApplication()).getListingComponent().inject(this); sortingDialogPresenter.setView(this); } @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View dialogView = inflater.inflate(R.layout.sorting_options, null); ButterKnife.bind(this, dialogView); initViews(); Dialog dialog = new Dialog(getActivity()); dialog.setContentView(dialogView); dialog.setTitle(R.string.sort_by); dialog.show(); return dialog; } private void initViews() { sortingDialogPresenter.setLastSavedOption(); sortingOptionsGroup.setOnCheckedChangeListener(this); } @Override public void setPopularChecked() { mostPopular.setChecked(true); } @Override public void setHighestRatedChecked() { highestRated.setChecked(true); } @Override public void setFavoritesChecked() { favorites.setChecked(true); } @Override public void onCheckedChanged(RadioGroup radioGroup, int checkedId) { switch (checkedId) { case R.id.most_popular: sortingDialogPresenter.onPopularMoviesSelected(); moviesListingPresenter.displayMovies(); break; case R.id.highest_rated: sortingDialogPresenter.onHighestRatedMoviesSelected(); moviesListingPresenter.displayMovies(); break; case R.id.favorites: sortingDialogPresenter.onFavoritesSelected(); moviesListingPresenter.displayMovies(); break; } } @Override public void dismissDialog() { dismiss(); } @Override public void onDestroyView() { super.onDestroyView(); sortingDialogPresenter.destroy(); ButterKnife.unbind(this); } }