From 661219b6564bd0f0ecf82f4f748f7a387e1be4c1 Mon Sep 17 00:00:00 2001 From: Dmitry Donskoy Date: Mon, 10 Sep 2018 19:23:14 +0300 Subject: [PATCH] [android] Fixed review notes --- android/res/values/colors.xml | 12 +- android/res/values/dimens.xml | 1 + android/res/values/themes-base.xml | 12 +- .../mapswithme/maps/ClickMenuDelegate.java | 6 + .../src/com/mapswithme/maps/Framework.java | 6 +- .../src/com/mapswithme/maps/MwmActivity.java | 324 +++++++++--------- .../maplayer/MapLayerCompositeController.java | 27 +- .../maps/tips/AbstractClickInterceptor.java | 32 ++ .../maps/tips/ClickInterceptor.java | 10 + .../maps/tips/ClickInterceptorFactory.java | 95 +++++ .../tips/{TipsProvider.java => TipsApi.java} | 142 ++------ .../maps/tips/TipsClickListener.java | 38 ++ .../mapswithme/maps/widget/menu/MainMenu.java | 67 ++-- data/copyright.html | 3 + 14 files changed, 434 insertions(+), 341 deletions(-) create mode 100644 android/src/com/mapswithme/maps/ClickMenuDelegate.java create mode 100644 android/src/com/mapswithme/maps/tips/AbstractClickInterceptor.java create mode 100644 android/src/com/mapswithme/maps/tips/ClickInterceptor.java create mode 100644 android/src/com/mapswithme/maps/tips/ClickInterceptorFactory.java rename android/src/com/mapswithme/maps/tips/{TipsProvider.java => TipsApi.java} (53%) create mode 100644 android/src/com/mapswithme/maps/tips/TipsClickListener.java 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