forked from organicmaps/organicmaps
[android] House number validation.
This commit is contained in:
parent
fba1ccfc3f
commit
220f32610f
5 changed files with 70 additions and 16 deletions
|
@ -356,4 +356,10 @@ Java_com_mapswithme_maps_editor_Editor_nativeCreateNote(JNIEnv * env, jclass cla
|
|||
Editor::Instance().CreateNote(ms::LatLon(lat, lon), jni::ToNativeString(env, text));
|
||||
}
|
||||
|
||||
// static boolean nativeIsHouseValid(String houseNumber);
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_com_mapswithme_maps_editor_Editor_nativeIsHouseValid(JNIEnv * env, jclass clazz, jstring houseNumber)
|
||||
{
|
||||
return osm::EditableMapObject::ValidateHouseNumber(jni::ToNativeString(env, houseNumber));
|
||||
}
|
||||
} // extern "C"
|
||||
|
|
|
@ -124,6 +124,7 @@
|
|||
style="@style/MwmWidget.Editor.MetadataBlock">
|
||||
|
||||
<com.mapswithme.maps.widget.CustomTextInputLayout
|
||||
android:id="@+id/custom_input"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentBottom="true"
|
||||
|
|
|
@ -141,4 +141,6 @@ public final class Editor
|
|||
public static native long nativeGetMwmVersion();
|
||||
|
||||
public static native void nativeCreateNote(double lat, double lon, String text);
|
||||
|
||||
public static native boolean nativeIsHouseValid(String houseNumber);
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@ import com.mapswithme.maps.base.BaseMwmFragment;
|
|||
import com.mapswithme.maps.bookmarks.data.Metadata;
|
||||
import com.mapswithme.maps.editor.data.TimeFormatUtils;
|
||||
import com.mapswithme.maps.editor.data.Timetable;
|
||||
import com.mapswithme.maps.widget.CustomTextInputLayout;
|
||||
import com.mapswithme.util.StringUtils;
|
||||
import com.mapswithme.util.UiUtils;
|
||||
|
||||
public class EditorFragment extends BaseMwmFragment implements View.OnClickListener
|
||||
|
@ -25,6 +27,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
private TextView mTvLocalizedNames;
|
||||
private TextView mTvStreet;
|
||||
private EditText mEtHouseNumber;
|
||||
private CustomTextInputLayout mInputHouseNumber;
|
||||
private View mPhoneBlock;
|
||||
private EditText mEtPhone;
|
||||
private View mWebBlock;
|
||||
|
@ -63,6 +66,23 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
mEtName.setText(Editor.nativeGetDefaultName());
|
||||
mTvStreet.setText(Editor.nativeGetStreet());
|
||||
mEtHouseNumber.setText(Editor.nativeGetHouseNumber());
|
||||
mEtHouseNumber.addTextChangedListener(new StringUtils.SimpleTextWatcher()
|
||||
{
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count)
|
||||
{
|
||||
final String text = s.toString();
|
||||
|
||||
if (!Editor.nativeIsHouseValid(text))
|
||||
{
|
||||
// TODO set correct error text
|
||||
mInputHouseNumber.setError("invalid house number");
|
||||
return;
|
||||
}
|
||||
|
||||
mInputHouseNumber.setError(null);
|
||||
}
|
||||
});
|
||||
mEtPhone.setText(Editor.getMetadata(Metadata.MetadataType.FMD_PHONE_NUMBER));
|
||||
mEtWebsite.setText(Editor.getMetadata(Metadata.MetadataType.FMD_WEBSITE));
|
||||
mEtEmail.setText(Editor.getMetadata(Metadata.MetadataType.FMD_EMAIL));
|
||||
|
@ -80,14 +100,24 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
setEdits();
|
||||
}
|
||||
|
||||
protected void setEdits()
|
||||
protected boolean setEdits()
|
||||
{
|
||||
if (!validateFields())
|
||||
return false;
|
||||
|
||||
Editor.setMetadata(Metadata.MetadataType.FMD_PHONE_NUMBER, getPhone());
|
||||
Editor.setMetadata(Metadata.MetadataType.FMD_WEBSITE, getWebsite());
|
||||
Editor.setMetadata(Metadata.MetadataType.FMD_EMAIL, getEmail());
|
||||
Editor.setMetadata(Metadata.MetadataType.FMD_INTERNET, getWifi());
|
||||
Editor.nativeSetDefaultName(getName());
|
||||
Editor.nativeSetHouseNumber(getHouseNumber());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private boolean validateFields()
|
||||
{
|
||||
return Editor.nativeIsHouseValid(getHouseNumber());
|
||||
}
|
||||
|
||||
public String getName()
|
||||
|
@ -131,11 +161,6 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
return mSwWifi.isChecked() ? "wlan" : "";
|
||||
}
|
||||
|
||||
public String getOpeningHours()
|
||||
{
|
||||
return Editor.getMetadata(Metadata.MetadataType.FMD_OPEN_HOURS);
|
||||
}
|
||||
|
||||
private void refreshEditableFields()
|
||||
{
|
||||
UiUtils.showIf(Editor.nativeIsNameEditable(), mNameBlock);
|
||||
|
@ -211,6 +236,7 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe
|
|||
view.findViewById(R.id.block_street).setOnClickListener(this);
|
||||
mTvStreet = (TextView) view.findViewById(R.id.street);
|
||||
mEtHouseNumber = findInput(view.findViewById(R.id.building));
|
||||
mInputHouseNumber = (CustomTextInputLayout) view.findViewById(R.id.building).findViewById(R.id.custom_input);
|
||||
mPhoneBlock = view.findViewById(R.id.block_phone);
|
||||
mEtPhone = findInput(mPhoneBlock);
|
||||
mWebBlock = view.findViewById(R.id.block_website);
|
||||
|
|
|
@ -115,7 +115,9 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
|
||||
protected void editTimetable()
|
||||
{
|
||||
setEdits();
|
||||
if (!setEdits())
|
||||
return;
|
||||
|
||||
mMode = Mode.OPENING_HOURS;
|
||||
mToolbarController.setTitle(R.string.editor_time_title);
|
||||
final Bundle args = new Bundle();
|
||||
|
@ -128,7 +130,9 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
|
||||
protected void editStreet()
|
||||
{
|
||||
setEdits();
|
||||
if (!setEdits())
|
||||
return;
|
||||
|
||||
mMode = Mode.STREET;
|
||||
mToolbarController.setTitle(R.string.choose_street);
|
||||
final Fragment streetFragment = Fragment.instantiate(getActivity(), StreetFragment.class.getName());
|
||||
|
@ -139,7 +143,9 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
|
||||
protected void editCuisine()
|
||||
{
|
||||
setEdits();
|
||||
if (!setEdits())
|
||||
return;
|
||||
|
||||
mMode = Mode.CUISINE;
|
||||
mToolbarController.setTitle("");
|
||||
((SearchToolbarController) mToolbarController).showControls(true);
|
||||
|
@ -149,9 +155,15 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
.commit();
|
||||
}
|
||||
|
||||
private void setEdits()
|
||||
private boolean setEdits()
|
||||
{
|
||||
((EditorFragment) getChildFragmentManager().findFragmentByTag(EditorFragment.class.getName())).setEdits();
|
||||
final boolean set = ((EditorFragment) getChildFragmentManager().findFragmentByTag(EditorFragment.class.getName())).setEdits();
|
||||
|
||||
if (!set)
|
||||
// TODO set correct text R.string.error_enter_correct_house_number
|
||||
showMistakeDialog(R.string.editor_correct_mistake);
|
||||
|
||||
return set;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -170,10 +182,7 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
}
|
||||
else
|
||||
{
|
||||
new AlertDialog.Builder(getActivity())
|
||||
.setMessage(R.string.editor_correct_mistake)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show();
|
||||
showMistakeDialog(R.string.editor_correct_mistake);
|
||||
}
|
||||
break;
|
||||
case STREET:
|
||||
|
@ -185,7 +194,9 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
editMapObject();
|
||||
break;
|
||||
case MAP_OBJECT:
|
||||
setEdits();
|
||||
if (!setEdits())
|
||||
return;
|
||||
|
||||
if (Editor.nativeSaveEditedFeature())
|
||||
{
|
||||
Statistics.INSTANCE.trackEditorSuccess(mIsNewObject);
|
||||
|
@ -215,6 +226,14 @@ public class EditorHostFragment extends BaseMwmToolbarFragment
|
|||
}
|
||||
}
|
||||
|
||||
private void showMistakeDialog(@StringRes int resId)
|
||||
{
|
||||
new AlertDialog.Builder(getActivity())
|
||||
.setMessage(resId)
|
||||
.setPositiveButton(android.R.string.ok, null)
|
||||
.show();
|
||||
}
|
||||
|
||||
public void setStreet(String street)
|
||||
{
|
||||
Editor.nativeSetStreet(street);
|
||||
|
|
Loading…
Add table
Reference in a new issue