1 package com.moiseum.wolnelektury.view.search.filter;
3 import android.app.Activity;
4 import android.content.Intent;
5 import android.os.Bundle;
6 import android.support.v7.widget.SwitchCompat;
7 import android.view.Menu;
8 import android.view.MenuInflater;
9 import android.view.MenuItem;
10 import android.view.View;
11 import android.widget.Toast;
13 import com.moiseum.wolnelektury.R;
14 import com.moiseum.wolnelektury.base.mvp.PresenterFragment;
15 import com.moiseum.wolnelektury.connection.models.CategoryModel;
16 import com.moiseum.wolnelektury.view.search.components.FiltersProgressFlowLayout;
17 import com.moiseum.wolnelektury.view.search.dto.FilterDto;
19 import org.parceler.Parcels;
21 import java.util.List;
23 import butterknife.BindView;
25 import static com.moiseum.wolnelektury.view.search.filter.FilterActivity.FILTERS_KEY;
26 import static com.moiseum.wolnelektury.view.search.filter.FilterActivity.RESULT_FILTERS_KEY;
29 * Created by piotrostrowski on 25.11.2017.
32 public class FilterFragment extends PresenterFragment<FilterPresenter> implements FilterView {
34 @BindView(R.id.swLecturesOnly)
35 SwitchCompat swLecturesOnly;
36 @BindView(R.id.swHasAudiobook)
37 SwitchCompat swHasAudiobook;
38 @BindView(R.id.pflEpochs)
39 FiltersProgressFlowLayout pflEpochs;
40 @BindView(R.id.pflGenres)
41 FiltersProgressFlowLayout pflGenres;
42 @BindView(R.id.pflKinds)
43 FiltersProgressFlowLayout pflKinds;
45 public static FilterFragment newInstance(FilterDto filters) {
46 FilterFragment fragment = new FilterFragment();
47 Bundle args = new Bundle();
48 args.putParcelable(FILTERS_KEY, Parcels.wrap(filters));
49 fragment.setArguments(args);
54 protected FilterPresenter createPresenter() {
55 FilterDto filters = Parcels.unwrap(getArguments().getParcelable(FILTERS_KEY));
56 return new FilterPresenter(this, filters);
60 public int getLayoutResourceId() {
61 return R.layout.fragment_filter;
65 public void onCreate(Bundle savedInstanceState) {
66 super.onCreate(savedInstanceState);
67 setHasOptionsMenu(true);
71 public void prepareView(View view, Bundle savedInstanceState) {
72 FilterDto filters = Parcels.unwrap(getArguments().getParcelable(FILTERS_KEY));
73 swLecturesOnly.setChecked(filters.isLecture());
74 swHasAudiobook.setChecked(filters.isAudiobook());
78 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
79 super.onCreateOptionsMenu(menu, inflater);
80 inflater.inflate(R.menu.menu_filter, menu);
84 public boolean onOptionsItemSelected(MenuItem item) {
85 if (item.getItemId() == R.id.action_accept) {
86 getPresenter().updateFilters(swLecturesOnly.isChecked(),
87 swHasAudiobook.isChecked(),
88 pflEpochs.getSelectedCategories(),
89 pflGenres.getSelectedCategories(),
90 pflKinds.getSelectedCategories());
93 return super.onOptionsItemSelected(item);
97 public void displayEpochs(List<CategoryModel> data) {
98 pflEpochs.addCategories(data);
102 public void displayGenres(List<CategoryModel> data) {
103 pflGenres.addCategories(data);
107 public void displayKinds(List<CategoryModel> data) {
108 pflKinds.addCategories(data);
112 public void applyFilters(FilterDto filterDto) {
113 if (getActivity() != null) {
114 Intent intent = new Intent();
115 intent.putExtra(RESULT_FILTERS_KEY, Parcels.wrap(filterDto));
117 getActivity().setResult(Activity.RESULT_OK, intent);
118 getActivity().finish();
123 public void showEpochsError() {
124 Toast.makeText(getContext(), R.string.load_epochs_failed, Toast.LENGTH_SHORT).show();
125 pflEpochs.showRetryButton(new FiltersProgressFlowLayout.FiltersProgressFlowLayoutRetryListener() {
127 public void onRetryClicked() {
128 getPresenter().loadEpochs();
134 public void showGenresError() {
135 Toast.makeText(getContext(), R.string.load_genres_failed, Toast.LENGTH_SHORT).show();
136 pflGenres.showRetryButton(new FiltersProgressFlowLayout.FiltersProgressFlowLayoutRetryListener() {
138 public void onRetryClicked() {
139 getPresenter().loadGenres();
145 public void showKindsError() {
146 Toast.makeText(getContext(), R.string.load_kinds_failed, Toast.LENGTH_SHORT).show();
147 pflKinds.showRetryButton(new FiltersProgressFlowLayout.FiltersProgressFlowLayoutRetryListener() {
149 public void onRetryClicked() {
150 getPresenter().loadKinds();