[android] Make POI title, address, etc. copyable

Signed-off-by: Konstantin Pastbin <konstantin.pastbin@gmail.com>
This commit is contained in:
Konstantin Pastbin 2021-11-26 14:35:16 +03:00 committed by Alexander Borsuk
parent db044b6cb6
commit 38fe941a61
3 changed files with 45 additions and 2 deletions
android
res/layout
src/com/mapswithme/maps/widget/placepage

View file

@ -37,6 +37,7 @@
android:gravity="center_horizontal"
android:textAppearance="@style/MwmTextAppearance.Body2"
android:textIsSelectable="true"
android:selectAllOnFocus="true"
tools:text="2021.10.15-15-Google" />
<TextView
@ -46,6 +47,7 @@
android:gravity="center_horizontal"
android:textAppearance="@style/MwmTextAppearance.Body2"
android:textIsSelectable="true"
android:selectAllOnFocus="true"
tools:text="Data: 151215" />
</LinearLayout>
</LinearLayout>

View file

@ -243,6 +243,9 @@ public class PlacePageView extends NestedScrollViewClickFixed
@Nullable
private Closable mClosable;
@Nullable
private PlacePageGestureListener mPlacePageGestureListener;
@Nullable
private RoutingModeListener mRoutingModeListener;
@ -251,6 +254,11 @@ public class PlacePageView extends NestedScrollViewClickFixed
mScrollable = scrollable;
}
void addPlacePageGestureListener(@NonNull PlacePageGestureListener ppGestureListener)
{
mPlacePageGestureListener = ppGestureListener;
}
void addClosable(@NonNull Closable closable)
{
mClosable = closable;
@ -302,7 +310,11 @@ public class PlacePageView extends NestedScrollViewClickFixed
super.onFinishInflate();
mPreview = findViewById(R.id.pp__preview);
mTvTitle = mPreview.findViewById(R.id.tv__title);
mTvTitle.setOnLongClickListener(this);
mTvTitle.setOnClickListener(this);
mTvSecondaryTitle = mPreview.findViewById(R.id.tv__secondary_title);
mTvSecondaryTitle.setOnLongClickListener(this);
mTvSecondaryTitle.setOnClickListener(this);
mToolbar = findViewById(R.id.toolbar);
mTvSubtitle = mPreview.findViewById(R.id.tv__subtitle);
@ -312,6 +324,8 @@ public class PlacePageView extends NestedScrollViewClickFixed
directionFrame.setOnClickListener(this);
mTvAddress = mPreview.findViewById(R.id.tv__address);
mTvAddress.setOnLongClickListener(this);
mTvAddress.setOnClickListener(this);
mDetails = findViewById(R.id.pp__details_frame);
RelativeLayout address = findViewById(R.id.ll__place_name);
@ -390,6 +404,7 @@ public class PlacePageView extends NestedScrollViewClickFixed
settings.setJavaScriptEnabled(false);
settings.setDefaultTextEncodingName("utf-8");
mTvBookmarkNote = mBookmarkFrame.findViewById(R.id.tv__bookmark_notes);
mTvBookmarkNote.setOnLongClickListener(this);
initEditMapObjectBtn();
mDownloaderIcon = new DownloaderStatusIcon(mPreview.findViewById(R.id.downloader_status_frame));
@ -653,6 +668,7 @@ public class PlacePageView extends NestedScrollViewClickFixed
{
mPlaceDescriptionContainer = findViewById(R.id.poi_description_container);
mPlaceDescriptionView = findViewById(R.id.poi_description);
mPlaceDescriptionView.setOnLongClickListener(this);
mPlaceDescriptionHeaderContainer = findViewById(R.id.pp_description_header_container);
mPlaceDescriptionMoreBtn = findViewById(R.id.more_btn);
mPlaceDescriptionMoreBtn.setOnClickListener(v -> showDescriptionScreen());
@ -1288,6 +1304,15 @@ public class PlacePageView extends NestedScrollViewClickFixed
{
switch (v.getId())
{
case R.id.tv__title:
case R.id.tv__secondary_title:
case R.id.tv__address:
// A workaround to make single taps toggle the bottom sheet.
if (mPlacePageGestureListener != null)
{
mPlacePageGestureListener.onSingleTapConfirmed(null);
}
break;
case R.id.ll__place_editor:
if (mMapObject == null)
{
@ -1384,6 +1409,21 @@ public class PlacePageView extends NestedScrollViewClickFixed
final List<String> items = new ArrayList<>();
switch (v.getId())
{
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)
{

View file

@ -125,8 +125,9 @@ public class RichPlacePageController implements PlacePageController, LocationLis
mPlacePage = activity.findViewById(R.id.placepage);
mPlacePageBehavior = AnchorBottomSheetBehavior.from(mPlacePage);
mPlacePageBehavior.addBottomSheetCallback(mSheetCallback);
GestureDetectorCompat gestureDetector
= new GestureDetectorCompat(activity, new PlacePageGestureListener(mPlacePageBehavior));
PlacePageGestureListener ppGestureListener = new PlacePageGestureListener(mPlacePageBehavior);
GestureDetectorCompat gestureDetector = new GestureDetectorCompat(activity, ppGestureListener);
mPlacePage.addPlacePageGestureListener(ppGestureListener);
mPlacePage.setOnTouchListener((v, event) -> gestureDetector.onTouchEvent(event));
mPlacePage.addOnLayoutChangeListener(this);
mPlacePage.addClosable(this);