From 58c4e56b44bbb6e9a122b21f37c56a0bc167e381 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Thu, 3 Dec 2020 19:55:35 +0200 Subject: [PATCH] Bugs of OSM Editing dialogs --- .../plus/osmedit/DashOsmEditsFragment.java | 53 ++-- .../net/osmand/plus/osmedit/OsmBugsLayer.java | 7 - .../osmand/plus/osmedit/OsmEditsFragment.java | 14 +- .../osmedit/OsmEditsUploadListenerHelper.java | 12 +- .../dialogs/ProgressDialogPoiUploader.java | 7 + .../SendOsmNoteBottomSheetFragment.java | 11 +- .../dialogs/SendPoiBottomSheetFragment.java | 4 +- .../dialogs/SendPoiDialogFragment.java | 282 ------------------ .../SimpleProgressDialogPoiUploader.java | 52 ++++ 9 files changed, 106 insertions(+), 336 deletions(-) create mode 100644 OsmAnd/src/net/osmand/plus/osmedit/dialogs/ProgressDialogPoiUploader.java delete mode 100644 OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java create mode 100644 OsmAnd/src/net/osmand/plus/osmedit/dialogs/SimpleProgressDialogPoiUploader.java diff --git a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java index e55181872d..3ad2135a7a 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java @@ -1,7 +1,6 @@ package net.osmand.plus.osmedit; import android.app.ProgressDialog; -import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; import android.view.LayoutInflater; @@ -12,9 +11,8 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; -import androidx.appcompat.app.AlertDialog; - import net.osmand.data.PointDescription; +import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; @@ -22,19 +20,26 @@ import net.osmand.plus.dashboard.DashBaseFragment; import net.osmand.plus.dashboard.DashboardOnMap; import net.osmand.plus.dashboard.tools.DashFragmentData; import net.osmand.plus.dialogs.ProgressDialogFragment; -import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment; -import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.PoiUploaderType; +import net.osmand.plus.measurementtool.LoginBottomSheetFragment; +import net.osmand.plus.osmedit.dialogs.ProgressDialogPoiUploader; +import net.osmand.plus.osmedit.dialogs.SendOsmNoteBottomSheetFragment; +import net.osmand.plus.osmedit.dialogs.SendPoiBottomSheetFragment; +import net.osmand.plus.osmedit.oauth.OsmOAuthAuthorizationAdapter; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.util.Algorithms; import java.util.ArrayList; import java.util.List; import java.util.Map; +import static net.osmand.plus.osmedit.oauth.OsmOAuthHelper.*; + /** * Created by Denis * on 20.01.2015. */ public class DashOsmEditsFragment extends DashBaseFragment - implements SendPoiDialogFragment.ProgressDialogPoiUploader { + implements ProgressDialogPoiUploader, OsmAuthorizationListener { public static final String TAG = "DASH_OSM_EDITS_FRAGMENT"; public static final int TITLE_ID = R.string.osm_settings; @@ -51,6 +56,7 @@ public class DashOsmEditsFragment extends DashBaseFragment new DashFragmentData(TAG, DashOsmEditsFragment.class, SHOULD_SHOW_FUNCTION, 130, ROW_NUMBER_TAG); OsmEditingPlugin plugin; + private OsmPoint selectedPoint; @Override public View initView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { @@ -114,10 +120,21 @@ public class DashOsmEditsFragment extends DashBaseFragment @Override public void onClick(View v) { if (point.getGroup() == OsmPoint.Group.POI) { - SendPoiDialogFragment.createInstance(new OsmPoint[] {point}, PoiUploaderType.FRAGMENT) - .show(getChildFragmentManager(), "SendPoiDialogFragment"); + selectedPoint = point; + OsmandApplication app = getMyApplication(); + OsmandSettings settings = app.getSettings(); + OsmOAuthAuthorizationAdapter authorizationAdapter = app.getOsmOAuthHelper().getAuthorizationAdapter(); + boolean isLogged = authorizationAdapter.isValidToken() + || !Algorithms.isEmpty(settings.USER_NAME.get()) + && !Algorithms.isEmpty(settings.USER_PASSWORD.get()); + if (isLogged) { + SendPoiBottomSheetFragment.showInstance(getChildFragmentManager(), new OsmPoint[]{point}); + } else { + LoginBottomSheetFragment.showInstance(getActivity().getSupportFragmentManager(), + DashOsmEditsFragment.this); + } } else { - uploadItem(point); + SendOsmNoteBottomSheetFragment.showInstance(getChildFragmentManager(), new OsmPoint[]{point}); } } }); @@ -141,18 +158,9 @@ public class DashOsmEditsFragment extends DashBaseFragment } } - // TODO: 9/7/15 Redesign osm notes. - private void uploadItem(final OsmPoint point) { - AlertDialog.Builder b = new AlertDialog.Builder(getActivity()); - b.setMessage(getString(R.string.local_osm_changes_upload_all_confirm, 1)); - b.setPositiveButton(R.string.shared_string_yes, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - showProgressDialog(new OsmPoint[] {point}, false, false); - } - }); - b.setNegativeButton(R.string.shared_string_cancel, null); - b.show(); + @Override + public void authorizationCompleted() { + SendPoiBottomSheetFragment.showInstance(getChildFragmentManager(), new OsmPoint[]{selectedPoint}); } @Override @@ -215,5 +223,4 @@ public class DashOsmEditsFragment extends DashBaseFragment } } } - -} +} \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java index 1c0540637c..361d1c7ac5 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java @@ -376,13 +376,6 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider } } - private void handleBug(String text, OpenStreetNote bug, Action action, OsmNotesPoint point) { - if (bug != null || point != null) { - executeTaskInBackground(new HandleOsmNoteAsyncTask(getOsmbugsUtil(bug), local, bug, point, text, action, - getHandleBugListener())); - } - } - HandleOsmNoteAsyncTask.HandleBugListener getHandleBugListener() { return new HandleOsmNoteAsyncTask.HandleBugListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java index 380eeb8850..00f5f251ef 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java @@ -58,9 +58,9 @@ import net.osmand.plus.osmedit.FileTypeBottomSheetDialogFragment.FileTypeFragmen import net.osmand.plus.osmedit.OpenstreetmapLocalUtil.OnNodeCommittedListener; import net.osmand.plus.osmedit.OsmEditOptionsBottomSheetDialogFragment.OsmEditOptionsFragmentListener; import net.osmand.plus.osmedit.OsmPoint.Group; +import net.osmand.plus.osmedit.dialogs.ProgressDialogPoiUploader; import net.osmand.plus.osmedit.dialogs.SendOsmNoteBottomSheetFragment; import net.osmand.plus.osmedit.dialogs.SendPoiBottomSheetFragment; -import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; import net.osmand.plus.osmedit.oauth.OsmOAuthAuthorizationAdapter; import net.osmand.plus.osmedit.oauth.OsmOAuthHelper.OsmAuthorizationListener; import net.osmand.plus.settings.backend.OsmandSettings; @@ -633,13 +633,13 @@ public class OsmEditsFragment extends OsmAndListFragment implements ProgressDial private void uploadItems(final OsmPoint[] points) { FragmentActivity activity = getActivity(); if (activity != null) { - OsmandApplication app = getMyApplication(); - OsmandSettings settings = app.getSettings(); - OsmOAuthAuthorizationAdapter authorizationAdapter = app.getOsmOAuthHelper().getAuthorizationAdapter(); - boolean isLogged = authorizationAdapter.isValidToken() - || !Algorithms.isEmpty(settings.USER_NAME.get()) - && !Algorithms.isEmpty(settings.USER_PASSWORD.get()); if (hasPoiGroup(points)) { + OsmandApplication app = getMyApplication(); + OsmandSettings settings = app.getSettings(); + OsmOAuthAuthorizationAdapter authorizationAdapter = app.getOsmOAuthHelper().getAuthorizationAdapter(); + boolean isLogged = authorizationAdapter.isValidToken() + || !Algorithms.isEmpty(settings.USER_NAME.get()) + && !Algorithms.isEmpty(settings.USER_PASSWORD.get()); if (isLogged) { SendPoiBottomSheetFragment.showInstance(getChildFragmentManager(), points); } else { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java index cbc37e1ea2..6ff5e1d11f 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsUploadListenerHelper.java @@ -28,10 +28,8 @@ import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; -import net.osmand.plus.activities.MapActivity; import net.osmand.plus.dialogs.ProgressDialogFragment; -import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment; -import net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.PoiUploaderType; +import net.osmand.plus.measurementtool.LoginBottomSheetFragment; import java.text.MessageFormat; import java.util.ArrayList; @@ -74,13 +72,7 @@ public class OsmEditsUploadListenerHelper implements OsmEditsUploadListener { OsmPoint point = loadErrorsMap.keySet().iterator().next(); String message = loadErrorsMap.get(point); if (message.equals(activity.getString(R.string.auth_failed))) { - SendPoiDialogFragment dialogFragment; - if (activity instanceof MapActivity) { - dialogFragment = SendPoiDialogFragment.createInstance(new OsmPoint[]{point}, PoiUploaderType.SIMPLE); - } else { - dialogFragment = SendPoiDialogFragment.createInstance(new OsmPoint[]{point}, PoiUploaderType.FRAGMENT); - } - dialogFragment.show(activity.getSupportFragmentManager(), "error_loading"); + LoginBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), null); } else { DialogFragment dialogFragment = UploadingErrorDialogFragment.getInstance(message, point); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/ProgressDialogPoiUploader.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/ProgressDialogPoiUploader.java new file mode 100644 index 0000000000..869ed38b9c --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/ProgressDialogPoiUploader.java @@ -0,0 +1,7 @@ +package net.osmand.plus.osmedit.dialogs; + +import net.osmand.plus.osmedit.OsmPoint; + +public interface ProgressDialogPoiUploader { + void showProgressDialog(OsmPoint[] points, boolean closeChangeSet, boolean anonymously); +} diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java index 25ff6968a8..7ab3d9149b 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java @@ -28,6 +28,7 @@ import net.osmand.plus.activities.MapActivity; import net.osmand.plus.base.MenuBottomSheetDialogFragment; import net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem; import net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem; +import net.osmand.plus.osmedit.DashOsmEditsFragment; import net.osmand.plus.osmedit.OsmNotesPoint; import net.osmand.plus.osmedit.OsmPoint; import net.osmand.plus.osmedit.oauth.OsmOAuthAuthorizationAdapter; @@ -42,9 +43,7 @@ import static net.osmand.plus.UiUtilities.setupDialogButton; import static net.osmand.plus.osmedit.OsmEditingFragment.OSM_LOGIN_DATA; import static net.osmand.plus.osmedit.ValidateOsmLoginDetailsTask.ValidateOsmLoginListener; import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; +import static net.osmand.plus.osmedit.dialogs.SendPoiBottomSheetFragment.OPENSTREETMAP_POINT; public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragment implements ValidateOsmLoginListener, OsmAuthorizationListener { @@ -197,7 +196,11 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen ProgressDialogPoiUploader progressDialogPoiUploader = null; Activity activity = getActivity(); if (activity instanceof MapActivity) { - progressDialogPoiUploader = new SimpleProgressDialogPoiUploader((MapActivity) activity); + if (getParentFragment() instanceof DashOsmEditsFragment) { + progressDialogPoiUploader = (ProgressDialogPoiUploader) getParentFragment(); + } else { + progressDialogPoiUploader = new SimpleProgressDialogPoiUploader((MapActivity) activity); + } } else if (getParentFragment() instanceof ProgressDialogPoiUploader) { progressDialogPoiUploader = (ProgressDialogPoiUploader) getParentFragment(); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java index 6bb227c2d3..35a998e1bb 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiBottomSheetFragment.java @@ -34,14 +34,12 @@ import java.util.HashMap; import java.util.Map; import static net.osmand.plus.osmedit.dialogs.SendGpxBottomSheetFragment.showOpenStreetMapScreen; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.OPENSTREETMAP_POINT; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.ProgressDialogPoiUploader; -import static net.osmand.plus.osmedit.dialogs.SendPoiDialogFragment.SimpleProgressDialogPoiUploader; public class SendPoiBottomSheetFragment extends MenuBottomSheetDialogFragment { public static final String TAG = SendPoiBottomSheetFragment.class.getSimpleName(); private static final Log LOG = PlatformUtil.getLog(SendPoiBottomSheetFragment.class); + public static final String OPENSTREETMAP_POINT = "openstreetmap_point"; private OsmPoint[] poi; private SwitchCompat closeChangeSet; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java deleted file mode 100644 index 88e52b70e7..0000000000 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java +++ /dev/null @@ -1,282 +0,0 @@ -package net.osmand.plus.osmedit.dialogs; - -import android.app.Dialog; -import android.app.ProgressDialog; -import android.content.DialogInterface; -import android.os.AsyncTask; -import android.os.Bundle; -import android.view.View; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.EditText; - -import androidx.annotation.NonNull; -import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.widget.SwitchCompat; -import androidx.fragment.app.DialogFragment; - -import net.osmand.osm.PoiType; -import net.osmand.osm.edit.Entity; -import net.osmand.plus.OsmandApplication; -import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.R; -import net.osmand.plus.activities.MapActivity; -import net.osmand.plus.dialogs.ProgressDialogFragment; -import net.osmand.plus.osmedit.OpenstreetmapPoint; -import net.osmand.plus.osmedit.OsmBugsLayer; -import net.osmand.plus.osmedit.OsmEditingPlugin; -import net.osmand.plus.osmedit.OsmEditsUploadListener; -import net.osmand.plus.osmedit.OsmEditsUploadListenerHelper; -import net.osmand.plus.osmedit.OsmPoint; -import net.osmand.plus.osmedit.UploadOpenstreetmapPointAsyncTask; -import net.osmand.util.Algorithms; - -import java.util.HashMap; -import java.util.Map; - -public class SendPoiDialogFragment extends DialogFragment { - - - public static final String TAG = "SendPoiDialogFragment"; - public static final String OPENSTREETMAP_POINT = "openstreetmap_point"; - public static final String POI_UPLOADER_TYPE = "poi_uploader_type"; - private OsmPoint[] poi; - - public enum PoiUploaderType { - SIMPLE, - FRAGMENT - } - - private OsmandApplication getMyApplication() { - return (OsmandApplication) getActivity().getApplication(); - } - - @NonNull - @Override - public Dialog onCreateDialog(Bundle savedInstanceState) { - poi = (OsmPoint[]) getArguments().getSerializable(OPENSTREETMAP_POINT); - final PoiUploaderType poiUploaderType = PoiUploaderType.valueOf(getArguments().getString(POI_UPLOADER_TYPE, PoiUploaderType.SIMPLE.name())); - AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); - View view = getActivity().getLayoutInflater().inflate(R.layout.send_poi_dialog, null); - final SwitchCompat uploadAnonymously = (SwitchCompat) view.findViewById(R.id.upload_anonymously_switch); - final EditText messageEditText = (EditText) view.findViewById(R.id.message_field); - final EditText userNameEditText = (EditText) view.findViewById(R.id.user_name_field); - final EditText passwordEditText = (EditText) view.findViewById(R.id.password_field); - final View messageLabel = view.findViewById(R.id.message_label); - final View userNameLabel = view.findViewById(R.id.osm_user_name_label); - final View passwordLabel = view.findViewById(R.id.osm_user_password_label); - final CheckBox closeChangeSetCheckBox = - (CheckBox) view.findViewById(R.id.close_change_set_checkbox); - final OsmandSettings settings = ((OsmandApplication) getActivity().getApplication()) - .getSettings(); - userNameEditText.setText(settings.USER_NAME.get()); - passwordEditText.setText(settings.USER_PASSWORD.get()); - boolean hasPoiGroup = false; - assert poi != null; - for (OsmPoint p : poi) { - if (p.getGroup() == OsmPoint.Group.POI) { - hasPoiGroup = true; - break; - } - } - String defaultChangeSet = createDefaultChangeSet(); - messageEditText.setText(defaultChangeSet); - final boolean hasPOI = hasPoiGroup; - messageLabel.setVisibility(hasPOI ? View.VISIBLE : View.GONE); - messageEditText.setVisibility(hasPOI ? View.VISIBLE : View.GONE); - closeChangeSetCheckBox.setVisibility(hasPOI ? View.VISIBLE : View.GONE); - closeChangeSetCheckBox.setChecked(hasPOI && !defaultChangeSet.isEmpty()); - view.findViewById(R.id.osm_note_header).setVisibility(hasPOI ? View.GONE : View.VISIBLE); - uploadAnonymously.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - userNameLabel.setVisibility(isChecked ? View.GONE : View.VISIBLE); - userNameEditText.setVisibility(isChecked ? View.GONE : View.VISIBLE); - passwordLabel.setVisibility(isChecked ? View.GONE : View.VISIBLE); - passwordEditText.setVisibility(isChecked ? View.GONE : View.VISIBLE); - } - }); - - final ProgressDialogPoiUploader progressDialogPoiUploader; - if (poiUploaderType == PoiUploaderType.SIMPLE && getActivity() instanceof MapActivity) { - progressDialogPoiUploader = - new SendPoiDialogFragment.SimpleProgressDialogPoiUploader((MapActivity) getActivity()); - } else { - progressDialogPoiUploader = (ProgressDialogPoiUploader) getParentFragment(); - } - builder.setTitle(hasPOI ? R.string.upload_poi : R.string.upload_osm_note) - .setView(view) - .setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - if (progressDialogPoiUploader != null) { - settings.USER_NAME.set(userNameEditText.getText().toString()); - settings.USER_PASSWORD.set(passwordEditText.getText().toString()); - String comment = messageEditText.getText().toString(); - if (comment.length() > 0) { - for (OsmPoint osmPoint : poi) { - if (osmPoint.getGroup() == OsmPoint.Group.POI) { - ((OpenstreetmapPoint) osmPoint).setComment(comment); - break; - } - } - } - progressDialogPoiUploader.showProgressDialog(poi, - closeChangeSetCheckBox.isChecked(), - !hasPOI && uploadAnonymously.isChecked()); - } - } - }) - .setNegativeButton(R.string.shared_string_cancel, null); - return builder.create(); - } - - public static SendPoiDialogFragment createInstance(@NonNull OsmPoint[] points, @NonNull PoiUploaderType uploaderType) { - SendPoiDialogFragment fragment = new SendPoiDialogFragment(); - Bundle bundle = new Bundle(); - bundle.putSerializable(OPENSTREETMAP_POINT, points); - bundle.putString(POI_UPLOADER_TYPE, uploaderType.name()); - fragment.setArguments(bundle); - return fragment; - } - - private String createDefaultChangeSet() { - Map allTranslatedSubTypes = getMyApplication().getPoiTypes().getAllTranslatedNames(true); - if (allTranslatedSubTypes == null) { - return ""; - } - Map addGroup = new HashMap<>(); - Map editGroup = new HashMap<>(); - Map deleteGroup = new HashMap<>(); - Map reopenGroup = new HashMap<>(); - String comment = ""; - for (OsmPoint p : poi) { - if (p.getGroup() == OsmPoint.Group.POI) { - OsmPoint.Action action = p.getAction(); - String type = ((OpenstreetmapPoint) p).getEntity().getTag(Entity.POI_TYPE_TAG); - if (type == null) { - continue; - } - PoiType localizedPoiType = allTranslatedSubTypes.get(type.toLowerCase().trim()); - if (localizedPoiType != null) { - type = Algorithms.capitalizeFirstLetter(localizedPoiType.getKeyName().replace('_', ' ')); - } - if (action == OsmPoint.Action.CREATE) { - if (!addGroup.containsKey(type)) { - addGroup.put(type, 1); - } else { - addGroup.put(type, addGroup.get(type) + 1); - } - } else if (action == OsmPoint.Action.MODIFY) { - if (!editGroup.containsKey(type)) { - editGroup.put(type, 1); - } else { - editGroup.put(type, editGroup.get(type) + 1); - } - } else if (action == OsmPoint.Action.DELETE) { - if (!deleteGroup.containsKey(type)) { - deleteGroup.put(type, 1); - } else { - deleteGroup.put(type, deleteGroup.get(type) + 1); - } - } else if (action == OsmPoint.Action.REOPEN) { - if (!reopenGroup.containsKey(type)) { - reopenGroup.put(type, 1); - } else { - reopenGroup.put(type, reopenGroup.get(type) + 1); - } - } - } - } - int modifiedItemsOutOfLimit = 0; - for (int i = 0; i < 4; i++) { - String action; - Map group; - switch (i) { - case 0: - action = getString(R.string.default_changeset_add); - group = addGroup; - break; - case 1: - action = getString(R.string.default_changeset_edit); - group = editGroup; - break; - case 2: - action = getString(R.string.default_changeset_delete); - group = deleteGroup; - break; - case 3: - action = getString(R.string.default_changeset_reopen); - group = reopenGroup; - break; - default: - action = ""; - group = new HashMap<>(); - } - - if (!group.isEmpty()) { - int pos = 0; - for (Map.Entry entry : group.entrySet()) { - String type = entry.getKey(); - int quantity = entry.getValue(); - if (comment.length() > 200) { - modifiedItemsOutOfLimit += quantity; - } else { - if (pos == 0) { - comment = comment.concat(comment.length() == 0 ? "" : "; ").concat(action).concat(" ").concat(quantity == 1 ? "" : quantity + " ").concat(type); - } else { - comment = comment.concat(", ").concat(quantity == 1 ? "" : quantity + " ").concat(type); - } - } - pos++; - } - } - } - if (modifiedItemsOutOfLimit != 0) { - comment = comment.concat("; ").concat(modifiedItemsOutOfLimit + " ").concat(getString(R.string.items_modified)).concat("."); - } else if (!comment.isEmpty()){ - comment = comment.concat("."); - } - return comment; - } - - public interface ProgressDialogPoiUploader { - void showProgressDialog(OsmPoint[] points, boolean closeChangeSet, boolean anonymously); - } - - public static class SimpleProgressDialogPoiUploader implements ProgressDialogPoiUploader { - - private MapActivity mapActivity; - - public SimpleProgressDialogPoiUploader(MapActivity mapActivity) { - this.mapActivity = mapActivity; - } - - @Override - public void showProgressDialog(OsmPoint[] points, boolean closeChangeSet, boolean anonymously) { - ProgressDialogFragment dialog = ProgressDialogFragment.createInstance( - R.string.uploading, - R.string.local_openstreetmap_uploading, - ProgressDialog.STYLE_HORIZONTAL); - OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); - OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(mapActivity, - mapActivity.getString(R.string.local_openstreetmap_were_uploaded)) { - @Override - public void uploadEnded(Map loadErrorsMap) { - super.uploadEnded(loadErrorsMap); - mapActivity.getContextMenu().close(); - OsmBugsLayer l = mapActivity.getMapView().getLayerByClass(OsmBugsLayer.class); - if(l != null) { - l.clearCache(); - mapActivity.refreshMap(); - } - } - }; - dialog.show(mapActivity.getSupportFragmentManager(), ProgressDialogFragment.TAG); - UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask( - dialog, listener, plugin, points.length, closeChangeSet, anonymously); - uploadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, points); - } - } -} diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SimpleProgressDialogPoiUploader.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SimpleProgressDialogPoiUploader.java new file mode 100644 index 0000000000..78fe97671a --- /dev/null +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SimpleProgressDialogPoiUploader.java @@ -0,0 +1,52 @@ +package net.osmand.plus.osmedit.dialogs; + +import android.app.ProgressDialog; +import android.os.AsyncTask; + +import net.osmand.plus.OsmandPlugin; +import net.osmand.plus.R; +import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.dialogs.ProgressDialogFragment; +import net.osmand.plus.osmedit.OsmBugsLayer; +import net.osmand.plus.osmedit.OsmEditingPlugin; +import net.osmand.plus.osmedit.OsmEditsUploadListener; +import net.osmand.plus.osmedit.OsmEditsUploadListenerHelper; +import net.osmand.plus.osmedit.OsmPoint; +import net.osmand.plus.osmedit.UploadOpenstreetmapPointAsyncTask; + +import java.util.Map; + +public class SimpleProgressDialogPoiUploader implements ProgressDialogPoiUploader { + + private MapActivity mapActivity; + + public SimpleProgressDialogPoiUploader(MapActivity mapActivity) { + this.mapActivity = mapActivity; + } + + @Override + public void showProgressDialog(OsmPoint[] points, boolean closeChangeSet, boolean anonymously) { + ProgressDialogFragment dialog = ProgressDialogFragment.createInstance( + R.string.uploading, + R.string.local_openstreetmap_uploading, + ProgressDialog.STYLE_HORIZONTAL); + OsmEditingPlugin plugin = OsmandPlugin.getPlugin(OsmEditingPlugin.class); + OsmEditsUploadListener listener = new OsmEditsUploadListenerHelper(mapActivity, + mapActivity.getString(R.string.local_openstreetmap_were_uploaded)) { + @Override + public void uploadEnded(Map loadErrorsMap) { + super.uploadEnded(loadErrorsMap); + mapActivity.getContextMenu().close(); + OsmBugsLayer l = mapActivity.getMapView().getLayerByClass(OsmBugsLayer.class); + if (l != null) { + l.clearCache(); + mapActivity.refreshMap(); + } + } + }; + dialog.show(mapActivity.getSupportFragmentManager(), ProgressDialogFragment.TAG); + UploadOpenstreetmapPointAsyncTask uploadTask = new UploadOpenstreetmapPointAsyncTask( + dialog, listener, plugin, points.length, closeChangeSet, anonymously); + uploadTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, points); + } +} \ No newline at end of file