[android] Added native method for speed formatting.

This commit is contained in:
Dmitry Yunitsky 2016-07-28 21:57:40 +03:00 committed by Alexander Marchuk
parent cb4a8c2362
commit 044e69e8df
2 changed files with 42 additions and 23 deletions

View file

@ -2,34 +2,50 @@
#include "indexer/search_string_utils.hpp"
#include "platform/measurement_utils.hpp"
#include "platform/settings.hpp"
extern "C"
{
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_util_StringUtils_nativeIsHtml(JNIEnv * env, jclass thiz, jstring text)
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_util_StringUtils_nativeIsHtml(JNIEnv * env, jclass thiz, jstring text)
{
return strings::IsHTML(jni::ToNativeString(env, text));
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_util_StringUtils_nativeContainsNormalized(JNIEnv * env, jclass thiz, jstring str, jstring substr)
{
return search::ContainsNormalized(jni::ToNativeString(env, str), jni::ToNativeString(env, substr));
}
JNIEXPORT jobjectArray JNICALL
Java_com_mapswithme_util_StringUtils_nativeFilterContainsNormalized(JNIEnv * env, jclass thiz, jobjectArray src, jstring jSubstr)
{
string substr = jni::ToNativeString(env, jSubstr);
int const length = env->GetArrayLength(src);
vector<string> filtered;
filtered.reserve(length);
for (int i = 0; i < length; i++)
{
return strings::IsHTML(jni::ToNativeString(env, text));
string str = jni::ToNativeString(env, (jstring) env->GetObjectArrayElement(src, i));
if (search::ContainsNormalized(str, substr))
filtered.push_back(str);
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_util_StringUtils_nativeContainsNormalized(JNIEnv * env, jclass thiz, jstring str, jstring substr)
{
return search::ContainsNormalized(jni::ToNativeString(env, str), jni::ToNativeString(env, substr));
}
return jni::ToJavaStringArray(env, filtered);
}
JNIEXPORT jobjectArray JNICALL
Java_com_mapswithme_util_StringUtils_nativeFilterContainsNormalized(JNIEnv * env, jclass thiz, jobjectArray src, jstring jSubstr)
{
string substr = jni::ToNativeString(env, jSubstr);
int const length = env->GetArrayLength(src);
vector<string> filtered;
filtered.reserve(length);
for (int i = 0; i < length; i++)
{
string str = jni::ToNativeString(env, (jstring) env->GetObjectArrayElement(src, i));
if (search::ContainsNormalized(str, substr))
filtered.push_back(str);
}
JNIEXPORT jobject JNICALL
Java_com_mapswithme_util_StringUtils_nativeFormatSpeedAndUnits(JNIEnv * env, jclass thiz, jdouble metersPerSecond)
{
static jclass const pairClass = jni::GetGlobalClassRef(env, "android/util/Pair");
static jmethodID const pairCtor = jni::GetConstructorID(env, pairClass, "(Ljava/lang/Object;Ljava/lang/Object;)V");
return jni::ToJavaStringArray(env, filtered);
}
auto units = measurement_utils::Units::Metric;
settings::Get(settings::kMeasurementUnits, units);
return env->NewObject(pairClass, pairCtor,
jni::ToJavaString(env, measurement_utils::FormatSpeed(metersPerSecond, units)),
jni::ToJavaString(env, measurement_utils::FormatSpeedUnits(units)));
}
} // extern "C"

View file

@ -2,6 +2,7 @@ package com.mapswithme.util;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Pair;
import java.util.Locale;
@ -20,6 +21,8 @@ public class StringUtils
public static native boolean nativeContainsNormalized(String str, String substr);
public static native String[] nativeFilterContainsNormalized(String[] strings, String substr);
public static native Pair<String, String> nativeFormatSpeedAndUnits(double metersPerSecond);
/**
* Removes html tags, generated from edittext content after it's transformed to html.
* In version 4.3.1 we converted descriptions, entered by users, to html automatically. Later html conversion was cancelled, but those converted descriptions should be converted back to