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:
authorSergey Magidovich <mgsergio@mapswithme.com>2016-06-21 20:40:13 +0300
committerSergey Magidovich <mgsergio@mapswithme.com>2016-07-01 15:27:59 +0300
commitb3f7936edd7338b10892dff7120c24875e262264 (patch)
tree96a8181174987bc94a943e84318469c74506d9e0 /android
parent51e63c99bd5f541e2e1b93bd83d3c8b1cca33e84 (diff)
Language selection.
Diffstat (limited to 'android')
-rw-r--r--android/jni/com/mapswithme/core/jni_helper.hpp22
-rw-r--r--android/jni/com/mapswithme/maps/editor/Editor.cpp19
2 files changed, 29 insertions, 12 deletions
diff --git a/android/jni/com/mapswithme/core/jni_helper.hpp b/android/jni/com/mapswithme/core/jni_helper.hpp
index 8384784437..7e26c3b292 100644
--- a/android/jni/com/mapswithme/core/jni_helper.hpp
+++ b/android/jni/com/mapswithme/core/jni_helper.hpp
@@ -9,6 +9,8 @@
#include "std/string.hpp"
#include "std/shared_ptr.hpp"
+#include "base/logging.hpp"
+
extern jclass g_mapObjectClazz;
extern jclass g_bookmarkClazz;
@@ -51,20 +53,28 @@ jobject GetNewParcelablePointD(JNIEnv * env, m2::PointD const & point);
jobject GetNewPoint(JNIEnv * env, m2::PointD const & point);
jobject GetNewPoint(JNIEnv * env, m2::PointI const & point);
-template<typename TValue, typename TToJavaFn>
-jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, vector<TValue> const & src, TToJavaFn && toJavaFn)
+template<typename TIt, typename TToJavaFn>
+jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, TIt begin, TIt end, size_t const size, TToJavaFn && toJavaFn)
{
- size_t const size = src.size();
jobjectArray jArray = env->NewObjectArray((jint) size, clazz, 0);
- for (size_t i = 0; i < size; i++)
+ size_t i = 0;
+ for (auto it = begin; it != end; ++it)
{
- TScopedLocalRef jItem(env, toJavaFn(env, src[i]));
+ TScopedLocalRef jItem(env, toJavaFn(env, *it));
env->SetObjectArrayElement(jArray, i, jItem.get());
+ ++i;
}
return jArray;
}
+
+template<typename TContainer, typename TToJavaFn>
+jobjectArray ToJavaArray(JNIEnv * env, jclass clazz, TContainer const & src, TToJavaFn && toJavaFn)
+{
+ return ToJavaArray(env, clazz, begin(src), end(src), src.size(), move(toJavaFn));
+}
+
jobjectArray ToJavaStringArray(JNIEnv * env, vector<string> const & src);
void DumpDalvikReferenceTables();
-}
+} // namespace jni
diff --git a/android/jni/com/mapswithme/maps/editor/Editor.cpp b/android/jni/com/mapswithme/maps/editor/Editor.cpp
index b572988e2b..a9a91c9ac3 100644
--- a/android/jni/com/mapswithme/maps/editor/Editor.cpp
+++ b/android/jni/com/mapswithme/maps/editor/Editor.cpp
@@ -3,6 +3,8 @@
#include "com/mapswithme/core/jni_helper.hpp"
#include "com/mapswithme/maps/Framework.hpp"
+#include "coding/multilang_utf8_string.hpp"
+
#include "base/assert.hpp"
#include "base/logging.hpp"
#include "base/string_utils.hpp"
@@ -344,13 +346,18 @@ Java_com_mapswithme_maps_editor_Editor_nativeGetNearbyStreets(JNIEnv * env, jcla
JNIEXPORT jobjectArray JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeGetSupportedLanguages(JNIEnv * env, jclass clazz)
{
- // TODO (yunikkk) implement
+ using TLang = StringUtf8Multilang::Lang;
//public Language(@NonNull String code, @NonNull String name)
-// static jclass const langClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/editor/data/Language");
-// static jmethodID const langCtor = jni::GetConstructorID(env, langClass, "(Ljava/lang/String;Ljava/lang/String;)V");
-
-// return jni::ToJavaArray(env, langClass, g_editableMapObject.GetBuildingLevels(), );
- return nullptr;
+ static jclass const langClass = jni::GetGlobalClassRef(env, "com/mapswithme/maps/editor/data/Language");
+ static jmethodID const langCtor = jni::GetConstructorID(env, langClass, "(Ljava/lang/String;Ljava/lang/String;)V");
+
+ return jni::ToJavaArray(env, langClass, StringUtf8Multilang::GetSupportedLanguages(),
+ [](JNIEnv * env, TLang const & lang)
+ {
+ jni::TScopedLocalRef const code(env, jni::ToJavaString(env, lang.m_code));
+ jni::TScopedLocalRef const name(env, jni::ToJavaString(env, lang.m_name));
+ return env->NewObject(langClass, langCtor, code.get(), name.get());
+ });
}
JNIEXPORT jstring JNICALL