Bugs of OSM Editing dialogs
This commit is contained in:
parent
b43d6b584c
commit
58c4e56b44
9 changed files with 106 additions and 336 deletions
|
@ -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
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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<String, PoiType> allTranslatedSubTypes = getMyApplication().getPoiTypes().getAllTranslatedNames(true);
|
||||
if (allTranslatedSubTypes == null) {
|
||||
return "";
|
||||
}
|
||||
Map<String, Integer> addGroup = new HashMap<>();
|
||||
Map<String, Integer> editGroup = new HashMap<>();
|
||||
Map<String, Integer> deleteGroup = new HashMap<>();
|
||||
Map<String, Integer> 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<String, Integer> 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<String, Integer> 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<OsmPoint, String> 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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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<OsmPoint, String> 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);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue