[android] Check if feature is available for edit.

This commit is contained in:
Dmitry Yunitsky 2016-01-26 16:49:17 +03:00 committed by Sergey Yershov
parent b854f46c26
commit a52445c5dc

View file

@ -28,20 +28,26 @@ using osm::Editor;
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeSetMetadata(JNIEnv * env, jclass clazz, jint type, jstring value)
{
auto & metadata = activeFeature()->GetMetadata();
auto * feature = activeFeature();
CHECK(feature, ("Feature is not editable!"));
auto & metadata = feature->GetMetadata();
metadata.Set(static_cast<Metadata::EType>(type), jni::ToNativeString(env, value));
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeEditFeature(JNIEnv * env, jclass clazz, jstring street, jstring houseNumber)
{
Editor::Instance().EditFeature(*activeFeature(), jni::ToNativeString(env, street), jni::ToNativeString(env, houseNumber));
auto * feature = activeFeature();
CHECK(feature, ("Feature is not editable!"));
Editor::Instance().EditFeature(*feature, jni::ToNativeString(env, street), jni::ToNativeString(env, houseNumber));
}
JNIEXPORT jintArray JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeGetEditableMetadata(JNIEnv * env, jclass clazz)
{
auto const & editableTypes = Editor::Instance().EditableMetadataForType(*activeFeature());
auto const * feature = activeFeature();
auto const editableTypes = feature ? Editor::Instance().EditableMetadataForType(*feature)
: vector<Metadata::EType>{};
int const size = editableTypes.size();
jintArray jEditableTypes = env->NewIntArray(size);
jint * arr = env->GetIntArrayElements(jEditableTypes, 0);
@ -55,19 +61,22 @@ Java_com_mapswithme_maps_editor_Editor_nativeGetEditableMetadata(JNIEnv * env, j
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeIsAddressEditable(JNIEnv * env, jclass clazz)
{
return Editor::Instance().IsAddressEditable(*activeFeature());
auto const * feature = activeFeature();
return feature && Editor::Instance().IsAddressEditable(*feature);
}
JNIEXPORT jboolean JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeIsNameEditable(JNIEnv * env, jclass clazz)
{
return Editor::Instance().IsNameEditable(*activeFeature());
auto const * feature = activeFeature();
return feature && Editor::Instance().IsNameEditable(*feature);
}
JNIEXPORT void JNICALL
Java_com_mapswithme_maps_editor_Editor_nativeSetName(JNIEnv * env, jclass clazz, jstring name)
{
auto * feature = activeFeature();
CHECK(feature, ("Feature is not editable!"));
auto names = feature->GetNames();
names.AddString(StringUtf8Multilang::DEFAULT_CODE, jni::ToNativeString(env, name));
feature->SetNames(names);