diff --git a/android/src/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java b/android/src/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java index 8c4a246836..6a3fe823af 100644 --- a/android/src/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java +++ b/android/src/app/organicmaps/bookmarks/ChooseBookmarksSortingTypeFragment.java @@ -144,20 +144,13 @@ public class ChooseBookmarksSortingTypeFragment extends BaseMwmDialogFragment @Override public void onCheckedChanged(RadioGroup group, @IdRes int id) { - switch (id) - { - case R.id.sort_by_default: - resetSorting(); - break; - case R.id.sort_by_type: - setSortingType(BookmarkManager.SORT_BY_TYPE); - break; - case R.id.sort_by_distance: - setSortingType(BookmarkManager.SORT_BY_DISTANCE); - break; - case R.id.sort_by_time: - setSortingType(BookmarkManager.SORT_BY_TIME); - break; - } + if (id == R.id.sort_by_default) + resetSorting(); + else if (id == R.id.sort_by_type) + setSortingType(BookmarkManager.SORT_BY_TYPE); + else if (id == R.id.sort_by_distance) + setSortingType(BookmarkManager.SORT_BY_DISTANCE); + else if (id == R.id.sort_by_time) + setSortingType(BookmarkManager.SORT_BY_TIME); } } diff --git a/android/src/app/organicmaps/downloader/CountrySuggestFragment.java b/android/src/app/organicmaps/downloader/CountrySuggestFragment.java index 78f9f4d21d..763cf30541 100644 --- a/android/src/app/organicmaps/downloader/CountrySuggestFragment.java +++ b/android/src/app/organicmaps/downloader/CountrySuggestFragment.java @@ -201,27 +201,17 @@ public class CountrySuggestFragment extends BaseMwmFragment implements View.OnCl @Override public void onClick(View v) { - switch (v.getId()) + final int id = v.getId(); + if (id == R.id.btn__download_map) + { + MapManager.warn3gAndDownload(requireActivity(), mCurrentCountry.id, () -> mDownloadingCountry = mCurrentCountry); + } + else if (id == R.id.btn__select_map) { - case R.id.btn__download_map: - MapManager.warn3gAndDownload(requireActivity(), mCurrentCountry.id, new Runnable() - { - @Override - public void run() - { - mDownloadingCountry = mCurrentCountry; - } - }); - break; - - case R.id.btn__select_map: BaseMwmFragmentActivity activity = Utils.castTo(requireActivity()); activity.replaceFragment(DownloaderFragment.class, null, null); - break; - - case R.id.wpv__download_progress: - MapManager.nativeCancel(mDownloadingCountry.id); - break; } + else if (id == R.id.wpv__download_progress) + MapManager.nativeCancel(mDownloadingCountry.id); } } diff --git a/android/src/app/organicmaps/editor/AdvancedTimetableFragment.java b/android/src/app/organicmaps/editor/AdvancedTimetableFragment.java index 39808d255e..cc922c51d8 100644 --- a/android/src/app/organicmaps/editor/AdvancedTimetableFragment.java +++ b/android/src/app/organicmaps/editor/AdvancedTimetableFragment.java @@ -91,11 +91,8 @@ public class AdvancedTimetableFragment extends BaseMwmFragment @Override public void onClick(View v) { - switch (v.getId()) - { - case R.id.examples: + if (v.getId() == R.id.examples) showExample(!mIsExampleShown); - } } @Nullable diff --git a/android/src/app/organicmaps/editor/EditorFragment.java b/android/src/app/organicmaps/editor/EditorFragment.java index c1d998cfcc..35a95d163b 100644 --- a/android/src/app/organicmaps/editor/EditorFragment.java +++ b/android/src/app/organicmaps/editor/EditorFragment.java @@ -494,45 +494,30 @@ public class EditorFragment extends BaseMwmFragment implements View.OnClickListe @Override public void onClick(View v) { - switch (v.getId()) - { - case R.id.edit_opening_hours: - case R.id.empty_opening_hours: - case R.id.opening_hours: + final int id = v.getId(); + if (id == R.id.edit_opening_hours || id == R.id.empty_opening_hours || id == R.id.opening_hours) mParent.editTimetable(); - break; - case R.id.phone: - case R.id.edit_phone: + else if (id == R.id.phone || id == R.id.edit_phone) mParent.editPhone(); - break; - case R.id.block_wifi: + else if (id == R.id.block_wifi) mWifi.toggle(); - break; - case R.id.block_street: + else if (id == R.id.block_street) mParent.editStreet(); - break; - case R.id.block_cuisine: + else if (id == R.id.block_cuisine) mParent.editCuisine(); - break; - case R.id.category: + else if (id == R.id.category) mParent.editCategory(); - break; - case R.id.more_names: - case R.id.show_additional_names: - if (mNamesAdapter.areAdditionalLanguagesShown() && !validateNames()) - break; - showAdditionalNames(!mNamesAdapter.areAdditionalLanguagesShown()); - break; - case R.id.add_langs: - mParent.addLanguage(); - break; - case R.id.about_osm: - startActivity(new Intent((Intent.ACTION_VIEW), Uri.parse(Constants.Url.OSM_ABOUT))); - break; - case R.id.reset: - reset(); - break; + else if (id == R.id.more_names || id == R.id.show_additional_names) + { + if (!mNamesAdapter.areAdditionalLanguagesShown() || validateNames()) + showAdditionalNames(!mNamesAdapter.areAdditionalLanguagesShown()); } + else if (id == R.id.add_langs) + mParent.addLanguage(); + else if (id == R.id.about_osm) + startActivity(new Intent((Intent.ACTION_VIEW), Uri.parse(Constants.Url.OSM_ABOUT))); + else if (id == R.id.reset) + reset(); } private void showAdditionalNames(boolean show) diff --git a/android/src/app/organicmaps/editor/ReportFragment.java b/android/src/app/organicmaps/editor/ReportFragment.java index afe114aa8c..b64506c564 100644 --- a/android/src/app/organicmaps/editor/ReportFragment.java +++ b/android/src/app/organicmaps/editor/ReportFragment.java @@ -72,26 +72,20 @@ public class ReportFragment extends BaseMwmToolbarFragment implements View.OnCli @Override public void onClick(View v) { - switch (v.getId()) - { - case R.id.problem_not_exist: -// case R.id.problem_closed_repair: -// case R.id.problem_duplicated_place: + final int id = v.getId(); + if (id == R.id.problem_not_exist) sendNotExist(); - break; - - case R.id.problem_other: + else if (id == R.id.problem_other) + { mAdvancedMode = true; refreshProblems(); - break; - - case R.id.save: + } + else if (id == R.id.save) + { String text = mProblemInput.getText().toString().trim(); if (TextUtils.isEmpty(text)) return; - send(text); - break; } } } diff --git a/android/src/app/organicmaps/editor/SimpleTimetableAdapter.java b/android/src/app/organicmaps/editor/SimpleTimetableAdapter.java index ee455806e6..a1d0d6d047 100644 --- a/android/src/app/organicmaps/editor/SimpleTimetableAdapter.java +++ b/android/src/app/organicmaps/editor/SimpleTimetableAdapter.java @@ -262,38 +262,29 @@ class SimpleTimetableAdapter extends RecyclerView.Adapter= 0) - Utils.openUrl(getContext(), "https://" + linePage); - else - Utils.openUrl(getContext(), "https://line.me/R/ti/p/@" + linePage); - break; - case R.id.ll__place_wiki: - Utils.openUrl(getContext(), mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIPEDIA)); - break; - case R.id.direction_frame: - showBigDirection(); - break; - case R.id.ll__place_email: - Utils.sendTo(getContext(), mTvEmail.getText().toString()); - break; + // A workaround to make single taps toggle the bottom sheet. + if (mPlacePageGestureListener != null) + { + mPlacePageGestureListener.onSingleTapConfirmed(null); + } } + else if (id == R.id.ll__place_editor) + { + if (mMapObject == null) + { + Logger.e(TAG, "Cannot start editor, map object is null!"); + return; + } + requireActivity().showEditor(); + } + else if (id == R.id.ll__add_organisation) + addOrganisation(); + else if (id == R.id.ll__place_add) + addPlace(); + else if (id == R.id.ll__place_latlon) + { + final int formatIndex = visibleCoordsFormat.indexOf(mCoordsFormat); + mCoordsFormat = visibleCoordsFormat.get((formatIndex + 1) % visibleCoordsFormat.size()); + MwmApplication.prefs(getContext()).edit().putInt(PREF_COORDINATES_FORMAT, mCoordsFormat.getId()).apply(); + if (mMapObject == null) + { + Logger.e(TAG, "A LatLon cannot be refreshed, mMapObject is null"); + return; + } + refreshLatLon(mMapObject); + } + else if (id == R.id.ll__place_website) + Utils.openUrl(getContext(), mTvWebsite.getText().toString()); + else if (id == R.id.ll__place_wikimedia) + Utils.openUrl(getContext(), mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIMEDIA_COMMONS)); + else if (id == R.id.ll__place_facebook) + { + final String facebookPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_FACEBOOK); + Utils.openUrl(getContext(), "https://m.facebook.com/" + facebookPage); + } + else if (id == R.id.ll__place_instagram) + { + final String instagramPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_INSTAGRAM); + Utils.openUrl(getContext(), "https://instagram.com/" + instagramPage); + } + else if (id == R.id.ll__place_twitter) + { + final String twitterPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_TWITTER); + Utils.openUrl(getContext(), "https://mobile.twitter.com/" + twitterPage); + } + else if (id == R.id.ll__place_vk) + { + final String vkPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_VK); + Utils.openUrl(getContext(), "https://vk.com/" + vkPage); + } + else if (id == R.id.ll__place_line) + { + final String linePage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_LINE); + if (linePage.indexOf('/') >= 0) + Utils.openUrl(getContext(), "https://" + linePage); + else + Utils.openUrl(getContext(), "https://line.me/R/ti/p/@" + linePage); + } + else if (id == R.id.ll__place_wiki) + Utils.openUrl(getContext(), mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIPEDIA)); + else if (id == R.id.direction_frame) + showBigDirection(); + else if (id == R.id.ll__place_email) + Utils.sendTo(getContext(), mTvEmail.getText().toString()); } private void toggleIsBookmark(@NonNull MapObject mapObject) @@ -1424,7 +1421,7 @@ public class PlacePageView extends NestedScrollViewClickFixed { final FragmentManager fragmentManager = requireActivity().getSupportFragmentManager(); final DirectionFragment fragment = (DirectionFragment) fragmentManager.getFragmentFactory() - .instantiate(getContext().getClassLoader(), DirectionFragment.class.getName()); + .instantiate(getContext().getClassLoader(), DirectionFragment.class.getName()); fragment.setMapObject(mMapObject); fragment.show(fragmentManager, null); } @@ -1436,100 +1433,94 @@ public class PlacePageView extends NestedScrollViewClickFixed public boolean onLongClick(View v) { final List items = new ArrayList<>(); - switch (v.getId()) + final int id = v.getId(); + if (id == R.id.tv__title) + items.add(mTvTitle.getText().toString()); + else if (id == R.id.tv__secondary_title) + items.add(mTvSecondaryTitle.getText().toString()); + else if (id == R.id.tv__address) + items.add(mTvAddress.getText().toString()); + else if (id == R.id.tv__bookmark_notes) + items.add(mTvBookmarkNote.getText().toString()); + else if (id == R.id.poi_description) + items.add(mPlaceDescriptionView.getText().toString()); + else if (id == R.id.ll__place_latlon) { - case R.id.tv__title: - items.add(mTvTitle.getText().toString()); - break; - case R.id.tv__secondary_title: - items.add(mTvSecondaryTitle.getText().toString()); - break; - case R.id.tv__address: - items.add(mTvAddress.getText().toString()); - break; - case R.id.tv__bookmark_notes: - items.add(mTvBookmarkNote.getText().toString()); - break; - case R.id.poi_description: - items.add(mPlaceDescriptionView.getText().toString()); - break; - case R.id.ll__place_latlon: - if (mMapObject == null) - { - Logger.e(TAG, "A long click tap on LatLon cannot be handled, mMapObject is null!"); - break; - } + if (mMapObject != null) + { final double lat = mMapObject.getLat(); final double lon = mMapObject.getLon(); - for(CoordinatesFormat format: visibleCoordsFormat) + for (CoordinatesFormat format : visibleCoordsFormat) items.add(Framework.nativeFormatLatLon(lat, lon, format.getId())); - break; - case R.id.ll__place_website: - items.add(mTvWebsite.getText().toString()); - break; - case R.id.ll__place_wikimedia: - items.add(mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIMEDIA_COMMONS)); - break; - case R.id.ll__place_facebook: - final String facebookPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_FACEBOOK); - if (facebookPage.indexOf('/') == -1) - items.add(facebookPage); // Show username along with URL. - items.add("https://m.facebook.com/" + facebookPage); - break; - case R.id.ll__place_instagram: - final String instagramPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_INSTAGRAM); - if (instagramPage.indexOf('/') == -1) - items.add(instagramPage); // Show username along with URL. - items.add("https://instagram.com/" + instagramPage); - break; - case R.id.ll__place_twitter: - final String twitterPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_TWITTER); - if (twitterPage.indexOf('/') == -1) - items.add(twitterPage); // Show username along with URL. - items.add("https://mobile.twitter.com/" + twitterPage); - break; - case R.id.ll__place_vk: - final String vkPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_VK); - if (vkPage.indexOf('/') == -1) - items.add(vkPage); // Show username along with URL. - items.add("https://vk.com/" + vkPage); - break; - case R.id.ll__place_line: - final String linePage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_LINE); - if (linePage.indexOf('/') >= 0) - items.add("https://" + linePage); - else - { - items.add(linePage); // Show username along with URL. - items.add("https://line.me/R/ti/p/@" + linePage); - } - break; - case R.id.ll__place_email: - items.add(mTvEmail.getText().toString()); - break; - case R.id.ll__place_schedule: - final String ohStr = mMapObject.getMetadata(Metadata.MetadataType.FMD_OPEN_HOURS); - final Timetable[] timetables = OpeningHours.nativeTimetablesFromString(ohStr); - items.add(TimeFormatUtils.formatTimetables(getResources(), ohStr, timetables)); - break; - case R.id.ll__place_operator: - items.add(mTvOperator.getText().toString()); - break; - case R.id.ll__place_wiki: - items.add(mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIPEDIA)); - break; - case R.id.ll__place_level: - items.add(mTvLevel.getText().toString()); - break; + } + else + Logger.e(TAG, "A long click tap on LatLon cannot be handled, mMapObject is null!"); } + else if (id == R.id.ll__place_website) + items.add(mTvWebsite.getText().toString()); + else if (id == R.id.ll__place_wikimedia) + items.add(mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIMEDIA_COMMONS)); + else if (id == R.id.ll__place_facebook) + { + final String facebookPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_FACEBOOK); + if (facebookPage.indexOf('/') == -1) + items.add(facebookPage); // Show username along with URL. + items.add("https://m.facebook.com/" + facebookPage); + } + else if (id == R.id.ll__place_instagram) + { + final String instagramPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_INSTAGRAM); + if (instagramPage.indexOf('/') == -1) + items.add(instagramPage); // Show username along with URL. + items.add("https://instagram.com/" + instagramPage); + } + else if (id == R.id.ll__place_twitter) + { + final String twitterPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_TWITTER); + if (twitterPage.indexOf('/') == -1) + items.add(twitterPage); // Show username along with URL. + items.add("https://mobile.twitter.com/" + twitterPage); + } + else if (id == R.id.ll__place_vk) + { + final String vkPage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_VK); + if (vkPage.indexOf('/') == -1) + items.add(vkPage); // Show username along with URL. + items.add("https://vk.com/" + vkPage); + } + else if (id == R.id.ll__place_line) + { + final String linePage = mMapObject.getMetadata(Metadata.MetadataType.FMD_CONTACT_LINE); + if (linePage.indexOf('/') >= 0) + items.add("https://" + linePage); + else + { + items.add(linePage); // Show username along with URL. + items.add("https://line.me/R/ti/p/@" + linePage); + } + } + else if (id == R.id.ll__place_email) + items.add(mTvEmail.getText().toString()); + else if (id == R.id.ll__place_schedule) + { + final String ohStr = mMapObject.getMetadata(Metadata.MetadataType.FMD_OPEN_HOURS); + final Timetable[] timetables = OpeningHours.nativeTimetablesFromString(ohStr); + items.add(TimeFormatUtils.formatTimetables(getResources(), ohStr, timetables)); + } + else if (id == R.id.ll__place_operator) + items.add(mTvOperator.getText().toString()); + else if (id == R.id.ll__place_wiki) + items.add(mMapObject.getMetadata(Metadata.MetadataType.FMD_WIKIPEDIA)); + else if (id == R.id.ll__place_level) + items.add(mTvLevel.getText().toString()); final Context ctx = getContext(); if (items.size() == 1) { Utils.copyTextToClipboard(ctx, items.get(0)); Utils.showSnackbarAbove(mDetails, - getRootView().findViewById(R.id.pp_buttons_layout), - ctx.getString(R.string.copied_to_clipboard, items.get(0))); + getRootView().findViewById(R.id.pp_buttons_layout), + ctx.getString(R.string.copied_to_clipboard, items.get(0))); } else { @@ -1541,11 +1532,11 @@ public class PlacePageView extends NestedScrollViewClickFixed menu.add(Menu.NONE, i, i, String.format("%s %s", copyText, items.get(i))); popup.setOnMenuItemClickListener(item -> { - final int id = item.getItemId(); - Utils.copyTextToClipboard(ctx, items.get(id)); + final int itemId = item.getItemId(); + Utils.copyTextToClipboard(ctx, items.get(itemId)); Utils.showSnackbarAbove(mDetails, - getRootView().findViewById(R.id.pp_buttons_layout), - ctx.getString(R.string.copied_to_clipboard, items.get(id))); + getRootView().findViewById(R.id.pp_buttons_layout), + ctx.getString(R.string.copied_to_clipboard, items.get(itemId))); return true; }); popup.show();