From a3057002760aa35e7ae71d7f10b3a41f043b8c8c Mon Sep 17 00:00:00 2001 From: Dmitry Yunitsky Date: Mon, 1 Feb 2016 02:18:05 +0300 Subject: [PATCH] [android] Get active map object from framework for PP. --- .../src/com/mapswithme/maps/MwmActivity.java | 14 ++-- .../maps/widget/placepage/PlacePageView.java | 78 +++---------------- 2 files changed, 18 insertions(+), 74 deletions(-) diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index ad593f7f66..417f51cb3a 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -640,7 +640,7 @@ public class MwmActivity extends BaseMwmFragmentActivity if (savedInstanceState.getBoolean(STATE_PP_OPENED)) { - mPlacePage.setMapObject((MapObject) savedInstanceState.getParcelable(STATE_MAP_OBJECT)); + mPlacePage.setMapObject(Framework.nativeGetActiveMapObject(), false); mPlacePage.setState(State.PREVIEW); } @@ -784,7 +784,7 @@ public class MwmActivity extends BaseMwmFragmentActivity invalidateLocationState(); mSearchController.refreshToolbar(); - mPlacePage.onResume(); + mPlacePage.setMapObject(Framework.nativeGetActiveMapObject(), true); if (!RoutingController.get().isNavigating()) { @@ -1039,10 +1039,10 @@ public class MwmActivity extends BaseMwmFragmentActivity } setFullscreen(false); - if (mPlacePage.hasMapObject(object)) + if (MapObject.same(mPlacePage.getMapObject(), object)) return; - mPlacePage.setMapObject(object); + mPlacePage.setMapObject(object, false); mPlacePage.setState(State.PREVIEW); if (UiUtils.isVisible(mFadeView)) @@ -1052,7 +1052,7 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onDismiss() { - if (mPlacePage.hasMapObject(null)) + if (mPlacePage.getMapObject() == null) { if ((mPanelAnimator != null && mPanelAnimator.isVisible()) || UiUtils.isVisible(mSearchController.getToolbar())) @@ -1131,7 +1131,7 @@ public class MwmActivity extends BaseMwmFragmentActivity else { Framework.deactivatePopup(); - mPlacePage.setMapObject(null); + mPlacePage.setMapObject(null, false); mMainMenu.show(true); } } @@ -1250,7 +1250,7 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onCategoryChanged(int bookmarkId, int newCategoryId) { - mPlacePage.setMapObject(BookmarkManager.INSTANCE.getBookmark(newCategoryId, bookmarkId)); + mPlacePage.setMapObject(BookmarkManager.INSTANCE.getBookmark(newCategoryId, bookmarkId), false); } @Override diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index fe2a4a0648..45ac109d57 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -344,9 +344,13 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene return mMapObject; } - public void setMapObject(MapObject mapObject) + /** + * @param mapObject new MapObject + * @param force if true, new object'll be set without comparison with the old one + */ + public void setMapObject(MapObject mapObject, boolean force) { - if (hasMapObject(mapObject)) + if (!force && MapObject.same(mMapObject, mapObject)) return; if (!(mapObject instanceof Bookmark)) @@ -356,16 +360,6 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene refreshViews(); } - public boolean hasMapObject(MapObject mo) - { - if (mo == null && mMapObject == null) - return true; - else if (mMapObject != null) - return mMapObject.sameAs(mo); - - return false; - } - public void refreshViews() { if (mMapObject == null) @@ -443,7 +437,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene refreshMetadataStars(mMapObject.getMetadata(Metadata.MetadataType.FMD_STARS)); UiUtils.setTextAndHideIfEmpty(mTvElevation, mMapObject.getMetadata(Metadata.MetadataType.FMD_ELE)); - if (hasMapObject(null) || !Editor.hasEditableAttributes()) + if (mMapObject == null || !Editor.hasEditableAttributes()) { UiUtils.hide(mEditor); } @@ -610,56 +604,6 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene mAnimationController.setOnVisibilityChangedListener(listener); } - public void onResume() - { - if (mMapObject == null) - return; - - checkBookmarkWasDeleted(); - checkApiWasCanceled(); - } - - // TODO remove that method completely. host activity should check that itself - private void checkApiWasCanceled() - { - if (MapObject.isOfType(MapObject.API_POINT, mMapObject) && !ParsedMwmRequest.hasRequest()) - setMapObject(null); - } - - // TODO refactor processing of bookmarks. - private void checkBookmarkWasDeleted() - { - // We need to check, if content of body is still valid - if (MapObject.isOfType(MapObject.BOOKMARK, mMapObject)) - { - final Bookmark bmk = (Bookmark) mMapObject; - boolean deleted = false; - - if (BookmarkManager.INSTANCE.nativeGetCategoriesCount() <= bmk.getCategoryId()) - deleted = true; - else if (BookmarkManager.INSTANCE.getCategoryById(bmk.getCategoryId()).getBookmarksCount() <= bmk.getBookmarkId()) - deleted = true; - else if (BookmarkManager.INSTANCE.getBookmark(bmk.getCategoryId(), bmk.getBookmarkId()).getLat() != bmk.getLat()) - deleted = true; - // We can do check above, because lat/lon cannot be changed from edit screen. - - if (deleted) - { - // Make Poi from bookmark - final MapObject p = new MapObject(MapObject.POI, mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon(), "", "", ""); - setMapObject(p); - // TODO how to handle the case, when bookmark was moved to another group? - } - else - { - // Update data for current bookmark - final Bookmark updatedBmk = BookmarkManager.INSTANCE.getBookmark(bmk.getCategoryId(), bmk.getBookmarkId()); - setMapObject(null); - setMapObject(updatedBmk); - } - } - } - private void saveBookmarkNameIfUpdated() { // Can't save bookmark name if current object is not bookmark. @@ -694,7 +638,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene public void onSaved(Bookmark bookmark) { final Bookmark updatedBookmark = BookmarkManager.INSTANCE.getBookmark(bookmark.getCategoryId(), bookmark.getBookmarkId()); - setMapObject(updatedBookmark); + setMapObject(updatedBookmark, false); Statistics.INSTANCE.trackEvent(Statistics.EventName.BMK_DESCRIPTION_CHANGED); } }); @@ -822,7 +766,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene else p = Framework.nativeGetMapObjectForPoint(mMapObject.getLat(), mMapObject.getLon()); - setMapObject(p); + setMapObject(p, false); setState(State.DETAILS); BookmarkManager.INSTANCE.deleteBookmark(currentBookmark); } @@ -830,7 +774,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene { mBookmarkedMapObject = mMapObject; final Bookmark newBmk = BookmarkManager.INSTANCE.addNewBookmark(mMapObject.getName(), mMapObject.getLat(), mMapObject.getLon()); - setMapObject(newBmk); + setMapObject(newBmk, false); // FIXME this hack is necessary to get correct views height in animation controller. remove after further investigation. post(new Runnable() { @@ -876,7 +820,7 @@ public class PlacePageView extends RelativeLayout implements View.OnClickListene bmk.setParams(bmk.getName(), newIcon, bmk.getBookmarkDescription()); bmk = BookmarkManager.INSTANCE.getBookmark(bmk.getCategoryId(), bmk.getBookmarkId()); - setMapObject(bmk); + setMapObject(bmk, false); } });