From b43d6b584cef513cd0cebdad42d0a24d20e6b347 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Wed, 2 Dec 2020 18:58:31 +0200 Subject: [PATCH 1/4] Bugs of OSM Editing dialogs #287 --- OsmAnd/res/values/colors.xml | 5 +-- .../LoginBottomSheetFragment.java | 2 +- .../net/osmand/plus/osmedit/OsmBugsLayer.java | 33 ++++--------------- .../osmedit/dialogs/BugBottomSheetDialog.java | 7 ---- .../SendOsmNoteBottomSheetFragment.java | 6 ++-- .../dialogs/SendPoiDialogFragment.java | 2 ++ .../oauth/OsmOAuthAuthorizationAdapter.java | 27 ++++++++++----- .../plus/osmedit/oauth/OsmOAuthHelper.java | 4 +-- 8 files changed, 37 insertions(+), 49 deletions(-) diff --git a/OsmAnd/res/values/colors.xml b/OsmAnd/res/values/colors.xml index 3e9a872edb..788849dad0 100644 --- a/OsmAnd/res/values/colors.xml +++ b/OsmAnd/res/values/colors.xml @@ -477,7 +477,8 @@ #80D28521 #80000000 #4DCCCCCC - #14000000 - #0DFFFFFF + #4DCCCCCC + #1AFFFFFF + #67727272 \ No newline at end of file diff --git a/OsmAnd/src/net/osmand/plus/measurementtool/LoginBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/measurementtool/LoginBottomSheetFragment.java index 94ef66beab..cb0ee688d0 100644 --- a/OsmAnd/src/net/osmand/plus/measurementtool/LoginBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/measurementtool/LoginBottomSheetFragment.java @@ -94,7 +94,7 @@ public class LoginBottomSheetFragment extends MenuBottomSheetDialogFragment impl if (!(getActivity() instanceof MapActivity) && fragment instanceof OsmAuthorizationListener) { osmOAuthHelper.addListener((OsmAuthorizationListener) fragment); } - osmOAuthHelper.startOAuth((ViewGroup) view); + osmOAuthHelper.startOAuth((ViewGroup) view, nightMode); } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java index 71f7f112ec..1c0540637c 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java @@ -1,7 +1,6 @@ package net.osmand.plus.osmedit; import android.annotation.SuppressLint; -import android.content.DialogInterface; import android.graphics.Canvas; import android.graphics.PointF; import android.util.Xml; @@ -10,10 +9,8 @@ import android.view.View; import android.widget.EditText; import android.widget.Toast; -import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; -import net.osmand.AndroidUtils; import net.osmand.PlatformUtil; import net.osmand.data.FavouritePoint.BackgroundType; import net.osmand.data.LatLon; @@ -25,6 +22,7 @@ import net.osmand.osm.io.NetworkUtils; import net.osmand.plus.OsmandApplication; import net.osmand.plus.base.PointImageDrawable; import net.osmand.plus.osmedit.dialogs.BugBottomSheetDialog; +import net.osmand.plus.osmedit.dialogs.SendOsmNoteBottomSheetFragment; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.MapActivity; @@ -32,7 +30,6 @@ import net.osmand.plus.osmedit.OsmPoint.Action; import net.osmand.plus.views.layers.ContextMenuLayer.IContextMenuProvider; import net.osmand.plus.views.OsmandMapLayer; import net.osmand.plus.views.OsmandMapTileView; -import net.osmand.util.Algorithms; import org.apache.commons.logging.Log; import org.xmlpull.v1.XmlPullParser; @@ -370,29 +367,13 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider titleTextId, posButtonTextId, action, bug, point, getHandleBugListener()); return; } else { - ((EditText) view.findViewById(R.id.user_name_field)).setText(getUserName()); - ((EditText) view.findViewById(R.id.password_field)).setText( - activity.getMyApplication().getSettings().USER_PASSWORD.get()); + OsmNotesPoint pnt = new OsmNotesPoint(); + pnt.setAction(action); + pnt.setId(bug.getId()); + pnt.setLatitude(bug.getLatitude()); + pnt.setLongitude(bug.getLongitude()); + SendOsmNoteBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), new OsmPoint[]{pnt}); } - if (!Algorithms.isEmpty(text)) { - ((EditText) view.findViewById(R.id.message_field)).setText(text); - } - view.findViewById(R.id.message_field).requestFocus(); - AndroidUtils.softKeyboardDelayed(activity, view.findViewById(R.id.message_field)); - - final AlertDialog.Builder builder = new AlertDialog.Builder(activity); - builder.setTitle(R.string.shared_string_commit); - builder.setView(view); - builder.setPositiveButton(posButtonTextId, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String text = offline ? getMessageText(view) : getTextAndUpdateUserPwd(view); - activity.getContextMenu().close(); - handleBug(text, bug, action, point); - } - }); - builder.setNegativeButton(R.string.shared_string_cancel, null); - builder.create().show(); } private void handleBug(String text, OpenStreetNote bug, Action action, OsmNotesPoint point) { diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/BugBottomSheetDialog.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/BugBottomSheetDialog.java index 3793196ce0..38bb8da5fe 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/BugBottomSheetDialog.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/BugBottomSheetDialog.java @@ -57,8 +57,6 @@ public class BugBottomSheetDialog extends MenuBottomSheetDialogFragment { View osmNoteView = View.inflate(UiUtilities.getThemedContext(app, nightMode), R.layout.open_osm_note_text, null); TextInputLayout textBox = osmNoteView.findViewById(R.id.name_text_box); - int highlightColorId = nightMode ? R.color.list_background_color_dark : R.color.activity_background_color_light; - textBox.setBoxBackgroundColorResource(highlightColorId); textBox.setHint(AndroidUtils.addColon(app, R.string.osn_bug_name)); ColorStateList colorStateList = ColorStateList.valueOf(ContextCompat .getColor(app, nightMode ? R.color.text_color_secondary_dark : R.color.text_color_secondary_light)); @@ -86,11 +84,6 @@ public class BugBottomSheetDialog extends MenuBottomSheetDialogFragment { dismiss(); } - @Override - protected int getBgColorId() { - return nightMode ? R.color.activity_background_color_dark : R.color.list_background_color_light; - } - public static void showInstance(@NonNull FragmentManager fm, OsmBugsUtil osmBugsUtil, OsmBugsUtil local, String text, int titleTextId, int posButtonTextId, final OsmPoint.Action action, final OsmBugsLayer.OpenStreetNote bug, final OsmNotesPoint point, diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java index d26c1ac212..25ff6968a8 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendOsmNoteBottomSheetFragment.java @@ -59,6 +59,7 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen private LinearLayout signInView; private SwitchCompat uploadAnonymously; private OsmandApplication app; + private EditText noteText; private boolean isLoginOAuth() { return !Algorithms.isEmpty(settings.USER_DISPLAY_NAME.get()); @@ -78,7 +79,7 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen final View sendOsmNoteView = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.send_osm_note_fragment, null); - EditText noteText = sendOsmNoteView.findViewById(R.id.note_text); + noteText = sendOsmNoteView.findViewById(R.id.note_text); noteText.setText(((OsmNotesPoint) poi[0]).getText()); noteText.setSelection(noteText.getText().length()); TextInputLayout noteHint = sendOsmNoteView.findViewById(R.id.note_hint); @@ -98,7 +99,7 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen if (fragment instanceof OsmAuthorizationListener) { app.getOsmOAuthHelper().addListener((OsmAuthorizationListener) fragment); } - app.getOsmOAuthHelper().startOAuth((ViewGroup) v); + app.getOsmOAuthHelper().startOAuth((ViewGroup) getView(), nightMode); } }); View loginButton = sendOsmNoteView.findViewById(R.id.login_button); @@ -201,6 +202,7 @@ public class SendOsmNoteBottomSheetFragment extends MenuBottomSheetDialogFragmen progressDialogPoiUploader = (ProgressDialogPoiUploader) getParentFragment(); } if (progressDialogPoiUploader != null) { + ((OsmNotesPoint) poi[0]).setText(noteText.getText().toString()); progressDialogPoiUploader.showProgressDialog(poi, false, uploadAnonymously.isChecked()); } dismiss(); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java index adfb8a2b60..88e52b70e7 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/dialogs/SendPoiDialogFragment.java @@ -36,6 +36,8 @@ 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"; diff --git a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java index 5df7bfb765..d1c9f36e9a 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthAuthorizationAdapter.java @@ -1,12 +1,19 @@ package net.osmand.plus.osmedit.oauth; +import android.content.Context; +import android.content.Intent; import android.net.TrafficStats; +import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.view.View; import android.view.ViewGroup; import android.webkit.WebView; +import android.webkit.WebViewClient; import androidx.annotation.NonNull; +import androidx.browser.customtabs.CustomTabsIntent; +import androidx.core.content.ContextCompat; import com.github.scribejava.core.builder.api.DefaultApi10a; import com.github.scribejava.core.model.OAuth1AccessToken; @@ -20,6 +27,7 @@ import net.osmand.osm.oauth.OsmOAuthAuthorizationClient; import net.osmand.plus.OsmAndConstants; import net.osmand.plus.OsmandApplication; import net.osmand.plus.R; +import net.osmand.plus.wikipedia.WikipediaDialogFragment; import org.apache.commons.logging.Log; import org.xmlpull.v1.XmlPullParser; @@ -79,8 +87,8 @@ public class OsmOAuthAuthorizationAdapter { } } - public void startOAuth(final ViewGroup rootLayout) { - new StartOAuthAsyncTask(rootLayout).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null); + public void startOAuth(final ViewGroup rootLayout, boolean nightMode) { + new StartOAuthAsyncTask(rootLayout, nightMode).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void) null); } private void saveToken() { @@ -89,11 +97,10 @@ public class OsmOAuthAuthorizationAdapter { app.getSettings().USER_ACCESS_TOKEN_SECRET.set(accessToken.getTokenSecret()); } - private void loadWebView(ViewGroup root, String url) { - WebView webView = new WebView(root.getContext()); - webView.requestFocus(View.FOCUS_DOWN); - webView.loadUrl(url); - root.addView(webView); + private void loadWebView(ViewGroup root, boolean nightMode, String url) { + Uri uri = Uri.parse(url); + Context context = root.getContext(); + WikipediaDialogFragment.showFullArticle(context, uri, nightMode); } public void performGetRequest(String url, OAuthAsyncRequestCallback callback) { @@ -117,9 +124,11 @@ public class OsmOAuthAuthorizationAdapter { private class StartOAuthAsyncTask extends AsyncTask { private final ViewGroup rootLayout; + boolean nightMode; - public StartOAuthAsyncTask(ViewGroup rootLayout) { + public StartOAuthAsyncTask(ViewGroup rootLayout, boolean nightMode) { this.rootLayout = rootLayout; + this.nightMode = nightMode; } @Override @@ -129,7 +138,7 @@ public class OsmOAuthAuthorizationAdapter { @Override protected void onPostExecute(@NonNull OAuth1RequestToken requestToken) { - loadWebView(rootLayout, client.getService().getAuthorizationUrl(requestToken)); + loadWebView(rootLayout, nightMode, client.getService().getAuthorizationUrl(requestToken)); } } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java index acda0e0361..44e25e21fd 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java @@ -41,8 +41,8 @@ public class OsmOAuthHelper { return authorizationAdapter; } - public void startOAuth(@NonNull ViewGroup view) { - authorizationAdapter.startOAuth(view); + public void startOAuth(@NonNull ViewGroup view, boolean nightMode) { + authorizationAdapter.startOAuth(view, nightMode); } public void authorize(@NonNull String oauthVerifier) { From 58c4e56b44bbb6e9a122b21f37c56a0bc167e381 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Thu, 3 Dec 2020 19:55:35 +0200 Subject: [PATCH 2/4] 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 From 4e7f8977e59831e13a57d0ad17c6ec37a4f78719 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 4 Dec 2020 15:50:10 +0200 Subject: [PATCH 3/4] Fix map shifting during map rotation --- .../net/osmand/plus/views/layers/ContextMenuLayer.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/views/layers/ContextMenuLayer.java b/OsmAnd/src/net/osmand/plus/views/layers/ContextMenuLayer.java index 9ba3ee5f46..cc017d23ac 100644 --- a/OsmAnd/src/net/osmand/plus/views/layers/ContextMenuLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/layers/ContextMenuLayer.java @@ -703,9 +703,16 @@ public class ContextMenuLayer extends OsmandMapLayer { RenderingContext rc = maps.getVisibleRenderingContext(); RenderedObject[] renderedObjects = null; if (rc != null && rc.zoom == tileBox.getZoom()) { + double sinRotate = Math.sin(Math.toRadians(rc.rotate - tileBox.getRotate())); + double cosRotate = Math.cos(Math.toRadians(rc.rotate - tileBox.getRotate())); float x = tileBox.getPixXFrom31((int) (rc.leftX * rc.tileDivisor), (int) (rc.topY * rc.tileDivisor)); float y = tileBox.getPixYFrom31((int) (rc.leftX * rc.tileDivisor), (int) (rc.topY * rc.tileDivisor)); - renderedObjects = nativeLib.searchRenderedObjectsFromContext(rc, (int) (point.x - x), (int) (point.y - y)); + float dx = point.x - x; + float dy = point.y - y; + int coordX = (int) (dx * cosRotate - dy * sinRotate); + int coordY = (int) (dy * cosRotate + dx * sinRotate); + + renderedObjects = nativeLib.searchRenderedObjectsFromContext(rc, coordX, coordY); } if (renderedObjects != null) { int TILE_SIZE = 256; From 34e4ff33ae4692ad585f041cf89a84705e19da7f Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 4 Dec 2020 17:27:27 +0200 Subject: [PATCH 4/4] Refactoring --- .../plus/osmedit/DashOsmEditsFragment.java | 13 +------- .../plus/osmedit/HandleOsmNoteAsyncTask.java | 10 +++--- .../net/osmand/plus/osmedit/OsmBugsLayer.java | 31 +++++-------------- .../osmand/plus/osmedit/OsmEditsFragment.java | 9 +----- .../plus/osmedit/oauth/OsmOAuthHelper.java | 7 +++-- 5 files changed, 19 insertions(+), 51 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java index 3ad2135a7a..de5e538554 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/DashOsmEditsFragment.java @@ -12,7 +12,6 @@ import android.widget.LinearLayout; import android.widget.TextView; 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; @@ -24,9 +23,6 @@ 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; @@ -78,7 +74,6 @@ public class DashOsmEditsFragment extends DashBaseFragment return view; } - @Override public void onOpenDash() { if (plugin == null) { @@ -121,13 +116,7 @@ public class DashOsmEditsFragment extends DashBaseFragment public void onClick(View v) { if (point.getGroup() == OsmPoint.Group.POI) { 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) { + if (getMyApplication().getOsmOAuthHelper().isLogged()) { SendPoiBottomSheetFragment.showInstance(getChildFragmentManager(), new OsmPoint[]{point}); } else { LoginBottomSheetFragment.showInstance(getActivity().getSupportFragmentManager(), diff --git a/OsmAnd/src/net/osmand/plus/osmedit/HandleOsmNoteAsyncTask.java b/OsmAnd/src/net/osmand/plus/osmedit/HandleOsmNoteAsyncTask.java index 11227235be..da67321d88 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/HandleOsmNoteAsyncTask.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/HandleOsmNoteAsyncTask.java @@ -35,11 +35,11 @@ public class HandleOsmNoteAsyncTask extends AsyncTask @Override protected OsmBugResult doInBackground(Void... params) { if (bug != null) { - OsmNotesPoint pnt = new OsmNotesPoint(); - pnt.setId(bug.getId()); - pnt.setLatitude(bug.getLatitude()); - pnt.setLongitude(bug.getLongitude()); - return osmbugsUtil.commit(pnt, text, action); + OsmNotesPoint point = new OsmNotesPoint(); + point.setId(bug.getId()); + point.setLatitude(bug.getLatitude()); + point.setLongitude(bug.getLongitude()); + return osmbugsUtil.commit(point, text, action); } else if (point != null) { osmbugsUtil = local; return osmbugsUtil.modify(point, text); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java index 361d1c7ac5..a13ae28bba 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmBugsLayer.java @@ -1,10 +1,8 @@ package net.osmand.plus.osmedit; -import android.annotation.SuppressLint; import android.graphics.Canvas; import android.graphics.PointF; import android.util.Xml; -import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; import android.widget.Toast; @@ -359,20 +357,18 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider } private void createBugDialog(final boolean offline, String text, int titleTextId, int posButtonTextId, - final Action action, final OpenStreetNote bug, final OsmNotesPoint point) { - @SuppressLint("InflateParams") final View view = LayoutInflater.from(activity).inflate(R.layout.open_bug, null); + final Action action, final OpenStreetNote bug, OsmNotesPoint point) { if (offline) { activity.getContextMenu().close(); BugBottomSheetDialog.showInstance(activity.getSupportFragmentManager(), getOsmbugsUtil(bug), local, text, titleTextId, posButtonTextId, action, bug, point, getHandleBugListener()); - return; } else { - OsmNotesPoint pnt = new OsmNotesPoint(); - pnt.setAction(action); - pnt.setId(bug.getId()); - pnt.setLatitude(bug.getLatitude()); - pnt.setLongitude(bug.getLongitude()); - SendOsmNoteBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), new OsmPoint[]{pnt}); + OsmNotesPoint notesPoint = new OsmNotesPoint(); + notesPoint.setAction(action); + notesPoint.setId(bug.getId()); + notesPoint.setLatitude(bug.getLatitude()); + notesPoint.setLongitude(bug.getLongitude()); + SendOsmNoteBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), new OsmPoint[]{notesPoint}); } } @@ -427,19 +423,6 @@ public class OsmBugsLayer extends OsmandMapLayer implements IContextMenuProvider }; } - private String getUserName() { - return ((OsmandApplication) activity.getApplication()).getSettings().USER_NAME.get(); - } - - private String getTextAndUpdateUserPwd(final View view) { - String text = getMessageText(view); - String author = ((EditText) view.findViewById(R.id.user_name_field)).getText().toString(); - String pwd = ((EditText) view.findViewById(R.id.password_field)).getText().toString(); - ((OsmandApplication) OsmBugsLayer.this.activity.getApplication()).getSettings().USER_NAME.set(author); - ((OsmandApplication) OsmBugsLayer.this.activity.getApplication()).getSettings().USER_PASSWORD.set(pwd); - return text; - } - private String getMessageText(final View view) { return ((EditText) view.findViewById(R.id.message_field)).getText().toString(); } diff --git a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java index 00f5f251ef..e61520188d 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/OsmEditsFragment.java @@ -61,7 +61,6 @@ 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.oauth.OsmOAuthAuthorizationAdapter; import net.osmand.plus.osmedit.oauth.OsmOAuthHelper.OsmAuthorizationListener; import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.util.Algorithms; @@ -634,13 +633,7 @@ public class OsmEditsFragment extends OsmAndListFragment implements ProgressDial FragmentActivity activity = getActivity(); if (activity != null) { 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) { + if (getMyApplication().getOsmOAuthHelper().isLogged()) { SendPoiBottomSheetFragment.showInstance(getChildFragmentManager(), points); } else { LoginBottomSheetFragment.showInstance(activity.getSupportFragmentManager(), this); diff --git a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java index 44e25e21fd..8db1079b8b 100644 --- a/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java +++ b/OsmAnd/src/net/osmand/plus/osmedit/oauth/OsmOAuthHelper.java @@ -28,9 +28,8 @@ public class OsmOAuthHelper { listeners.add(listener); } - public OsmOAuthAuthorizationAdapter updateAdapter(){ + public void updateAdapter() { authorizationAdapter = new OsmOAuthAuthorizationAdapter(app); - return authorizationAdapter; } public void removeListener(OsmAuthorizationListener listener) { @@ -76,6 +75,10 @@ public class OsmOAuthHelper { return authorizationAdapter.isValidToken(); } + public boolean isLogged() { + return isValidToken() || isLoginExists(); + } + public interface OsmAuthorizationListener { void authorizationCompleted(); }