[android] Fixed passing booking filter params across screens

This commit is contained in:
Александр Зацепин 2018-02-22 12:55:49 +03:00 committed by Aleksandr Zatsepin
parent caf0a45f0c
commit 406e8cef86
4 changed files with 21 additions and 30 deletions

View file

@ -1069,8 +1069,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
handleDiscoveryResult(data);
break;
case FilterActivity.REQ_CODE_FILTER:
String query = mSearchController != null ? mSearchController.getQuery() : "";
handleFilterResult(data, query.equals(getString(R.string.hotel)));
handleFilterResult(data);
break;
}
}
@ -1107,20 +1106,20 @@ public class MwmActivity extends BaseMwmFragmentActivity
if (mSearchController != null)
mSearchController.setQuery(query);
handleFilterResult(data, query.equals(getString(R.string.hotel)));
handleFilterResult(data);
break;
}
}
private void handleFilterResult(@Nullable Intent data, boolean isHotel)
private void handleFilterResult(@Nullable Intent data)
{
if (data == null || mFilterController == null)
return;
mFilterController.setFilter(data.getParcelableExtra(FilterActivity.EXTRA_FILTER));
BookingFilterParams params = data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
mFilterController.setBookingFilterParams(params);
mFilterController.updateFilterButtonVisibility(isHotel);
mFilterController.setFilterAndParams(data.getParcelableExtra(FilterActivity.EXTRA_FILTER),
params);
mFilterController.updateFilterButtonVisibility(params != null);
runSearch();
}
@ -1194,9 +1193,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
BookingFilterParams params = intent.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
if (mFilterController != null)
{
mFilterController.show(filter != null || !TextUtils.isEmpty(SearchEngine.getQuery()), true);
mFilterController.setFilter(filter);
mFilterController.setBookingFilterParams(params);
mFilterController.show(filter != null || params != null || !TextUtils.isEmpty(SearchEngine.getQuery()), true);
mFilterController.setFilterAndParams(filter, params);
return filter != null || params != null;
}

View file

@ -83,7 +83,7 @@ public class SearchActivity extends BaseMwmFragmentActivity implements CustomNav
HotelsFilterHolder holder = (HotelsFilterHolder) fragment;
HotelsFilter filter = holder.getHotelsFilter();
BookingFilterParams params = holder.getFilterParams();
if (filter != null)
if (filter != null || params != null)
{
Intent intent = NavUtils.getParentActivityIntent(this);
intent.putExtra(FilterActivity.EXTRA_FILTER, filter);

View file

@ -43,7 +43,7 @@ public class SearchFilterController
@Override
public void onClick(View v)
{
setFilter(null);
setFilterAndParams(null, null);
if (mFilterListener != null)
mFilterListener.onFilterClear();
}
@ -121,10 +121,11 @@ public class SearchFilterController
return mFilter;
}
public void setFilter(@Nullable HotelsFilter filter)
public void setFilterAndParams(@Nullable HotelsFilter filter, @Nullable BookingFilterParams params)
{
mFilter = filter;
if (mFilter != null)
mBookingFilterParams = params;
if (mFilter != null || mBookingFilterParams != null)
{
mFilterIcon.setOnClickListener(mClearListener);
mFilterIcon.setImageResource(R.drawable.ic_cancel);
@ -148,7 +149,7 @@ public class SearchFilterController
void resetFilter()
{
setFilter(null);
setFilterAndParams(null, null);
updateFilterButtonVisibility(false);
}
@ -158,11 +159,6 @@ public class SearchFilterController
return mBookingFilterParams;
}
public void setBookingFilterParams(@Nullable BookingFilterParams params)
{
mBookingFilterParams = params;
}
public void onSaveState(@NonNull Bundle outState)
{
outState.putParcelable(STATE_HOTEL_FILTER, mFilter);
@ -173,8 +169,7 @@ public class SearchFilterController
public void onRestoreState(@NonNull Bundle state)
{
setFilter(state.getParcelable(STATE_HOTEL_FILTER));
setBookingFilterParams(state.getParcelable(STATE_FILTER_PARAMS));
setFilterAndParams(state.getParcelable(STATE_HOTEL_FILTER), state.getParcelable(STATE_FILTER_PARAMS));
updateFilterButtonVisibility(state.getBoolean(STATE_HOTEL_FILTER_VISIBILITY, false));
}

View file

@ -402,10 +402,9 @@ public class SearchFragment extends BaseMwmFragment
});
if (savedInstanceState != null)
mFilterController.onRestoreState(savedInstanceState);
if (mInitialHotelsFilter != null)
mFilterController.setFilter(mInitialHotelsFilter);
mFilterController.setBookingFilterParams(mInitialFilterParams);
mFilterController.updateFilterButtonVisibility(false);
if (mInitialHotelsFilter != null || mInitialFilterParams != null)
mFilterController.setFilterAndParams(mInitialHotelsFilter, mInitialFilterParams);
mFilterController.updateFilterButtonVisibility(mInitialFilterParams != null);
if (mSearchAdapter == null)
{
@ -745,7 +744,7 @@ public class SearchFragment extends BaseMwmFragment
{
mFilterController.updateFilterButtonVisibility(isHotel);
if (!isHotel)
mFilterController.setFilter(null);
mFilterController.setFilterAndParams(null, null);
}
}
@ -767,9 +766,8 @@ public class SearchFragment extends BaseMwmFragment
if (mFilterController == null)
return;
mFilterController.setFilter(data.getParcelableExtra(FilterActivity.EXTRA_FILTER));
BookingFilterParams params = data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS);
mFilterController.setBookingFilterParams(params);
mFilterController.setFilterAndParams(data.getParcelableExtra(FilterActivity.EXTRA_FILTER),
data.getParcelableExtra(FilterActivity.EXTRA_FILTER_PARAMS));
runSearch();
break;
}