jenkins-bot has submitted this change and it was merged. ( 
https://gerrit.wikimedia.org/r/333317 )

Change subject: Show link previews for (Wikipedia) links in gallery item 
descriptions
......................................................................


Show link previews for (Wikipedia) links in gallery item descriptions

Note that many links in gallery item descriptions are for Commons pages
and will not be handled in-app (see T156018).

Bug: T142024
Change-Id: If7ce774861176ba71af4345742a3eee99955dea3
---
M app/src/main/java/org/wikipedia/gallery/GalleryActivity.java
M app/src/main/java/org/wikipedia/history/HistoryEntry.java
M app/src/main/java/org/wikipedia/main/MainFragment.java
M app/src/main/java/org/wikipedia/page/ExclusiveBottomSheetPresenter.java
M app/src/main/java/org/wikipedia/page/PageActivity.java
M app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
6 files changed, 62 insertions(+), 18 deletions(-)

Approvals:
  Niedzielski: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.java 
b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.java
index 631f31f..16f9842 100644
--- a/app/src/main/java/org/wikipedia/gallery/GalleryActivity.java
+++ b/app/src/main/java/org/wikipedia/gallery/GalleryActivity.java
@@ -38,14 +38,19 @@
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.json.GsonMarshaller;
 import org.wikipedia.json.GsonUnmarshaller;
+import org.wikipedia.page.ExclusiveBottomSheetPresenter;
 import org.wikipedia.page.LinkMovementMethodExt;
 import org.wikipedia.page.Page;
 import org.wikipedia.page.PageActivity;
 import org.wikipedia.page.PageCache;
 import org.wikipedia.page.PageTitle;
+import org.wikipedia.page.linkpreview.LinkPreviewDialog;
+import org.wikipedia.readinglist.AddToReadingListDialog;
 import org.wikipedia.theme.Theme;
+import org.wikipedia.util.ClipboardUtil;
 import org.wikipedia.util.FeedbackUtil;
 import org.wikipedia.util.GradientUtil;
+import org.wikipedia.util.ShareUtil;
 import org.wikipedia.util.StringUtil;
 import org.wikipedia.util.log.L;
 import org.wikipedia.views.ViewAnimations;
@@ -60,8 +65,8 @@
 import static org.wikipedia.util.UriUtil.handleExternalLink;
 import static org.wikipedia.util.UriUtil.resolveProtocolRelativeUrl;
 
-public class GalleryActivity extends ThemedActionBarActivity {
-    public static final int ACTIVITY_RESULT_FILEPAGE_SELECT = 1;
+public class GalleryActivity extends ThemedActionBarActivity implements 
LinkPreviewDialog.Callback {
+    public static final int ACTIVITY_RESULT_PAGE_SELECTED = 1;
 
     public static final String EXTRA_PAGETITLE = "pageTitle";
     public static final String EXTRA_FILENAME = "filename";
@@ -71,6 +76,7 @@
     public static final String EXTRA_FEATURED_IMAGE_AGE = "featuredImageAge";
 
     @NonNull private WikipediaApp app = WikipediaApp.getInstance();
+    @NonNull private ExclusiveBottomSheetPresenter bottomSheetPresenter = new 
ExclusiveBottomSheetPresenter();
     @Nullable private PageTitle pageTitle;
     @Nullable private Page page;
     private boolean cacheOnLoad;
@@ -369,6 +375,11 @@
         setControlsShowing(!controlsShowing);
     }
 
+    public void showLinkPreview(@NonNull PageTitle title) {
+        bottomSheetPresenter.show(getSupportFragmentManager(),
+                LinkPreviewDialog.newInstance(title, 
HistoryEntry.SOURCE_GALLERY, null));
+    }
+
     /**
      * LinkMovementMethod for handling clicking of links in the description or 
metadata
      * text fields. For internal links, this activity will close, and pass the 
page title as
@@ -383,14 +394,14 @@
             WikiSite appWikiSite = app.getWikiSite();
             if (url.startsWith("/wiki/")) {
                 PageTitle title = appWikiSite.titleForInternalLink(url);
-                finishWithPageResult(title);
+                showLinkPreview(title);
             } else {
                 Uri uri = Uri.parse(url);
                 String authority = uri.getAuthority();
                 if (authority != null && WikiSite.supportedAuthority(authority)
                     && uri.getPath().startsWith("/wiki/")) {
                     PageTitle title = appWikiSite.titleForUri(uri);
-                    finishWithPageResult(title);
+                    showLinkPreview(title);
                 } else {
                     // if it's a /w/ URI, turn it into a full URI and go 
external
                     if (url.startsWith("/w/")) {
@@ -407,14 +418,33 @@
      * by the activity that originally launched us.
      * @param resultTitle PageTitle to pass as the activity result.
      */
-    public void finishWithPageResult(PageTitle resultTitle) {
-        HistoryEntry historyEntry = new HistoryEntry(resultTitle,
-                HistoryEntry.SOURCE_INTERNAL_LINK);
+    public void finishWithPageResult(@NonNull PageTitle resultTitle) {
+        finishWithPageResult(resultTitle, new HistoryEntry(resultTitle, 
HistoryEntry.SOURCE_GALLERY));
+    }
+
+    public void finishWithPageResult(@NonNull PageTitle resultTitle, @NonNull 
HistoryEntry historyEntry) {
         Intent intent = PageActivity.newIntent(GalleryActivity.this, 
historyEntry, resultTitle);
-        setResult(ACTIVITY_RESULT_FILEPAGE_SELECT, intent);
+        setResult(ACTIVITY_RESULT_PAGE_SELECTED, intent);
         finish();
     }
 
+    @Override public void onLinkPreviewLoadPage(@NonNull PageTitle title, 
@NonNull HistoryEntry entry, boolean inNewTab) {
+        finishWithPageResult(title, entry);
+    }
+
+    @Override public void onLinkPreviewCopyLink(@NonNull PageTitle title) {
+        ClipboardUtil.setPlainText(this, null, title.getCanonicalUri());
+        FeedbackUtil.showMessage(this, R.string.address_copied);
+    }
+
+    @Override public void onLinkPreviewAddToList(@NonNull PageTitle title) {
+        bottomSheetPresenter.showAddToListDialog(getSupportFragmentManager(), 
title, AddToReadingListDialog.InvokeSource.LINK_PREVIEW_MENU);
+    }
+
+    @Override public void onLinkPreviewShareLink(@NonNull PageTitle title) {
+        ShareUtil.shareText(this, title);
+    }
+
     /**
      * Retrieve the complete list of media items for the current page.
      * When retrieved, the list will be passed to the ViewPager, and will 
become a
diff --git a/app/src/main/java/org/wikipedia/history/HistoryEntry.java 
b/app/src/main/java/org/wikipedia/history/HistoryEntry.java
index 529de91..89f9f3e 100644
--- a/app/src/main/java/org/wikipedia/history/HistoryEntry.java
+++ b/app/src/main/java/org/wikipedia/history/HistoryEntry.java
@@ -29,6 +29,7 @@
     public static final int SOURCE_NEWS = 16;
     public static final int SOURCE_FEED_MAIN_PAGE = 17;
     public static final int SOURCE_FEED_RANDOM = 18;
+    public static final int SOURCE_GALLERY = 19; // Or should we just use 
SOURCE_INTERNAL_LINK as before?  Some of these things seem not like the others.
 
     @NonNull private final PageTitle title;
     @NonNull private final Date timestamp;
diff --git a/app/src/main/java/org/wikipedia/main/MainFragment.java 
b/app/src/main/java/org/wikipedia/main/MainFragment.java
index a84bd6d..990cdef 100644
--- a/app/src/main/java/org/wikipedia/main/MainFragment.java
+++ b/app/src/main/java/org/wikipedia/main/MainFragment.java
@@ -143,7 +143,7 @@
             String searchQuery = 
data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS).get(0);
             openSearchFragment(SearchInvokeSource.VOICE, searchQuery);
         } else if (requestCode == Constants.ACTIVITY_REQUEST_GALLERY
-                && resultCode == 
GalleryActivity.ACTIVITY_RESULT_FILEPAGE_SELECT) {
+                && resultCode == 
GalleryActivity.ACTIVITY_RESULT_PAGE_SELECTED) {
             startActivity(data);
         } else if (requestCode == Constants.ACTIVITY_REQUEST_LOGIN
                 && resultCode == LoginActivity.RESULT_LOGIN_SUCCESS) {
diff --git 
a/app/src/main/java/org/wikipedia/page/ExclusiveBottomSheetPresenter.java 
b/app/src/main/java/org/wikipedia/page/ExclusiveBottomSheetPresenter.java
index 2288c3d..5693418 100644
--- a/app/src/main/java/org/wikipedia/page/ExclusiveBottomSheetPresenter.java
+++ b/app/src/main/java/org/wikipedia/page/ExclusiveBottomSheetPresenter.java
@@ -3,13 +3,27 @@
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.support.v4.app.DialogFragment;
 import android.support.v4.app.FragmentManager;
+
+import org.wikipedia.readinglist.AddToReadingListDialog;
 
 public class ExclusiveBottomSheetPresenter {
     private static final String BOTTOM_SHEET_FRAGMENT_TAG = 
"bottom_sheet_fragment";
     private Dialog currentDialog;
 
+    public void showAddToListDialog(@NonNull FragmentManager fm, @NonNull 
PageTitle title,
+                                    @NonNull 
AddToReadingListDialog.InvokeSource source) {
+        show(fm, AddToReadingListDialog.newInstance(title, source, null));
+    }
+
+    public void showAddToListDialog(@NonNull FragmentManager fm, @NonNull 
PageTitle title,
+                                    @NonNull 
AddToReadingListDialog.InvokeSource source,
+                                    @Nullable 
DialogInterface.OnDismissListener listener) {
+        show(fm, AddToReadingListDialog.newInstance(title, source, listener));
+    }
+
     public void show(@NonNull FragmentManager manager, @NonNull DialogFragment 
dialog) {
         dismiss(manager);
         dialog.show(manager, BOTTOM_SHEET_FRAGMENT_TAG);
diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.java 
b/app/src/main/java/org/wikipedia/page/PageActivity.java
index 69234af..30e543b 100644
--- a/app/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/app/src/main/java/org/wikipedia/page/PageActivity.java
@@ -409,9 +409,8 @@
         bottomSheetPresenter.dismiss(getSupportFragmentManager());
     }
 
-    public void showAddToListDialog(PageTitle title, 
AddToReadingListDialog.InvokeSource source) {
-        bottomSheetPresenter.show(getSupportFragmentManager(),
-                AddToReadingListDialog.newInstance(title, source, 
listDialogDismissListener));
+    public void showAddToListDialog(@NonNull PageTitle title, @NonNull 
AddToReadingListDialog.InvokeSource source) {
+        bottomSheetPresenter.showAddToListDialog(getSupportFragmentManager(), 
title, source, listDialogDismissListener);
     }
 
     @Override
@@ -707,14 +706,14 @@
     public void onActivityResult(int requestCode, int resultCode, final Intent 
data) {
         if (settingsActivityRequested(requestCode)) {
             handleSettingsActivityResult(resultCode);
-        } else if (newArticleLanguageSelected(requestCode, resultCode) || 
galleryFilePageSelected(requestCode, resultCode)) {
-            handleLangLinkOrFilePageResult(data);
+        } else if (newArticleLanguageSelected(requestCode, resultCode) || 
galleryPageSelected(requestCode, resultCode)) {
+            handleLangLinkOrPageResult(data);
         } else {
             super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
-    private void handleLangLinkOrFilePageResult(final Intent data) {
+    private void handleLangLinkOrPageResult(final Intent data) {
         tabsContainerView.post(new Runnable() {
             @Override
             public void run() {
@@ -807,8 +806,8 @@
         return requestCode == Constants.ACTIVITY_REQUEST_LANGLINKS && 
resultCode == LangLinksActivity.ACTIVITY_RESULT_LANGLINK_SELECT;
     }
 
-    private boolean galleryFilePageSelected(int requestCode, int resultCode) {
-        return requestCode == Constants.ACTIVITY_REQUEST_GALLERY && resultCode 
== GalleryActivity.ACTIVITY_RESULT_FILEPAGE_SELECT;
+    private boolean galleryPageSelected(int requestCode, int resultCode) {
+        return requestCode == Constants.ACTIVITY_REQUEST_GALLERY && resultCode 
== GalleryActivity.ACTIVITY_RESULT_PAGE_SELECTED;
     }
 
     private boolean languageChanged(int resultCode) {
diff --git 
a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java 
b/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
index 63343f7..c029027 100755
--- a/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
+++ b/app/src/main/java/org/wikipedia/page/linkpreview/LinkPreviewDialog.java
@@ -218,7 +218,7 @@
     @Override
     public void onActivityResult(int requestCode, int resultCode, final Intent 
data) {
         if (requestCode == Constants.ACTIVITY_REQUEST_GALLERY
-                && resultCode == 
GalleryActivity.ACTIVITY_RESULT_FILEPAGE_SELECT) {
+                && resultCode == 
GalleryActivity.ACTIVITY_RESULT_PAGE_SELECTED) {
             startActivity(data);
         } else {
             super.onActivityResult(requestCode, resultCode, data);

-- 
To view, visit https://gerrit.wikimedia.org/r/333317
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: If7ce774861176ba71af4345742a3eee99955dea3
Gerrit-PatchSet: 6
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Mholloway <mhollo...@wikimedia.org>
Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org>
Gerrit-Reviewer: Dbrant <dbr...@wikimedia.org>
Gerrit-Reviewer: Niedzielski <sniedziel...@wikimedia.org>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to