forked from organicmaps/organicmaps
Add validation to android.
This commit is contained in:
parent
37b0592f7e
commit
df4667ad59
5 changed files with 127 additions and 6 deletions
|
@ -517,6 +517,41 @@ Java_com_mapswithme_maps_editor_Editor_nativeIsLevelValid(JNIEnv * env, jclass c
|
|||
return osm::EditableMapObject::ValidateBuildingLevels(jni::ToNativeString(env, level));
|
||||
}
|
||||
|
||||
// static boolean nativeIsFlatValid(String flats)
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsFlatValid(JNIEnv * env, jclass clazz, jstring flats)
|
||||
{
|
||||
return osm::EditableMapObject::ValidateFlats(jni::ToNativeString(env, flats));
|
||||
}
|
||||
|
||||
// static boolean nativeIsPostCodeValid(String zipCode)
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsZipcodeValid(JNIEnv * env, jclass clazz, jstring zipCode)
|
||||
{
|
||||
return osm::EditableMapObject::ValidatePostCode(jni::ToNativeString(env, zipCode));
|
||||
}
|
||||
|
||||
// static boolean nativeIsPhoneValid(String phone)
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsPhoneValid(JNIEnv * env, jclass clazz, jstring phone)
|
||||
{
|
||||
return osm::EditableMapObject::ValidatePhone(jni::ToNativeString(env, phone));
|
||||
}
|
||||
|
||||
// static boolean nativeIsWebsiteValid(String website)
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsWebsiteValid(JNIEnv * env, jclass clazz, jstring website)
|
||||
{
|
||||
return osm::EditableMapObject::ValidateWebsite(jni::ToNativeString(env, website));
|
||||
}
|
||||
|
||||
// static boolean nativeIsEmailValid(String email)
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsEmailValid(JNIEnv * env, jclass clazz, jstring email)
|
||||
{
|
||||
return osm::EditableMapObject::ValidateEmail(jni::ToNativeString(env, email));
|
||||
}
|
||||
|
||||
JNIEXPORT jstring JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeGetCategory(JNIEnv * env, jclass clazz)
|
||||
{
|
||||
|
|
|
@ -114,6 +114,12 @@ public final class Editor
|
|||
public static native void nativeSetHouseNumber(String houseNumber);
|
||||
public static native boolean nativeIsHouseValid(String houseNumber);
|
||||
public static native boolean nativeIsLevelValid(String level);
|
||||
public static native boolean nativeIsFlatValid(String flat);
|
||||
public static native boolean nativeIsZipcodeValid(String zipCode);
|
||||
public static native boolean nativeIsPhoneValid(String phone);
|
||||
public static native boolean nativeIsWebsiteValid(String site);
|
||||
public static native boolean nativeIsEmailValid(String email);
|
||||
|
||||
|
||||
public static native boolean nativeHasSomethingToUpload();
|
||||
@WorkerThread
|
||||
|
|
|
@ -84,14 +84,20 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
private EditText mZipcode;
|
||||
private View mBlockLevels;
|
||||
private EditText mBuildingLevels;
|
||||
private TextInputLayout mInputHouseNumber;
|
||||
private TextInputLayout mInputBuildingLevels;
|
||||
private EditText mPhone;
|
||||
private EditText mWebsite;
|
||||
private EditText mEmail;
|
||||
private TextView mCuisine;
|
||||
private EditText mOperator;
|
||||
private SwitchCompat mWifi;
|
||||
|
||||
private TextInputLayout mInputHouseNumber;
|
||||
private TextInputLayout mInputBuildingLevels;
|
||||
private TextInputLayout mInputZipcode;
|
||||
private TextInputLayout mInputPhone;
|
||||
private TextInputLayout mInputWebsite;
|
||||
private TextInputLayout mInputEmail;
|
||||
|
||||
private View mEmptyOpeningHours;
|
||||
private TextView mOpeningHours;
|
||||
private View mEditOpeningHours;
|
||||
|
@ -133,6 +139,15 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
});
|
||||
|
||||
mZipcode.setText(Editor.nativeGetZipCode());
|
||||
mZipcode.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
UiUtils.setInputError(mInputZipcode, Editor.nativeIsZipcodeValid(s.toString()) ? 0 : R.string.error_enter_correct_zip_code);
|
||||
}
|
||||
});
|
||||
|
||||
mBuildingLevels.setText(Editor.nativeGetBuildingLevels());
|
||||
mBuildingLevels.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
|
@ -144,8 +159,35 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
});
|
||||
|
||||
mPhone.setText(Editor.nativeGetPhone());
|
||||
mPhone.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
UiUtils.setInputError(mInputPhone, Editor.nativeIsPhoneValid(s.toString()) ? 0 : R.string.error_enter_correct_phone);
|
||||
}
|
||||
});
|
||||
|
||||
mWebsite.setText(Editor.nativeGetWebsite());
|
||||
mWebsite.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
UiUtils.setInputError(mInputWebsite, Editor.nativeIsWebsiteValid(s.toString()) ? 0 : R.string.error_enter_correct_web);
|
||||
}
|
||||
});
|
||||
|
||||
mEmail.setText(Editor.nativeGetEmail());
|
||||
mEmail.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
UiUtils.setInputError(mInputEmail, Editor.nativeIsEmailValid(s.toString()) ? 0 : R.string.error_enter_correct_email);
|
||||
}
|
||||
});
|
||||
|
||||
mCuisine.setText(Editor.nativeGetFormattedCuisine());
|
||||
mOperator.setText(Editor.nativeGetOperator());
|
||||
mWifi.setChecked(Editor.nativeHasWifi());
|
||||
|
@ -202,6 +244,34 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
return false;
|
||||
}
|
||||
|
||||
if (!Editor.nativeIsZipcodeValid(mZipcode.getText().toString()))
|
||||
{
|
||||
mZipcode.requestFocus();
|
||||
InputUtils.showKeyboard(mZipcode);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Editor.nativeIsPhoneValid(mPhone.getText().toString()))
|
||||
{
|
||||
mPhone.requestFocus();
|
||||
InputUtils.showKeyboard(mPhone);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Editor.nativeIsWebsiteValid(mWebsite.getText().toString()))
|
||||
{
|
||||
mWebsite.requestFocus();
|
||||
InputUtils.showKeyboard(mWebsite);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Editor.nativeIsEmailValid(mEmail.getText().toString()))
|
||||
{
|
||||
mEmail.requestFocus();
|
||||
InputUtils.showKeyboard(mEmail);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -273,6 +343,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
mLocalizedNamesAdapter.registerAdapterDataObserver(mLocalizedNamesObserver);
|
||||
refreshLocalizedNames();
|
||||
showLocalizedNames(false);
|
||||
|
||||
// Address
|
||||
view.findViewById(R.id.block_street).setOnClickListener(this);
|
||||
mStreet = (TextView) view.findViewById(R.id.street);
|
||||
|
@ -281,17 +352,21 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
mInputHouseNumber = (TextInputLayout) blockHouseNumber.findViewById(R.id.custom_input);
|
||||
View blockZipcode = view.findViewById(R.id.block_zipcode);
|
||||
mZipcode = findInputAndInitBlock(blockZipcode, 0, R.string.editor_zip_code);
|
||||
mBlockLevels = view.findViewById(R.id.block_levels);
|
||||
mInputBuildingLevels = (TextInputLayout) mBlockLevels.findViewById(R.id.custom_input);
|
||||
// TODO set level limits from core
|
||||
mBuildingLevels = findInputAndInitBlock(mBlockLevels, 0, getString(R.string.editor_storey_number, 25));
|
||||
mInputZipcode = (TextInputLayout) blockZipcode.findViewById(R.id.custom_input);
|
||||
|
||||
// Details
|
||||
mBlockLevels = view.findViewById(R.id.block_levels);
|
||||
mBuildingLevels = findInputAndInitBlock(mBlockLevels, 0, getString(R.string.editor_storey_number, 25));
|
||||
mInputBuildingLevels = (TextInputLayout) mBlockLevels.findViewById(R.id.custom_input);
|
||||
View blockPhone = view.findViewById(R.id.block_phone);
|
||||
mPhone = findInputAndInitBlock(blockPhone, R.drawable.ic_phone, R.string.phone);
|
||||
mInputPhone = (TextInputLayout) blockPhone.findViewById(R.id.custom_input);
|
||||
View blockWeb = view.findViewById(R.id.block_website);
|
||||
mWebsite = findInputAndInitBlock(blockWeb, R.drawable.ic_website, R.string.website);
|
||||
mInputWebsite = (TextInputLayout) blockWeb.findViewById(R.id.custom_input);
|
||||
View blockEmail = view.findViewById(R.id.block_email);
|
||||
mEmail = findInputAndInitBlock(blockEmail, R.drawable.ic_email, R.string.email);
|
||||
mInputEmail = (TextInputLayout) blockEmail.findViewById(R.id.custom_input);
|
||||
View blockCuisine = view.findViewById(R.id.block_cuisine);
|
||||
blockCuisine.setOnClickListener(this);
|
||||
mCuisine = (TextView) view.findViewById(R.id.cuisine);
|
||||
|
|
|
@ -255,6 +255,8 @@ bool EditableMapObject::ValidateFlats(string const & flats)
|
|||
// static
|
||||
bool EditableMapObject::ValidatePostCode(string const & postCode)
|
||||
{
|
||||
if (postCode.empty())
|
||||
return true;
|
||||
return search::LooksLikePostcode(postCode, false /* IsPrefix */);
|
||||
}
|
||||
|
||||
|
|
|
@ -30,6 +30,9 @@ UNIT_TEST(EditableMapObject_ValidateBuildingLevels)
|
|||
TEST(EditableMapObject::ValidateBuildingLevels("25"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("0"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("26"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("22a"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("a22"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("2a22"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels("ab"), ());
|
||||
TEST(!EditableMapObject::ValidateBuildingLevels(
|
||||
"2345534564564453645534545345534564564453645"), ());
|
||||
|
|
Loading…
Add table
Reference in a new issue