private void save() { if (TextUtils.isEmpty(poiTypeEditText.getText())) { poiTypeEditText.setError(getResources().getString(R.string.please_specify_poi_type)); return; } OsmPoint.Action action = node.getId() == -1 ? OsmPoint.Action.CREATE : OsmPoint.Action.MODIFY; for (Map.Entry<String, String> tag : editPoiData.getTagValues().entrySet()) { if (tag.getKey().equals(EditPoiData.POI_TYPE_TAG)) { final PoiType poiType = allTranslatedSubTypes.get(tag.getValue().trim().toLowerCase()); if (poiType != null) { node.putTag(poiType.getOsmTag(), poiType.getOsmValue()); if (poiType.getOsmTag2() != null) { node.putTag(poiType.getOsmTag2(), poiType.getOsmValue2()); } } else { node.putTag(editPoiData.amenity.getType().getDefaultTag(), tag.getValue()); } // } else if (tag.tag.equals(OSMSettings.OSMTagKey.DESCRIPTION.getValue())) { // description = tag.value; } else { if (tag.getKey().length() > 0) { node.putTag(tag.getKey(), tag.getValue()); } else { node.removeTag(tag.getKey()); } } } commitNode( action, node, mOpenstreetmapUtil.getEntityInfo(), "", false, // closeChange.isSelected(), new Runnable() { @Override public void run() { OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); if (plugin != null) { List<OpenstreetmapPoint> points = plugin.getDBPOI().getOpenstreetmapPoints(); OsmPoint point = points.get(points.size() - 1); if (getActivity() instanceof MapActivity) { MapActivity mapActivity = (MapActivity) getActivity(); mapActivity .getContextMenu() .showOrUpdate( new LatLon(point.getLatitude(), point.getLongitude()), plugin.getOsmEditsLayer(mapActivity).getObjectName(point), point); } } if (getActivity() instanceof MapActivity) { ((MapActivity) getActivity()).getMapView().refreshMap(true); } dismiss(); } }, getActivity(), mOpenstreetmapUtil); }
private void dismissCheckForChanges() { if (editPoiData.hasChangesBeenMade()) { new AreYouSureDialogFragment().show(getChildFragmentManager(), "AreYouSureDialogFragment"); } else { dismiss(); } }
@Override public void onSaveInstanceState(Bundle outState) { outState.putSerializable(TAGS_LIST, (Serializable) editPoiData.getTagValues()); super.onSaveInstanceState(outState); }
@TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View view = inflater.inflate(R.layout.fragment_edit_poi, container, false); final OsmandSettings settings = getMyApplication().getSettings(); boolean isLightTheme = settings.OSMAND_THEME.get() == OsmandSettings.OSMAND_LIGHT_THEME; if (savedInstanceState != null) { Map<String, String> mp = (Map<String, String>) savedInstanceState.getSerializable(TAGS_LIST); editPoiData.updateTags(mp); } Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); toolbar.setTitle(R.string.poi_create_title); toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha); toolbar.setNavigationOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { dismissCheckForChanges(); } }); viewPager = (ViewPager) view.findViewById(R.id.viewpager); String basicTitle = getResources().getString(R.string.tab_title_basic); String extendedTitle = getResources().getString(R.string.tab_title_advanced); final MyAdapter pagerAdapter = new MyAdapter(getChildFragmentManager(), basicTitle, extendedTitle); viewPager.setAdapter(pagerAdapter); viewPager.addOnPageChangeListener( new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int i, float v, int i1) {} @Override public void onPageSelected(int i) { ((OnFragmentActivatedListener) pagerAdapter.getItem(i)).onFragmentActivated(); } @Override public void onPageScrollStateChanged(int i) {} }); final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout); tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); // Hack due to bug in design support library v22.2.1 // https://code.google.com/p/android/issues/detail?id=180462 // TODO remove in new version if (ViewCompat.isLaidOut(tabLayout)) { tabLayout.setupWithViewPager(viewPager); } else { tabLayout.addOnLayoutChangeListener( new View.OnLayoutChangeListener() { @Override public void onLayoutChange( View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { tabLayout.setupWithViewPager(viewPager); tabLayout.removeOnLayoutChangeListener(this); } }); } ImageButton onlineDocumentationButton = (ImageButton) view.findViewById(R.id.onlineDocumentationButton); onlineDocumentationButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { getActivity() .startActivity( new Intent( Intent.ACTION_VIEW, Uri.parse("https://wiki.openstreetmap.org/wiki/Map_Features"))); } }); final int colorId = isLightTheme ? R.color.inactive_item_orange : R.color.dash_search_icon_dark; final int color = getResources().getColor(colorId); onlineDocumentationButton.setImageDrawable( getMyApplication().getIconsCache().getPaintedContentIcon(R.drawable.ic_action_help, color)); final ImageButton poiTypeButton = (ImageButton) view.findViewById(R.id.poiTypeButton); poiTypeButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { DialogFragment fragment = PoiTypeDialogFragment.createInstance(editPoiData.amenity); fragment.show(getChildFragmentManager(), "PoiTypeDialogFragment"); } }); EditText poiNameEditText = (EditText) view.findViewById(R.id.poiNameEditText); poiNameEditText.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { if (!getEditPoiData().isInEdit()) { if (!TextUtils.isEmpty(s)) { getEditPoiData().putTag(OSMSettings.OSMTagKey.NAME.getValue(), s.toString()); } else { getEditPoiData().removeTag(OSMSettings.OSMTagKey.NAME.getValue()); } } } }); poiNameEditText.setText(node.getTag(OSMSettings.OSMTagKey.NAME)); poiTypeTextInputLayout = (TextInputLayout) view.findViewById(R.id.poiTypeTextInputLayout); poiTypeEditText = (AutoCompleteTextView) view.findViewById(R.id.poiTypeEditText); poiTypeEditText.addTextChangedListener( new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void onTextChanged(CharSequence s, int start, int before, int count) {} @Override public void afterTextChanged(Editable s) { if (!getEditPoiData().isInEdit()) { getEditPoiData().putTag(EditPoiData.POI_TYPE_TAG, s.toString()); } } }); poiNameEditText.setOnEditorActionListener(mOnEditorActionListener); poiTypeEditText.setOnEditorActionListener(mOnEditorActionListener); poiTypeEditText.setText(editPoiData.amenity.getSubType()); Button saveButton = (Button) view.findViewById(R.id.saveButton); saveButton.setText(R.string.shared_string_save); saveButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { save(); } }); Button cancelButton = (Button) view.findViewById(R.id.cancelButton); cancelButton.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); fragmentManager.beginTransaction().remove(EditPoiDialogFragment.this).commit(); fragmentManager.popBackStack(); } }); setAdapterForPoiTypeEditText(); setCancelable(false); return view; }