diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index 9d2a2c1bf4..329a401fad 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -36,9 +36,7 @@ import com.mapswithme.maps.api.RoutePoint; import com.mapswithme.maps.base.BaseMwmFragmentActivity; import com.mapswithme.maps.base.OnBackPressListener; import com.mapswithme.maps.bookmarks.BookmarkCategoriesActivity; -import com.mapswithme.maps.bookmarks.ChooseBookmarkCategoryFragment; import com.mapswithme.maps.bookmarks.data.Banner; -import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.bookmarks.data.MapObject; import com.mapswithme.maps.downloader.DownloaderActivity; import com.mapswithme.maps.downloader.DownloaderFragment; @@ -109,7 +107,6 @@ public class MwmActivity extends BaseMwmFragmentActivity OnClickListener, MapFragment.MapRenderingListener, CustomNavigateUpListener, - ChooseBookmarkCategoryFragment.Listener, RoutingController.Container, LocationHelper.UiCallback, RoutingPlanController.OnToggleListener, @@ -1419,14 +1416,6 @@ public class MwmActivity extends BaseMwmFragmentActivity mMapFragment.setupRuler(offsetX, offsetY, true); } - @Override - public void onCategoryChanged(int bookmarkId, int newCategoryId) - { - // TODO remove that hack after bookmarks will be refactored completely - Framework.nativeOnBookmarkCategoryChanged(newCategoryId, bookmarkId); - mPlacePage.setMapObject(BookmarkManager.INSTANCE.getBookmark(newCategoryId, bookmarkId), true); - } - @Override public FragmentActivity getActivity() { diff --git a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java index 9bfcac22b7..728205aef7 100644 --- a/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/BookmarksListFragment.java @@ -174,7 +174,15 @@ public class BookmarksListFragment extends BaseMwmListFragment break; case R.id.edit: - EditBookmarkFragment.editBookmark(mCategory.getId(), item.getBookmarkId(), getActivity(), getChildFragmentManager()); + EditBookmarkFragment.editBookmark(mCategory.getId(), item.getBookmarkId(), getActivity(), + getChildFragmentManager(), new EditBookmarkFragment.EditBookmarkListener() + { + @Override + public void onBookmarkSaved(int categoryId, int bookmarkId) + { + mAdapter.notifyDataSetChanged(); + } + }); break; case R.id.delete: diff --git a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryFragment.java b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryFragment.java index 8feb7ad077..9105b5f0f7 100644 --- a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryFragment.java +++ b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryFragment.java @@ -11,7 +11,6 @@ import android.view.ViewGroup; import com.mapswithme.maps.R; import com.mapswithme.maps.base.BaseMwmDialogFragment; -import com.mapswithme.maps.bookmarks.data.Bookmark; import com.mapswithme.maps.bookmarks.data.BookmarkManager; import com.mapswithme.maps.dialog.EditTextDialogFragment; import com.mapswithme.util.statistics.Statistics; @@ -21,15 +20,13 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment ChooseBookmarkCategoryAdapter.CategoryListener { public static final String CATEGORY_ID = "ExtraCategoryId"; - public static final String BOOKMARK_ID = "ExtraBookmarkId"; - private Bookmark mBookmark; private ChooseBookmarkCategoryAdapter mAdapter; private RecyclerView mRecycler; public interface Listener { - void onCategoryChanged(int bookmarkId, int newCategoryId); + void onCategoryChanged(int newCategoryId); } private Listener mListener; @@ -56,7 +53,6 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment final Bundle args = getArguments(); final int catId = args.getInt(CATEGORY_ID, 0); - mBookmark = BookmarkManager.INSTANCE.getBookmark(catId, args.getInt(BOOKMARK_ID)); mAdapter = new ChooseBookmarkCategoryAdapter(getActivity(), catId); mAdapter.setListener(this); mRecycler.setAdapter(mAdapter); @@ -86,11 +82,10 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment private void createCategory(String name) { final int category = BookmarkManager.INSTANCE.nativeCreateCategory(name); - mBookmark.setCategoryId(category); mAdapter.chooseItem(category); if (mListener != null) - mListener.onCategoryChanged(mBookmark.getBookmarkId(), category); + mListener.onCategoryChanged(category); dismiss(); Statistics.INSTANCE.trackEvent(Statistics.EventName.BMK_GROUP_CREATED); } @@ -98,10 +93,9 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment @Override public void onCategorySet(int categoryId) { - mBookmark.setCategoryId(categoryId); mAdapter.chooseItem(categoryId); if (mListener != null) - mListener.onCategoryChanged(mBookmark.getBookmarkId(), categoryId); + mListener.onCategoryChanged(categoryId); dismiss(); Statistics.INSTANCE.trackEvent(Statistics.EventName.BMK_GROUP_CHANGED); } diff --git a/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java b/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java index 4bdfa89d46..6656f4c0c2 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java +++ b/android/src/com/mapswithme/maps/widget/placepage/EditBookmarkFragment.java @@ -15,6 +15,7 @@ import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; +import com.mapswithme.maps.Framework; import com.mapswithme.maps.R; import com.mapswithme.maps.base.BaseMwmDialogFragment; import com.mapswithme.maps.bookmarks.ChooseBookmarkCategoryFragment; @@ -34,9 +35,22 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private EditText mEtName; private TextView mTvBookmarkGroup; private ImageView mIvColor; + private int mCategoryId; + @Nullable + private Icon mIcon; + @Nullable private Bookmark mBookmark; + @Nullable + private EditBookmarkListener mListener; - public static void editBookmark(int categoryId, int bookmarkId, @NonNull Context context, @NonNull FragmentManager manager) + public interface EditBookmarkListener + { + void onBookmarkSaved(int categoryId, int bookmarkId); + } + + public static void editBookmark(int categoryId, int bookmarkId, @NonNull Context context, + @NonNull FragmentManager manager, + @Nullable EditBookmarkListener listener) { final Bundle args = new Bundle(); args.putInt(EXTRA_CATEGORY_ID, categoryId); @@ -44,6 +58,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. String name = EditBookmarkFragment.class.getName(); final EditBookmarkFragment fragment = (EditBookmarkFragment) Fragment.instantiate(context, name, args); fragment.setArguments(args); + fragment.setEditBookmarkListener(listener); fragment.show(manager, name); } @@ -68,10 +83,10 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. super.onViewCreated(view, savedInstanceState); final Bundle args = getArguments(); - int categoryId = args.getInt(EXTRA_CATEGORY_ID); + mCategoryId = args.getInt(EXTRA_CATEGORY_ID); int bookmarkId = args.getInt(EXTRA_BOOKMARK_ID); - mBookmark = BookmarkManager.INSTANCE.getBookmark(categoryId, bookmarkId); - + mBookmark = BookmarkManager.INSTANCE.getBookmark(mCategoryId, bookmarkId); + mIcon = mBookmark.getIcon(); mEtName = (EditText) view.findViewById(R.id.et__bookmark_name); mEtDescription = (EditText) view.findViewById(R.id.et__description); mTvBookmarkGroup = (TextView) view.findViewById(R.id.tv__bookmark_set); @@ -109,7 +124,20 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private void saveBookmark() { - mBookmark.setParams(mEtName.getText().toString(), null, mEtDescription.getText().toString()); + if (mBookmark == null) + { + dismiss(); + return; + } + if (mBookmark.getCategoryId() != mCategoryId) + { + mBookmark.setCategoryId(mCategoryId); + Framework.nativeOnBookmarkCategoryChanged(mBookmark.getCategoryId(), mBookmark.getBookmarkId()); + } + mBookmark.setParams(mEtName.getText().toString(), mIcon, mEtDescription.getText().toString()); + + if (mListener != null) + mListener.onBookmarkSaved(mBookmark.getCategoryId(), mBookmark.getBookmarkId()); dismiss(); } @@ -129,17 +157,22 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private void selectBookmarkSet() { + if (mBookmark == null) + return; + final Bundle args = new Bundle(); - args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mBookmark.getCategoryId()); - args.putInt(ChooseBookmarkCategoryFragment.BOOKMARK_ID, mBookmark.getBookmarkId()); + args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mCategoryId); final ChooseBookmarkCategoryFragment fragment = (ChooseBookmarkCategoryFragment) Fragment.instantiate(getActivity(), ChooseBookmarkCategoryFragment.class.getName(), args); fragment.show(getChildFragmentManager(), null); } private void selectBookmarkColor() { + if (mIcon == null) + return; + final Bundle args = new Bundle(); - args.putString(BookmarkColorDialogFragment.ICON_TYPE, mBookmark.getIcon().getType()); + args.putString(BookmarkColorDialogFragment.ICON_TYPE, mIcon.getType()); final BookmarkColorDialogFragment dialogFragment = (BookmarkColorDialogFragment) BookmarkColorDialogFragment. instantiate(getActivity(), BookmarkColorDialogFragment.class.getName(), args); @@ -149,14 +182,13 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. public void onBookmarkColorSet(int colorPos) { final Icon newIcon = BookmarkManager.ICONS.get(colorPos); - final String from = mBookmark.getIcon().getName(); + final String from = mIcon.getName(); final String to = newIcon.getName(); if (TextUtils.equals(from, to)) return; Statistics.INSTANCE.trackColorChanged(from, to); - mBookmark.setParams(mBookmark.getTitle(), newIcon, mBookmark.getBookmarkDescription()); - mBookmark = BookmarkManager.INSTANCE.getBookmark(mBookmark.getCategoryId(), mBookmark.getBookmarkId()); + mIcon = newIcon; refreshColorMarker(); } }); @@ -166,24 +198,38 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View. private void refreshColorMarker() { - mIvColor.setImageResource(mBookmark.getIcon().getSelectedResId()); + if (mIcon != null) + mIvColor.setImageResource(mIcon.getSelectedResId()); + } + + private void refreshCategory() + { + mTvBookmarkGroup.setText(BookmarkManager.INSTANCE.getCategory(mCategoryId).getName()); } private void refreshBookmark() { + if (mBookmark == null) + return; + if (TextUtils.isEmpty(mEtName.getText())) mEtName.setText(mBookmark.getTitle()); if (TextUtils.isEmpty(mEtDescription.getText())) mEtDescription.setText(mBookmark.getBookmarkDescription()); - mTvBookmarkGroup.setText(mBookmark.getCategoryName()); + refreshCategory(); refreshColorMarker(); } @Override - public void onCategoryChanged(int bookmarkId, int newCategoryId) + public void onCategoryChanged(int newCategoryId) { - mBookmark = BookmarkManager.INSTANCE.getBookmark(newCategoryId, bookmarkId); - refreshBookmark(); + mCategoryId = newCategoryId; + refreshCategory(); + } + + public void setEditBookmarkListener(@Nullable EditBookmarkListener listener) + { + mListener = listener; } } diff --git a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java index 89f2b99ded..77698e53aa 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java +++ b/android/src/com/mapswithme/maps/widget/placepage/PlacePageView.java @@ -98,7 +98,8 @@ public class PlacePageView extends RelativeLayout RecyclerClickListener, NearbyAdapter.OnItemClickListener, BannerController.OnBannerClickListener, - BottomPlacePageAnimationController.OnBannerOpenListener + BottomPlacePageAnimationController.OnBannerOpenListener, + EditBookmarkFragment.EditBookmarkListener { private static final String PREF_USE_DMS = "use_dms"; @@ -1337,7 +1338,8 @@ public class PlacePageView extends RelativeLayout case R.id.tv__bookmark_edit: Bookmark bookmark = (Bookmark) mMapObject; EditBookmarkFragment.editBookmark(bookmark.getCategoryId(), bookmark.getBookmarkId(), - getActivity(), getActivity().getSupportFragmentManager()); + getActivity(), getActivity().getSupportFragmentManager(), + this); break; case R.id.tv__place_hotel_more: UiUtils.hide(mHotelMoreDescription); @@ -1565,4 +1567,10 @@ public class PlacePageView extends RelativeLayout { return (MwmActivity) getContext(); } + + @Override + public void onBookmarkSaved(int categoryId, int bookmarkId) + { + setMapObject(BookmarkManager.INSTANCE.getBookmark(categoryId, bookmarkId), true); + } }