diff --git a/android/res/layout-land/activity_map.xml b/android/res/layout-land/activity_map.xml
index 53733eb1a8..25b8a6dd7a 100644
--- a/android/res/layout-land/activity_map.xml
+++ b/android/res/layout-land/activity_map.xml
@@ -73,4 +73,16 @@
placePage:animationType="left"
placePage:docked="true"
tools:ignore="UnknownIdInLayout"/>
+
+
+
+
\ No newline at end of file
diff --git a/android/res/layout-w1020dp/activity_map.xml b/android/res/layout-w1020dp/activity_map.xml
index 97e3a440b0..65914b8d0a 100644
--- a/android/res/layout-w1020dp/activity_map.xml
+++ b/android/res/layout-w1020dp/activity_map.xml
@@ -53,6 +53,12 @@
android:visibility="gone"
tools:visibility="visible"/>
+
+
+
+
diff --git a/android/res/layout/activity_map.xml b/android/res/layout/activity_map.xml
index a574d5c421..d1554546c4 100644
--- a/android/res/layout/activity_map.xml
+++ b/android/res/layout/activity_map.xml
@@ -66,4 +66,16 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
placePage:animationType="bottom"/>
+
+
+
+
diff --git a/android/res/layout/search_filter_panel.xml b/android/res/layout/search_filter_panel.xml
index 6df2affa37..5f67c2c220 100644
--- a/android/res/layout/search_filter_panel.xml
+++ b/android/res/layout/search_filter_panel.xml
@@ -7,10 +7,10 @@
android:layout_height="@dimen/height_block_base"
android:padding="@dimen/margin_half"
android:background="?cardBackground"
+ android:clipToPadding="false"
android:visibility="gone"
tools:visibility="visible"
- tools:showIn="@layout/fragment_search"
- android:clipToPadding="false">
+ tools:showIn="@layout/fragment_search">
CREATOR = new Creator()
+ {
+ @Override
+ public HotelsFilter createFromParcel(Parcel in)
+ {
+ return readFromParcel(in);
+ }
+
+ @Override
+ public HotelsFilter[] newArray(int size)
+ {
+ return new HotelsFilter[size];
+ }
+ };
}
diff --git a/android/src/com/mapswithme/maps/search/HotelsFilterView.java b/android/src/com/mapswithme/maps/search/HotelsFilterView.java
index 9947899e1f..17c1b0d7ba 100644
--- a/android/src/com/mapswithme/maps/search/HotelsFilterView.java
+++ b/android/src/com/mapswithme/maps/search/HotelsFilterView.java
@@ -60,7 +60,7 @@ public class HotelsFilterView extends FrameLayout
protected void onFinishInflate()
{
mFrame = findViewById(R.id.frame);
- mFrame.setTranslationY(mFrame.getHeight());
+ mFrame.setTranslationY(mFrame.getResources().getDisplayMetrics().heightPixels);
mFade = findViewById(R.id.fade);
mRating = (RatingFilterView) findViewById(R.id.rating);
mPrice = (PriceFilterView) findViewById(R.id.price);
diff --git a/android/src/com/mapswithme/maps/search/SearchActivity.java b/android/src/com/mapswithme/maps/search/SearchActivity.java
index 1d23bcc05f..c05d87de4b 100644
--- a/android/src/com/mapswithme/maps/search/SearchActivity.java
+++ b/android/src/com/mapswithme/maps/search/SearchActivity.java
@@ -4,6 +4,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
import android.support.annotation.StyleRes;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@@ -17,11 +18,14 @@ import com.mapswithme.util.ThemeUtils;
public class SearchActivity extends BaseMwmFragmentActivity implements CustomNavigateUpListener
{
public static final String EXTRA_QUERY = "search_query";
+ public static final String EXTRA_HOTELS_FILTER = "hotels_filter";
- public static void start(@NonNull Activity activity, String query)
+ public static void start(@NonNull Activity activity, @Nullable String query,
+ @Nullable HotelsFilter filter)
{
final Intent i = new Intent(activity, SearchActivity.class);
i.putExtra(EXTRA_QUERY, query);
+ i.putExtra(EXTRA_HOTELS_FILTER, filter);
activity.startActivity(i);
activity.overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
@@ -57,6 +61,19 @@ public class SearchActivity extends BaseMwmFragmentActivity implements CustomNav
final FragmentManager manager = getSupportFragmentManager();
if (manager.getBackStackEntryCount() == 0)
{
+ SearchFragment fragment =
+ (SearchFragment) manager.findFragmentByTag(SearchFragment.class.getName());
+ if (fragment != null)
+ {
+ HotelsFilter filter = fragment.getHotelsFilter();
+ if (filter != null)
+ {
+ Intent intent = NavUtils.getParentActivityIntent(this);
+ intent.putExtra(EXTRA_HOTELS_FILTER, filter);
+ NavUtils.navigateUpTo(this, intent);
+ return;
+ }
+ }
NavUtils.navigateUpFromSameTask(this);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
return;
diff --git a/android/src/com/mapswithme/maps/search/SearchFilterPanelController.java b/android/src/com/mapswithme/maps/search/SearchFilterPanelController.java
index 23eda3623e..6cb2150a56 100644
--- a/android/src/com/mapswithme/maps/search/SearchFilterPanelController.java
+++ b/android/src/com/mapswithme/maps/search/SearchFilterPanelController.java
@@ -4,7 +4,9 @@ import android.content.res.Resources;
import android.os.Build;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
+import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
@@ -17,7 +19,7 @@ public class SearchFilterPanelController
@NonNull
private final View mFrame;
@NonNull
- private final View mShowOnMap;
+ private final TextView mShowOnMap;
@NonNull
private final View mFilterButton;
@NonNull
@@ -31,6 +33,8 @@ public class SearchFilterPanelController
private HotelsFilter mFilter;
private final float mElevation;
+ @NonNull
+ private final String mCategory;
private View.OnClickListener mClearListener = new View.OnClickListener()
{
@@ -44,7 +48,7 @@ public class SearchFilterPanelController
public interface FilterPanelListener
{
- void onShowOnMap();
+ void onViewClick();
void onFilterClick();
void onFilterClear();
}
@@ -54,10 +58,18 @@ public class SearchFilterPanelController
public SearchFilterPanelController(@NonNull View frame,
@Nullable FilterPanelListener listener)
+ {
+ this(frame, listener, R.string.search_show_on_map);
+ }
+
+ public SearchFilterPanelController(@NonNull View frame,
+ @Nullable FilterPanelListener listener,
+ @StringRes int populateButtonText)
{
mFrame = frame;
mFilterPanelListener = listener;
- mShowOnMap = mFrame.findViewById(R.id.show_on_map);
+ mShowOnMap = (TextView) mFrame.findViewById(R.id.show_on_map);
+ mShowOnMap.setText(populateButtonText);
mFilterButton = mFrame.findViewById(R.id.filter_button);
mFilterIcon = (ImageView) mFilterButton.findViewById(R.id.filter_icon);
mFilterText = (TextView) mFilterButton.findViewById(R.id.filter_text);
@@ -65,6 +77,7 @@ public class SearchFilterPanelController
Resources res = mFrame.getResources();
mElevation = res.getDimension(R.dimen.margin_quarter);
+ mCategory = res.getString(R.string.hotel).toLowerCase();
initListeners();
}
@@ -85,9 +98,13 @@ public class SearchFilterPanelController
UiUtils.showIf(show, mDivider);
}
- void showFilterButton(boolean show)
+ public boolean updateFilterButtonVisibility(@Nullable String category)
{
+ boolean show = !TextUtils.isEmpty(category)
+ && category.trim().toLowerCase().equals(mCategory);
UiUtils.showIf(show, mFilterButton);
+
+ return show;
}
private void initListeners()
@@ -98,7 +115,7 @@ public class SearchFilterPanelController
public void onClick(View v)
{
if (mFilterPanelListener != null)
- mFilterPanelListener.onShowOnMap();
+ mFilterPanelListener.onViewClick();
}
});
mFilterButton.setOnClickListener(new View.OnClickListener()
diff --git a/android/src/com/mapswithme/maps/search/SearchFragment.java b/android/src/com/mapswithme/maps/search/SearchFragment.java
index 101da70ac8..9799cad17c 100644
--- a/android/src/com/mapswithme/maps/search/SearchFragment.java
+++ b/android/src/com/mapswithme/maps/search/SearchFragment.java
@@ -160,6 +160,7 @@ public class SearchFragment extends BaseMwmFragment
private final LastPosition mLastPosition = new LastPosition();
private boolean mSearchRunning;
private String mInitialQuery;
+ private @Nullable HotelsFilter mInitialHotelsFilter;
private boolean mFromRoutePlan;
private final LocationListener mLocationListener = new LocationListener.Simple()
@@ -192,6 +193,15 @@ public class SearchFragment extends BaseMwmFragment
return (MapManager.nativeGetDownloadedCount() == 0 && !MapManager.nativeIsDownloading());
}
+ @Nullable
+ public HotelsFilter getHotelsFilter()
+ {
+ if (mFilterPanel == null)
+ return null;
+
+ return mFilterPanel.getFilter();
+ }
+
private void showDownloadSuggest()
{
final FragmentManager fm = getChildFragmentManager();
@@ -294,7 +304,7 @@ public class SearchFragment extends BaseMwmFragment
new SearchFilterPanelController.FilterPanelListener()
{
@Override
- public void onShowOnMap()
+ public void onViewClick()
{
showAllResultsOnMap();
}
@@ -315,7 +325,9 @@ public class SearchFragment extends BaseMwmFragment
runSearch();
}
});
- mFilterPanel.showFilterButton(false);
+ if (mInitialHotelsFilter != null)
+ mFilterPanel.setFilter(mInitialHotelsFilter);
+ mFilterPanel.updateFilterButtonVisibility(null);
if (mSearchAdapter == null)
{
@@ -337,7 +349,10 @@ public class SearchFragment extends BaseMwmFragment
updateResultsPlaceholder();
if (mInitialQuery != null)
+ {
setQuery(mInitialQuery);
+ updateFilterButton(mInitialQuery);
+ }
mToolbarController.activate();
SearchEngine.INSTANCE.addListener(this);
@@ -400,6 +415,7 @@ public class SearchFragment extends BaseMwmFragment
return;
mInitialQuery = arguments.getString(SearchActivity.EXTRA_QUERY);
+ mInitialHotelsFilter = arguments.getParcelable(SearchActivity.EXTRA_HOTELS_FILTER);
mFromRoutePlan = RoutingController.get().isWaitingPoiPick();
}
@@ -467,9 +483,12 @@ public class SearchFragment extends BaseMwmFragment
SearchRecents.add(query);
mLastQueryTimestamp = System.nanoTime();
- // TODO (@alexzatsepin): set up hotelsFilter correctly.
+ HotelsFilter hotelsFilter = null;
+ if (mFilterPanel != null)
+ hotelsFilter = mFilterPanel.getFilter();
+
SearchEngine.searchInteractive(
- query, mLastQueryTimestamp, false /* isMapAndTable */, null /* hotelsFilter */);
+ query, mLastQueryTimestamp, false /* isMapAndTable */, hotelsFilter);
SearchEngine.showAllResults(query);
Utils.navigateToParent(getActivity());
@@ -507,7 +526,6 @@ public class SearchFragment extends BaseMwmFragment
}
else
{
- // TODO (@alexzatsepin): set up hotelsFilter correctly.
if (!SearchEngine.search(getQuery(), mLastQueryTimestamp, mLastPosition.valid,
mLastPosition.lat, mLastPosition.lon, hotelsFilter))
{
@@ -548,14 +566,13 @@ public class SearchFragment extends BaseMwmFragment
updateFilterButton(category);
}
- private void updateFilterButton(String category)
+ private void updateFilterButton(@Nullable String category)
{
if (mFilterPanel != null)
{
- String hotel = getString(R.string.hotel);
- boolean show = !TextUtils.isEmpty(category)
- && category.trim().toLowerCase().equals(hotel.toLowerCase());
- mFilterPanel.showFilterButton(show);
+ boolean show = mFilterPanel.updateFilterButtonVisibility(category);
+ if (!show)
+ mFilterPanel.setFilter(null);
}
}
diff --git a/android/src/com/mapswithme/util/UiUtils.java b/android/src/com/mapswithme/util/UiUtils.java
index 73dcdaeb42..38a0f06e6a 100644
--- a/android/src/com/mapswithme/util/UiUtils.java
+++ b/android/src/com/mapswithme/util/UiUtils.java
@@ -15,10 +15,12 @@ import android.net.Uri;
import android.os.Build;
import android.support.annotation.AnyRes;
import android.support.annotation.AttrRes;
+import android.support.annotation.ColorRes;
import android.support.annotation.DimenRes;
import android.support.annotation.IdRes;
import android.support.annotation.NonNull;
import android.support.annotation.StringRes;
+import android.support.annotation.StyleRes;
import android.support.design.widget.TextInputLayout;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
@@ -431,25 +433,14 @@ public final class UiUtils
decorViewGroup.addView(statusBarTintView);
}
- public static void setupColorStatusBar(@NonNull Activity activity, @AttrRes int statusBarColor)
+ public static void setupColorStatusBar(@NonNull Activity activity, @ColorRes int statusBarColor)
{
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP)
return;
- TypedArray a = null;
- try
- {
- a = activity.obtainStyledAttributes(new int[] {statusBarColor});
- int color = a.getColor(0, ContextCompat.getColor(activity, R.color.bg_statusbar));
- Window window = activity.getWindow();
- window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(color);
- }
- finally
- {
- if (a != null)
- a.recycle();
- }
+ Window window = activity.getWindow();
+ window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
+ window.setStatusBarColor(ContextCompat.getColor(activity, statusBarColor));
}
public static int getCompassYOffset(@NonNull Context context)