forked from organicmaps/organicmaps
Language selection.
This commit is contained in:
parent
51e63c99bd
commit
b3f7936edd
2 changed files with 28 additions and 11 deletions
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
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;
|
||||
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
|
||||
|
|
Loading…
Add table
Reference in a new issue