Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2013-03-23 21:09:58 +0400
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:52:18 +0300
commit6d78df1366ac2a46838c84fbb5ef99ffc32b8faa (patch)
treeadba972238d0a9add1a6abf462cca820e286fef5 /android
parentdde0d34deb03e1ebaccd1da2a239e40e5cb06532 (diff)
[android] Refactoring of bookmarks routine according to new API.
Diffstat (limited to 'android')
-rw-r--r--android/jni/com/mapswithme/maps/Framework.cpp37
-rw-r--r--android/jni/com/mapswithme/maps/Framework.hpp6
-rw-r--r--android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp64
-rw-r--r--android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp30
-rw-r--r--android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryActivity.java9
-rw-r--r--android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java90
-rw-r--r--android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java72
7 files changed, 71 insertions, 237 deletions
diff --git a/android/jni/com/mapswithme/maps/Framework.cpp b/android/jni/com/mapswithme/maps/Framework.cpp
index 86bc9f2de8..0787c14523 100644
--- a/android/jni/com/mapswithme/maps/Framework.cpp
+++ b/android/jni/com/mapswithme/maps/Framework.cpp
@@ -51,7 +51,6 @@ namespace android
m_sensors[0].SetCount(measurementsCount);
m_sensors[1].SetCount(measurementsCount);
- m_bmCategory = m_work.GetStringsBundle().GetString("my_places");
m_bmType = "placemark-red";
for (size_t i = 0; i < ARRAY_SIZE(m_images); ++i)
@@ -637,7 +636,7 @@ namespace android
{
// add new bookmark
Bookmark bm(balloon->glbPivot(), balloon->bookmarkName(), m_bmType);
- bac = AddBookmark(bm);
+ bac = AddBookmark(m_work.LastEditedCategory(), bm);
}
}
@@ -688,19 +687,35 @@ namespace android
return m_bmBaloon.get();
}
- BookmarkAndCategory Framework::AddBookmark(Bookmark & bm)
+ BookmarkAndCategory Framework::AddBookmark(size_t cat, Bookmark & bm)
{
- BookmarkAndCategory const bac = m_work.AddBookmarkEx(m_bmCategory, bm);
- BookmarkCategory * cat = m_work.GetBmCategory(bac.first);
- cat->SetVisible(true);
- cat->SaveToKMLFile();
- return bac;
+ size_t const ind = m_work.AddBookmark(cat, bm);
+
+ BookmarkCategory * pCat = m_work.GetBmCategory(cat);
+ pCat->SetVisible(true);
+ pCat->SaveToKMLFile();
+
+ return BookmarkAndCategory(cat, ind);
}
- void Framework::AddBookmark(string const & category, Bookmark & bm)
+ void Framework::ReplaceBookmark(BookmarkAndCategory const & ind, Bookmark & bm)
{
- m_bmCategory = category;
m_bmType = bm.GetType();
- (void) AddBookmark(bm);
+
+ BookmarkCategory * pCat = m_work.GetBmCategory(ind.first);
+ pCat->ReplaceBookmark(ind.second, bm);
+ pCat->SaveToKMLFile();
+ }
+
+ size_t Framework::ChangeBookmarkCategory(BookmarkAndCategory const & ind, size_t newCat)
+ {
+ BookmarkCategory * pOld = m_work.GetBmCategory(ind.first);
+
+ Bookmark bmk(*(pOld->GetBookmark(ind.second)));
+
+ pOld->DeleteBookmark(ind.second);
+ pOld->SaveToKMLFile();
+
+ return AddBookmark(newCat, bmk).second;
}
}
diff --git a/android/jni/com/mapswithme/maps/Framework.hpp b/android/jni/com/mapswithme/maps/Framework.hpp
index 4951e72932..9edc5f39ff 100644
--- a/android/jni/com/mapswithme/maps/Framework.hpp
+++ b/android/jni/com/mapswithme/maps/Framework.hpp
@@ -66,13 +66,11 @@ namespace android
void ActivatePopupWithAddressInfo(m2::PointD const & pos, ::Framework::AddressInfo const & addrInfo);
shared_ptr<BookmarkBalloon> m_bmBaloon;
- string m_bmCategory;
string m_bmType;
void OnBalloonClick(gui::Element * e);
void CreateBookmarkBalloon();
BookmarkBalloon * GetBookmarkBalloon();
- BookmarkAndCategory AddBookmark(Bookmark & bm);
string m_searchQuery;
@@ -137,7 +135,9 @@ namespace android
void RemoveBalloonClickListener();
void DeactivatePopup();
- void AddBookmark(string const & category, Bookmark & bm);
+ BookmarkAndCategory AddBookmark(size_t category, Bookmark & bm);
+ void ReplaceBookmark(BookmarkAndCategory const & ind, Bookmark & bm);
+ size_t ChangeBookmarkCategory(BookmarkAndCategory const & ind, size_t newCat);
::Framework * NativeFramework();
};
diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp
index 8a4e4327fd..3480fba8d6 100644
--- a/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp
+++ b/android/jni/com/mapswithme/maps/bookmarks/data/Bookmark.cpp
@@ -1,7 +1,7 @@
#include "../../Framework.hpp"
#include "../../../core/jni_helper.hpp"
-#include "../../../../../../../base/logging.hpp"
+
namespace
{
@@ -39,24 +39,6 @@ extern "C"
return jni::ToJavaString(env, getBookmark(cat, bmk)->GetDescription());
}
- JNIEXPORT void JNICALL
- Java_com_mapswithme_maps_bookmarks_data_Bookmark_setBookmarkDescription(
- JNIEnv * env, jobject thiz, jint cat, jlong bmk, jstring newDescr)
- {
- // do edit bookmark's description without AddBookmark routine
- Bookmark * pBM = const_cast<Bookmark *>(getBookmark(cat, bmk));
- pBM->SetDescription(jni::ToNativeString(env, newDescr));
- frm()->GetBmCategory(cat)->SaveToKMLFile();
- }
-
- JNIEXPORT jstring JNICALL
- Java_com_mapswithme_maps_bookmarks_data_Bookmark_getNamePos(
- JNIEnv * env, jobject thiz, jint px, jint py)
- {
- BookmarkAndCategory bc = frm()->GetBookmark(m2::PointD(px, py));
- return jni::ToJavaString(env, getBookmark(bc.first, bc.second)->GetName());
- }
-
JNIEXPORT jstring JNICALL
Java_com_mapswithme_maps_bookmarks_data_Bookmark_getIcon(
JNIEnv * env, jobject thiz, jint cat, jlong bmk)
@@ -64,40 +46,28 @@ extern "C"
return jni::ToJavaString(env, getBookmark(cat, bmk)->GetType());
}
- JNIEXPORT jstring JNICALL
- Java_com_mapswithme_maps_bookmarks_data_Bookmark_getIconPos(
- JNIEnv * env, jobject thiz, jint px, jint py)
- {
- BookmarkAndCategory bc = frm()->GetBookmark(m2::PointD(px, py));
- return jni::ToJavaString(env, getBookmark(bc.first, bc.second)->GetType());
- }
-
JNIEXPORT void JNICALL
- Java_com_mapswithme_maps_bookmarks_data_Bookmark_changeBookmark(
- JNIEnv * env, jobject thiz, jdouble x, jdouble y,
- jstring cat, jstring name, jstring type, jstring descr)
+ Java_com_mapswithme_maps_bookmarks_data_Bookmark_setBookmarkParams(
+ JNIEnv * env, jobject thiz, jint cat, jlong bmk,
+ jstring name, jstring type, jstring descr)
{
- // get existing bookmark under point
- BookmarkAndCategory bac = frm()->GetBookmark(frm()->GtoP(m2::PointD(x, y)));
+ Bookmark const * p = getBookmark(cat, bmk);
// initialize new bookmark
- Bookmark bm(m2::PointD(x, y), jni::ToNativeString(env, name), jni::ToNativeString(env, type));
+ Bookmark bm(p->GetOrg(), jni::ToNativeString(env, name), jni::ToNativeString(env, type));
if (descr != 0)
bm.SetDescription(jni::ToNativeString(env, descr));
- else if (IsValid(bac))
- bm.SetDescription(getBookmark(bac.first, bac.second)->GetDescription());
-
- // add new bookmark
- string const category = jni::ToNativeString(env, cat);
- g_framework->AddBookmark(category, bm);
-
- // save old bookmark's category
- if (bac.first > -1)
- {
- BookmarkCategory * pCat = frm()->GetBmCategory(bac.first);
- if (pCat->GetName() != category)
- pCat->SaveToKMLFile();
- }
+ else
+ bm.SetDescription(p->GetDescription());
+
+ g_framework->ReplaceBookmark(BookmarkAndCategory(cat, bmk), bm);
+ }
+
+ JNIEXPORT jint JNICALL
+ Java_com_mapswithme_maps_bookmarks_data_Bookmark_changeCategory(
+ JNIEnv * env, jobject thiz, jint oldCat, jint newCat, jlong bmk)
+ {
+ return g_framework->ChangeBookmarkCategory(BookmarkAndCategory(oldCat, bmk), newCat);
}
JNIEXPORT jobject JNICALL
diff --git a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
index 6b2ad4adf9..14174a41a2 100644
--- a/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
+++ b/android/jni/com/mapswithme/maps/bookmarks/data/BookmarkManager.cpp
@@ -12,28 +12,6 @@ namespace
extern "C"
{
- JNIEXPORT jobject JNICALL
- Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_getPOI(
- JNIEnv * env, jobject thiz, jdouble px, jdouble py)
- {
- Framework::AddressInfo addrInfo;
- m2::PointD pxPivot;
- if (frm()->GetVisiblePOI(m2::PointD(px, py), pxPivot, addrInfo))
- return jni::GetNewAddressInfo(env, addrInfo, pxPivot);
- else
- return 0;
- }
-
- JNIEXPORT jobject JNICALL
- Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_getAddressInfo(
- JNIEnv * env, jobject thiz, jdouble px, jdouble py)
- {
- m2::PointD point(px, py);
- Framework::AddressInfo addrInfo;
- frm()->GetAddressInfo(point, addrInfo);
- return jni::GetNewAddressInfo(env, addrInfo, point);
- }
-
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_showBookmarkOnMap(
JNIEnv * env, jobject thiz, jint c, jint b)
@@ -54,11 +32,11 @@ extern "C"
return frm()->GetBmCategoriesCount();
}
- JNIEXPORT jboolean JNICALL
- Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_isCategoryExist(
- JNIEnv * env, jobject thiz, jstring name)
+ JNIEXPORT jint JNICALL
+ Java_com_mapswithme_maps_bookmarks_data_BookmarkManager_createCategory(
+ JNIEnv * env, jobject thiz, jstring name)
{
- return frm()->IsCategoryExist(jni::ToNativeString(env, name));
+ return frm()->AddCategory(jni::ToNativeString(env, name));
}
JNIEXPORT jboolean JNICALL
diff --git a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryActivity.java b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryActivity.java
index a88b6f0875..884579c1e4 100644
--- a/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryActivity.java
+++ b/android/src/com/mapswithme/maps/bookmarks/ChooseBookmarkCategoryActivity.java
@@ -20,7 +20,7 @@ import android.widget.ImageButton;
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.ParcelablePoint;
public class ChooseBookmarkCategoryActivity extends AbstractBookmarkCategoryActivity
@@ -42,10 +42,11 @@ public class ChooseBookmarkCategoryActivity extends AbstractBookmarkCategoryActi
{
m_handler.switchToAddButton();
mAdapter.chooseItem(position);
+
Point cab = ((ParcelablePoint)getIntent().getParcelableExtra(BookmarkActivity.PIN)).getPoint();
- BookmarkCategory cat = mManager.getCategoryById(position);
- mManager.getBookmark(cab.x, cab.y).setCategory(cat.getName(), position);
- getIntent().putExtra(BookmarkActivity.PIN, new ParcelablePoint(position, cat.getSize()-1));
+ Bookmark bmk = mManager.getBookmark(cab.x, cab.y);
+ bmk.setCategoryId(position);
+ getIntent().putExtra(BookmarkActivity.PIN, new ParcelablePoint(position, bmk.getBookmarkId()));
}
});
setListAdapter(mAdapter = new ChooseBookmarkCategoryAdapter(this, getIntent().getIntExtra(BookmarkActivity.PIN_SET, -1)));
diff --git a/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java b/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java
index 8d79772468..c35279ddc6 100644
--- a/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java
+++ b/android/src/com/mapswithme/maps/bookmarks/data/Bookmark.java
@@ -1,8 +1,6 @@
package com.mapswithme.maps.bookmarks.data;
import android.content.Context;
-import android.graphics.Point;
-import android.util.Log;
import com.mapswithme.maps.R;
@@ -16,45 +14,13 @@ public class Bookmark
private double mMercatorX = Double.NaN;
private double mMercatorY = Double.NaN;
- //private String mPreviewString = "";
- //private final boolean mIsPreviewBookmark;
-
- /*
- // For bookmark preview
- Bookmark(Context context, ParcelablePointD pos, String name)
- {
- mIsPreviewBookmark = true;
- mContext = context.getApplicationContext();
- mPosition = pos;
- mPreviewString = name;
- getXY(mPosition);
- }
- */
-
- Bookmark(Context context, ParcelablePointD position, int nextCat, int b)
- {
- //mIsPreviewBookmark = false;
- mContext = context.getApplicationContext();
- mPosition = position;
- getXY(position);
- mBookmark = b;
- mIcon = getIconInternal();
- String name = getName();
- mCategoryId = nextCat;
- changeBookmark(getCategoryName(), name, mIcon.getType());
- Point bookmark = BookmarkManager.getBookmark(position.x, position.y);
- mBookmark = bookmark.y;
- Log.d("Bookmark indices", " " + mCategoryId+ " "+ mBookmark);
- }
-
Bookmark(Context context, int c, int b)
{
- //mIsPreviewBookmark = false;
mContext = context.getApplicationContext();
mCategoryId = c;
mBookmark = b;
- mIcon = getIconInternal();// BookmarkManager.getBookmarkManager(mContext).getIconByName(nGetIcon(c, b));
+ mIcon = getIconInternal();
getXY();
}
@@ -79,14 +45,13 @@ public class Bookmark
private static native ParcelablePointD g2p(double x, double y);
private static native ParcelablePointD p2g(double px, double py);
private native ParcelablePointD getXY(int c, long b);
- private native String getNamePos(double px, double py);
private native String getName(int c, long b);
- private native String getIconPos(double px, double py);
private native String getIcon(int c, long b);
- private native void changeBookmark(double x, double y, String category, String name, String type, String descr);
+
+ private native void setBookmarkParams(int c, long b, String name, String type, String descr);
+ private native int changeCategory(int oldCat, int newCat, long bmk);
+
private native String getBookmarkDescription(int categoryId, long bookmark);
- private native void setBookmarkDescription(int categoryId, long bookmark, String newDescr);
- private native String getBookmarkDescriptionPos(int categoryId, int bookmark);
void getXY()
{
@@ -151,29 +116,13 @@ public class Bookmark
}
}
- public void setIcon(Icon icon)
- {
- mIcon = icon;
- changeBookmark(getCategoryName(), getName(), icon.getType());
- }
-
- public void setName(String name)
- {
- changeBookmark(getCategoryName(), name, mIcon.getType());
- }
-
public void setCategoryId(int catId)
{
- setCategory(BookmarkManager.getBookmarkManager(mContext).getCategoryById(catId).getName(), catId);
- }
-
- public void setCategory(String category, int catId)
- {
- changeBookmark(category, getName(), mIcon.getType());
-
- /// @todo This is not correct, but acceptable in current usage (object is not using later).
- mCategoryId = catId;
- mBookmark = BookmarkManager.getBookmarkManager(mContext).getCategoryById(mCategoryId).getSize() - 1;
+ if (catId != mCategoryId)
+ {
+ mBookmark = changeCategory(mCategoryId, catId, mBookmark);
+ mCategoryId = catId;
+ }
}
public void setParams(String name, Icon icon, String descr)
@@ -182,12 +131,7 @@ public class Bookmark
icon = mIcon;
if (!name.equals(getName()) || icon != mIcon || !descr.equals(getBookmarkDescription()))
- changeBookmark(mMercatorX, mMercatorY, getCategoryName(), name, icon.getType(), descr);
- }
-
- private void changeBookmark(String category, String name, String type)
- {
- changeBookmark(mMercatorX, mMercatorY, category, name, type, null);
+ setBookmarkParams(mCategoryId, mBookmark, name, icon.getType(), descr);
}
public int getCategoryId()
@@ -202,18 +146,6 @@ public class Bookmark
public String getBookmarkDescription()
{
- //if (!mIsPreviewBookmark)
- //{
return getBookmarkDescription(mCategoryId, mBookmark);
- //}
- //else
- //{
- // return mPreviewString;
- //}
- }
-
- public void setDescription(String n)
- {
- setBookmarkDescription(mCategoryId, mBookmark, n);
}
}
diff --git a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java
index b7ef899f7c..c4353e5609 100644
--- a/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java
+++ b/android/src/com/mapswithme/maps/bookmarks/data/BookmarkManager.java
@@ -6,8 +6,6 @@ import java.util.List;
import android.content.Context;
import android.graphics.Point;
-import com.mapswithme.util.Utils;
-
public class BookmarkManager
{
private static BookmarkManager sManager;
@@ -73,29 +71,6 @@ public class BookmarkManager
return new ArrayList<Icon>(mIconManager.getAll().values());
}
- public Bookmark getBookmark(ParcelablePointD p)
- {
- Point bookmark = getBookmark(p.x, p.y);
- if (bookmark.x == -1 && bookmark.y == -1)
- {
- final int index = getCategoriesCount() - 1;
- return new Bookmark(mContext, p, index, index >= 0 ? getCategoryById(index).getSize() : 0);
- }
- else
- {
- return new Bookmark(mContext, new BookmarkCategory(mContext, bookmark.x).getId(), bookmark.y);
- }
- }
-
- public ParcelablePoint findBookmark(ParcelablePointD p)
- {
- Point bookmark = getBookmark(p.x, p.y);
- if (bookmark.x >= 0 && bookmark.y >= 0)
- return new ParcelablePoint(bookmark);
- else
- return null;
- }
-
public static native Point getBookmark(double px, double py);
public Bookmark getBookmark(int cat, int bmk)
@@ -103,58 +78,21 @@ public class BookmarkManager
return new Bookmark(mContext, cat, bmk);
}
- private String getUniqueName(String newName)
- {
- String name = newName;
-
- /// @todo Probably adding "-copy" suffix is better here (Mac OS style).
- int i = 0;
- while (isCategoryExist(name))
- name = newName + " " + (++i);
-
- return name;
- }
+ private native int createCategory(String name);
public int createCategory(Bookmark bookmark, String newName)
{
- bookmark.setCategory(getUniqueName(newName), getCategoriesCount());
- return getCategoriesCount() - 1;
+ final int cat = createCategory(newName);
+ bookmark.setCategoryId(cat);
+ return cat;
}
public void setCategoryName(BookmarkCategory cat, String newName)
{
- cat.setName(getUniqueName(newName));
- }
-
- private native boolean isCategoryExist(String name);
-
- /*
- public Bookmark previewBookmark(AddressInfo info)
- {
- return new Bookmark(mContext, info.getPosition(), info.getBookmarkName(mContext));
+ cat.setName(newName);
}
- */
public native void showBookmarkOnMap(int c, int b);
- private native String getNameForPlace(double px, double py);
-
- public String getNameForPlace(ParcelablePointD p)
- {
- return Utils.toTitleCase(getNameForPlace(p.x,p.y));
- }
-
- public AddressInfo getPOI(ParcelablePointD px)
- {
- return getPOI(px.x, px.y);
- }
- private native AddressInfo getPOI(double px, double py);
-
- public AddressInfo getAddressInfo(ParcelablePointD px)
- {
- return getAddressInfo(px.x, px.y);
- }
- private native AddressInfo getAddressInfo(double px, double py);
-
public native String saveToKMZFile(int catID, String tmpPath);
}