From 1044fe13ae6de6a7d533e3aaa3aa49a9684ab152 Mon Sep 17 00:00:00 2001 From: Mikel Date: Sat, 15 Jul 2017 09:21:35 +0200 Subject: [PATCH] Make license in MediaDetail clickable --- .../java/fr/free/nrw/commons/License.java | 4 ++- .../commons/media/MediaDetailFragment.java | 29 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/fr/free/nrw/commons/License.java b/app/src/main/java/fr/free/nrw/commons/License.java index d7b5c28e2..d1aea6269 100644 --- a/app/src/main/java/fr/free/nrw/commons/License.java +++ b/app/src/main/java/fr/free/nrw/commons/License.java @@ -1,5 +1,7 @@ package fr.free.nrw.commons; +import android.support.annotation.Nullable; + public class License { String key; String template; @@ -36,7 +38,7 @@ public class License { } } - public String getUrl(String language) { + public @Nullable String getUrl(String language) { if (url == null) { return null; } else { diff --git a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java index a076a7d25..973d0f593 100644 --- a/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java +++ b/app/src/main/java/fr/free/nrw/commons/media/MediaDetailFragment.java @@ -2,8 +2,10 @@ package fr.free.nrw.commons.media; import android.content.Intent; import android.database.DataSetObserver; +import android.net.Uri; import android.os.AsyncTask; import android.os.Bundle; +import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.util.TypedValue; import android.view.LayoutInflater; @@ -18,6 +20,7 @@ import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; +import java.util.Locale; import fr.free.nrw.commons.License; import fr.free.nrw.commons.LicenseList; @@ -228,6 +231,14 @@ public class MediaDetailFragment extends Fragment { categoryNames.add(getString(R.string.detail_panel_cats_none)); } rebuildCatList(); + + // Set hyperlinks + license.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + openWebBrowser(licenseLink(media)); + } + }); } else { Timber.d("Failed to load photo details."); } @@ -342,4 +353,22 @@ public class MediaDetailFragment extends Fragment { private String prettyCoordinates(Media media) { return media.getCoordinates(); } + + private @Nullable String licenseLink(Media media) { + String licenseKey = media.getLicense(); + if (licenseKey == null || licenseKey.equals("")) { + return null; + } + License licenseObj = licenseList.get(licenseKey); + if (licenseObj == null) { + return null; + } else { + return licenseObj.getUrl(Locale.getDefault().getLanguage()); + } + } + + private void openWebBrowser(String url) { + Intent browser = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); + startActivity(browser); + } }