@@ -151,4 +151,7 @@
<color name="spinner_list_background_light">#eeeeee</color>
<color name="spinner_list_background_dark">#303030</color>

<color name="inactive_iteme_orange">#ffc87f</color>
<color name="osmand_orange_dark">#e68200</color>
<color name="divider_color">#ccc</color>
</resources>

Large diffs are not rendered by default.

@@ -7,6 +7,7 @@
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -215,6 +216,7 @@ private void dismiss() {
* @return
*/
private MyService extract(final Uri uri) {
Log.v(this.getClass().toString(), "extract(" + "uri=" + uri + ")");
GeoPointParserUtil.GeoParsedPoint p = GeoPointParserUtil.parse(uri.toString());
if (p.isGeoPoint()) {
if (p.getLabel() != null) {
@@ -0,0 +1,160 @@
package net.osmand.plus.osmedit;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;

import net.osmand.plus.R;
import net.osmand.plus.osmedit.EditPoiFragment.Tag;

public class AdvancedDataFragment extends Fragment {
private static final String TAG = "AdvancedDataFragment";

private TagAdapterLinearLayoutHack mAdapter;

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);

}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_edit_poi_advanced, container, false);
final EditText tagEditText = (EditText) view.findViewById(R.id.tagEditText);
final EditText valueEditText = (EditText) view.findViewById(R.id.valueEditText);

ImageButton deleteItemImageButton =
(ImageButton) view.findViewById(R.id.deleteItemImageButton);
deleteItemImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tagEditText.setText(null);
tagEditText.clearFocus();
valueEditText.setText(null);
valueEditText.clearFocus();
}
});
LinearLayout editTagsLineaLayout =
(LinearLayout) view.findViewById(R.id.editTagsList);
Log.v(TAG, "arguments=" + savedInstanceState + "; ll=" + editTagsLineaLayout);
Log.v(TAG, "not restored");
mAdapter = new TagAdapterLinearLayoutHack(editTagsLineaLayout, getData());
// setListViewHeightBasedOnChildren(editTagsLineaLayout);
Button addTagButton = (Button) view.findViewById(R.id.addTagButton);
addTagButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String tag = String.valueOf(tagEditText.getText());
String value = String.valueOf(valueEditText.getText());
if (!TextUtils.isEmpty(tag) && !TextUtils.isEmpty(value)) {
mAdapter.addTag(new Tag(tag, value));
// setListViewHeightBasedOnChildren(editTagsLineaLayout);
tagEditText.setText(null);
tagEditText.clearFocus();
valueEditText.setText(null);
valueEditText.clearFocus();
}
}
});
return view;
}

@Override
public void onResume() {
super.onResume();
// TODO read more about lifecycle
mAdapter.updateViews();
getEditPoiFragment().addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}

@Override
public void onPageSelected(int i) {
if (i == 1) mAdapter.updateViews();
}

@Override
public void onPageScrollStateChanged(int i) {
}
});
}

@Override
public void onSaveInstanceState(Bundle outState) {
Log.v(TAG, "onSaveInstanceState(" + "outState=" + outState + ")");
super.onSaveInstanceState(outState);
}

public static class TagAdapterLinearLayoutHack {
private final LinearLayout linearLayout;
private final EditPoiFragment.EditPoiData editPoiData;

public TagAdapterLinearLayoutHack(LinearLayout linearLayout,
EditPoiFragment.EditPoiData editPoiData) {
this.linearLayout = linearLayout;
this.editPoiData = editPoiData;
}

public void addTag(Tag tag) {
View view = getView(tag);
editPoiData.tags.add(tag);
EditText valueEditText = (EditText) view.findViewById(R.id.valueEditText);
Log.v(TAG, "valueEditText text=" + valueEditText.getText());
linearLayout.addView(view);
}

public void updateViews() {
linearLayout.removeAllViews();
Log.v(TAG, "editPoiData.tags=" + editPoiData.tags);
for (Tag tag : editPoiData.tags) {
Log.v(TAG, "tag=" + tag);
View view = getView(tag);
EditText valueEditText = (EditText) view.findViewById(R.id.valueEditText);
Log.v(TAG, "valueEditText text=" + valueEditText.getText());
linearLayout.addView(view);
}
}

private View getView(final Tag tag) {
Log.v(TAG, "getView(" + "tag=" + tag + ")");
final View convertView = LayoutInflater.from(linearLayout.getContext())
.inflate(R.layout.poi_tag_list_item, null, false);
EditText tagEditText = (EditText) convertView.findViewById(R.id.tagEditText);
EditText valueEditText = (EditText) convertView.findViewById(R.id.valueEditText);
ImageButton deleteItemImageButton =
(ImageButton) convertView.findViewById(R.id.deleteItemImageButton);
tagEditText.setText(tag.tag);
valueEditText.setText(tag.value);
deleteItemImageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linearLayout.removeView((View) v.getParent());
editPoiData.tags.remove(tag);
}
});
Log.v(TAG, "convertView=" + convertView);
return convertView;
}
}

