diff options
author | Sergey Magidovich <mgsergio@mapswithme.com> | 2016-07-15 18:29:36 +0300 |
---|---|---|
committer | Sergey Magidovich <mgsergio@mapswithme.com> | 2016-07-18 12:29:27 +0300 |
commit | 5ee62e73f102a52b9ed3e1e741ddbcfef258109d (patch) | |
tree | cdd95e071fe190f42fe6338f4bdf3375f4985480 /android | |
parent | 8cac395d40fa2751cc1abe297127f52a35196057 (diff) |
Add hotel rating and price category.
Diffstat (limited to 'android')
4 files changed, 72 insertions, 32 deletions
diff --git a/android/jni/com/mapswithme/maps/SearchEngine.cpp b/android/jni/com/mapswithme/maps/SearchEngine.cpp index 697e06402c..cdd70a9aa1 100644 --- a/android/jni/com/mapswithme/maps/SearchEngine.cpp +++ b/android/jni/com/mapswithme/maps/SearchEngine.cpp @@ -78,9 +78,12 @@ jobject ToJavaResult(Result & result, bool hasPosition, double lat, double lon) jni::TScopedLocalRef address(env, jni::ToJavaString(env, result.GetAddress())); jni::TScopedLocalRef dist(env, jni::ToJavaString(env, distance)); jni::TScopedLocalRef cuisine(env, jni::ToJavaString(env, result.GetCuisine())); + jni::TScopedLocalRef rating(env, jni::ToJavaString(env, result.GetHotelRating())); + jni::TScopedLocalRef pricing(env, jni::ToJavaString(env, result.GetHotelApproximatePricing())); jni::TScopedLocalRef desc(env, env->NewObject(g_descriptionClass, g_descriptionConstructor, featureType.get(), address.get(), dist.get(), cuisine.get(), + rating.get(), pricing.get(), result.GetStarsCount(), static_cast<jint>(result.IsOpenNow()))); @@ -171,7 +174,7 @@ extern "C" g_resultConstructor = jni::GetConstructorID(env, g_resultClass, "(Ljava/lang/String;Lcom/mapswithme/maps/search/SearchResult$Description;DD[I)V"); g_suggestConstructor = jni::GetConstructorID(env, g_resultClass, "(Ljava/lang/String;Ljava/lang/String;DD[I)V"); g_descriptionClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/search/SearchResult$Description"); - g_descriptionConstructor = jni::GetConstructorID(env, g_descriptionClass, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V"); + g_descriptionConstructor = jni::GetConstructorID(env, g_descriptionClass, "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V"); g_mapResultsMethod = jni::GetMethodID(env, g_javaListener, "onMapSearchResults", "([Lcom/mapswithme/maps/search/NativeMapSearchListener$Result;JZ)V"); g_mapResultClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/search/NativeMapSearchListener$Result"); diff --git a/android/res/layout/item_search_result.xml b/android/res/layout/item_search_result.xml index 6c088dfc5f..6c28a0c548 100644 --- a/android/res/layout/item_search_result.xml +++ b/android/res/layout/item_search_result.xml @@ -14,6 +14,7 @@ android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" + android:gravity="bottom" android:paddingLeft="@dimen/margin_half" android:paddingRight="@dimen/margin_half" android:paddingTop="@dimen/margin_eighth" @@ -22,19 +23,6 @@ android:text="@string/closed"/> <TextView - android:id="@+id/distance" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:layout_below="@id/closed" - android:gravity="bottom" - android:textAppearance="@style/MwmTextAppearance.Body3" - android:textColor="?colorAccent" - tools:text="500 km \u2022 \u2605\u2606\u2606\u2606\u2606"/> - - <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" @@ -54,25 +42,50 @@ android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@id/title" - android:layout_toLeftOf="@id/distance" - android:layout_toStartOf="@id/distance" + android:layout_toLeftOf="@+id/price_category" + android:layout_toStartOf="@id/price_category" + android:layout_marginRight="@dimen/margin_half" android:layout_marginTop="@dimen/margin_quarter" android:textAppearance="@style/MwmTextAppearance.Body3" - android:singleLine="true" + android:maxLines="2" tools:text="Hotel \u2022 \u2605\u2605\u2605\u2605\u2605"/> <TextView + android:id="@+id/price_category" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" + android:layout_alignBaseline="@id/description" + android:layout_marginTop="@dimen/margin_quarter" + android:singleLine="true" + tools:text="$$$"/> + + <TextView android:id="@+id/region" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_below="@id/description" - android:layout_toLeftOf="@id/distance" + android:layout_toLeftOf="@+id/distance" android:layout_toStartOf="@id/distance" android:layout_marginTop="@dimen/margin_quarter" + android:layout_marginRight="@dimen/margin_half" android:textAppearance="@style/MwmTextAppearance.Body3" - android:singleLine="true" + android:maxLines="2" android:ellipsize="end" tools:text="Russia, Moscow & Central, Moscow"/> + + <TextView + android:id="@+id/distance" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentRight="true" + android:layout_alignBaseline="@id/region" + android:layout_below="@id/closed" + android:textAppearance="@style/MwmTextAppearance.Body3" + android:textColor="?colorAccent" + tools:text="500 km"/> </RelativeLayout> diff --git a/android/src/com/mapswithme/maps/search/SearchAdapter.java b/android/src/com/mapswithme/maps/search/SearchAdapter.java index fd1b500be1..090e797e77 100644 --- a/android/src/com/mapswithme/maps/search/SearchAdapter.java +++ b/android/src/com/mapswithme/maps/search/SearchAdapter.java @@ -146,6 +146,7 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.BaseViewHolder> final TextView mDescription; final TextView mRegion; final TextView mDistance; + final TextView mPriceCategory; @Override int getTintAttr() @@ -160,25 +161,41 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.BaseViewHolder> final SpannableStringBuilder tail = new SpannableStringBuilder(); final int stars = Math.min(result.description.stars, 5); - if (stars > 0) + if (stars > 0 || !result.description.rating.isEmpty()) { - // Colorize last dimmed stars - final SpannableStringBuilder sb = new SpannableStringBuilder("★ ★ ★ ★ ★"); - if (stars < 5) + if (stars > 0) { - final int start = sb.length() - ((5 - stars) * 2 - 1); - sb.setSpan(new ForegroundColorSpan(itemView.getResources().getColor(R.color.search_star_dimmed)), - start, sb.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + // Colorize last dimmed stars + final SpannableStringBuilder sb = new SpannableStringBuilder("★ ★ ★ ★ ★"); + if (stars < 5) + { + final int start = sb.length() - ((5 - stars) * 2 - 1); + sb.setSpan(new ForegroundColorSpan(itemView.getResources().getColor(R.color.search_star_dimmed)), + start, sb.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + } + + tail.append(" • "); + tail.append(sb); } - tail.append(sb); + if (!result.description.rating.isEmpty()) + { + final SpannableStringBuilder sb = new SpannableStringBuilder( + itemView.getResources().getString(R.string.place_page_booking_rating, result.description.rating)); + sb.setSpan(new ForegroundColorSpan(itemView.getResources().getColor(R.color.base_green)), + 0, sb.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); + + tail + .append(" • ") + .append(sb); + } } else if (!TextUtils.isEmpty(result.description.cuisine)) - tail.append(result.description.cuisine); + { + tail.append(" • " + result.description.cuisine); + } - if (!TextUtils.isEmpty(tail)) - res.append(" • ") - .append(tail); + res.append(tail); return res; } @@ -192,6 +209,7 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.BaseViewHolder> mDescription = (TextView) view.findViewById(R.id.description); mRegion = (TextView) view.findViewById(R.id.region); mDistance = (TextView) view.findViewById(R.id.distance); + mPriceCategory = (TextView) view.findViewById(R.id.price_category); mClosedMarker.setBackgroundDrawable(mClosedMarkerBackground); } @@ -212,6 +230,7 @@ class SearchAdapter extends RecyclerView.Adapter<SearchAdapter.BaseViewHolder> UiUtils.setTextAndHideIfEmpty(mDescription, formatDescription(result)); UiUtils.setTextAndHideIfEmpty(mRegion, result.description.region); UiUtils.setTextAndHideIfEmpty(mDistance, result.description.distance); + UiUtils.setTextAndHideIfEmpty(mPriceCategory, result.description.pricing); } @Override diff --git a/android/src/com/mapswithme/maps/search/SearchResult.java b/android/src/com/mapswithme/maps/search/SearchResult.java index e18af2d14e..5a4f5c8077 100644 --- a/android/src/com/mapswithme/maps/search/SearchResult.java +++ b/android/src/com/mapswithme/maps/search/SearchResult.java @@ -20,15 +20,20 @@ public class SearchResult public final String region; public final String distance; public final String cuisine; + public final String rating; + public final String pricing; public final int stars; public final int openNow; - public Description(String featureType, String region, String distance, String cuisine, int stars, int openNow) + public Description(String featureType, String region, String distance, + String cuisine, String rating, String pricing, int stars, int openNow) { this.featureType = featureType; this.region = region; this.distance = distance; this.cuisine = cuisine; + this.rating = rating; + this.pricing = pricing; this.stars = stars; this.openNow = openNow; } |