Fixed Android after bookmarks refactoring.

This commit is contained in:
Daria Volvenkova 2018-02-14 05:14:39 +03:00 committed by Roman Kuznetsov
parent a976fbb057
commit 689ca54a26
26 changed files with 551 additions and 480 deletions

View file

@ -40,7 +40,6 @@ set(
com/mapswithme/core/logging.cpp
com/mapswithme/maps/bookmarks/data/Bookmark.cpp
com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
com/mapswithme/maps/bookmarks/data/BookmarkCategory.cpp
com/mapswithme/maps/discovery/DiscoveryManager.cpp
com/mapswithme/maps/discovery/Locals.cpp
com/mapswithme/maps/DisplayedCategories.cpp

View file

@ -1,7 +1,6 @@
#include "com/mapswithme/maps/Framework.hpp"
#include "com/mapswithme/core/jni_helper.hpp"
#include "com/mapswithme/maps/UserMarkHelper.hpp"
#include "com/mapswithme/maps/bookmarks/data/BookmarkManager.hpp"
#include "com/mapswithme/opengl/androidoglcontextfactory.hpp"
#include "com/mapswithme/platform/Platform.hpp"
#include "com/mapswithme/util/NetworkPolicy.hpp"
@ -375,12 +374,12 @@ void Framework::RemoveLocalMaps()
void Framework::ReplaceBookmark(df::MarkID markId, BookmarkData & bm)
{
m_work.ReplaceBookmark(markId, ind.m_bookmarkIndex, bm);
m_work.GetBookmarkManager().GetEditSession().UpdateBookmark(markId, bm);
}
size_t Framework::ChangeBookmarkCategory(df::MarkID markId, df::MarkGroupID newCat)
void Framework::MoveBookmark(df::MarkID markId, df::MarkGroupID curCat, df::MarkGroupID newCat)
{
return m_work.MoveBookmark(markId, newCat);
m_work.GetBookmarkManager().GetEditSession().MoveBookmark(markId, curCat, newCat);
}
bool Framework::ShowMapForURL(string const & url)
@ -415,9 +414,9 @@ string Framework::GetOutdatedCountriesString()
return res;
}
void Framework::ShowTrack(int category, int track)
void Framework::ShowTrack(df::LineID track)
{
Track const * nTrack = NativeFramework()->GetBmCategory(category)->GetTrack(track);
Track const * nTrack = NativeFramework()->GetBookmarkManager().GetTrack(track);
NativeFramework()->ShowTrack(*nTrack);
}
@ -679,8 +678,7 @@ Java_com_mapswithme_maps_Framework_nativeGetNameAndAddress(JNIEnv * env, jclass
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_Framework_nativeClearApiPoints(JNIEnv * env, jclass clazz)
{
UserMarkNotificationGuard guard(frm()->GetBookmarkManager(), UserMark::Type::API);
guard.m_controller.Clear();
frm()->GetBookmarkManager().GetEditSession().ClearGroup(UserMark::Type::API);
}
JNIEXPORT jint JNICALL
@ -903,9 +901,9 @@ Java_com_mapswithme_maps_Framework_nativeGetScreenRectCenter(JNIEnv * env, jclas
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jint cat, jint track)
Java_com_mapswithme_maps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong track)
{
g_framework->ShowTrack(cat, track);
g_framework->ShowTrack(static_cast<df::LineID>(track));
}
JNIEXPORT jstring JNICALL
@ -1415,20 +1413,22 @@ JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_Framework_nativeDeleteBookmarkFromMapObject(JNIEnv * env, jclass)
{
place_page::Info & info = g_framework->GetPlacePageInfo();
auto const bac = info.GetBookmarkAndCategory();
BookmarkCategory * category = frm()->GetBmCategory(bac.m_categoryIndex);
frm()->ResetBookmarkInfo(*static_cast<Bookmark const *>(category->GetUserMark(bac.m_bookmarkIndex)), info);
bookmarks_helper::RemoveBookmark(bac.m_categoryIndex, bac.m_bookmarkIndex);
auto const bookmarkId = info.GetBookmarkId();
frm()->ResetBookmarkInfo(*frm()->GetBookmarkManager().GetBookmark(bookmarkId), info);
frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(bookmarkId);
// TODO(darina): Save to KML here
return usermark_helper::CreateMapObject(env, info);
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_Framework_nativeOnBookmarkCategoryChanged(JNIEnv * env, jclass, jint cat, jint bmk)
Java_com_mapswithme_maps_Framework_nativeOnBookmarkCategoryChanged(JNIEnv * env, jclass, jlong cat, jlong bmk)
{
place_page::Info & info = g_framework->GetPlacePageInfo();
ASSERT_GREATER_OR_EQUAL(bmk, 0, ());
ASSERT_GREATER_OR_EQUAL(cat, 0, ());
info.SetBac({static_cast<size_t>(bmk), static_cast<size_t>(cat)});
info.SetBookmarkCategoryId(static_cast<df::MarkGroupID>(cat));
info.SetBookmarkId(static_cast<df::MarkID>(bmk));
info.SetBookmarkCategoryName(frm()->GetBookmarkManager().GetCategoryName(static_cast<df::MarkGroupID>(cat)));
}
JNIEXPORT void JNICALL

View file

@ -139,7 +139,7 @@ namespace android
void Scale(m2::PointD const & centerPt, int targetZoom, bool animate);
void ReplaceBookmark(df::MarkID markId, BookmarkData & bm);
size_t ChangeBookmarkCategory(df::MarkID markId, df::MarkGroupID newCat);
void MoveBookmark(df::MarkID markId, df::MarkGroupID curCat, df::MarkGroupID newCat);
::Framework * NativeFramework();
@ -151,7 +151,7 @@ namespace android
std::string GetOutdatedCountriesString();
void ShowTrack(int category, int track);
void ShowTrack(df::LineID track);
void SetMyPositionModeListener(location::TMyPositionModeChanged const & fn);
location::EMyPositionMode GetMyPositionMode();

View file

@ -111,14 +111,14 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
if (info.IsBookmark())
{
// public Bookmark(@NonNull FeatureId featureId,
// @IntRange(from = 0) int categoryId, @IntRange(from = 0) int bookmarkId,
// @IntRange(from = 0) long categoryId, @IntRange(from = 0) long bookmarkId,
// String title, @Nullable String secondaryTitle, @Nullable String objectTitle,
// @Nullable Banner[] banners, boolean reachableByTaxi,
// @Nullable String bookingSearchUrl, @Nullable LocalAdInfo localAdInfo,
// @Nullable RoutePointInfo routePointInfo)
static jmethodID const ctorId =
jni::GetConstructorID(env, g_bookmarkClazz,
"(Lcom/mapswithme/maps/bookmarks/data/FeatureId;IILjava/lang/String;"
"(Lcom/mapswithme/maps/bookmarks/data/FeatureId;JJLjava/lang/String;"
"Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;"
"[Lcom/mapswithme/maps/ads/Banner;[ILjava/lang/String;"
"Lcom/mapswithme/maps/ads/LocalAdInfo;"
@ -127,8 +127,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
static jmethodID const featureCtorId =
jni::GetConstructorID(env, g_featureIdClazz, "(Ljava/lang/String;JI)V");
auto const & bac = info.GetBookmarkAndCategory();
BookmarkCategory * cat = g_framework->NativeFramework()->GetBmCategory(bac.m_categoryIndex);
auto const bookmarkId = info.GetBookmarkId();
auto const categoryId = info.GetBookmarkCategoryId();
BookmarkData const & data = info.GetBookmarkData();
jni::TScopedLocalRef jMwmName(env, jni::ToJavaString(env, info.GetID().GetMwmName()));
jni::TScopedLocalRef jFeatureId(
@ -142,8 +142,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
jni::TScopedLocalRef jBookingSearchUrl(env, jni::ToJavaString(env, info.GetBookingSearchUrl()));
jobject mapObject = env->NewObject(
g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast<jint>(bac.m_categoryIndex),
static_cast<jint>(bac.m_bookmarkIndex), jTitle.get(), jSecondaryTitle.get(), jSubtitle.get(),
g_bookmarkClazz, ctorId, jFeatureId.get(), static_cast<jlong>(categoryId),
static_cast<jlong>(bookmarkId), jTitle.get(), jSecondaryTitle.get(), jSubtitle.get(),
jAddress.get(), jbanners.get(), jTaxiTypes.get(), jBookingSearchUrl.get(),
localAdInfo.get(), routingPointInfo.get(), info.IsPreviewExtended(), info.ShouldShowUGC(),
info.CanBeRated(), info.CanBeReviewed(), jratings.get());

View file

@ -7,11 +7,10 @@ namespace
{
::Framework * frm() { return g_framework->NativeFramework(); }
Bookmark const * getBookmark(jint c, jlong b)
Bookmark const * getBookmark(jlong bokmarkId)
{
BookmarkCategory const * pCat = frm()->GetBmCategory(c);
ASSERT(pCat, ("Category not found", c));
Bookmark const * pBmk = static_cast<Bookmark const *>(pCat->GetUserMark(b));
Bookmark const * pBmk = frm()->GetBookmarkManager().GetBookmark(static_cast<df::MarkID>(bokmarkId));
ASSERT(pBmk, ("Bookmark not found, id", bokmarkId));
return pBmk;
}
}
@ -20,65 +19,66 @@ extern "C"
{
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetName(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
JNIEnv * env, jobject thiz, jlong bmk)
{
return jni::ToJavaString(env, getBookmark(cat, bmk)->GetName());
return jni::ToJavaString(env, getBookmark(bmk)->GetName());
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetBookmarkDescription(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
JNIEnv * env, jobject thiz, jlong bmk)
{
return jni::ToJavaString(env, getBookmark(cat, bmk)->GetDescription());
return jni::ToJavaString(env, getBookmark(bmk)->GetDescription());
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetIcon(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
JNIEnv * env, jobject thiz, jlong bmk)
{
return jni::ToJavaString(env, getBookmark(cat, bmk)->GetType());
return jni::ToJavaString(env, getBookmark(bmk)->GetType());
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeSetBookmarkParams(
JNIEnv * env, jobject thiz, jint cat, jlong bmk,
JNIEnv * env, jobject thiz, jlong bmk,
jstring name, jstring type, jstring descr)
{
Bookmark const * p = getBookmark(cat, bmk);
Bookmark const * p = getBookmark(bmk);
// initialize new bookmark
BookmarkData bm(jni::ToNativeString(env, name), jni::ToNativeString(env, type));
bm.SetDescription(descr ? jni::ToNativeString(env, descr)
: p->GetDescription());
g_framework->ReplaceBookmark(BookmarkAndCategory(bmk, cat), bm);
g_framework->ReplaceBookmark(static_cast<df::MarkID>(bmk), bm);
}
JNIEXPORT jint JNICALL
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeChangeCategory(
JNIEnv * env, jobject thiz, jint oldCat, jint newCat, jlong bmk)
JNIEnv * env, jobject thiz, jlong oldCat, jlong newCat, jlong bmk)
{
return g_framework->ChangeBookmarkCategory(BookmarkAndCategory(bmk, oldCat), newCat);
g_framework->MoveBookmark(static_cast<df::MarkID>(bmk), static_cast<df::MarkGroupID>(oldCat),
static_cast<df::MarkGroupID>(newCat));
}
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetXY(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
JNIEnv * env, jobject thiz, jlong bmk)
{
return jni::GetNewParcelablePointD(env, getBookmark(cat, bmk)->GetPivot());
return jni::GetNewParcelablePointD(env, getBookmark(bmk)->GetPivot());
}
JNIEXPORT jdouble JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeGetScale(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
JNIEnv * env, jobject thiz, jlong bmk)
{
return getBookmark(cat, bmk)->GetScale();
return getBookmark(bmk)->GetScale();
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_nativeEncode2Ge0Url(
JNIEnv * env, jobject thiz, jint cat, jlong bmk, jboolean addName)
JNIEnv * env, jobject thiz, jlong bmk, jboolean addName)
{
return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(cat, bmk), addName));
return jni::ToJavaString(env, frm()->CodeGe0url(getBookmark(bmk), addName));
}
} // extern "C"

View file

@ -1,121 +0,0 @@
#include "com/mapswithme/maps/Framework.hpp"
#include "com/mapswithme/maps/UserMarkHelper.hpp"
#include "com/mapswithme/core/jni_helper.hpp"
#include "map/place_page_info.hpp"
#include "platform/measurement_utils.hpp"
namespace
{
::Framework * frm() { return g_framework->NativeFramework(); }
BookmarkCategory * getBmCategory(jint c)
{
BookmarkCategory * pCat = frm()->GetBmCategory(c);
ASSERT(pCat, ("Category not found", c));
return pCat;
}
}
extern "C"
{
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeIsVisible(
JNIEnv * env, jobject thiz, jint id)
{
return getBmCategory(id)->IsVisible();
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeSetVisibility(
JNIEnv * env, jobject thiz, jint id, jboolean b)
{
BookmarkCategory * pCat = getBmCategory(id);
pCat->SetIsVisible(b);
pCat->NotifyChanges();
pCat->SaveToKMLFile();
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeSetName(
JNIEnv * env, jobject thiz, jint id, jstring n)
{
BookmarkCategory * pCat = getBmCategory(id);
pCat->SetName(jni::ToNativeString(env, n));
pCat->SaveToKMLFile();
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetName(
JNIEnv * env, jobject thiz, jint id)
{
return jni::ToJavaString(env, getBmCategory(id)->GetName());
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetSize(
JNIEnv * env, jobject thiz, jint id)
{
BookmarkCategory * category = getBmCategory(id);
return category->GetUserMarkCount() + category->GetTracksCount();
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetBookmarksCount(
JNIEnv * env, jobject thiz, jint id)
{
return getBmCategory(id)->GetUserMarkCount();
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetTracksCount(
JNIEnv * env, jobject thiz, jint id)
{
return getBmCategory(id)->GetTracksCount();
}
// TODO(AlexZ): Get rid of UserMarks completely in UI code.
// TODO(yunikkk): Refactor java code to get all necessary info without Bookmark wrapper, and without hierarchy.
// If bookmark information is needed in the BookmarkManager, it does not relate in any way to Place Page info
// and should be passed separately via simple name string and lat lon to calculate a distance.
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetBookmark(
JNIEnv * env, jobject thiz, jint catId, jint bmkId)
{
BookmarkCategory * category = getBmCategory(catId);
place_page::Info info;
frm()->FillBookmarkInfo(*static_cast<Bookmark const *>(category->GetUserMark(bmkId)),
{static_cast<size_t>(bmkId), static_cast<size_t>(catId)}, info);
return usermark_helper::CreateMapObject(env, info);
}
static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; }
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkCategory_nativeGetTrack(
JNIEnv * env, jobject thiz, jint id, jint bmkId, jclass trackClazz)
{
// Track(int trackId, int categoryId, String name, String lengthString, int color)
static jmethodID const cId = jni::GetConstructorID(env, trackClazz,
"(IILjava/lang/String;Ljava/lang/String;I)V");
BookmarkCategory * category = getBmCategory(id);
Track const * nTrack = category->GetTrack(bmkId);
ASSERT(nTrack, ("Track must not be null with index:)", bmkId));
std::string formattedLength;
measurement_utils::FormatDistance(nTrack->GetLengthMeters(), formattedLength);
dp::Color nColor = nTrack->GetColor(0);
jint androidColor = shift(nColor.GetAlpha(), 24) +
shift(nColor.GetRed(), 16) +
shift(nColor.GetGreen(), 8) +
nColor.GetBlue();
return env->NewObject(trackClazz, cId,
bmkId, id, jni::ToJavaString(env, nTrack->GetName()),
jni::ToJavaString(env, formattedLength), androidColor);
}
} // extern "C"

View file

@ -1,5 +1,3 @@
#include "BookmarkManager.hpp"
#include "com/mapswithme/core/jni_helper.hpp"
#include "com/mapswithme/maps/Framework.hpp"
#include "com/mapswithme/maps/UserMarkHelper.hpp"
@ -83,30 +81,15 @@ void OnAsyncLoadingFileError(JNIEnv * env, std::string const & fileName, bool is
}
} // namespace
namespace bookmarks_helper
{
void RemoveBookmark(int cat, int bmk)
{
BookmarkCategory * pCat = frm()->GetBmCategory(cat);
if (pCat)
{
pCat->DeleteUserMark(bmk);
pCat->NotifyChanges();
pCat->SaveToKMLFile();
}
}
} // namespace bookmarks_helper
extern "C"
{
using namespace jni;
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeShowBookmarkOnMap(
JNIEnv * env, jobject thiz, jint c, jint b)
JNIEnv * env, jobject thiz, jlong bmkId)
{
BookmarkAndCategory bnc = BookmarkAndCategory(b, c);
frm()->ShowBookmark(bnc);
frm()->ShowBookmark(static_cast<df::MarkID>(bmkId));
}
JNIEXPORT void JNICALL
@ -126,51 +109,71 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeLoadBookmarks(JNIE
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoriesCount(JNIEnv * env, jobject thiz)
{
return frm()->GetBmCategoriesCount();
return frm()->GetBookmarkManager().GetBmGroupsIdList().size();
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryPositionById(
JNIEnv * env, jobject thiz, jlong catId)
{
auto & ids = frm()->GetBookmarkManager().GetBmGroupsIdList();
jint position = 0;
while (position < ids.size() && ids[position] != catId)
++position;
return position;
}
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryIdByPosition(
JNIEnv * env, jobject thiz, jint position)
{
auto & ids = frm()->GetBookmarkManager().GetBmGroupsIdList();
// TODO(darina): use kInvalidCategoryId
return position < ids.size() ? static_cast<jlong>(ids[position]) : 0;
}
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeCreateCategory(
JNIEnv * env, jobject thiz, jstring name)
{
return frm()->AddCategory(ToNativeString(env, name));
return static_cast<jlong>(frm()->GetBookmarkManager().CreateBookmarkCategory(ToNativeString(env, name)));
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteCategory(
JNIEnv * env, jobject thiz, jint index)
JNIEnv * env, jobject thiz, jlong catId)
{
return frm()->DeleteBmCategory(index);
auto const categoryId = static_cast<df::MarkGroupID>(catId);
return static_cast<jboolean>(frm()->GetBookmarkManager().GetEditSession().DeleteBmCategory(categoryId));
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jint cat, jint bmk)
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteBookmark(JNIEnv *, jobject, jint cat, jint bmkId)
{
bookmarks_helper::RemoveBookmark(cat, bmk);
// TODO(darina): verify
//bookmarks_helper::RemoveBookmark(cat, bmk);
frm()->GetBookmarkManager().GetEditSession().DeleteBookmark(static_cast<df::MarkID>(bmkId));
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeDeleteTrack(
JNIEnv * env, jobject thiz, jint cat, jint trk)
JNIEnv * env, jobject thiz, jlong trkId)
{
BookmarkCategory * pCat = frm()->GetBmCategory(cat);
if (pCat)
{
pCat->DeleteTrack(trk);
pCat->NotifyChanges();
pCat->SaveToKMLFile();
}
frm()->GetBookmarkManager().GetEditSession().DeleteTrack(static_cast<df::LineID>(trkId));
// TODO(darina):
//pCat->SaveToKMLFile();
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSaveToKmzFile(
JNIEnv * env, jobject thiz, jint catID, jstring tmpPath)
JNIEnv * env, jobject thiz, jlong catId, jstring tmpPath)
{
BookmarkCategory * pCat = frm()->GetBmCategory(catID);
if (pCat)
auto const categoryId = static_cast<df::MarkGroupID>(catId);
if (frm()->GetBookmarkManager().HasBmCategory(categoryId))
{
std::string const name = pCat->GetName();
if (CreateZipFromPathDeflatedAndDefaultCompression(pCat->GetFileName(), ToNativeString(env, tmpPath) + name + ".kmz"))
std::string const name = frm()->GetBookmarkManager().GetCategoryName(categoryId);
std::string const fileName = frm()->GetBookmarkManager().GetCategoryFileName(categoryId);
if (CreateZipFromPathDeflatedAndDefaultCompression(fileName, ToNativeString(env, tmpPath) + name + ".kmz"))
return ToJavaString(env, name);
}
@ -181,33 +184,32 @@ JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeAddBookmarkToLastEditedCategory(
JNIEnv * env, jobject thiz, jstring name, double lat, double lon)
{
BookmarkManager & bmMng = frm()->GetBookmarkManager();
m2::PointD const glbPoint(MercatorBounds::FromLatLon(lat, lon));
::Framework * f = frm();
BookmarkData bmkData(ToNativeString(env, name), f->LastEditedBMType());
size_t const lastEditedCategory = f->LastEditedBMCategory();
size_t const createdBookmarkIndex = f->AddBookmark(lastEditedCategory, glbPoint, bmkData);
BookmarkData bmkData(ToNativeString(env, name), frm()->LastEditedBMType());
auto const lastEditedCategory = frm()->LastEditedBMCategory();
auto const * createdBookmark = bmMng.GetEditSession().CreateBookmark(glbPoint, bmkData, lastEditedCategory);
place_page::Info & info = g_framework->GetPlacePageInfo();
BookmarkCategory * category = f->GetBmCategory(lastEditedCategory);
f->FillBookmarkInfo(*static_cast<Bookmark const *>(category->GetUserMark(createdBookmarkIndex)),
{static_cast<size_t>(createdBookmarkIndex),
static_cast<size_t>(lastEditedCategory)}, info);
frm()->FillBookmarkInfo(*createdBookmark, info);
return usermark_helper::CreateMapObject(env, info);
}
JNIEXPORT jint JNICALL
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetLastEditedCategory(
JNIEnv * env, jobject thiz)
{
return frm()->LastEditedBMCategory();
return static_cast<jlong>(frm()->LastEditedBMCategory());
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGenerateUniqueFileName(JNIEnv * env, jclass thiz, jstring jBaseName)
{
std::string baseName = ToNativeString(env, jBaseName);
std::string bookmarkFileName = BookmarkCategory::GenerateUniqueFileName(GetPlatform().SettingsDir(), baseName);
std::string bookmarkFileName = BookmarkManager::GenerateUniqueFileName(GetPlatform().SettingsDir(), baseName);
return ToJavaString(env, bookmarkFileName);
}
@ -230,4 +232,139 @@ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsAsyncBookmarksLo
return static_cast<jboolean>(frm()->GetBookmarkManager().IsAsyncLoadingInProgress());
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsVisible(
JNIEnv * env, jobject thiz, jlong catId)
{
return static_cast<jboolean>(frm()->GetBookmarkManager().IsVisible(static_cast<df::MarkGroupID>(catId)));
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetVisibility(
JNIEnv * env, jobject thiz, jlong catId, jboolean isVisible)
{
frm()->GetBookmarkManager().GetEditSession().SetIsVisible(static_cast<df::MarkGroupID>(catId), isVisible);
// TODO(darina):
//pCat->SaveToKMLFile();
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCategoryName(
JNIEnv * env, jobject thiz, jlong catId, jstring name)
{
frm()->GetBookmarkManager().SetCategoryName(static_cast<df::MarkGroupID>(catId),
jni::ToNativeString(env, name));
// TODO(darina):
//pCat->SaveToKMLFile();
}
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetCategoryName(
JNIEnv * env, jobject thiz, jlong catId)
{
return ToJavaString(env, frm()->GetBookmarkManager().GetCategoryName(static_cast<df::MarkGroupID>(catId)));
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmarksCount(
JNIEnv * env, jobject thiz, jlong catId)
{
return frm()->GetBookmarkManager().GetUserMarkIds(static_cast<df::MarkGroupID>(catId)).size();
}
JNIEXPORT jint JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTracksCount(
JNIEnv * env, jobject thiz, jlong catId)
{
return frm()->GetBookmarkManager().GetTrackIds(static_cast<df::MarkGroupID>(catId)).size();
}
// TODO(AlexZ): Get rid of UserMarks completely in UI code.
// TODO(yunikkk): Refactor java code to get all necessary info without Bookmark wrapper, and without hierarchy.
// If bookmark information is needed in the BookmarkManager, it does not relate in any way to Place Page info
// and should be passed separately via simple name string and lat lon to calculate a distance.
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmark(
JNIEnv * env, jobject thiz, jlong bmkId)
{
auto const * mark = frm()->GetBookmarkManager().GetBookmark(static_cast<df::MarkID>(bmkId));
place_page::Info info;
frm()->FillBookmarkInfo(*mark, info);
return usermark_helper::CreateMapObject(env, info);
}
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetBookmarkIdByPosition(
JNIEnv * env, jobject thiz, jlong catId, jint positionInCategory)
{
auto & ids = frm()->GetBookmarkManager().GetUserMarkIds(static_cast<df::MarkGroupID>(catId));
// TODO(darina): use kInvalidMarkId
if (positionInCategory >= ids.size())
return 0;
auto it = ids.begin();
std::advance(it, positionInCategory);
return static_cast<jlong>(*it);
}
static uint32_t shift(uint32_t v, uint8_t bitCount) { return v << bitCount; }
JNIEXPORT jobject JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTrack(
JNIEnv * env, jobject thiz, jlong trackId, jclass trackClazz)
{
// Track(int trackId, int categoryId, String name, String lengthString, int color)
static jmethodID const cId = jni::GetConstructorID(env, trackClazz,
"(IILjava/lang/String;Ljava/lang/String;I)V");
auto const * nTrack = frm()->GetBookmarkManager().GetTrack(static_cast<df::LineID>(trackId));
ASSERT(nTrack, ("Track must not be null with id:)", trackId));
std::string formattedLength;
measurement_utils::FormatDistance(nTrack->GetLengthMeters(), formattedLength);
dp::Color nColor = nTrack->GetColor(0);
jint androidColor = shift(nColor.GetAlpha(), 24) +
shift(nColor.GetRed(), 16) +
shift(nColor.GetGreen(), 8) +
nColor.GetBlue();
return env->NewObject(trackClazz, cId,
trackId, nTrack->GetGroupId(), jni::ToJavaString(env, nTrack->GetName()),
jni::ToJavaString(env, formattedLength), androidColor);
}
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetTrackIdByPosition(
JNIEnv * env, jobject thiz, jlong catId, jint positionInCategory)
{
auto & ids = frm()->GetBookmarkManager().GetTrackIds(static_cast<df::MarkGroupID>(catId));
// TODO(darina): use kInvalidMarkId
if (positionInCategory >= ids.size())
return 0;
auto it = ids.begin();
std::advance(it, positionInCategory);
return static_cast<jlong>(*it);
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeSetCloudEnabled(
JNIEnv * env, jobject thiz, jboolean enabled)
{
frm()->GetBookmarkManager().SetCloudEnabled(enabled);
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeIsCloudEnabled(
JNIEnv * env, jobject thiz)
{
return static_cast<jboolean>(frm()->GetBookmarkManager().IsCloudEnabled());
}
JNIEXPORT jlong JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_nativeGetLastSynchronizationTimestamp(
JNIEnv * env, jobject thiz)
{
return static_cast<jlong>(frm()->GetBookmarkManager().GetLastSynchronizationTimestamp());
}
} // extern "C"

View file

@ -1,7 +0,0 @@
#pragma once
namespace bookmarks_helper
{
void RemoveBookmark(int cat, int bmk);
} // namespace bookmarks_helper

View file

@ -799,7 +799,7 @@ public class DownloadResourcesLegacyActivity extends BaseMwmFragmentActivity
if (path != null)
{
LOGGER.d(TAG, "Loading bookmarks file from: " + path);
BookmarkManager.nativeLoadKmzFile(path, isTemporaryFile);
BookmarkManager.loadKmzFile(path, isTemporaryFile);
}
else
LOGGER.w(TAG, "Can't get bookmarks file from URI: " + mData);

View file

@ -170,7 +170,7 @@ public class Framework
nativeLogLocalAdsEvent(type, lat, lon, accuracy);
}
public static native void nativeShowTrackRect(int category, int track);
public static native void nativeShowTrackRect(long track);
public static native int nativeGetDrawScale();
@ -345,7 +345,7 @@ public class Framework
public static native MapObject nativeDeleteBookmarkFromMapObject();
// TODO remove that hack after bookmarks will be refactored completely
public static native void nativeOnBookmarkCategoryChanged(int cat, int bmk);
public static native void nativeOnBookmarkCategoryChanged(long cat, long bmk);
public static native void nativeZoomToPoint(double lat, double lon, int zoom, boolean animate);

View file

@ -2368,10 +2368,10 @@ public class MwmActivity extends BaseMwmFragmentActivity
{
private static final long serialVersionUID = 1L;
final int mCategoryId;
final int mId;
final long mCategoryId;
final long mId;
BaseUserMarkTask(int categoryId, int id)
BaseUserMarkTask(long categoryId, long id)
{
mCategoryId = categoryId;
mId = id;
@ -2380,7 +2380,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
public static class ShowBookmarkTask extends BaseUserMarkTask
{
public ShowBookmarkTask(int categoryId, int bookmarkId)
public ShowBookmarkTask(long categoryId, long bookmarkId)
{
super(categoryId, bookmarkId);
}
@ -2388,14 +2388,14 @@ public class MwmActivity extends BaseMwmFragmentActivity
@Override
public boolean run(MwmActivity target)
{
BookmarkManager.INSTANCE.nativeShowBookmarkOnMap(mCategoryId, mId);
BookmarkManager.INSTANCE.showBookmarkOnMap(mId);
return true;
}
}
public static class ShowTrackTask extends BaseUserMarkTask
{
public ShowTrackTask(int categoryId, int trackId)
public ShowTrackTask(long categoryId, long trackId)
{
super(categoryId, trackId);
}
@ -2403,7 +2403,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
@Override
public boolean run(MwmActivity target)
{
Framework.nativeShowTrackRect(mCategoryId, mId);
Framework.nativeShowTrackRect(mId);
return true;
}
}

View file

@ -270,7 +270,7 @@ public class MwmApplication extends Application
MapManager.nativeSubscribe(mStorageCallbacks);
initNativeStrings();
BookmarkManager.nativeLoadBookmarks();
BookmarkManager.loadBookmarks();
TtsPlayer.INSTANCE.init(this);
ThemeSwitcher.restart(false);
LocationHelper.INSTANCE.initialize();

View file

@ -4,7 +4,6 @@ import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
public abstract class BaseBookmarkCategoryAdapter<V extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<V>
@ -26,11 +25,11 @@ public abstract class BaseBookmarkCategoryAdapter<V extends RecyclerView.ViewHol
@Override
public int getItemCount()
{
return BookmarkManager.INSTANCE.nativeGetCategoriesCount();
return BookmarkManager.INSTANCE.getCategoriesCount();
}
public BookmarkCategory getItem(int position)
public long getItem(int position)
{
return BookmarkManager.INSTANCE.getCategory(position);
return BookmarkManager.INSTANCE.getCategoryIdByPosition(position);
}
}

View file

@ -12,7 +12,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.Bookmark;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.widget.recycler.RecyclerClickListener;
import com.mapswithme.maps.widget.recycler.RecyclerLongClickListener;
@ -83,15 +83,16 @@ public class BookmarkCategoriesAdapter extends BaseBookmarkCategoryAdapter<Bookm
if (getItemViewType(position) == TYPE_HELP)
return;
final BookmarkCategory set = getItem(position);
holder.name.setText(set.getName());
holder.size.setText(String.valueOf(set.getSize()));
holder.setVisibilityState(set.isVisible());
final BookmarkManager bmManager = BookmarkManager.INSTANCE;
final long catId = getItem(position);
holder.name.setText(bmManager.getCategoryName(catId));
holder.size.setText(String.valueOf(bmManager.getCategorySize(catId)));
holder.setVisibilityState(bmManager.isVisible(catId));
holder.visibilityMarker.setOnClickListener(
v ->
{
BookmarkManager.INSTANCE.toggleCategoryVisibility(holder.getAdapterPosition());
holder.setVisibilityState(set.isVisible());
BookmarkManager.INSTANCE.toggleCategoryVisibility(catId);
holder.setVisibilityState(bmManager.isVisible(catId));
});
}

View file

@ -13,8 +13,8 @@ import android.view.View;
import com.mapswithme.maps.R;
import com.mapswithme.maps.auth.Authorizer;
import com.mapswithme.maps.base.BaseMwmRecyclerFragment;
import com.mapswithme.maps.bookmarks.data.Bookmark;
import com.mapswithme.maps.bookmarks.data.BookmarkBackupController;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.dialog.EditTextDialogFragment;
import com.mapswithme.maps.widget.PlaceholderView;
@ -32,7 +32,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
BookmarkManager.BookmarksLoadingListener,
Authorizer.Callback, BookmarkBackupController.BackupListener
{
private int mSelectedPosition;
private long mSelectedCatId;
@Nullable
private View mLoadingPlaceholder;
@ -89,7 +89,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
private void updateResultsPlaceholder()
{
boolean showLoadingPlaceholder = BookmarkManager.nativeIsAsyncBookmarksLoadingInProgress();
boolean showLoadingPlaceholder = BookmarkManager.isAsyncBookmarksLoadingInProgress();
boolean showPlaceHolder = !showLoadingPlaceholder &&
(getAdapter() == null || getAdapter().getItemCount() == 0);
if (getAdapter() != null)
@ -104,7 +104,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
{
if (mLoadingPlaceholder != null)
{
boolean showLoadingPlaceholder = BookmarkManager.nativeIsAsyncBookmarksLoadingInProgress();
boolean showLoadingPlaceholder = BookmarkManager.isAsyncBookmarksLoadingInProgress();
if (getAdapter() != null && getAdapter().getItemCount() != 0)
showLoadingPlaceholder = false;
@ -145,8 +145,7 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
@Override
public void onSaveText(String text)
{
final BookmarkCategory category = BookmarkManager.INSTANCE.getCategory(mSelectedPosition);
category.setName(text);
BookmarkManager.INSTANCE.setCategoryName(mSelectedCatId, text);
if (getAdapter() != null)
getAdapter().notifyDataSetChanged();
}
@ -157,24 +156,24 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
switch (item.getItemId())
{
case R.id.set_show:
BookmarkManager.INSTANCE.toggleCategoryVisibility(mSelectedPosition);
BookmarkManager.INSTANCE.toggleCategoryVisibility(mSelectedCatId);
if (getAdapter() != null)
getAdapter().notifyDataSetChanged();
break;
case R.id.set_share:
SharingHelper.shareBookmarksCategory(getActivity(), mSelectedPosition);
SharingHelper.shareBookmarksCategory(getActivity(), mSelectedCatId);
break;
case R.id.set_delete:
BookmarkManager.INSTANCE.nativeDeleteCategory(mSelectedPosition);
BookmarkManager.INSTANCE.deleteCategory(mSelectedCatId);
if (getAdapter() != null)
getAdapter().notifyDataSetChanged();
break;
case R.id.set_edit:
EditTextDialogFragment.show(getString(R.string.bookmark_set_name),
BookmarkManager.INSTANCE.getCategory(mSelectedPosition).getName(),
BookmarkManager.INSTANCE.getCategoryName(mSelectedCatId),
getString(R.string.rename), getString(R.string.cancel), this);
break;
}
@ -185,17 +184,19 @@ public class BookmarkCategoriesFragment extends BaseMwmRecyclerFragment
@Override
public void onLongItemClick(View v, int position)
{
mSelectedPosition = position;
final BookmarkManager bmManager = BookmarkManager.INSTANCE;
mSelectedCatId = bmManager.getCategoryIdByPosition(position);
BookmarkCategory category = BookmarkManager.INSTANCE.getCategory(mSelectedPosition);
BottomSheetHelper.Builder bs = BottomSheetHelper.create(getActivity(), category.getName())
final String name = bmManager.getCategoryName(mSelectedCatId);
BottomSheetHelper.Builder bs = BottomSheetHelper.create(getActivity(), name)
.sheet(R.menu.menu_bookmark_categories)
.listener(this);
MenuItem show = bs.getMenu().getItem(0);
show.setIcon(category.isVisible() ? R.drawable.ic_hide
: R.drawable.ic_show);
show.setTitle(category.isVisible() ? R.string.hide
: R.string.show);
final boolean isVisible = bmManager.isVisible(mSelectedCatId);
show.setIcon(isVisible ? R.drawable.ic_hide
: R.drawable.ic_show);
show.setTitle(isVisible ? R.string.hide
: R.string.show);
bs.tint().show();
}

View file

@ -15,7 +15,7 @@ import java.util.List;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.Bookmark;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.bookmarks.data.DistanceAndAzimut;
import com.mapswithme.maps.bookmarks.data.Track;
import com.mapswithme.maps.location.LocationHelper;
@ -26,7 +26,7 @@ import com.mapswithme.util.Graphics;
public class BookmarkListAdapter extends BaseAdapter
{
private final Activity mActivity;
private final BookmarkCategory mCategory;
private final long mCategoryId;
// view types
static final int TYPE_TRACK = 0;
@ -45,10 +45,10 @@ public class BookmarkListAdapter extends BaseAdapter
}
};
public BookmarkListAdapter(Activity activity, BookmarkCategory cat)
public BookmarkListAdapter(Activity activity, long catId)
{
mActivity = activity;
mCategory = cat;
mCategoryId = catId;
}
public void startLocationUpdate()
@ -128,19 +128,26 @@ public class BookmarkListAdapter extends BaseAdapter
@Override
public int getCount()
{
return mCategory.getSize()
+ (isSectionEmpty(SECTION_TRACKS) ? 0 : 1)
+ (isSectionEmpty(SECTION_BMKS) ? 0 : 1);
return BookmarkManager.INSTANCE.getCategorySize(mCategoryId)
+ (isSectionEmpty(SECTION_TRACKS) ? 0 : 1)
+ (isSectionEmpty(SECTION_BMKS) ? 0 : 1);
}
@Override
public Object getItem(int position)
{
if (getItemViewType(position) == TYPE_TRACK)
return mCategory.nativeGetTrack(position - 1);
{
final long trackId = BookmarkManager.INSTANCE.getTrackIdByPosition(mCategoryId, position - 1);
return BookmarkManager.INSTANCE.getTrack(trackId);
}
else
return mCategory.getBookmark(position - 1
- (isSectionEmpty(SECTION_TRACKS) ? 0 : mCategory.getTracksCount() + 1));
{
final int pos = position - 1
- (isSectionEmpty(SECTION_TRACKS) ? 0 : BookmarkManager.INSTANCE.getTracksCount(mCategoryId) + 1);
final long bookmarkId = BookmarkManager.INSTANCE.getBookmarkIdByPosition(mCategoryId, pos);
return BookmarkManager.INSTANCE.getBookmark(bookmarkId);
}
}
@Override
@ -228,7 +235,7 @@ public class BookmarkListAdapter extends BaseAdapter
if (isSectionEmpty(SECTION_BMKS))
return -1;
return mCategory.getTracksCount()
return BookmarkManager.INSTANCE.getTracksCount(mCategoryId)
+ (isSectionEmpty(SECTION_TRACKS) ? 0 : 1);
}
@ -253,9 +260,9 @@ public class BookmarkListAdapter extends BaseAdapter
private boolean isSectionEmpty(int section)
{
if (section == SECTION_TRACKS)
return mCategory.getTracksCount() == 0;
return BookmarkManager.INSTANCE.getTracksCount(mCategoryId) == 0;
if (section == SECTION_BMKS)
return mCategory.getBookmarksCount() == 0;
return BookmarkManager.INSTANCE.getBookmarksCount(mCategoryId) == 0;
throw new IllegalArgumentException("There is no section with index " + section);
}

View file

@ -20,7 +20,6 @@ import com.mapswithme.maps.MwmActivity;
import com.mapswithme.maps.R;
import com.mapswithme.maps.base.BaseMwmListFragment;
import com.mapswithme.maps.bookmarks.data.Bookmark;
import com.mapswithme.maps.bookmarks.data.BookmarkCategory;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
import com.mapswithme.maps.bookmarks.data.Track;
import com.mapswithme.maps.widget.placepage.EditBookmarkFragment;
@ -35,8 +34,8 @@ public class BookmarksListFragment extends BaseMwmListFragment
{
public static final String TAG = BookmarksListFragment.class.getSimpleName();
private BookmarkCategory mCategory;
private int mCategoryIndex;
private int mCategoryPosition;
private long mCategoryId;
private int mSelectedPosition;
@Nullable
private BookmarkListAdapter mAdapter;
@ -46,8 +45,8 @@ public class BookmarksListFragment extends BaseMwmListFragment
public void onCreate(@Nullable Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
mCategoryIndex = getArguments().getInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, -1);
mCategory = BookmarkManager.INSTANCE.getCategory(mCategoryIndex);
mCategoryPosition = getArguments().getInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, 0);
mCategoryId = BookmarkManager.INSTANCE.getCategoryIdByPosition(mCategoryPosition);
}
@Override
@ -65,7 +64,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
setHasOptionsMenu(true);
ActionBar bar = ((AppCompatActivity) getActivity()).getSupportActionBar();
if (bar != null)
bar.setTitle(mCategory.getName());
bar.setTitle(BookmarkManager.INSTANCE.getCategoryName(mCategoryId));
}
@Override
@ -90,7 +89,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
private void initList()
{
mAdapter = new BookmarkListAdapter(getActivity(), mCategory);
mAdapter = new BookmarkListAdapter(getActivity(), mCategoryId);
mAdapter.startLocationUpdate();
setListAdapter(mAdapter);
getListView().setOnItemLongClickListener(this);
@ -110,7 +109,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
case BookmarkListAdapter.TYPE_BOOKMARK:
final Bookmark bookmark = (Bookmark) mAdapter.getItem(position);
i.putExtra(MwmActivity.EXTRA_TASK,
new MwmActivity.ShowBookmarkTask(mCategoryIndex, bookmark.getBookmarkId()));
new MwmActivity.ShowBookmarkTask(bookmark.getCategoryId(), bookmark.getBookmarkId()));
break;
case BookmarkListAdapter.TYPE_TRACK:
final Track track = (Track) mAdapter.getItem(position);
@ -161,7 +160,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
@Override
public boolean onMenuItemClick(MenuItem menuItem)
{
BookmarkManager.INSTANCE.deleteTrack((Track) item);
BookmarkManager.INSTANCE.deleteTrack(((Track) item).getTrackId());
mAdapter.notifyDataSetChanged();
return false;
}
@ -195,11 +194,11 @@ public class BookmarksListFragment extends BaseMwmListFragment
break;
case R.id.edit:
EditBookmarkFragment.editBookmark(mCategory.getId(), item.getBookmarkId(), getActivity(),
EditBookmarkFragment.editBookmark(mCategoryPosition, item.getBookmarkId(), getActivity(),
getChildFragmentManager(), new EditBookmarkFragment.EditBookmarkListener()
{
@Override
public void onBookmarkSaved(int categoryId, int bookmarkId)
public void onBookmarkSaved(long bookmarkId)
{
mAdapter.notifyDataSetChanged();
}
@ -207,7 +206,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
break;
case R.id.delete:
BookmarkManager.INSTANCE.deleteBookmark(item);
BookmarkManager.INSTANCE.deleteBookmark(item.getBookmarkId());
mAdapter.notifyDataSetChanged();
break;
}
@ -225,7 +224,7 @@ public class BookmarksListFragment extends BaseMwmListFragment
{
if (item.getItemId() == R.id.set_share)
{
SharingHelper.shareBookmarksCategory(getActivity(), mCategory.getId());
SharingHelper.shareBookmarksCategory(getActivity(), mCategoryId);
return true;
}

View file

@ -9,6 +9,7 @@ import android.widget.RadioButton;
import android.widget.TextView;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.BookmarkManager;
public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter<ChooseBookmarkCategoryAdapter.SingleChoiceHolder>
{
@ -19,7 +20,7 @@ public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter<C
public interface CategoryListener
{
void onCategorySet(int categoryId);
void onCategorySet(int categoryPosition);
void onCategoryCreate();
}
@ -72,7 +73,7 @@ public class ChooseBookmarkCategoryAdapter extends BaseBookmarkCategoryAdapter<C
{
if (holder.getItemViewType() == VIEW_TYPE_CATEGORY)
{
holder.name.setText(getItem(position).getName());
holder.name.setText(BookmarkManager.INSTANCE.getCategoryName(getItem(position)));
holder.checked.setChecked(mCheckedPosition == position);
}
}

View file

@ -11,6 +11,7 @@ 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;
@ -26,7 +27,7 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment
public interface Listener
{
void onCategoryChanged(int newCategoryId);
void onCategoryChanged(long newCategoryId);
}
private Listener mListener;
@ -52,8 +53,8 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment
super.onViewCreated(view, savedInstanceState);
final Bundle args = getArguments();
final int catId = args.getInt(CATEGORY_ID, 0);
mAdapter = new ChooseBookmarkCategoryAdapter(getActivity(), catId);
final int catPosition = args.getInt(CATEGORY_ID, 0);
mAdapter = new ChooseBookmarkCategoryAdapter(getActivity(), catPosition);
mAdapter.setListener(this);
mRecycler.setAdapter(mAdapter);
}
@ -81,21 +82,25 @@ public class ChooseBookmarkCategoryFragment extends BaseMwmDialogFragment
private void createCategory(String name)
{
final int category = BookmarkManager.INSTANCE.nativeCreateCategory(name);
mAdapter.chooseItem(category);
final long categoryId = BookmarkManager.INSTANCE.createCategory(name);
final int categoryPosition = BookmarkManager.INSTANCE.getCategoriesCount() - 1;
mAdapter.chooseItem(categoryPosition);
if (mListener != null)
mListener.onCategoryChanged(category);
mListener.onCategoryChanged(categoryId);
dismiss();
Statistics.INSTANCE.trackEvent(Statistics.EventName.BMK_GROUP_CREATED);
}
@Override
public void onCategorySet(int categoryId)
public void onCategorySet(int categoryPosition)
{
mAdapter.chooseItem(categoryId);
mAdapter.chooseItem(categoryPosition);
if (mListener != null)
{
final long categoryId = BookmarkManager.INSTANCE.getCategoryIdByPosition(categoryPosition);
mListener.onCategoryChanged(categoryId);
}
dismiss();
Statistics.INSTANCE.trackEvent(Statistics.EventName.BMK_GROUP_CHANGED);
}

View file

@ -19,13 +19,13 @@ import com.mapswithme.util.Constants;
public class Bookmark extends MapObject
{
private final Icon mIcon;
private int mCategoryId;
private int mBookmarkId;
private long mCategoryId;
private long mBookmarkId;
private double mMerX;
private double mMerY;
public Bookmark(@NonNull FeatureId featureId, @IntRange(from = 0) int categoryId,
@IntRange(from = 0) int bookmarkId, String title, @Nullable String secondaryTitle,
public Bookmark(@NonNull FeatureId featureId, @IntRange(from = 0) long categoryId,
@IntRange(from = 0) long bookmarkId, String title, @Nullable String secondaryTitle,
@Nullable String subtitle, @Nullable String address, @Nullable Banner[] banners,
@TaxiManager.TaxiType int[] reachableByTaxiTypes,
@Nullable String bookingSearchUrl, @Nullable LocalAdInfo localAdInfo,
@ -41,7 +41,7 @@ public class Bookmark extends MapObject
mBookmarkId = bookmarkId;
mIcon = getIconInternal();
final ParcelablePointD ll = nativeGetXY(mCategoryId, mBookmarkId);
final ParcelablePointD ll = nativeGetXY(mBookmarkId);
mMerX = ll.x;
mMerY = ll.y;
@ -58,8 +58,8 @@ public class Bookmark extends MapObject
public void writeToParcel(Parcel dest, int flags)
{
super.writeToParcel(dest, flags);
dest.writeInt(mCategoryId);
dest.writeInt(mBookmarkId);
dest.writeLong(mCategoryId);
dest.writeLong(mBookmarkId);
dest.writeString(mIcon.getType());
dest.writeDouble(mMerX);
dest.writeDouble(mMerY);
@ -71,8 +71,8 @@ public class Bookmark extends MapObject
protected Bookmark(@MapObjectType int type, Parcel source)
{
super(type, source);
mCategoryId = source.readInt();
mBookmarkId = source.readInt();
mCategoryId = source.readLong();
mBookmarkId = source.readLong();
mIcon = BookmarkManager.getIconByType(source.readString());
mMerX = source.readDouble();
mMerY = source.readDouble();
@ -82,7 +82,7 @@ public class Bookmark extends MapObject
@Override
public double getScale()
{
return nativeGetScale(mCategoryId, mBookmarkId);
return nativeGetScale(mBookmarkId);
}
public DistanceAndAzimut getDistanceAndAzimuth(double cLat, double cLon, double north)
@ -92,7 +92,8 @@ public class Bookmark extends MapObject
private Icon getIconInternal()
{
return BookmarkManager.getIconByType((mCategoryId >= 0) ? nativeGetIcon(mCategoryId, mBookmarkId) : "");
// TODO(darina): fix check
return BookmarkManager.getIconByType((mCategoryId >= 0) ? nativeGetIcon(mBookmarkId) : "");
}
public Icon getIcon()
@ -109,21 +110,15 @@ public class Bookmark extends MapObject
public String getCategoryName()
{
return getCategory().getName();
return BookmarkManager.INSTANCE.getCategoryName(mCategoryId);
}
@NonNull
private BookmarkCategory getCategory()
{
return BookmarkManager.INSTANCE.getCategory(mCategoryId);
}
public void setCategoryId(@IntRange(from = 0) int catId)
public void setCategoryId(@IntRange(from = 0) long catId)
{
if (catId == mCategoryId)
return;
mBookmarkId = nativeChangeCategory(mCategoryId, catId, mBookmarkId);
nativeChangeCategory(mCategoryId, catId, mBookmarkId);
mCategoryId = catId;
}
@ -134,29 +129,29 @@ public class Bookmark extends MapObject
if (!title.equals(getTitle()) || icon != mIcon || !description.equals(getBookmarkDescription()))
{
nativeSetBookmarkParams(mCategoryId, mBookmarkId, title, icon != null ? icon.getType() : "",
nativeSetBookmarkParams(mBookmarkId, title, icon != null ? icon.getType() : "",
description);
}
}
public int getCategoryId()
public long getCategoryId()
{
return mCategoryId;
}
public int getBookmarkId()
public long getBookmarkId()
{
return mBookmarkId;
}
public String getBookmarkDescription()
{
return nativeGetBookmarkDescription(mCategoryId, mBookmarkId);
return nativeGetBookmarkDescription(mBookmarkId);
}
public String getGe0Url(boolean addName)
{
return nativeEncode2Ge0Url(mCategoryId, mBookmarkId, addName);
return nativeEncode2Ge0Url(mBookmarkId, addName);
}
public String getHttpGe0Url(boolean addName)
@ -164,17 +159,17 @@ public class Bookmark extends MapObject
return getGe0Url(addName).replaceFirst(Constants.Url.GE0_PREFIX, Constants.Url.HTTP_GE0_PREFIX);
}
private native String nativeGetBookmarkDescription(@IntRange(from = 0) int categoryId, @IntRange(from = 0) long bookmarkId);
private native String nativeGetBookmarkDescription(@IntRange(from = 0) long bookmarkId);
private native ParcelablePointD nativeGetXY(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId);
private native ParcelablePointD nativeGetXY(@IntRange(from = 0) long bookmarkId);
private native String nativeGetIcon(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId);
private native String nativeGetIcon(@IntRange(from = 0) long bookmarkId);
private native double nativeGetScale(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId);
private native double nativeGetScale(@IntRange(from = 0) long bookmarkId);
private native String nativeEncode2Ge0Url(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId, boolean addName);
private native String nativeEncode2Ge0Url(@IntRange(from = 0) long bookmarkId, boolean addName);
private native void nativeSetBookmarkParams(@IntRange(from = 0) int catId, @IntRange(from = 0) long bookmarkId, String name, String type, String descr);
private native void nativeSetBookmarkParams(@IntRange(from = 0) long bookmarkId, String name, String type, String descr);
private native int nativeChangeCategory(@IntRange(from = 0) int oldCatId, @IntRange(from = 0) int newCatId, @IntRange(from = 0) long bookmarkId);
private native void nativeChangeCategory(@IntRange(from = 0) long oldCatId, @IntRange(from = 0) long newCatId, @IntRange(from = 0) long bookmarkId);
}

View file

@ -1,84 +0,0 @@
package com.mapswithme.maps.bookmarks.data;
public class BookmarkCategory
{
private final int mId;
private String mName;
BookmarkCategory(int id)
{
mId = id;
}
public int getId()
{
return mId;
}
public String getName()
{
return (mName == null ? nativeGetName(mId) : mName);
}
public void setName(String name)
{
nativeSetName(mId, name);
mName = name;
}
public boolean isVisible()
{
return nativeIsVisible(mId);
}
public void setVisibility(boolean visible)
{
nativeSetVisibility(mId, visible);
}
/**
* @return total count - tracks + bookmarks
*/
public int getSize()
{
return nativeGetSize(mId);
}
public int getBookmarksCount()
{
return nativeGetBookmarksCount(mId);
}
public int getTracksCount()
{
return nativeGetTracksCount(mId);
}
public Bookmark getBookmark(int bookmarkId)
{
return nativeGetBookmark(mId, bookmarkId);
}
public Track nativeGetTrack(int trackId)
{
return nativeGetTrack(mId, trackId, Track.class);
}
private native int nativeGetBookmarksCount(int id);
private native int nativeGetTracksCount(int id);
private native int nativeGetSize(int id);
private native Bookmark nativeGetBookmark(int catId, int bmkId);
private native Track nativeGetTrack(int catId, int bmkId, Class<Track> trackClazz);
private native boolean nativeIsVisible(int id);
private native void nativeSetVisibility(int id, boolean visible);
private native String nativeGetName(int id);
private native void nativeSetName(int id, String n);
}

View file

@ -45,33 +45,10 @@ public enum BookmarkManager
return ICONS.get(0);
}
public void deleteBookmark(Bookmark bmk)
public void toggleCategoryVisibility(long catId)
{
nativeDeleteBookmark(bmk.getCategoryId(), bmk.getBookmarkId());
}
public void deleteTrack(Track track)
{
nativeDeleteTrack(track.getCategoryId(), track.getTrackId());
}
public @NonNull BookmarkCategory getCategory(int catId)
{
if (catId < nativeGetCategoriesCount())
return new BookmarkCategory(catId);
throw new IndexOutOfBoundsException("Invalid category ID!");
}
public void toggleCategoryVisibility(int catId)
{
BookmarkCategory category = getCategory(catId);
category.setVisibility(!category.isVisible());
}
public Bookmark getBookmark(int catId, int bmkId)
{
return getCategory(catId).getBookmark(bmkId);
boolean isVisible = isVisible(catId);
setVisibility(catId, !isVisible);
}
public Bookmark addNewBookmark(String name, double lat, double lon)
@ -124,39 +101,198 @@ public enum BookmarkManager
listener.onBookmarksFileLoaded(success);
}
public static native void nativeLoadBookmarks();
public boolean isVisible(long catId)
{
return nativeIsVisible(catId);
}
private native void nativeDeleteTrack(int catId, int trackId);
public void setVisibility(long catId, boolean visible)
{
nativeSetVisibility(catId, visible);
}
private native void nativeDeleteBookmark(int cat, int bmkId);
public String getCategoryName(long catId)
{
return nativeGetCategoryName(catId);
}
public native int nativeGetCategoriesCount();
public native boolean nativeDeleteCategory(int catId);
public void setCategoryName(long catId, String name)
{
nativeSetCategoryName(catId, name);
}
/**
* @return category Id
* @return total count - tracks + bookmarks
*/
public native int nativeCreateCategory(String name);
public int getCategorySize(long catId)
{
return nativeGetBookmarksCount(catId) + nativeGetTracksCount(catId);
}
public native void nativeShowBookmarkOnMap(int catId, int bmkId);
public int getCategoriesCount() { return nativeGetCategoriesCount(); }
public int getCategoryPositionById(long catId)
{
return nativeGetCategoryPositionById(catId);
}
public long getCategoryIdByPosition(int position)
{
return nativeGetCategoryIdByPosition(position);
}
public int getBookmarksCount(long catId)
{
return nativeGetBookmarksCount(catId);
}
public int getTracksCount(long catId)
{
return nativeGetTracksCount(catId);
}
public Bookmark getBookmark(long bmkId)
{
return nativeGetBookmark(bmkId);
}
public long getBookmarkIdByPosition(long catId, int positionInCategory)
{
return nativeGetBookmarkIdByPosition(catId, positionInCategory);
}
public Track getTrack(long trackId)
{
return nativeGetTrack(trackId, Track.class);
}
public long getTrackIdByPosition(long catId, int positionInCategory)
{
return nativeGetTrackIdByPosition(catId, positionInCategory);
}
public static void loadBookmarks() { nativeLoadBookmarks(); }
public void deleteCategory(long catId) { nativeDeleteCategory(catId); }
public void deleteTrack(long trackId)
{
nativeDeleteTrack(trackId);
}
public void deleteBookmark(long bmkId)
{
nativeDeleteBookmark(bmkId);
}
public long createCategory(String name) { return nativeCreateCategory(name); }
public void showBookmarkOnMap(long bmkId) { nativeShowBookmarkOnMap(bmkId); }
/**
* @return null, if wrong category is passed.
*/
public native @Nullable String nativeSaveToKmzFile(int catId, String tmpPath);
public @Nullable String saveToKmzFile(long catId, String tmpPath)
{
return nativeSaveToKmzFile(catId, tmpPath);
}
public native Bookmark nativeAddBookmarkToLastEditedCategory(String name, double lat, double lon);
public Bookmark addBookmarkToLastEditedCategory(String name, double lat, double lon)
{
return nativeAddBookmarkToLastEditedCategory(name, lat, lon);
}
public native int nativeGetLastEditedCategory();
public long getLastEditedCategory() { return nativeGetLastEditedCategory(); }
public static native String nativeGenerateUniqueFileName(String baseName);
public static String generateUniqueFileName(String baseName)
{
return nativeGenerateUniqueFileName(baseName);
}
public static native void nativeLoadKmzFile(@NonNull String path, boolean isTemporaryFile);
public void setCloudEnabled(boolean enabled) { nativeSetCloudEnabled(enabled); }
public static native String nativeFormatNewBookmarkName();
public boolean isCloudEnabled() { return nativeIsCloudEnabled(); }
public static native boolean nativeIsAsyncBookmarksLoadingInProgress();
public long getLastSynchronizationTimestamp() { return nativeGetLastSynchronizationTimestamp(); }
public static void loadKmzFile(@NonNull String path, boolean isTemporaryFile)
{
nativeLoadKmzFile(path, isTemporaryFile);
}
public static String formatNewBookmarkName()
{
return nativeFormatNewBookmarkName();
}
public static boolean isAsyncBookmarksLoadingInProgress()
{
return nativeIsAsyncBookmarksLoadingInProgress();
}
private native int nativeGetCategoriesCount();
private native int nativeGetCategoryPositionById(long catId);
private native long nativeGetCategoryIdByPosition(int position);
private native int nativeGetBookmarksCount(long catId);
private native int nativeGetTracksCount(long catId);
private native Bookmark nativeGetBookmark(long bmkId);
private native long nativeGetBookmarkIdByPosition(long catId, int position);
private native Track nativeGetTrack(long trackId, Class<Track> trackClazz);
private native long nativeGetTrackIdByPosition(long catId, int position);
private native boolean nativeIsVisible(long catId);
private native void nativeSetVisibility(long catId, boolean visible);
private native String nativeGetCategoryName(long catId);
private native void nativeSetCategoryName(long catId, String n);
private static native void nativeLoadBookmarks();
private native boolean nativeDeleteCategory(long catId);
private native void nativeDeleteTrack(long trackId);
private native void nativeDeleteBookmark(long bmkId);
/**
* @return category Id
*/
private native long nativeCreateCategory(String name);
private native void nativeShowBookmarkOnMap(long bmkId);
/**
* @return null, if wrong category is passed.
*/
private native @Nullable String nativeSaveToKmzFile(long catId, String tmpPath);
private native Bookmark nativeAddBookmarkToLastEditedCategory(String name, double lat, double lon);
private native long nativeGetLastEditedCategory();
private native void nativeSetCloudEnabled(boolean enabled);
private native boolean nativeIsCloudEnabled();
private native long nativeGetLastSynchronizationTimestamp();
private static native String nativeGenerateUniqueFileName(String baseName);
private static native void nativeLoadKmzFile(@NonNull String path, boolean isTemporaryFile);
private static native String nativeFormatNewBookmarkName();
private static native boolean nativeIsAsyncBookmarksLoadingInProgress();
public interface BookmarksLoadingListener
{

View file

@ -2,13 +2,13 @@ package com.mapswithme.maps.bookmarks.data;
public class Track
{
private final int mTrackId;
private final int mCategoryId;
private final long mTrackId;
private final long mCategoryId;
private final String mName;
private final String mLengthString;
private final int mColor;
Track(int trackId, int categoryId, String name, String lengthString, int color)
Track(long trackId, long categoryId, String name, String lengthString, int color)
{
mTrackId = trackId;
mCategoryId = categoryId;
@ -23,7 +23,7 @@ public class Track
public int getColor() { return mColor; }
public int getTrackId() { return mTrackId; }
public long getTrackId() { return mTrackId; }
public int getCategoryId() { return mCategoryId; }
public long getCategoryId() { return mCategoryId; }
}

View file

@ -35,7 +35,8 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
private EditText mEtName;
private TextView mTvBookmarkGroup;
private ImageView mIvColor;
private int mCategoryId;
private int mCategoryPosition;
private long mCategoryId;
@Nullable
private Icon mIcon;
@Nullable
@ -45,16 +46,16 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
public interface EditBookmarkListener
{
void onBookmarkSaved(int categoryId, int bookmarkId);
void onBookmarkSaved(long bookmarkId);
}
public static void editBookmark(int categoryId, int bookmarkId, @NonNull Context context,
public static void editBookmark(int categoryPosition, long bookmarkId, @NonNull Context context,
@NonNull FragmentManager manager,
@Nullable EditBookmarkListener listener)
{
final Bundle args = new Bundle();
args.putInt(EXTRA_CATEGORY_ID, categoryId);
args.putInt(EXTRA_BOOKMARK_ID, bookmarkId);
args.putInt(EXTRA_CATEGORY_ID, categoryPosition);
args.putLong(EXTRA_BOOKMARK_ID, bookmarkId);
String name = EditBookmarkFragment.class.getName();
final EditBookmarkFragment fragment = (EditBookmarkFragment) Fragment.instantiate(context, name, args);
fragment.setArguments(args);
@ -81,9 +82,10 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
public void onViewCreated(@NonNull View view, Bundle savedInstanceState)
{
final Bundle args = getArguments();
mCategoryId = args.getInt(EXTRA_CATEGORY_ID);
int bookmarkId = args.getInt(EXTRA_BOOKMARK_ID);
mBookmark = BookmarkManager.INSTANCE.getBookmark(mCategoryId, bookmarkId);
mCategoryPosition = args.getInt(EXTRA_CATEGORY_ID);
mCategoryId = BookmarkManager.INSTANCE.getCategoryIdByPosition(mCategoryPosition);
long bookmarkId = args.getLong(EXTRA_BOOKMARK_ID);
mBookmark = BookmarkManager.INSTANCE.getBookmark(bookmarkId);
mIcon = mBookmark.getIcon();
mEtName = (EditText) view.findViewById(R.id.et__bookmark_name);
mEtDescription = (EditText) view.findViewById(R.id.et__description);
@ -135,7 +137,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
mBookmark.setParams(mEtName.getText().toString(), mIcon, mEtDescription.getText().toString());
if (mListener != null)
mListener.onBookmarkSaved(mBookmark.getCategoryId(), mBookmark.getBookmarkId());
mListener.onBookmarkSaved(mBookmark.getBookmarkId());
dismiss();
}
@ -159,7 +161,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
return;
final Bundle args = new Bundle();
args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mCategoryId);
args.putInt(ChooseBookmarkCategoryFragment.CATEGORY_ID, mCategoryPosition);
final ChooseBookmarkCategoryFragment fragment = (ChooseBookmarkCategoryFragment) Fragment.instantiate(getActivity(), ChooseBookmarkCategoryFragment.class.getName(), args);
fragment.show(getChildFragmentManager(), null);
}
@ -202,7 +204,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
private void refreshCategory()
{
mTvBookmarkGroup.setText(BookmarkManager.INSTANCE.getCategory(mCategoryId).getName());
mTvBookmarkGroup.setText(BookmarkManager.INSTANCE.getCategoryName(mCategoryId));
}
private void refreshBookmark()
@ -220,7 +222,7 @@ public class EditBookmarkFragment extends BaseMwmDialogFragment implements View.
}
@Override
public void onCategoryChanged(int newCategoryId)
public void onCategoryChanged(long newCategoryId)
{
mCategoryId = newCategoryId;
refreshCategory();

View file

@ -1829,7 +1829,8 @@ public class PlacePageView extends RelativeLayout
return;
}
Bookmark bookmark = (Bookmark) mMapObject;
EditBookmarkFragment.editBookmark(bookmark.getCategoryId(), bookmark.getBookmarkId(),
final int categoryPosition = BookmarkManager.INSTANCE.getCategoryPositionById(bookmark.getCategoryId());
EditBookmarkFragment.editBookmark(categoryPosition, bookmark.getBookmarkId(),
getActivity(), getActivity().getSupportFragmentManager(),
this);
break;
@ -1890,7 +1891,7 @@ public class PlacePageView extends RelativeLayout
if (MapObject.isOfType(MapObject.BOOKMARK, mapObject))
setMapObject(Framework.nativeDeleteBookmarkFromMapObject(), true, null);
else
setMapObject(BookmarkManager.INSTANCE.addNewBookmark(BookmarkManager.nativeFormatNewBookmarkName(),
setMapObject(BookmarkManager.INSTANCE.addNewBookmark(BookmarkManager.formatNewBookmarkName(),
mapObject.getLat(), mapObject.getLon()), true, null);
post(new Runnable()
{
@ -2092,9 +2093,9 @@ public class PlacePageView extends RelativeLayout
}
@Override
public void onBookmarkSaved(int categoryId, int bookmarkId)
public void onBookmarkSaved(long bookmarkId)
{
setMapObject(BookmarkManager.INSTANCE.getBookmark(categoryId, bookmarkId), true, null);
setMapObject(BookmarkManager.INSTANCE.getBookmark(bookmarkId), true, null);
}
public boolean isBannerTouched(@NonNull MotionEvent event)

View file

@ -213,10 +213,10 @@ public final class SharingHelper
save();
}
public static void shareBookmarksCategory(Activity context, int id)
public static void shareBookmarksCategory(Activity context, long id)
{
final String path = MwmApplication.get().getTempPath() + "/";
String name = BookmarkManager.INSTANCE.nativeSaveToKmzFile(id, path);
String name = BookmarkManager.INSTANCE.saveToKmzFile(id, path);
if (name == null)
return;