private EditPoiFragment getEditPoiFragment() {
return (EditPoiFragment) getParentFragment();
}

private EditPoiFragment.EditPoiData getData() {
return getEditPoiFragment().getEditPoiData();
}
}
@@ -1,10 +1,11 @@
package net.osmand.plus.osmedit;

import android.annotation.TargetApi;
import android.graphics.Color;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
@@ -15,18 +16,60 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageButton;

import net.osmand.data.Amenity;
import net.osmand.osm.edit.Node;
import net.osmand.plus.R;

import java.io.Serializable;
import java.util.LinkedHashSet;

public class EditPoiFragment extends Fragment {
public static final String TAG = "EditPoiFragment";

// XXX this fragment wont work on older devices
private static final String KEY_AMENITY_NODE = "amenity_node";
private static final String KEY_AMENITY = "amenity";
private static final String TAGS_LIST = "tags_list";

private final EditPoiData editPoiData = new EditPoiData();
private ViewPager viewPager;

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
// poiTypes = ((OsmandApplication) activity.getApplication()).getPoiTypes();
// allTranslatedSubTypes = poiTypes.getAllTranslatedNames();
// OsmandSettings settings = ((OsmandApplication) activity.getApplication()).getSettings();
// editPoiData.isLocalEdit = true;
// if (settings.OFFLINE_EDITION.get() || !settings.isInternetConnectionAvailable(true)) {
// openstreetmapUtil = new OpenstreetmapLocalUtil(plugin, activity);
// openstreetmapUtilToLoad = openstreetmapUtil;
// } else if(!settings.isInternetConnectionAvailable(true)) {
// openstreetmapUtil = new OpenstreetmapLocalUtil(plugin, activity);
// openstreetmapUtilToLoad = new OpenstreetmapRemoteUtil(activity);
// } else {
// editPoiData.isLocalEdit = false;
// openstreetmapUtil = new OpenstreetmapRemoteUtil(activity);
// openstreetmapUtilToLoad = openstreetmapUtil;
// }

// editPoiData.node = (Node) getArguments().getSerializable(KEY_AMENITY_NODE);
// editPoiData.tags = new LinkedHashSet<>();
}

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
if (savedInstanceState != null) {
editPoiData.tags = (LinkedHashSet<Tag>) savedInstanceState.getSerializable(TAGS_LIST);
} else {
editPoiData.tags = new LinkedHashSet<>();
}

View view = inflater.inflate(R.layout.fragment_edit_poi, container, false);

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);
@@ -38,14 +81,15 @@ public void onClick(View v) {
fragmentManager.popBackStack();
}
});
final ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);

viewPager = (ViewPager) view.findViewById(R.id.viewpager);
MyAdapter pagerAdapter = new MyAdapter(getChildFragmentManager());
viewPager.setAdapter(pagerAdapter);

final TabLayout tabLayout = (TabLayout) view.findViewById(R.id.tab_layout);
tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

// Hack due to problems with design support library v22.2.1
// 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)) {
@@ -60,13 +104,47 @@ public void onLayoutChange(View v, int left, int top, int right, int bottom,
}
});
}
int orangeColor = getResources().getColor(R.color.osmand_orange);
int grayColor = getResources().getColor(android.R.color.darker_gray);
tabLayout.setTabTextColors(grayColor, orangeColor);

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")));
}
});

return view;
}

@Override
public void onSaveInstanceState(Bundle outState) {
outState.putSerializable(TAGS_LIST, editPoiData.tags);
super.onSaveInstanceState(outState);
}

public void addOnPageChangeListener(ViewPager.OnPageChangeListener listener) {
viewPager.addOnPageChangeListener(listener);
}

public EditPoiFragment createInstance(Node node, Amenity amenity) {
EditPoiFragment editPoiFragment = new EditPoiFragment();
Bundle args = new Bundle();
args.putSerializable(KEY_AMENITY_NODE, node);
args.putSerializable(KEY_AMENITY, amenity);
editPoiFragment.setArguments(args);
return editPoiFragment;
}

