From e70b8b2e6a027a6e20ee5f49e2fca26b209b25f8 Mon Sep 17 00:00:00 2001 From: neslihanturan Date: Tue, 26 Dec 2017 01:03:25 +0300 Subject: [PATCH] Add overlay menu items and functions --- .../nrw/commons/nearby/PlaceRenderer.java | 58 ++++++++++++++++++- .../res/menu/nearby_info_dialog_options.xml | 3 + app/src/main/res/values/strings.xml | 1 + 3 files changed, 59 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java index 71236bf50..9bb85677d 100644 --- a/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java +++ b/app/src/main/java/fr/free/nrw/commons/nearby/PlaceRenderer.java @@ -6,8 +6,10 @@ import android.os.CountDownTimer; import android.support.annotation.NonNull; import android.support.transition.TransitionManager; import android.support.v4.view.ViewCompat; +import android.support.v7.widget.PopupMenu; import android.util.Log; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.animation.Animation; @@ -36,9 +38,11 @@ class PlaceRenderer extends Renderer { @BindView(R.id.cameraButton) LinearLayout cameraButton; @BindView(R.id.galeryButton) LinearLayout galeryButton; @BindView(R.id.directionsButton) LinearLayout directionsButton; + @BindView(R.id.iconOverflow) LinearLayout iconOverflow; private View view; private static ArrayList openedItems; + private Place place; PlaceRenderer(){ @@ -98,7 +102,7 @@ class PlaceRenderer extends Renderer { @Override public void render() { - Place place = getContent(); + place = getContent(); tvName.setText(place.name); String descriptionText = place.getLongDescription(); if (descriptionText.equals("?")) { @@ -123,9 +127,57 @@ class PlaceRenderer extends Renderer { } } }); - } - private void startActivity(Intent intent){ + iconOverflow.setVisibility(showMenu() ? View.VISIBLE : View.GONE); + iconOverflow.setOnClickListener(v -> popupMenuListener()); } + + private void popupMenuListener() { + PopupMenu popupMenu = new PopupMenu(view.getContext(), iconOverflow); + popupMenu.inflate(R.menu.nearby_info_dialog_options); + + MenuItem commonsArticle = popupMenu.getMenu() + .findItem(R.id.nearby_info_menu_commons_article); + MenuItem wikiDataArticle = popupMenu.getMenu() + .findItem(R.id.nearby_info_menu_wikidata_article); + MenuItem wikipediaArticle = popupMenu.getMenu() + .findItem(R.id.nearby_info_menu_wikipedia_article); + + commonsArticle.setEnabled(!place.siteLinks.getCommonsLink().equals(Uri.EMPTY)); + wikiDataArticle.setEnabled(!place.siteLinks.getWikidataLink().equals(Uri.EMPTY)); + wikipediaArticle.setEnabled(!place.siteLinks.getWikipediaLink().equals(Uri.EMPTY)); + + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + switch (item.getItemId()) { + case R.id.nearby_info_menu_commons_article: + openWebView(place.siteLinks.getCommonsLink()); + return true; + case R.id.nearby_info_menu_wikidata_article: + openWebView(place.siteLinks.getWikidataLink()); + return true; + case R.id.nearby_info_menu_wikipedia_article: + openWebView(place.siteLinks.getWikipediaLink()); + return true; + default: + break; + } + return false; + } + }); + popupMenu.show(); + } + + private void openWebView(Uri link) { + Intent browserIntent = new Intent(Intent.ACTION_VIEW, link); + view.getContext().startActivity(browserIntent); + } + + private boolean showMenu() { + return !place.siteLinks.getCommonsLink().equals(Uri.EMPTY) + || !place.siteLinks.getWikidataLink().equals(Uri.EMPTY); + } + } \ No newline at end of file diff --git a/app/src/main/res/menu/nearby_info_dialog_options.xml b/app/src/main/res/menu/nearby_info_dialog_options.xml index ea9a7344b..ce5891285 100644 --- a/app/src/main/res/menu/nearby_info_dialog_options.xml +++ b/app/src/main/res/menu/nearby_info_dialog_options.xml @@ -6,4 +6,7 @@ + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 46e4fb27c..f67336ecd 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -213,6 +213,7 @@ no description found Commons file page Wikidata item + Wikipedia article Error while caching pictures A unique descriptive title for the file, which will serve as a filename. You may use plain language with spaces. Do not include the file extension Please describe the media as much as possible: Where was it taken? What does it show? What is the context? Please describe the objects or persons. Reveal information that can not be easily guessed, for instance the time of day if it is a landscape. If the media shows something unusual, please explain what makes it unusual.