diff --git a/android/res/values/colors.xml b/android/res/values/colors.xml
index d44765bd1d..ab03fe7a59 100644
--- a/android/res/values/colors.xml
+++ b/android/res/values/colors.xml
@@ -185,10 +185,10 @@
#FF888A82
#FF1E96F0
- #b8000000
- #b8ffffff
- #000000
- #ffffff
- #b8000000
- #b3ffffff
+ #B8000000
+ #B8FFFFFF
+ #FFFFFF
+ #000000
+ #B3FFFFFF
+ #B8000000
diff --git a/android/res/values/dimens.xml b/android/res/values/dimens.xml
index b96291b287..9e4a7e3875 100644
--- a/android/res/values/dimens.xml
+++ b/android/res/values/dimens.xml
@@ -250,4 +250,5 @@
30dp
0dp
98dp
+ 44dp
diff --git a/android/res/values/themes-base.xml b/android/res/values/themes-base.xml
index 7631156e23..fd0e4366db 100644
--- a/android/res/values/themes-base.xml
+++ b/android/res/values/themes-base.xml
@@ -133,9 +133,9 @@
- @drawable/ic_subway_menu_light_off
- @drawable/bg_toggle_map_layer_btn
- @color/tab_text
- - @color/tips_and_triks_bg_dark
- - @color/tips_and_triks_primary_text_light
- - @color/tips_and_triks_secondary_text_light
+ - @color/tips_and_triks_bg_night
+ - @color/tips_and_triks_primary_text
+ - @color/tips_and_triks_secondary_text
@@ -272,8 +272,8 @@
- @drawable/ic_subway_menu_dark_off
- @drawable/bg_toggle_map_layer_btn_dark
- @color/tab_text_night
- - @color/tips_and_triks_bg_light
- - @color/tips_and_triks_primary_text_dark
- - @color/tips_and_triks_secondary_text_dark
+ - @color/tips_and_triks_bg
+ - @color/tips_and_triks_primary_text_night
+ - @color/tips_and_triks_secondary_text_night
diff --git a/android/src/com/mapswithme/maps/ClickMenuDelegate.java b/android/src/com/mapswithme/maps/ClickMenuDelegate.java
new file mode 100644
index 0000000000..cae760ba82
--- /dev/null
+++ b/android/src/com/mapswithme/maps/ClickMenuDelegate.java
@@ -0,0 +1,6 @@
+package com.mapswithme.maps;
+
+public interface ClickMenuDelegate
+{
+ void onMenuItemClick();
+}
diff --git a/android/src/com/mapswithme/maps/Framework.java b/android/src/com/mapswithme/maps/Framework.java
index 3110a7a400..4d3bfd0069 100644
--- a/android/src/com/mapswithme/maps/Framework.java
+++ b/android/src/com/mapswithme/maps/Framework.java
@@ -25,7 +25,7 @@ import com.mapswithme.maps.routing.RoutingInfo;
import com.mapswithme.maps.routing.TransitRouteInfo;
import com.mapswithme.maps.search.FilterUtils;
import com.mapswithme.maps.tips.TipsAction;
-import com.mapswithme.maps.tips.TipsProvider;
+import com.mapswithme.maps.tips.TipsApi;
import com.mapswithme.util.Constants;
import com.mapswithme.util.log.Logger;
import com.mapswithme.util.log.LoggerFactory;
@@ -225,9 +225,9 @@ public class Framework
return FilterUtils.RATING_ANY;
}
- public static void tipsShown(@NonNull TipsProvider tipsProvider)
+ public static void tipsShown(@NonNull TipsApi tipsApi)
{
- nativeTipsShown(tipsProvider.ordinal(), TipsAction.ACTION_CLICKED.ordinal());
+ nativeTipsShown(tipsApi.ordinal(), TipsAction.ACTION_CLICKED.ordinal());
}
public static native void nativeShowTrackRect(long track);
diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java
index b10681e1ab..4b0320bea0 100644
--- a/android/src/com/mapswithme/maps/MwmActivity.java
+++ b/android/src/com/mapswithme/maps/MwmActivity.java
@@ -67,7 +67,7 @@ import com.mapswithme.maps.location.CompassData;
import com.mapswithme.maps.location.LocationHelper;
import com.mapswithme.maps.maplayer.MapLayerCompositeController;
import com.mapswithme.maps.maplayer.Mode;
-import com.mapswithme.maps.tips.TipsProvider;
+import com.mapswithme.maps.tips.TipsApi;
import com.mapswithme.maps.maplayer.subway.OnSubwayLayerToggleListener;
import com.mapswithme.maps.maplayer.subway.SubwayManager;
import com.mapswithme.maps.maplayer.traffic.OnTrafficLayerToggleListener;
@@ -599,8 +599,8 @@ public class MwmActivity extends BaseMwmFragmentActivity
private void initTips()
{
- TipsProvider api = TipsProvider.requestCurrent(getClass());
- if (api == TipsProvider.STUB)
+ TipsApi api = TipsApi.requestCurrent(getClass());
+ if (api == TipsApi.STUB)
return;
api.showTutorial(getActivity());
@@ -2650,211 +2650,207 @@ public class MwmActivity extends BaseMwmFragmentActivity
}
}
- public interface ClickMenuDelegate
+ static abstract class AbstractClickMenuDelegate implements ClickMenuDelegate
{
- void onMenuItemClick();
+ @NonNull
+ private final MwmActivity mActivity;
+ @NonNull
+ private final MainMenu.Item mItem;
- abstract class AbstractClickMenuDelegate implements ClickMenuDelegate
+ AbstractClickMenuDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
{
- @NonNull
- private final MwmActivity mActivity;
- @NonNull
- private final MainMenu.Item mItem;
-
- AbstractClickMenuDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- mActivity = activity;
- mItem = item;
- }
-
- @NonNull
- public MwmActivity getActivity()
- {
- return mActivity;
- }
-
- @NonNull
- public MainMenu.Item getItem()
- {
- return mItem;
- }
-
- @Override
- public final void onMenuItemClick()
- {
- TipsProvider api = TipsProvider.requestCurrent(getActivity().getClass());
- if (api == TipsProvider.STUB || getItem() != api.getSiblingMenuItem())
- onMenuItemClickInternal();
- else
- api.createClickInterceptor().onInterceptClick(getActivity());
- }
-
- public abstract void onMenuItemClickInternal();
+ mActivity = activity;
+ mItem = item;
}
- class MenuClickDelegate extends AbstractClickMenuDelegate
+ @NonNull
+ public MwmActivity getActivity()
{
- public MenuClickDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
-
- @Override
- public void onMenuItemClickInternal()
- {
- if (!getActivity().mMainMenu.isOpen())
- {
- Statistics.INSTANCE.trackToolbarClick(getItem());
- if (getActivity().mPlacePage.isDocked() && getActivity().closePlacePage())
- return;
-
- if (getActivity().closeSidePanel())
- return;
- }
- getActivity().toggleMenu();
- }
+ return mActivity;
}
- class AddPlaceDelegate extends AbstractClickMenuDelegate
+ @NonNull
+ public MainMenu.Item getItem()
{
- public AddPlaceDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
-
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarMenu(getItem());
- getActivity().closePlacePage();
- if (getActivity().mIsTabletLayout)
- getActivity().closeSidePanel();
- getActivity().closeMenu(() -> getActivity().showPositionChooser(false, false));
- }
+ return mItem;
}
- class SearchClickDelegate extends AbstractClickMenuDelegate
+ @Override
+ public final void onMenuItemClick()
{
- public SearchClickDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ TipsApi api = TipsApi.requestCurrent(getActivity().getClass());
+ LOGGER.d(TAG, "TipsApi = " + api);
+ if (getItem() == api.getSiblingMenuItem())
+ api.createClickInterceptor().onInterceptClick(getActivity());
+ else
+ onMenuItemClickInternal();
+ }
- @Override
- public void onMenuItemClickInternal()
+ public abstract void onMenuItemClickInternal();
+ }
+
+ public static class MenuClickDelegate extends AbstractClickMenuDelegate
+ {
+ public MenuClickDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
+ }
+
+ @Override
+ public void onMenuItemClickInternal()
+ {
+ if (!getActivity().mMainMenu.isOpen())
{
Statistics.INSTANCE.trackToolbarClick(getItem());
- RoutingController.get().cancel();
- getActivity().closeMenu(() -> getActivity().showSearch(getActivity().mSearchController.getQuery()));
+ if (getActivity().mPlacePage.isDocked() && getActivity().closePlacePage())
+ return;
+
+ if (getActivity().closeSidePanel())
+ return;
}
+ getActivity().toggleMenu();
+ }
+ }
+
+ public static class AddPlaceDelegate extends AbstractClickMenuDelegate
+ {
+ public AddPlaceDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class PointToPointDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public PointToPointDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarMenu(getItem());
+ getActivity().closePlacePage();
+ if (getActivity().mIsTabletLayout)
+ getActivity().closeSidePanel();
+ getActivity().closeMenu(() -> getActivity().showPositionChooser(false, false));
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarClick(getItem());
- getActivity().startLocationToPoint(null, false);
- }
+ public static class SearchClickDelegate extends AbstractClickMenuDelegate
+ {
+ public SearchClickDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class DiscoveryDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public DiscoveryDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarClick(getItem());
+ RoutingController.get().cancel();
+ getActivity().closeMenu(() -> getActivity().showSearch(getActivity().mSearchController.getQuery()));
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarClick(getItem());
- getActivity().showDiscovery();
- }
+ public static class SettingsDelegate extends AbstractClickMenuDelegate
+ {
+ public SettingsDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class BookmarksDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public BookmarksDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarMenu(getItem());
+ Intent intent = new Intent(getActivity(), SettingsActivity.class);
+ getActivity().closeMenu(() -> getActivity().startActivity(intent));
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarClick(getItem());
- getActivity().closeMenu(getActivity()::showBookmarks);
- }
+ public static class DownloadGuidesDelegate extends AbstractClickMenuDelegate
+ {
+ public DownloadGuidesDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class ShareMyLocationDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public ShareMyLocationDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarMenu(getItem());
+ int requestCode = BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY;
+ getActivity().closeMenu(() -> BookmarksCatalogActivity.startForResult(getActivity(), requestCode));
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarMenu(getItem());
- getActivity().closeMenu(getActivity()::shareMyLocation);
- }
+ public static class DownloadMapsDelegate extends AbstractClickMenuDelegate
+ {
+ public DownloadMapsDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class DownloadMapsDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public DownloadMapsDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarMenu(getItem());
+ RoutingController.get().cancel();
+ getActivity().closeMenu(() -> getActivity().showDownloader(false));
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarMenu(getItem());
- RoutingController.get().cancel();
- getActivity().closeMenu(() -> getActivity().showDownloader(false));
- }
+ public static class BookmarksDelegate extends AbstractClickMenuDelegate
+ {
+ public BookmarksDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class SettingsDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public SettingsDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarClick(getItem());
+ getActivity().closeMenu(getActivity()::showBookmarks);
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarMenu(getItem());
- Intent intent = new Intent(getActivity(), SettingsActivity.class);
- getActivity().closeMenu(() -> getActivity().startActivity(intent));
- }
+ public static class ShareMyLocationDelegate extends AbstractClickMenuDelegate
+ {
+ public ShareMyLocationDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
}
- class DownloadGuidesDelegate extends AbstractClickMenuDelegate
+ @Override
+ public void onMenuItemClickInternal()
{
- public DownloadGuidesDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
- {
- super(activity, item);
- }
+ Statistics.INSTANCE.trackToolbarMenu(getItem());
+ getActivity().closeMenu(getActivity()::shareMyLocation);
+ }
+ }
- @Override
- public void onMenuItemClickInternal()
- {
- Statistics.INSTANCE.trackToolbarMenu(getItem());
- int requestCode = BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY;
- getActivity().closeMenu(() -> BookmarksCatalogActivity.startForResult(getActivity(), requestCode));
- }
+ public static class DiscoveryDelegate extends AbstractClickMenuDelegate
+ {
+ public DiscoveryDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
+ }
+
+ @Override
+ public void onMenuItemClickInternal()
+ {
+ Statistics.INSTANCE.trackToolbarClick(getItem());
+ getActivity().showDiscovery();
+ }
+ }
+
+ public static class PointToPointDelegate extends AbstractClickMenuDelegate
+ {
+ public PointToPointDelegate(@NonNull MwmActivity activity, @NonNull MainMenu.Item item)
+ {
+ super(activity, item);
+ }
+
+ @Override
+ public void onMenuItemClickInternal()
+ {
+ Statistics.INSTANCE.trackToolbarClick(getItem());
+ getActivity().startLocationToPoint(null, false);
}
}
}
diff --git a/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java b/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
index a5905f5e6e..d51febf6e2 100644
--- a/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
+++ b/android/src/com/mapswithme/maps/maplayer/MapLayerCompositeController.java
@@ -1,14 +1,15 @@
package com.mapswithme.maps.maplayer;
+import android.app.Activity;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
-import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.maplayer.subway.SubwayMapLayerController;
import com.mapswithme.maps.maplayer.traffic.widget.TrafficButton;
import com.mapswithme.maps.maplayer.traffic.widget.TrafficButtonController;
-import com.mapswithme.maps.tips.TipsProvider;
+import com.mapswithme.maps.tips.TipsApi;
+import com.mapswithme.maps.tips.TipsClickListener;
import com.mapswithme.util.InputUtils;
import java.util.Collection;
@@ -28,7 +29,7 @@ public class MapLayerCompositeController implements MapLayerController
public MapLayerCompositeController(@NonNull TrafficButton traffic, @NonNull View subway,
@NonNull AppCompatActivity activity)
{
- OpenBottomDialogClickListener listener = new OpenBottomDialogClickListener();
+ View.OnClickListener listener = new OpenBottomDialogClickListener(activity, TipsApi.MAP_LAYERS);
mActivity = activity;
mChildrenEntries = createEntries(traffic, subway, activity, listener);
mMasterEntry = getCurrentLayer();
@@ -39,7 +40,7 @@ public class MapLayerCompositeController implements MapLayerController
private static Collection createEntries(@NonNull TrafficButton traffic,
@NonNull View subway,
@NonNull AppCompatActivity activity,
- @NonNull OpenBottomDialogClickListener dialogClickListener)
+ @NonNull View.OnClickListener dialogClickListener)
{
traffic.setOnclickListener(dialogClickListener);
TrafficButtonController trafficButtonController = new TrafficButtonController(traffic,
@@ -263,20 +264,16 @@ public class MapLayerCompositeController implements MapLayerController
}
}
- private class OpenBottomDialogClickListener implements View.OnClickListener
+ private class OpenBottomDialogClickListener extends TipsClickListener
{
- @Override
- public void onClick(View v)
+ OpenBottomDialogClickListener(@NonNull Activity activity, @NonNull TipsApi provider)
{
- TipsProvider api;
- if ((api = TipsProvider.requestCurrent(mActivity.getClass())) == TipsProvider.MAP_LAYERS)
- {
- MwmActivity mwmActivity = (MwmActivity) mActivity;
- TipsProvider.ClickInterceptor interceptor = api.createClickInterceptor();
- interceptor.onInterceptClick(mwmActivity);
- return;
- }
+ super(activity, provider);
+ }
+ @Override
+ public void onProcessClick(@NonNull View view)
+ {
if (mMasterEntry.getMode().isEnabled(mActivity))
{
turnOff();
diff --git a/android/src/com/mapswithme/maps/tips/AbstractClickInterceptor.java b/android/src/com/mapswithme/maps/tips/AbstractClickInterceptor.java
new file mode 100644
index 0000000000..e9afcbb8f5
--- /dev/null
+++ b/android/src/com/mapswithme/maps/tips/AbstractClickInterceptor.java
@@ -0,0 +1,32 @@
+package com.mapswithme.maps.tips;
+
+import android.support.annotation.NonNull;
+
+import com.mapswithme.maps.Framework;
+import com.mapswithme.maps.MwmActivity;
+
+public abstract class AbstractClickInterceptor implements ClickInterceptor
+{
+ @NonNull
+ private final TipsApi mTipsApi;
+
+ AbstractClickInterceptor(@NonNull TipsApi tipsApi)
+ {
+ mTipsApi = tipsApi;
+ }
+
+ @NonNull
+ TipsApi getType()
+ {
+ return mTipsApi;
+ }
+
+ @Override
+ public final void onInterceptClick(@NonNull MwmActivity activity)
+ {
+ Framework.tipsShown(getType());
+ onInterceptClickInternal(activity);
+ }
+
+ public abstract void onInterceptClickInternal(@NonNull MwmActivity activity);
+}
diff --git a/android/src/com/mapswithme/maps/tips/ClickInterceptor.java b/android/src/com/mapswithme/maps/tips/ClickInterceptor.java
new file mode 100644
index 0000000000..7020754698
--- /dev/null
+++ b/android/src/com/mapswithme/maps/tips/ClickInterceptor.java
@@ -0,0 +1,10 @@
+package com.mapswithme.maps.tips;
+
+import android.support.annotation.NonNull;
+
+import com.mapswithme.maps.MwmActivity;
+
+public interface ClickInterceptor
+{
+ void onInterceptClick(@NonNull MwmActivity activity);
+}
diff --git a/android/src/com/mapswithme/maps/tips/ClickInterceptorFactory.java b/android/src/com/mapswithme/maps/tips/ClickInterceptorFactory.java
new file mode 100644
index 0000000000..e00cc38547
--- /dev/null
+++ b/android/src/com/mapswithme/maps/tips/ClickInterceptorFactory.java
@@ -0,0 +1,95 @@
+package com.mapswithme.maps.tips;
+
+import android.support.annotation.NonNull;
+
+import com.mapswithme.maps.MwmActivity;
+import com.mapswithme.maps.R;
+import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity;
+import com.mapswithme.maps.bookmarks.BookmarksCatalogActivity;
+import com.mapswithme.maps.maplayer.Mode;
+
+class ClickInterceptorFactory
+{
+ @NonNull
+ static ClickInterceptor createActivateSubwayLayerListener()
+ {
+ return new ActivateSubwayLayer();
+ }
+
+ @NonNull
+ static ClickInterceptor createOpenDiscoveryScreenListener()
+ {
+ return new OpenDiscoveryScreen();
+ }
+
+ @NonNull
+ static ClickInterceptor createSearchHotelsListener()
+ {
+ return new SearchHotels();
+ }
+
+ @NonNull
+ static ClickInterceptor createOpenBookmarksCatalogListener()
+ {
+ return new OpenBookmarksCatalog();
+ }
+
+ public static class OpenBookmarksCatalog extends AbstractClickInterceptor
+ {
+ OpenBookmarksCatalog()
+ {
+ super(TipsApi.BOOKMARKS);
+ }
+
+ @Override
+ public void onInterceptClickInternal(@NonNull MwmActivity activity)
+ {
+ BookmarksCatalogActivity.startForResult(activity,
+ BookmarkCategoriesActivity
+ .REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY);
+ }
+ }
+
+ public static class ActivateSubwayLayer extends AbstractClickInterceptor
+ {
+ ActivateSubwayLayer()
+ {
+ super(TipsApi.MAP_LAYERS);
+ }
+
+ @Override
+ public void onInterceptClickInternal(@NonNull MwmActivity activity)
+ {
+ Mode.SUBWAY.setEnabled(activity, true);
+ activity.onSubwayLayerSelected();
+ }
+ }
+
+ public static class SearchHotels extends AbstractClickInterceptor
+ {
+ SearchHotels()
+ {
+ super(TipsApi.SEARCH);
+ }
+
+ @Override
+ public void onInterceptClickInternal(@NonNull MwmActivity activity)
+ {
+ activity.showSearch(activity.getString(R.string.hotel));
+ }
+ }
+
+ public static class OpenDiscoveryScreen extends AbstractClickInterceptor
+ {
+ OpenDiscoveryScreen()
+ {
+ super(TipsApi.DISCOVERY);
+ }
+
+ @Override
+ public void onInterceptClickInternal(@NonNull MwmActivity activity)
+ {
+ activity.showDiscovery();
+ }
+ }
+}
diff --git a/android/src/com/mapswithme/maps/tips/TipsProvider.java b/android/src/com/mapswithme/maps/tips/TipsApi.java
similarity index 53%
rename from android/src/com/mapswithme/maps/tips/TipsProvider.java
rename to android/src/com/mapswithme/maps/tips/TipsApi.java
index aece1164c9..0b7ce920e9 100644
--- a/android/src/com/mapswithme/maps/tips/TipsProvider.java
+++ b/android/src/com/mapswithme/maps/tips/TipsApi.java
@@ -11,9 +11,6 @@ import android.view.View;
import com.mapswithme.maps.Framework;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.R;
-import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity;
-import com.mapswithme.maps.bookmarks.BookmarksCatalogActivity;
-import com.mapswithme.maps.maplayer.Mode;
import com.mapswithme.maps.widget.menu.MainMenu;
import com.mapswithme.util.ThemeUtils;
import com.mapswithme.util.UiUtils;
@@ -25,7 +22,7 @@ import uk.co.samuelwall.materialtaptargetprompt.extras.backgrounds.FullscreenPro
import java.util.Arrays;
import java.util.List;
-public enum TipsProvider
+public enum TipsApi
{
BOOKMARKS(R.string.tips_bookmarks_catalog_title,
R.string.tips_bookmarks_catalog_message,
@@ -35,7 +32,7 @@ public enum TipsProvider
@Override
public ClickInterceptor createClickInterceptor()
{
- return new ClickInterceptor.OpenBookmarksCatalog();
+ return ClickInterceptorFactory.createOpenBookmarksCatalogListener();
}
},
@@ -47,7 +44,7 @@ public enum TipsProvider
@Override
public ClickInterceptor createClickInterceptor()
{
- return new ClickInterceptor.SearchHotels();
+ return ClickInterceptorFactory.createSearchHotelsListener();
}
},
@@ -59,7 +56,7 @@ public enum TipsProvider
@Override
public ClickInterceptor createClickInterceptor()
{
- return new ClickInterceptor.OpenDiscoveryScreen();
+ return ClickInterceptorFactory.createOpenDiscoveryScreenListener();
}
},
@@ -72,22 +69,27 @@ public enum TipsProvider
@Override
public ClickInterceptor createClickInterceptor()
{
- return new ClickInterceptor.ActivateSubwayLayer();
+ return ClickInterceptorFactory.createActivateSubwayLayerListener();
}
},
STUB
{
+ public void showTutorial(@NonNull Activity activity)
+ {
+ throw new UnsupportedOperationException("Not supported here!");
+ }
+
@NonNull
@Override
public ClickInterceptor createClickInterceptor()
{
- return params -> {};
+ return activity -> {};
}
};
private static final Logger LOGGER = LoggerFactory.INSTANCE.getLogger(LoggerFactory.Type.MISC);
- private static final String TAG = TipsProvider.class.getSimpleName();
+ private static final String TAG = TipsApi.class.getSimpleName();
@StringRes
private final int mPrimaryText;
@@ -100,8 +102,8 @@ public enum TipsProvider
@Nullable
private final MainMenu.Item mSiblingMenuItem;
- TipsProvider(@StringRes int primaryText, @StringRes int secondaryText, @IdRes int anchorViewId,
- @Nullable MainMenu.Item siblingMenuItem, @NonNull Class>... allowedScreens)
+ TipsApi(@StringRes int primaryText, @StringRes int secondaryText, @IdRes int anchorViewId,
+ @Nullable MainMenu.Item siblingMenuItem, @NonNull Class>... allowedScreens)
{
mPrimaryText = primaryText;
mSecondaryText = secondaryText;
@@ -110,7 +112,7 @@ public enum TipsProvider
mAllowedScreens = Arrays.asList(allowedScreens);
}
- TipsProvider()
+ TipsApi()
{
this(UiUtils.NO_ID, UiUtils.NO_ID, UiUtils.NO_ID, null);
}
@@ -119,14 +121,14 @@ public enum TipsProvider
{
return mAllowedScreens.contains(screenClass);
}
- @SuppressWarnings("UnusedReturnValue")
- @Nullable
- public MaterialTapTargetPrompt showTutorial(@NonNull Activity activity)
+
+ public void showTutorial(@NonNull Activity activity)
{
View target = activity.findViewById(mAnchorViewId);
- return new MaterialTapTargetPrompt.Builder(activity)
+ MaterialTapTargetPrompt.Builder builder = new MaterialTapTargetPrompt
+ .Builder(activity)
.setTarget(target)
- .setFocalRadius(R.dimen.nav_street_height)
+ .setFocalRadius(R.dimen.focal_radius)
.setPrimaryText(mPrimaryText)
.setPrimaryTextSize(R.dimen.text_size_toolbar)
.setPrimaryTextColour(ThemeUtils.getColor(activity, R.attr.tipsPrimaryTextColor))
@@ -137,8 +139,8 @@ public enum TipsProvider
.setSecondaryTextTypeface(Typeface.DEFAULT)
.setBackgroundColour(ThemeUtils.getColor(activity, R.attr.tipsBgColor))
.setFocalColour(activity.getResources().getColor(android.R.color.transparent))
- .setPromptBackground(new FullscreenPromptBackground())
- .show();
+ .setPromptBackground(new FullscreenPromptBackground());
+ builder.show();
}
@Nullable
@@ -151,102 +153,14 @@ public enum TipsProvider
public abstract ClickInterceptor createClickInterceptor();
@NonNull
- public static TipsProvider requestCurrent(@NonNull Class requiredScreenClass)
+ public static TipsApi requestCurrent(@NonNull Class requiredScreenClass)
{
int index = Framework.nativeGetCurrentTipsApi();
- TipsProvider value = index >= 0 ? values()[index] : STUB;
- TipsProvider tipsProvider = value != STUB && value.isScreenAllowed(requiredScreenClass) ? value
- : STUB;
- LOGGER.d(TAG, "tipsProvider = " + tipsProvider);
- return tipsProvider;
+ TipsApi value = index >= 0 ? values()[index] : STUB;
+ TipsApi tipsApi = value != STUB && value.isScreenAllowed(requiredScreenClass) ? value
+ : STUB;
+ LOGGER.d(TAG, "tipsApi = " + tipsApi);
+ return tipsApi;
}
- public interface ClickInterceptor
- {
- void onInterceptClick(@NonNull MwmActivity params);
-
- abstract class AbstractClickInterceptor implements ClickInterceptor
- {
- @NonNull
- private final TipsProvider mTipsProvider;
-
- AbstractClickInterceptor(@NonNull TipsProvider tipsProvider)
- {
- mTipsProvider = tipsProvider;
- }
-
- @NonNull
- TipsProvider getType()
- {
- return mTipsProvider;
- }
-
- @Override
- public final void onInterceptClick(@NonNull MwmActivity params)
- {
- Framework.tipsShown(getType());
- onInterceptClickInternal(params);
- }
-
- protected abstract void onInterceptClickInternal(@NonNull MwmActivity params);
- }
-
- class OpenBookmarksCatalog extends AbstractClickInterceptor
- {
- OpenBookmarksCatalog()
- {
- super(BOOKMARKS);
- }
-
- @Override
- public void onInterceptClickInternal(@NonNull MwmActivity params)
- {
- BookmarksCatalogActivity.startForResult(params,
- BookmarkCategoriesActivity.REQ_CODE_DOWNLOAD_BOOKMARK_CATEGORY);
- }
- }
-
- class ActivateSubwayLayer extends AbstractClickInterceptor
- {
- ActivateSubwayLayer()
- {
- super(MAP_LAYERS);
- }
-
- @Override
- public void onInterceptClickInternal(@NonNull MwmActivity params)
- {
- Mode.SUBWAY.setEnabled(params, true);
- params.onSubwayLayerSelected();
- }
- }
-
- class SearchHotels extends AbstractClickInterceptor
- {
- SearchHotels()
- {
- super(SEARCH);
- }
-
- @Override
- public void onInterceptClickInternal(@NonNull MwmActivity params)
- {
- params.showSearch(params.getString(R.string.hotel));
- }
- }
-
- class OpenDiscoveryScreen extends AbstractClickInterceptor
- {
- OpenDiscoveryScreen()
- {
- super(DISCOVERY);
- }
-
- @Override
- public void onInterceptClickInternal(@NonNull MwmActivity params)
- {
- params.showDiscovery();
- }
- }
- }
}
diff --git a/android/src/com/mapswithme/maps/tips/TipsClickListener.java b/android/src/com/mapswithme/maps/tips/TipsClickListener.java
new file mode 100644
index 0000000000..48459bbf36
--- /dev/null
+++ b/android/src/com/mapswithme/maps/tips/TipsClickListener.java
@@ -0,0 +1,38 @@
+package com.mapswithme.maps.tips;
+
+import android.app.Activity;
+import android.support.annotation.NonNull;
+import android.view.View;
+
+import com.mapswithme.maps.MwmActivity;
+
+public abstract class TipsClickListener implements View.OnClickListener
+{
+ @NonNull
+ private final Activity mActivity;
+ @NonNull
+ private final TipsApi mTipsApi;
+
+ public TipsClickListener(@NonNull Activity activity, @NonNull TipsApi provider)
+ {
+ mActivity = activity;
+ mTipsApi = provider;
+ }
+
+ @Override
+ public final void onClick(View v)
+ {
+ TipsApi api = TipsApi.requestCurrent(mActivity.getClass());
+ if (api == mTipsApi)
+ {
+ MwmActivity mwmActivity = (MwmActivity) mActivity;
+ ClickInterceptor interceptor = api.createClickInterceptor();
+ interceptor.onInterceptClick(mwmActivity);
+ return;
+ }
+
+ onProcessClick(v);
+ }
+
+ public abstract void onProcessClick(@NonNull View view);
+}
diff --git a/android/src/com/mapswithme/maps/widget/menu/MainMenu.java b/android/src/com/mapswithme/maps/widget/menu/MainMenu.java
index 3e0dfbbf63..dbec08291d 100644
--- a/android/src/com/mapswithme/maps/widget/menu/MainMenu.java
+++ b/android/src/com/mapswithme/maps/widget/menu/MainMenu.java
@@ -6,6 +6,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
+import com.mapswithme.maps.ClickMenuDelegate;
import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
@@ -126,100 +127,100 @@ public class MainMenu extends BaseMenu
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.MenuClickDelegate(activity, item);
+ return new MwmActivity.MenuClickDelegate(activity, item);
}
},
ADD_PLACE(R.id.add_place)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.AddPlaceDelegate(activity, item);
+ return new MwmActivity.AddPlaceDelegate(activity, item);
}
},
DOWNLOAD_GUIDES(R.id.download_guides)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.DownloadGuidesDelegate(activity, item);
+ return new MwmActivity.DownloadGuidesDelegate(activity, item);
}
},
SEARCH(R.id.search)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.SearchClickDelegate(activity, item);
+ return new MwmActivity.SearchClickDelegate(activity, item);
}
},
POINT_TO_POINT(R.id.p2p)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.PointToPointDelegate(activity, item);
+ return new MwmActivity.PointToPointDelegate(activity, item);
}
},
DISCOVERY(R.id.discovery)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.DiscoveryDelegate(activity, item);
+ return new MwmActivity.DiscoveryDelegate(activity, item);
}
},
BOOKMARKS(R.id.bookmarks)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.BookmarksDelegate(activity, item);
+ return new MwmActivity.BookmarksDelegate(activity, item);
}
},
SHARE_MY_LOCATION(R.id.share)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.ShareMyLocationDelegate(activity, item);
+ return new MwmActivity.ShareMyLocationDelegate(activity, item);
}
},
DOWNLOAD_MAPS(R.id.download_maps)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.DownloadMapsDelegate(activity, item);
+ return new MwmActivity.DownloadMapsDelegate(activity, item);
}
},
SETTINGS(R.id.settings)
{
@NonNull
@Override
- public MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item)
+ public ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item)
{
- return new MwmActivity.ClickMenuDelegate.SettingsDelegate(activity, item);
+ return new MwmActivity.SettingsDelegate(activity, item);
}
};
@@ -238,13 +239,13 @@ public class MainMenu extends BaseMenu
public void onClicked(@NonNull MwmActivity activity, @NonNull Item item)
{
- MwmActivity.ClickMenuDelegate delegate = createClickDelegate(activity, item);
+ ClickMenuDelegate delegate = createClickDelegate(activity, item);
delegate.onMenuItemClick();
}
@NonNull
- public abstract MwmActivity.ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
- @NonNull Item item);
+ public abstract ClickMenuDelegate createClickDelegate(@NonNull MwmActivity activity,
+ @NonNull Item item);
}
@Override
diff --git a/data/copyright.html b/data/copyright.html
index 1bd7ae4dfe..a206af0283 100644
--- a/data/copyright.html
+++ b/data/copyright.html
@@ -202,6 +202,9 @@
Open Location Code
© 2015–2018 Google Inc.; Apache License
+ Material Tap Target Prompt
+ © 2016-2018 Samuel Wall; Apache License
+
Linear Layout Manager
© 2014 serso aka se.solovyev; Apache License