public EditPoiData getEditPoiData() {
return editPoiData;
}

public void send() {
// TODO implement saving
}

public static class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
@@ -101,19 +179,43 @@ public CharSequence getPageTitle(int position) {
}
}

public static class NormalDataFragment extends Fragment {
@Nullable
public static class EditPoiData {
// public boolean isLocalEdit;
// public Node node;
public LinkedHashSet<Tag> tags;
}

public static class Tag implements Serializable {
public String tag;
public String value;

public Tag(String tag, String value) {
this.tag = tag;
this.value = value;
}

@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;

Tag tag1 = (Tag) o;

return tag.equals(tag1.tag);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_edit_poi_normal, container, false);
public int hashCode() {
return tag.hashCode();
}
}

public static class AdvancedDataFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_edit_poi_advanced, container, false);
public String toString() {
return "Tag{" +
"tag='" + tag + '\'' +
", value='" + value + '\'' +
'}';
}
}
}
@@ -0,0 +1,101 @@
package net.osmand.plus.osmedit;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import net.osmand.plus.IconsCache;
import net.osmand.plus.R;
import net.osmand.plus.activities.MapActivity;
import net.osmand.plus.osmedit.EditPoiFragment.Tag;

public class NormalDataFragment extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
IconsCache iconsCache = ((MapActivity) getActivity()).getMyApplication().getIconsCache();
View view = inflater.inflate(R.layout.fragment_edit_poi_normal, container, false);

ImageView streetImageView = (ImageView) view.findViewById(R.id.streetImageView);
streetImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_street_name));
ImageView houseNumberImageView = (ImageView) view.findViewById(R.id.houseNumberImageView);
houseNumberImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_building_number));
ImageView phoneImageView = (ImageView) view.findViewById(R.id.phoneImageView);
phoneImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_call_dark));
ImageView webSiteImageView = (ImageView) view.findViewById(R.id.webSiteImageView);
webSiteImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_world_globe_dark));
ImageView descriptionImageView = (ImageView) view.findViewById(R.id.descriptionImageView);
descriptionImageView.setImageDrawable(iconsCache.getContentIcon(R.drawable.ic_action_description));

// TODO replace with constants
final TextView streetEditText = (TextView) view.findViewById(R.id.streetEditText);
streetEditText.setOnFocusChangeListener(new MyOnFocusChangeListener(getData(), "addr:street"));
final TextView houseNumberEditText = (TextView) view.findViewById(R.id.houseNumberEditText);
houseNumberEditText.setOnFocusChangeListener(new MyOnFocusChangeListener(getData(), "addr:housenumber"));
final TextView phoneEditText = (TextView) view.findViewById(R.id.phoneEditText);
phoneEditText.setOnFocusChangeListener(new MyOnFocusChangeListener(getData(), "phone"));
final TextView webSiteEditText = (TextView) view.findViewById(R.id.webSiteEditText);
webSiteEditText.setOnFocusChangeListener(new MyOnFocusChangeListener(getData(), "website"));
final TextView descriptionEditText = (TextView) view.findViewById(R.id.descriptionEditText);
descriptionEditText.setOnFocusChangeListener(new MyOnFocusChangeListener(getData(), "description"));

Button saveButton = (Button) view.findViewById(R.id.saveButton);
int saveButtonTextId = //getData().isLocalEdit ? R.string.shared_string_save :
R.string.default_buttons_commit;
saveButton.setText(saveButtonTextId);
saveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getEditPoiFragment().send();
}
});
Button cancelButton = (Button) view.findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
Fragment editPoiFragment = getParentFragment();
fragmentManager.beginTransaction().remove(editPoiFragment).commit();
fragmentManager.popBackStack();
}
});
return view;
}

private EditPoiFragment getEditPoiFragment() {
return (EditPoiFragment) getParentFragment();
}

private EditPoiFragment.EditPoiData getData() {
return getEditPoiFragment().getEditPoiData();
}

private static class MyOnFocusChangeListener implements View.OnFocusChangeListener {
private EditPoiFragment.EditPoiData data;
private String tagName;

public MyOnFocusChangeListener(EditPoiFragment.EditPoiData data, String tagName) {
this.data = data;
this.tagName = tagName;
}

@Override
public void onFocusChange(View v, boolean hasFocus) {
String string = ((EditText) v).getText().toString();
if (!TextUtils.isEmpty(string)) {
Tag tag = new Tag(tagName, string);
data.tags.remove(tag);
data.tags.add(tag);
}
}
}
}
@@ -7,16 +7,13 @@
import net.osmand.plus.OsmandSettings;
import net.osmand.plus.R;
import net.osmand.plus.Version;
import net.osmand.util.Algorithms;

