diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java index ad4eeb008..7541f042e 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryAdapter.java @@ -7,8 +7,12 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; + +import com.google.android.material.textfield.TextInputEditText; + import app.organicmaps.R; import app.organicmaps.sdk.editor.data.FeatureCategory; +import app.organicmaps.sdk.util.StringUtils; import app.organicmaps.sdk.util.UiUtils; import com.google.android.material.textview.MaterialTextView; @@ -21,6 +25,12 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter { return new FooterViewHolder( - LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category_footer, parent, false)); + LayoutInflater.from(parent.getContext()).inflate(R.layout.item_feature_category_footer, parent, false), (FooterListener) mFragment); } default -> throw new IllegalArgumentException("Unsupported"); } @@ -70,6 +80,10 @@ public class FeatureCategoryAdapter extends RecyclerView.Adapter listener.onSendNoteClicked()); + mNoteEditText.addTextChangedListener(new StringUtils.SimpleTextWatcher() { + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) + { + final String str = s.toString(); + listener.onNoteTextChanged(str); + mSendNoteButton.setEnabled(!str.trim().isEmpty()); + } + }); + } + public void bind(String pendingNoteText) + { + if (!mNoteEditText.getText().toString().equals(pendingNoteText)) + { + mNoteEditText.setText(pendingNoteText); + if (pendingNoteText != null) + mNoteEditText.setSelection(pendingNoteText.length()); + } + mSendNoteButton.setEnabled(pendingNoteText != null && !pendingNoteText.trim().isEmpty()); } } diff --git a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java index e7f222916..ec1cdcce3 100644 --- a/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java +++ b/android/app/src/main/java/app/organicmaps/editor/FeatureCategoryFragment.java @@ -1,7 +1,6 @@ package app.organicmaps.editor; import static app.organicmaps.sdk.util.Utils.getLocalizedFeatureType; - import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -9,21 +8,32 @@ import android.view.ViewGroup; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import app.organicmaps.R; -import app.organicmaps.base.BaseMwmRecyclerFragment; +import app.organicmaps.MwmApplication; import app.organicmaps.sdk.editor.Editor; import app.organicmaps.sdk.editor.data.FeatureCategory; import app.organicmaps.sdk.util.Language; +import app.organicmaps.sdk.editor.OsmOAuth; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import android.text.TextUtils; +import android.content.Intent; +import android.widget.Toast; + +import app.organicmaps.sdk.Framework; +import app.organicmaps.R; +import app.organicmaps.base.BaseMwmRecyclerFragment; +import app.organicmaps.dialog.EditTextDialogFragment; import app.organicmaps.util.Utils; import app.organicmaps.widget.SearchToolbarController; import app.organicmaps.widget.ToolbarController; import java.util.Arrays; import java.util.Comparator; -public class FeatureCategoryFragment extends BaseMwmRecyclerFragment +public class FeatureCategoryFragment extends BaseMwmRecyclerFragment implements FeatureCategoryAdapter.FooterListener { private FeatureCategory mSelectedCategory; protected ToolbarController mToolbarController; + private static final String NOTE_CONFIRMATION_SHOWN = "NoteConfirmationAlertWasShown"; + private static String mPendingNoteText = ""; public interface FeatureCategoryListener { @@ -48,7 +58,8 @@ public class FeatureCategoryFragment extends BaseMwmRecyclerFragment { + MwmApplication.prefs(requireContext().getApplicationContext()).edit() + .putBoolean(NOTE_CONFIRMATION_SHOWN, true) + .apply(); + Editor.nativeCreateStandaloneNote(lat, lon, noteText); + mPendingNoteText = ""; + Toast.makeText(requireContext(), R.string.osm_note_toast, Toast.LENGTH_SHORT).show(); + requireActivity().finish(); + }) + .setNegativeButton(R.string.cancel, null) + .show(); + } } diff --git a/android/app/src/main/res/layout/item_feature_category_footer.xml b/android/app/src/main/res/layout/item_feature_category_footer.xml index bd4a5d8e2..25d85482b 100644 --- a/android/app/src/main/res/layout/item_feature_category_footer.xml +++ b/android/app/src/main/res/layout/item_feature_category_footer.xml @@ -1,8 +1,9 @@ + + + + + +