forked from organicmaps/organicmaps
Merge pull request #5878 from alexzatsepin/MAPSME-4328-transliteration-in-PP
[android] Added transliteration in PP
This commit is contained in:
commit
60353ef637
9 changed files with 92 additions and 36 deletions
|
@ -36,26 +36,29 @@ jobject CreateBanner(JNIEnv * env, string const & id, jint type)
|
|||
}
|
||||
|
||||
jobject CreateMapObject(JNIEnv * env, int mapObjectType, string const & title,
|
||||
string const & subtitle, double lat, double lon, string const & address,
|
||||
Metadata const & metadata, string const & apiId, jobjectArray jbanners,
|
||||
bool isReachableByTaxi, string const & bookingSearchUrl)
|
||||
string const & secondaryTitle, string const & subtitle, double lat,
|
||||
double lon, string const & address, Metadata const & metadata,
|
||||
string const & apiId, jobjectArray jbanners, bool isReachableByTaxi,
|
||||
string const & bookingSearchUrl)
|
||||
{
|
||||
// public MapObject(@MapObjectType int mapObjectType, String title, String subtitle, double lat,
|
||||
// double lon, String address, String apiId, @NonNull Banner banner, boolean reachableByTaxi,
|
||||
// @Nullable String bookingSearchUrl)
|
||||
static jmethodID const ctorId =
|
||||
jni::GetConstructorID(env, g_mapObjectClazz,
|
||||
"(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;DDLjava/lang/"
|
||||
"(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;DDLjava/lang/"
|
||||
"String;[Lcom/mapswithme/maps/ads/Banner;ZLjava/lang/String;)V");
|
||||
|
||||
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, title));
|
||||
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, secondaryTitle));
|
||||
jni::TScopedLocalRef jSubtitle(env, jni::ToJavaString(env, subtitle));
|
||||
jni::TScopedLocalRef jAddress(env, jni::ToJavaString(env, address));
|
||||
jni::TScopedLocalRef jApiId(env, jni::ToJavaString(env, apiId));
|
||||
jni::TScopedLocalRef jBookingSearchUrl(env, jni::ToJavaString(env, bookingSearchUrl));
|
||||
jobject mapObject = env->NewObject(g_mapObjectClazz, ctorId, mapObjectType, jTitle.get(),
|
||||
jSubtitle.get(), jAddress.get(), lat, lon, jApiId.get(),
|
||||
jbanners, isReachableByTaxi, jBookingSearchUrl.get());
|
||||
jSecondaryTitle.get(), jSubtitle.get(), jAddress.get(), lat,
|
||||
lon, jApiId.get(), jbanners, isReachableByTaxi,
|
||||
jBookingSearchUrl.get());
|
||||
|
||||
InjectMetadata(env, g_mapObjectClazz, mapObject, metadata);
|
||||
return mapObject;
|
||||
|
@ -73,8 +76,8 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
|
|||
// String name, @Nullable String objectTitle, @NonNull Banner banner, boolean reachableByTaxi)
|
||||
static jmethodID const ctorId =
|
||||
jni::GetConstructorID(env, g_bookmarkClazz,
|
||||
"(IILjava/lang/String;Ljava/lang/String;[Lcom/mapswithme/maps/ads/"
|
||||
"Banner;ZLjava/lang/String;)V");
|
||||
"(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;"
|
||||
"[Lcom/mapswithme/maps/ads/Banner;ZLjava/lang/String;)V");
|
||||
|
||||
auto const & bac = info.GetBookmarkAndCategory();
|
||||
BookmarkCategory * cat = g_framework->NativeFramework()->GetBmCategory(bac.m_categoryIndex);
|
||||
|
@ -83,11 +86,12 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
|
|||
|
||||
jni::TScopedLocalRef jName(env, jni::ToJavaString(env, data.GetName()));
|
||||
jni::TScopedLocalRef jTitle(env, jni::ToJavaString(env, info.GetTitle()));
|
||||
jni::TScopedLocalRef jSecondaryTitle(env, jni::ToJavaString(env, info.GetSecondaryTitle()));
|
||||
jni::TScopedLocalRef jBookingSearchUrl(env, jni::ToJavaString(env, info.GetBookingSearchUrl()));
|
||||
jobject mapObject =
|
||||
env->NewObject(g_bookmarkClazz, ctorId, static_cast<jint>(info.m_bac.m_categoryIndex),
|
||||
static_cast<jint>(info.m_bac.m_bookmarkIndex), jName.get(), jTitle.get(),
|
||||
jbanners, info.IsReachableByTaxi(), jBookingSearchUrl.get());
|
||||
jSecondaryTitle.get(), jbanners, info.IsReachableByTaxi(), jBookingSearchUrl.get());
|
||||
if (info.IsFeature())
|
||||
InjectMetadata(env, g_mapObjectClazz, mapObject, info.GetMetadata());
|
||||
return mapObject;
|
||||
|
@ -100,17 +104,17 @@ jobject CreateMapObject(JNIEnv * env, place_page::Info const & info)
|
|||
// TODO(yunikkk): object can be POI + API + search result + bookmark simultaneously.
|
||||
// TODO(yunikkk): Should we pass localized strings here and in other methods as byte arrays?
|
||||
if (info.IsMyPosition())
|
||||
return CreateMapObject(env, kMyPosition, info.GetTitle(), info.GetSubtitle(), ll.lat, ll.lon,
|
||||
address.FormatAddress(), {}, "", jbanners, info.IsReachableByTaxi(),
|
||||
info.GetBookingSearchUrl());
|
||||
return CreateMapObject(env, kMyPosition, info.GetTitle(), info.GetSecondaryTitle(),
|
||||
info.GetSubtitle(), ll.lat, ll.lon, address.FormatAddress(), {}, "",
|
||||
jbanners, info.IsReachableByTaxi(), info.GetBookingSearchUrl());
|
||||
|
||||
if (info.HasApiUrl())
|
||||
return CreateMapObject(env, kApiPoint, info.GetTitle(), info.GetSubtitle(), ll.lat, ll.lon,
|
||||
address.FormatAddress(), info.GetMetadata(), info.GetApiUrl(), jbanners,
|
||||
info.IsReachableByTaxi(), info.GetBookingSearchUrl());
|
||||
return CreateMapObject(env, kApiPoint, info.GetTitle(), info.GetSecondaryTitle(), info.GetSubtitle(),
|
||||
ll.lat, ll.lon, address.FormatAddress(), info.GetMetadata(),
|
||||
info.GetApiUrl(), jbanners, info.IsReachableByTaxi(), info.GetBookingSearchUrl());
|
||||
|
||||
return CreateMapObject(env, kPoi, info.GetTitle(), info.GetSubtitle(), ll.lat, ll.lon,
|
||||
address.FormatAddress(),
|
||||
return CreateMapObject(env, kPoi, info.GetTitle(), info.GetSecondaryTitle(), info.GetSubtitle(),
|
||||
ll.lat, ll.lon, address.FormatAddress(),
|
||||
info.IsFeature() ? info.GetMetadata() : Metadata(), "", jbanners,
|
||||
info.IsReachableByTaxi(), info.GetBookingSearchUrl());
|
||||
}
|
||||
|
|
|
@ -35,12 +35,31 @@
|
|||
tools:ignore="UnusedAttribute"
|
||||
tools:text="Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv__secondary_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_marginTop="@dimen/margin_quarter"
|
||||
android:layout_marginEnd="@dimen/margin_base"
|
||||
android:layout_marginRight="@dimen/margin_base"
|
||||
android:layout_alignLeft="@id/tv__title"
|
||||
android:layout_alignStart="@id/tv__title"
|
||||
android:ellipsize="end"
|
||||
android:fontFamily="@string/robotoMedium"
|
||||
android:maxLines="@integer/pp_title_lines"
|
||||
android:textAppearance="@style/MwmTextAppearance.Body1"
|
||||
tools:background="#C0800000"
|
||||
tools:ignore="UnusedAttribute"
|
||||
tools:text="Secondary Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv__subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_below="@id/tv__secondary_title"
|
||||
android:layout_marginTop="@dimen/margin_quarter"
|
||||
android:layout_toEndOf="@id/downloader_status_frame"
|
||||
android:layout_toLeftOf="@+id/direction_frame"
|
||||
|
@ -59,7 +78,7 @@
|
|||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_below="@id/tv__secondary_title"
|
||||
android:background="?selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="@dimen/direction_frame_min_height"
|
||||
|
|
|
@ -39,12 +39,31 @@
|
|||
tools:ignore="UnusedAttribute"
|
||||
tools:text="Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv__secondary_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_marginTop="@dimen/margin_quarter"
|
||||
android:layout_marginEnd="@dimen/margin_base"
|
||||
android:layout_marginRight="@dimen/margin_base"
|
||||
android:layout_alignLeft="@id/tv__title"
|
||||
android:layout_alignStart="@id/tv__title"
|
||||
android:ellipsize="end"
|
||||
android:fontFamily="@string/robotoMedium"
|
||||
android:maxLines="@integer/pp_title_lines"
|
||||
android:textAppearance="@style/MwmTextAppearance.Body1"
|
||||
tools:background="#C0800000"
|
||||
tools:ignore="UnusedAttribute"
|
||||
tools:text="Secondary Title"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv__subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_below="@id/tv__secondary_title"
|
||||
android:layout_marginTop="@dimen/margin_quarter"
|
||||
android:layout_marginStart="@dimen/margin_base"
|
||||
android:layout_marginLeft="@dimen/margin_base"
|
||||
|
@ -67,7 +86,7 @@
|
|||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignWithParentIfMissing="true"
|
||||
android:layout_below="@id/tv__title"
|
||||
android:layout_below="@id/tv__secondary_title"
|
||||
android:background="?selectableItemBackground"
|
||||
android:gravity="center_vertical"
|
||||
android:minHeight="@dimen/direction_frame_min_height"
|
||||
|
|
|
@ -1396,9 +1396,9 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
RoutingController.get().setRouterType(data.mRouterType);
|
||||
final RoutePoint from = data.mPoints[0];
|
||||
final RoutePoint to = data.mPoints[1];
|
||||
RoutingController.get().prepare(new MapObject(MapObject.API_POINT, from.mName, "", "",
|
||||
RoutingController.get().prepare(new MapObject(MapObject.API_POINT, from.mName, "", "", "",
|
||||
from.mLat, from.mLon, "", null, false, ""),
|
||||
new MapObject(MapObject.API_POINT, to.mName, "", "",
|
||||
new MapObject(MapObject.API_POINT, to.mName, "", "", "",
|
||||
to.mLat, to.mLon, "", null, false, ""));
|
||||
return true;
|
||||
case ParsedUrlMwmRequest.RESULT_SEARCH:
|
||||
|
|
|
@ -24,10 +24,11 @@ public class Bookmark extends MapObject
|
|||
private final String mObjectTitle;
|
||||
|
||||
Bookmark(@IntRange(from = 0) int categoryId, @IntRange(from = 0) int bookmarkId, String title,
|
||||
@Nullable String objectTitle, @Nullable Banner[] banners, boolean reachableByTaxi,
|
||||
@Nullable String bookingSearchUrl)
|
||||
@Nullable String secondaryTitle, @Nullable String objectTitle, @Nullable Banner[] banners,
|
||||
boolean reachableByTaxi, @Nullable String bookingSearchUrl)
|
||||
{
|
||||
super(BOOKMARK, title, "", "", 0, 0, "", banners, reachableByTaxi, bookingSearchUrl);
|
||||
super(BOOKMARK, title, secondaryTitle, "", "", 0, 0, "", banners, reachableByTaxi,
|
||||
bookingSearchUrl);
|
||||
|
||||
mCategoryId = categoryId;
|
||||
mBookmarkId = bookmarkId;
|
||||
|
|
|
@ -33,6 +33,8 @@ public class MapObject implements Parcelable
|
|||
private final int mMapObjectType;
|
||||
|
||||
protected String mTitle;
|
||||
@Nullable
|
||||
private String mSecondaryTitle;
|
||||
private String mSubtitle;
|
||||
private double mLat;
|
||||
private double mLon;
|
||||
|
@ -45,20 +47,23 @@ public class MapObject implements Parcelable
|
|||
@Nullable
|
||||
private String mBookingSearchUrl;
|
||||
|
||||
public MapObject(@MapObjectType int mapObjectType, String title, String subtitle, String address,
|
||||
double lat, double lon, String apiId, @Nullable Banner[] banners,
|
||||
boolean reachableByTaxi, @Nullable String bookingSearchUrl)
|
||||
public MapObject(@MapObjectType int mapObjectType, String title, @Nullable String secondaryTitle,
|
||||
String subtitle, String address, double lat, double lon, String apiId,
|
||||
@Nullable Banner[] banners, boolean reachableByTaxi,
|
||||
@Nullable String bookingSearchUrl)
|
||||
{
|
||||
this(mapObjectType, title, subtitle, address, lat, lon, new Metadata(), apiId, banners,
|
||||
reachableByTaxi, bookingSearchUrl);
|
||||
this(mapObjectType, title, secondaryTitle, subtitle, address, lat, lon, new Metadata(),
|
||||
apiId, banners, reachableByTaxi, bookingSearchUrl);
|
||||
}
|
||||
|
||||
public MapObject(@MapObjectType int mapObjectType, String title, String subtitle, String address,
|
||||
double lat, double lon, Metadata metadata, String apiId, @Nullable Banner[] banners,
|
||||
boolean reachableByTaxi, @Nullable String bookingSearchUrl)
|
||||
public MapObject(@MapObjectType int mapObjectType, String title, @Nullable String secondaryTitle,
|
||||
String subtitle, String address, double lat, double lon, Metadata metadata,
|
||||
String apiId, @Nullable Banner[] banners, boolean reachableByTaxi,
|
||||
@Nullable String bookingSearchUrl)
|
||||
{
|
||||
mMapObjectType = mapObjectType;
|
||||
mTitle = title;
|
||||
mSecondaryTitle = secondaryTitle;
|
||||
mSubtitle = subtitle;
|
||||
mAddress = address;
|
||||
mLat = lat;
|
||||
|
@ -76,6 +81,7 @@ public class MapObject implements Parcelable
|
|||
//noinspection ResourceType
|
||||
this(source.readInt(), // MapObjectType
|
||||
source.readString(), // Title
|
||||
source.readString(), // SecondaryTitle
|
||||
source.readString(), // Subtitle
|
||||
source.readString(), // Address
|
||||
source.readDouble(), // Lat
|
||||
|
@ -132,6 +138,9 @@ public class MapObject implements Parcelable
|
|||
|
||||
public String getTitle() { return mTitle; }
|
||||
|
||||
@Nullable
|
||||
public String getSecondaryTitle() { return mSecondaryTitle; }
|
||||
|
||||
public String getSubtitle() { return mSubtitle; }
|
||||
|
||||
public double getLat() { return mLat; }
|
||||
|
@ -237,6 +246,7 @@ public class MapObject implements Parcelable
|
|||
dest.writeInt(mMapObjectType); // write map object type twice - first int is used to distinguish created object (MapObject or Bookmark)
|
||||
dest.writeInt(mMapObjectType);
|
||||
dest.writeString(mTitle);
|
||||
dest.writeString(mSecondaryTitle);
|
||||
dest.writeString(mSubtitle);
|
||||
dest.writeString(mAddress);
|
||||
dest.writeDouble(mLat);
|
||||
|
|
|
@ -218,7 +218,7 @@ public enum LocationHelper
|
|||
return null;
|
||||
|
||||
if (mMyPosition == null)
|
||||
mMyPosition = new MapObject(MapObject.MY_POSITION, "", "", "", mSavedLocation.getLatitude(),
|
||||
mMyPosition = new MapObject(MapObject.MY_POSITION, "", "", "", "", mSavedLocation.getLatitude(),
|
||||
mSavedLocation.getLongitude(), "", null, false, "");
|
||||
|
||||
return mMyPosition;
|
||||
|
|
|
@ -466,7 +466,7 @@ public class SearchFragment extends BaseMwmFragment
|
|||
if (mFromRoutePlan)
|
||||
{
|
||||
//noinspection ConstantConditions
|
||||
final MapObject point = new MapObject(MapObject.SEARCH, result.name,
|
||||
final MapObject point = new MapObject(MapObject.SEARCH, result.name, "",
|
||||
result.description.featureType, "", result.lat, result.lon, "", null, false, "");
|
||||
RoutingController.get().onPoiSelected(point);
|
||||
}
|
||||
|
|
|
@ -125,6 +125,7 @@ public class PlacePageView extends RelativeLayout
|
|||
private ViewGroup mPreview;
|
||||
private Toolbar mToolbar;
|
||||
private TextView mTvTitle;
|
||||
private TextView mTvSecondaryTitle;
|
||||
private TextView mTvSubtitle;
|
||||
private ArrowView mAvDirection;
|
||||
private TextView mTvDistance;
|
||||
|
@ -302,6 +303,7 @@ public class PlacePageView extends RelativeLayout
|
|||
|
||||
mPreview = (ViewGroup) findViewById(R.id.pp__preview);
|
||||
mTvTitle = (TextView) mPreview.findViewById(R.id.tv__title);
|
||||
mTvSecondaryTitle = (TextView) mPreview.findViewById(R.id.tv__secondary_title);
|
||||
mToolbar = (Toolbar) findViewById(R.id.toolbar);
|
||||
mTvSubtitle = (TextView) mPreview.findViewById(R.id.tv__subtitle);
|
||||
|
||||
|
@ -1151,6 +1153,7 @@ public class PlacePageView extends RelativeLayout
|
|||
private void refreshPreview(@NonNull MapObject mapObject)
|
||||
{
|
||||
UiUtils.setTextAndHideIfEmpty(mTvTitle, mapObject.getTitle());
|
||||
UiUtils.setTextAndHideIfEmpty(mTvSecondaryTitle, mapObject.getSecondaryTitle());
|
||||
if (mToolbar != null)
|
||||
mToolbar.setTitle(mapObject.getTitle());
|
||||
UiUtils.setTextAndHideIfEmpty(mTvSubtitle, mapObject.getSubtitle());
|
||||
|
|
Loading…
Add table
Reference in a new issue