import org.apache.commons.logging.Log;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

public class OsmBugsRemoteUtil implements OsmBugsUtil {
@@ -83,16 +80,16 @@ private String editingPOI(String url, String requestMethod, String userOperation
}
connection.setDoInput(true);
if (requestMethod.equals("PUT") || requestMethod.equals("POST") || requestMethod.equals("DELETE")) { //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
// connection.setDoOutput(true);
// connection.setRequestProperty("Content-type", "text/xml"); //$NON-NLS-1$ //$NON-NLS-2$
// OutputStream out = connection.getOutputStream();
// String requestBody = null;
// if (requestBody != null) {
// BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"), 1024); //$NON-NLS-1$
// bwr.write(requestBody);
// bwr.flush();
// }
// out.close();
// connection.setDoOutput(true);
// connection.setRequestProperty("Content-type", "text/xml"); //$NON-NLS-1$ //$NON-NLS-2$
// OutputStream out = connection.getOutputStream();
// String requestBody = null;
// if (requestBody != null) {
// BufferedWriter bwr = new BufferedWriter(new OutputStreamWriter(out, "UTF-8"), 1024); //$NON-NLS-1$
// bwr.write(requestBody);
// bwr.flush();
// }
// out.close();
}
connection.connect();
String msg = connection.getResponseMessage();
@@ -1,6 +1,19 @@
package net.osmand.plus.osmedit;

import java.util.List;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import net.osmand.access.AccessibleToast;
import net.osmand.data.Amenity;
@@ -19,64 +32,52 @@
import net.osmand.plus.myplaces.FavoritesActivity;
import net.osmand.plus.views.OsmandMapTileView;
import net.osmand.util.Algorithms;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;

import java.util.List;


public class OsmEditingPlugin extends OsmandPlugin {
private static final String ID = "osm.editing";
private OsmandSettings settings;
private OsmandApplication app;
OpenstreetmapsDbHelper dbpoi ;
OsmBugsDbHelper dbbug ;
OpenstreetmapsDbHelper dbpoi;
OsmBugsDbHelper dbbug;

@Override
public String getId() {
return ID;
}

public OpenstreetmapsDbHelper getDBPOI() {
if(dbpoi == null) {
if (dbpoi == null) {
dbpoi = new OpenstreetmapsDbHelper(app);
}
return dbpoi;
}

public OsmBugsDbHelper getDBBug() {
if(dbbug == null) {
if (dbbug == null) {
dbbug = new OsmBugsDbHelper(app);
}
return dbbug;
}

public OsmEditingPlugin(OsmandApplication app) {
this.app = app;
settings = app.getSettings();
}

private OsmBugsLayer osmBugsLayer;
private OsmEditsLayer osmEditsLayer;
private EditingPOIDialogProvider poiActions;

@Override
public void updateLayers(OsmandMapTileView mapView, MapActivity activity) {
if (isActive()) {
if (osmBugsLayer == null) {
registerLayers(activity);
}
if (!mapView.getLayers().contains(osmEditsLayer)) {
if (!mapView.getLayers().contains(osmEditsLayer)) {
activity.getMapView().addLayer(osmEditsLayer, 3.5f);
}
if (mapView.getLayers().contains(osmBugsLayer) != settings.SHOW_OSM_BUGS.get()) {
@@ -87,30 +88,30 @@ public void updateLayers(OsmandMapTileView mapView, MapActivity activity) {
}
}
} else {
if(osmBugsLayer != null) {
if (osmBugsLayer != null) {
mapView.removeLayer(osmBugsLayer);
}
if(osmEditsLayer != null) {
if (osmEditsLayer != null) {
mapView.removeLayer(osmEditsLayer);
}
}
}

@Override
public void registerLayers(MapActivity activity){
public void registerLayers(MapActivity activity) {
osmBugsLayer = new OsmBugsLayer(activity, this);
osmEditsLayer = new OsmEditsLayer(activity, this);
}

public OsmEditsLayer getOsmEditsLayer(MapActivity activity){
if(osmEditsLayer == null) {
public OsmEditsLayer getOsmEditsLayer(MapActivity activity) {
if (osmEditsLayer == null) {
registerLayers(activity);
}
return osmEditsLayer;
}

public OsmBugsLayer getBugsLayer(MapActivity activity) {
if(osmBugsLayer == null) {
if (osmBugsLayer == null) {
registerLayers(activity);
}
return osmBugsLayer;
@@ -123,30 +124,34 @@ public void mapActivityCreate(MapActivity activity) {
activity.addDialogProvider(getPoiActions(activity));
activity.addDialogProvider(getBugsLayer(activity));
}


@Override
public Class<? extends Activity> getSettingsActivity() {
return SettingsOsmEditingActivity.class;
}

public EditingPOIDialogProvider getPoiActions(MapActivity activity) {
if (poiActions == null) {
poiActions = new EditingPOIDialogProvider(activity, this);
}
return poiActions;
}

@Override
public void registerMapContextMenuActions(final MapActivity mapActivity, final double latitude, final double longitude, ContextMenuAdapter adapter,
final Object selectedObj) {
final Object selectedObj) {
OnContextMenuClick listener = new OnContextMenuClick() {
@Override
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int resId, int pos, boolean isChecked) {
if (resId == R.string.context_menu_item_create_poi) {
getPoiActions(mapActivity).showCreateDialog(latitude, longitude);
//getPoiActions(mapActivity).showCreateDialog(latitude, longitude);
mapActivity.getSupportFragmentManager().beginTransaction()
.add(R.id.fragmentContainer, new EditPoiFragment(), EditPoiFragment.TAG)
.addToBackStack(null)
.commit();
} else if (resId == R.string.context_menu_item_open_bug) {
if(osmBugsLayer == null) {
if (osmBugsLayer == null) {
registerLayers(mapActivity);
}
osmBugsLayer.openBug(latitude, longitude);
@@ -158,7 +163,7 @@ public boolean onContextMenuClick(ArrayAdapter<?> adapter, int resId, int pos, b
return true;
}
};
if(selectedObj instanceof Amenity) {
if (selectedObj instanceof Amenity) {
adapter.item(R.string.poi_context_menu_modify).iconColor(R.drawable.ic_action_edit_dark).listen(listener).position(1).reg();
adapter.item(R.string.poi_context_menu_delete).iconColor(R.drawable.ic_action_delete_dark).listen(listener).position(2).reg();
} else {
@@ -169,7 +174,7 @@ public boolean onContextMenuClick(ArrayAdapter<?> adapter, int resId, int pos, b

@Override
public void addMyPlacesTab(FavoritesActivity favoritesActivity, List<TabActivity.TabItem> mTabs, Intent intent) {
if (getDBPOI().getOpenstreetmapPoints().size() > 0 || getDBBug().getOsmbugsPoints().size() > 0){
if (getDBPOI().getOpenstreetmapPoints().size() > 0 || getDBBug().getOsmbugsPoints().size() > 0) {
mTabs.add(favoritesActivity.getTabIndicator(R.string.osm_edits, OsmEditsFragment.class));
if (intent != null && "OSM".equals(intent.getStringExtra("TAB"))) {
app.getSettings().FAVORITES_TAB.set(R.string.osm_edits);
@@ -182,23 +187,23 @@ public void registerLayerContextMenuActions(OsmandMapTileView mapView, ContextMe
adapter.item(R.string.layer_osm_bugs).selected(settings.SHOW_OSM_BUGS.get() ? 1 : 0)
.iconColor(R.drawable.ic_action_bug_dark).listen(new OnContextMenuClick() {

@Override
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
if (itemId == R.string.layer_osm_bugs) {
settings.SHOW_OSM_BUGS.set(isChecked);
updateLayers(mapActivity.getMapView(), mapActivity);
}
return true;
}
}).position(16).reg();
@Override
public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos, boolean isChecked) {
if (itemId == R.string.layer_osm_bugs) {
settings.SHOW_OSM_BUGS.set(isChecked);
updateLayers(mapActivity.getMapView(), mapActivity);
}
return true;
}
}).position(16).reg();

}

@Override
public String getDescription() {
return app.getString(R.string.osm_editing_plugin_description);
}

@Override
public void contextMenuFragment(final Activity la, final Fragment fragment, final Object info, ContextMenuAdapter adapter) {
if (fragment instanceof AvailableGPXFragment) {
@@ -214,7 +219,7 @@ public boolean onContextMenuClick(ArrayAdapter<?> adapter, int itemId, int pos,
}).reg();
}
}

@Override
public void optionsMenuFragment(final Activity activity, final Fragment fragment, ContextMenuAdapter optionsMenuAdapter) {
if (fragment instanceof AvailableGPXFragment) {
@@ -240,7 +245,6 @@ public void onClick(DialogInterface dialog, int which) {
}
}



public enum UploadVisibility implements IEnumWithResource {
Public(R.string.gpxup_public),
@@ -252,53 +256,55 @@ public enum UploadVisibility implements IEnumWithResource {
private UploadVisibility(int resourceId) {
this.resourceId = resourceId;
}

public String asURLparam() {
return name().toLowerCase();
}

@Override
public int stringResource() {
return resourceId;
}
}
public boolean sendGPXFiles(final Activity la, AvailableGPXFragment f, final GpxInfo... info){

public boolean sendGPXFiles(final Activity la, AvailableGPXFragment f, final GpxInfo... info) {
String name = settings.USER_NAME.get();
String pwd = settings.USER_PASSWORD.get();
if(Algorithms.isEmpty(name) || Algorithms.isEmpty(pwd)){
if (Algorithms.isEmpty(name) || Algorithms.isEmpty(pwd)) {
AccessibleToast.makeText(la, R.string.validate_gpx_upload_name_pwd, Toast.LENGTH_LONG).show();
return false;
}
Builder bldr = new AlertDialog.Builder(la);
LayoutInflater inflater = (LayoutInflater)la.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LayoutInflater inflater = (LayoutInflater) la.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View view = inflater.inflate(R.layout.send_gpx_osm, null);
final EditText descr = (EditText) view.findViewById(R.id.memory_size);
if(info.length > 0 && info[0].getFileName() != null) {
if (info.length > 0 && info[0].getFileName() != null) {
int dt = info[0].getFileName().indexOf('.');
descr.setText(info[0].getFileName().substring(0, dt));
}
final EditText tags = (EditText) view.findViewById(R.id.TagsText);
final Spinner visibility = ((Spinner)view.findViewById(R.id.Visibility));
final EditText tags = (EditText) view.findViewById(R.id.TagsText);
final Spinner visibility = ((Spinner) view.findViewById(R.id.Visibility));
EnumAdapter<UploadVisibility> adapter = new EnumAdapter<UploadVisibility>(la, android.R.layout.simple_spinner_item, UploadVisibility.values());
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
visibility.setAdapter(adapter);
visibility.setSelection(0);

bldr.setView(view);
bldr.setNegativeButton(R.string.shared_string_no, null);
bldr.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
new UploadGPXFilesTask(la, descr.getText().toString(), tags.getText().toString(),
(UploadVisibility) visibility.getItemAtPosition(visibility.getSelectedItemPosition())
).execute(info);
new UploadGPXFilesTask(la, descr.getText().toString(), tags.getText().toString(),
(UploadVisibility) visibility.getItemAtPosition(visibility.getSelectedItemPosition())
).execute(info);
}
});
bldr.show();
return true;
}


@Override
public String getName() {
return app.getString(R.string.osm_settings);
@@ -308,13 +314,13 @@ public String getName() {
public int getLogoResourceId() {
return R.drawable.ic_action_bug_dark;
}

@Override
public int getAssetResourceName() {
return R.drawable.osm_editing;
}

public static String getEditName(OsmPoint point){
public static String getEditName(OsmPoint point) {
String prefix = getPrefix(point);
if (point.getGroup() == OsmPoint.Group.POI) {
return prefix + " (" + ((OpenstreetmapPoint) point).getSubtype() + ") " + ((OpenstreetmapPoint) point).getName();
@@ -329,5 +335,5 @@ private static String getPrefix(OsmPoint osmPoint) {
return (osmPoint.getGroup() == OsmPoint.Group.POI ? "POI " : "Bug ") + " id: " + osmPoint.getId();
}


}
0 cardview/build.gradle 100644 → 100755
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
@@ -0,0 +1 @@
/build
@@ -0,0 +1,23 @@
apply plugin: 'com.android.library'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"

defaultConfig {
minSdkVersion 7
targetSdkVersion 21
}

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile project(":eclipse-compile:appcompat")
}
@@ -1,8 +1,7 @@
include ':OsmAnd-java', ':eclipse-compile:design', ':cardview'
include ':OsmAnd-java', ':eclipse-compile:design', ':recyclerview', ":cardview"
include ':OsmAnd'
include ':eclipse-compile:appcompat'
include ':plugins:OsmAnd-AddressPlugin'
include ':plugins:Osmand-ParkingPlugin'
include ':plugins:Osmand-Sherpafy'
include ':plugins:Osmand-SRTMPlugin'
include ':cardview'