mirror of
https://github.com/commons-app/apps-android-commons.git
synced 2025-10-26 20:33:53 +01:00
Consistent handling of web and geo urls (#2750)
* Consistent handling of web and geo urls * Remove Google map intent
This commit is contained in:
parent
7c77530c2e
commit
2021baa080
11 changed files with 59 additions and 105 deletions
|
|
@ -1,15 +1,11 @@
|
||||||
package fr.free.nrw.commons;
|
package fr.free.nrw.commons;
|
||||||
|
|
||||||
import android.content.ActivityNotFoundException;
|
|
||||||
import android.content.ClipData;
|
import android.content.ClipData;
|
||||||
import android.content.ClipboardManager;
|
import android.content.ClipboardManager;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.browser.customtabs.CustomTabsIntent;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
|
@ -24,7 +20,12 @@ import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.browser.customtabs.CustomTabsIntent;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import fr.free.nrw.commons.location.LatLng;
|
||||||
import fr.free.nrw.commons.settings.Prefs;
|
import fr.free.nrw.commons.settings.Prefs;
|
||||||
|
import fr.free.nrw.commons.utils.ViewUtil;
|
||||||
import timber.log.Timber;
|
import timber.log.Timber;
|
||||||
|
|
||||||
import static android.widget.Toast.LENGTH_SHORT;
|
import static android.widget.Toast.LENGTH_SHORT;
|
||||||
|
|
@ -175,7 +176,7 @@ public class Utils {
|
||||||
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
|
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
|
||||||
}
|
}
|
||||||
catch (android.content.ActivityNotFoundException anfe) {
|
catch (android.content.ActivityNotFoundException anfe) {
|
||||||
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
|
handleWebUrl(context, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -204,15 +205,18 @@ public class Utils {
|
||||||
customTabsIntent.launchUrl(context, url);
|
customTabsIntent.launchUrl(context, url);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void handleGeoCoordinates(Context context, String coords) {
|
/**
|
||||||
try {
|
* Util function to handle geo coordinates
|
||||||
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=" + coords);
|
* It no longer depends on google maps and any app capable of handling the map intent can handle it
|
||||||
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
|
* @param context
|
||||||
mapIntent.setPackage("com.google.android.apps.maps");
|
* @param latLng
|
||||||
|
*/
|
||||||
|
public static void handleGeoCoordinates(Context context, LatLng latLng) {
|
||||||
|
Intent mapIntent = new Intent(Intent.ACTION_VIEW, latLng.getGmmIntentUri());
|
||||||
|
if (mapIntent.resolveActivity(context.getPackageManager()) != null) {
|
||||||
context.startActivity(mapIntent);
|
context.startActivity(mapIntent);
|
||||||
} catch (ActivityNotFoundException ex) {
|
} else {
|
||||||
Toast toast = Toast.makeText(context, context.getString(R.string.map_application_missing), LENGTH_SHORT);
|
ViewUtil.showShortToast(context, context.getString(R.string.map_application_missing));
|
||||||
toast.show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,7 @@
|
||||||
package fr.free.nrw.commons.campaigns;
|
package fr.free.nrw.commons.campaigns;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.annotation.NonNull;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
@ -13,9 +10,12 @@ import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import fr.free.nrw.commons.R;
|
import fr.free.nrw.commons.R;
|
||||||
|
import fr.free.nrw.commons.Utils;
|
||||||
import fr.free.nrw.commons.contributions.MainActivity;
|
import fr.free.nrw.commons.contributions.MainActivity;
|
||||||
import fr.free.nrw.commons.utils.SwipableCardView;
|
import fr.free.nrw.commons.utils.SwipableCardView;
|
||||||
import fr.free.nrw.commons.utils.ViewUtil;
|
import fr.free.nrw.commons.utils.ViewUtil;
|
||||||
|
|
@ -66,21 +66,11 @@ public class CampaignView extends SwipableCardView {
|
||||||
viewHolder = new ViewHolder(rootView);
|
viewHolder = new ViewHolder(rootView);
|
||||||
setOnClickListener(view -> {
|
setOnClickListener(view -> {
|
||||||
if (campaign != null) {
|
if (campaign != null) {
|
||||||
showCampaignInBrowser(campaign.getLink());
|
Utils.handleWebUrl(getContext(), Uri.parse(campaign.getLink()));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* open the url associated with the campaign in the system's default browser
|
|
||||||
*/
|
|
||||||
private void showCampaignInBrowser(String link) {
|
|
||||||
Intent view = new Intent();
|
|
||||||
view.setAction(Intent.ACTION_VIEW);
|
|
||||||
view.setData(Uri.parse(link));
|
|
||||||
getContext().startActivity(view);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ViewHolder {
|
public class ViewHolder {
|
||||||
|
|
||||||
@BindView(R.id.tv_title) TextView tvTitle;
|
@BindView(R.id.tv_title) TextView tvTitle;
|
||||||
|
|
|
||||||
|
|
@ -4,32 +4,31 @@ import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.database.DataSetObserver;
|
import android.database.DataSetObserver;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import com.google.android.material.tabs.TabLayout;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.fragment.app.FragmentManager;
|
|
||||||
import androidx.viewpager.widget.ViewPager;
|
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.Toast;
|
|
||||||
|
import com.google.android.material.tabs.TabLayout;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.viewpager.widget.ViewPager;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import fr.free.nrw.commons.Media;
|
import fr.free.nrw.commons.Media;
|
||||||
import fr.free.nrw.commons.PageTitle;
|
import fr.free.nrw.commons.PageTitle;
|
||||||
import fr.free.nrw.commons.R;
|
import fr.free.nrw.commons.R;
|
||||||
|
import fr.free.nrw.commons.Utils;
|
||||||
import fr.free.nrw.commons.explore.ViewPagerAdapter;
|
import fr.free.nrw.commons.explore.ViewPagerAdapter;
|
||||||
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
|
import fr.free.nrw.commons.media.MediaDetailPagerFragment;
|
||||||
import fr.free.nrw.commons.theme.NavigationBaseActivity;
|
import fr.free.nrw.commons.theme.NavigationBaseActivity;
|
||||||
|
|
||||||
import static android.widget.Toast.LENGTH_SHORT;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This activity displays details of a particular category
|
* This activity displays details of a particular category
|
||||||
* Its generic and simply takes the name of category name in its start intent to load all images, subcategories in
|
* Its generic and simply takes the name of category name in its start intent to load all images, subcategories in
|
||||||
|
|
@ -220,16 +219,7 @@ public class CategoryDetailsActivity extends NavigationBaseActivity
|
||||||
// Handle item selection
|
// Handle item selection
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.menu_browser_current_category:
|
case R.id.menu_browser_current_category:
|
||||||
Intent viewIntent = new Intent();
|
Utils.handleWebUrl(this, new PageTitle(categoryName).getCanonicalUri());
|
||||||
viewIntent.setAction(Intent.ACTION_VIEW);
|
|
||||||
viewIntent.setData(new PageTitle(categoryName).getCanonicalUri());
|
|
||||||
//check if web browser available
|
|
||||||
if (viewIntent.resolveActivity(this.getPackageManager()) != null) {
|
|
||||||
startActivity(viewIntent);
|
|
||||||
} else {
|
|
||||||
Toast toast = Toast.makeText(this, getString(R.string.no_web_browser), LENGTH_SHORT);
|
|
||||||
toast.show();
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
return super.onOptionsItemSelected(item);
|
return super.onOptionsItemSelected(item);
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import android.location.Location;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.text.Editable;
|
import android.text.Editable;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.text.TextUtils;
|
|
||||||
import android.text.TextWatcher;
|
import android.text.TextWatcher;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
|
@ -51,10 +50,10 @@ import fr.free.nrw.commons.contributions.ContributionsFragment;
|
||||||
import fr.free.nrw.commons.delete.DeleteTask;
|
import fr.free.nrw.commons.delete.DeleteTask;
|
||||||
import fr.free.nrw.commons.delete.ReasonBuilder;
|
import fr.free.nrw.commons.delete.ReasonBuilder;
|
||||||
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
import fr.free.nrw.commons.di.CommonsDaggerSupportFragment;
|
||||||
import fr.free.nrw.commons.location.LatLng;
|
|
||||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||||
import fr.free.nrw.commons.ui.widget.CompatTextView;
|
import fr.free.nrw.commons.ui.widget.CompatTextView;
|
||||||
import fr.free.nrw.commons.utils.DateUtils;
|
import fr.free.nrw.commons.utils.DateUtils;
|
||||||
|
import fr.free.nrw.commons.utils.StringUtils;
|
||||||
import io.reactivex.Single;
|
import io.reactivex.Single;
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
|
|
@ -62,7 +61,6 @@ import timber.log.Timber;
|
||||||
|
|
||||||
import static android.view.View.GONE;
|
import static android.view.View.GONE;
|
||||||
import static android.view.View.VISIBLE;
|
import static android.view.View.VISIBLE;
|
||||||
import static android.widget.Toast.LENGTH_SHORT;
|
|
||||||
|
|
||||||
public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
|
|
@ -371,8 +369,9 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
@OnClick(R.id.mediaDetailLicense)
|
@OnClick(R.id.mediaDetailLicense)
|
||||||
public void onMediaDetailLicenceClicked(){
|
public void onMediaDetailLicenceClicked(){
|
||||||
if (!TextUtils.isEmpty(licenseLink(media))) {
|
String url = licenseLink(media);
|
||||||
openWebBrowser(licenseLink(media));
|
if (!StringUtils.isNullOrWhiteSpace(url) && getActivity() != null) {
|
||||||
|
Utils.handleWebUrl(getActivity(), Uri.parse(url));
|
||||||
} else {
|
} else {
|
||||||
if (isCategoryImage) {
|
if (isCategoryImage) {
|
||||||
Timber.d("Unable to fetch license URL for %s", media.getLicense());
|
Timber.d("Unable to fetch license URL for %s", media.getLicense());
|
||||||
|
|
@ -385,8 +384,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
@OnClick(R.id.mediaDetailCoordinates)
|
@OnClick(R.id.mediaDetailCoordinates)
|
||||||
public void onMediaDetailCoordinatesClicked(){
|
public void onMediaDetailCoordinatesClicked(){
|
||||||
if (media.getCoordinates() != null) {
|
if (media.getCoordinates() != null && getActivity() != null) {
|
||||||
openMap(media.getCoordinates());
|
Utils.handleGeoCoordinates(getActivity(), media.getCoordinates());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -484,8 +483,8 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
|
|
||||||
@OnClick(R.id.seeMore)
|
@OnClick(R.id.seeMore)
|
||||||
public void onSeeMoreClicked(){
|
public void onSeeMoreClicked(){
|
||||||
if (nominatedForDeletion.getVisibility()== VISIBLE) {
|
if (nominatedForDeletion.getVisibility() == VISIBLE && getActivity() != null) {
|
||||||
openWebBrowser(media.getFilePageTitle().getMobileUri().toString());
|
Utils.handleWebUrl(getActivity(), media.getFilePageTitle().getMobileUri());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -623,26 +622,4 @@ public class MediaDetailFragment extends CommonsDaggerSupportFragment {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void openWebBrowser(String url) {
|
|
||||||
Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
|
||||||
//check if web browser available
|
|
||||||
if (browser.resolveActivity(getActivity().getPackageManager()) != null) {
|
|
||||||
startActivity(browser);
|
|
||||||
} else {
|
|
||||||
Toast toast = Toast.makeText(getContext(), getString(R.string.no_web_browser), LENGTH_SHORT);
|
|
||||||
toast.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void openMap(LatLng coordinates) {
|
|
||||||
//Open map app at given position
|
|
||||||
Uri gmmIntentUri = Uri.parse(
|
|
||||||
"geo:0,0?q=" + coordinates.getLatitude() + "," + coordinates.getLongitude());
|
|
||||||
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
|
|
||||||
|
|
||||||
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
|
|
||||||
startActivity(mapIntent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,6 @@ import android.os.Build;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
|
||||||
import androidx.core.app.ActivityCompat;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.fragment.app.FragmentManager;
|
|
||||||
import androidx.fragment.app.FragmentStatePagerAdapter;
|
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.viewpager.widget.ViewPager;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
|
|
@ -24,9 +17,17 @@ import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import androidx.core.app.ActivityCompat;
|
||||||
|
import androidx.core.content.ContextCompat;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.fragment.app.FragmentManager;
|
||||||
|
import androidx.fragment.app.FragmentStatePagerAdapter;
|
||||||
|
import androidx.viewpager.widget.ViewPager;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import fr.free.nrw.commons.Media;
|
import fr.free.nrw.commons.Media;
|
||||||
|
|
|
||||||
|
|
@ -847,13 +847,7 @@ public class NearbyMapFragment extends DaggerFragment {
|
||||||
wikidataButton.setVisibility(place.hasWikidataLink()?View.VISIBLE:View.GONE);
|
wikidataButton.setVisibility(place.hasWikidataLink()?View.VISIBLE:View.GONE);
|
||||||
wikidataButton.setOnClickListener(view -> openWebView(this.place.siteLinks.getWikidataLink()));
|
wikidataButton.setOnClickListener(view -> openWebView(this.place.siteLinks.getWikidataLink()));
|
||||||
|
|
||||||
directionsButton.setOnClickListener(view -> {
|
directionsButton.setOnClickListener(view -> Utils.handleGeoCoordinates(getActivity(), this.place.getLocation()));
|
||||||
//Open map app at given position
|
|
||||||
Intent mapIntent = new Intent(Intent.ACTION_VIEW, this.place.location.getGmmIntentUri());
|
|
||||||
if (mapIntent.resolveActivity(getActivity().getPackageManager()) != null) {
|
|
||||||
startActivity(mapIntent);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
commonsButton.setVisibility(this.place.hasCommonsLink()?View.VISIBLE:View.GONE);
|
commonsButton.setVisibility(this.place.hasCommonsLink()?View.VISIBLE:View.GONE);
|
||||||
commonsButton.setOnClickListener(view -> openWebView(this.place.siteLinks.getCommonsLink()));
|
commonsButton.setOnClickListener(view -> openWebView(this.place.siteLinks.getCommonsLink()));
|
||||||
|
|
|
||||||
|
|
@ -2,12 +2,6 @@ package fr.free.nrw.commons.nearby;
|
||||||
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.transition.TransitionManager;
|
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
import androidx.appcompat.app.AlertDialog;
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
|
||||||
import androidx.appcompat.widget.PopupMenu;
|
|
||||||
import androidx.recyclerview.widget.RecyclerView;
|
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
@ -24,6 +18,12 @@ import java.util.ArrayList;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AlertDialog;
|
||||||
|
import androidx.appcompat.widget.PopupMenu;
|
||||||
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
|
import androidx.transition.TransitionManager;
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import fr.free.nrw.commons.R;
|
import fr.free.nrw.commons.R;
|
||||||
|
|
@ -223,13 +223,7 @@ public class PlaceRenderer extends Renderer<Place> {
|
||||||
|
|
||||||
icon.setImageResource(place.getLabel().getIcon());
|
icon.setImageResource(place.getLabel().getIcon());
|
||||||
|
|
||||||
directionsButton.setOnClickListener(view -> {
|
directionsButton.setOnClickListener(view -> Utils.handleGeoCoordinates(getContext(), this.place.getLocation()));
|
||||||
//Open map app at given position
|
|
||||||
Intent mapIntent = new Intent(Intent.ACTION_VIEW, place.location.getGmmIntentUri());
|
|
||||||
if (mapIntent.resolveActivity(view.getContext().getPackageManager()) != null) {
|
|
||||||
view.getContext().startActivity(mapIntent);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
iconOverflow.setVisibility(showMenu() ? View.VISIBLE : View.GONE);
|
iconOverflow.setVisibility(showMenu() ? View.VISIBLE : View.GONE);
|
||||||
iconOverflow.setOnClickListener(v -> popupMenuListener());
|
iconOverflow.setOnClickListener(v -> popupMenuListener());
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ import fr.free.nrw.commons.contributions.Contribution;
|
||||||
import fr.free.nrw.commons.contributions.ContributionController;
|
import fr.free.nrw.commons.contributions.ContributionController;
|
||||||
import fr.free.nrw.commons.filepicker.UploadableFile;
|
import fr.free.nrw.commons.filepicker.UploadableFile;
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||||
|
import fr.free.nrw.commons.location.LatLng;
|
||||||
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
||||||
import fr.free.nrw.commons.nearby.Place;
|
import fr.free.nrw.commons.nearby.Place;
|
||||||
import fr.free.nrw.commons.theme.BaseActivity;
|
import fr.free.nrw.commons.theme.BaseActivity;
|
||||||
|
|
@ -415,7 +416,7 @@ public class UploadActivity extends BaseActivity implements UploadView, SimilarI
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void launchMapActivity(String decCoords) {
|
public void launchMapActivity(LatLng decCoords) {
|
||||||
Utils.handleGeoCoordinates(this, decCoords);
|
Utils.handleGeoCoordinates(this, decCoords);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@ import fr.free.nrw.commons.category.CategoriesModel;
|
||||||
import fr.free.nrw.commons.contributions.Contribution;
|
import fr.free.nrw.commons.contributions.Contribution;
|
||||||
import fr.free.nrw.commons.filepicker.UploadableFile;
|
import fr.free.nrw.commons.filepicker.UploadableFile;
|
||||||
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
import fr.free.nrw.commons.kvstore.JsonKvStore;
|
||||||
|
import fr.free.nrw.commons.location.LatLng;
|
||||||
import fr.free.nrw.commons.nearby.Place;
|
import fr.free.nrw.commons.nearby.Place;
|
||||||
import fr.free.nrw.commons.settings.Prefs;
|
import fr.free.nrw.commons.settings.Prefs;
|
||||||
import fr.free.nrw.commons.utils.CustomProxy;
|
import fr.free.nrw.commons.utils.CustomProxy;
|
||||||
|
|
@ -225,7 +226,7 @@ public class UploadPresenter {
|
||||||
void openCoordinateMap() {
|
void openCoordinateMap() {
|
||||||
GPSExtractor gpsObj = uploadModel.getCurrentItem().getGpsCoords();
|
GPSExtractor gpsObj = uploadModel.getCurrentItem().getGpsCoords();
|
||||||
if (gpsObj != null && gpsObj.imageCoordsExists) {
|
if (gpsObj != null && gpsObj.imageCoordsExists) {
|
||||||
view.launchMapActivity(gpsObj.getDecLatitude() + "," + gpsObj.getDecLongitude());
|
view.launchMapActivity(new LatLng(gpsObj.getDecLatitude(), gpsObj.getDecLongitude(), 0.0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package fr.free.nrw.commons.upload;
|
||||||
|
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import androidx.annotation.IntDef;
|
import androidx.annotation.IntDef;
|
||||||
|
import fr.free.nrw.commons.location.LatLng;
|
||||||
|
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
@ -70,7 +71,7 @@ public interface UploadView {
|
||||||
|
|
||||||
void finish();
|
void finish();
|
||||||
|
|
||||||
void launchMapActivity(String decCoords);
|
void launchMapActivity(LatLng decCoords);
|
||||||
|
|
||||||
void showErrorMessage(int resourceId);
|
void showErrorMessage(int resourceId);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue