Mholloway has uploaded a new change for review. ( https://gerrit.wikimedia.org/r/327117 )
Change subject: Display date in featured image share subject when coming from the gallery ...................................................................... Display date in featured image share subject when coming from the gallery Change-Id: I38cb6dcd274c1a9b9248d266f28aab3a0c053ca6 --- M app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java M app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java M app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java M app/src/main/java/org/wikipedia/feed/news/NewsListCard.java M app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java M app/src/main/java/org/wikipedia/main/MainFragment.java A app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java M app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java M app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java M app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java M app/src/main/java/org/wikipedia/util/ShareUtil.java 11 files changed, 135 insertions(+), 63 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia refs/changes/17/327117/1 diff --git a/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java b/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java index db561fa..9b4699c 100644 --- a/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java +++ b/app/src/main/java/org/wikipedia/feed/aggregated/AggregatedFeedContentClient.java @@ -91,16 +91,16 @@ AggregatedFeedContent content = response.body(); // todo: remove age check when news endpoint provides dated content, T139481. if (age == 0 && content.news() != null) { - cards.add(new NewsListCard(content.news(), date, wiki)); + cards.add(new NewsListCard(content.news(), age, wiki)); } if (content.tfa() != null) { - cards.add(new FeaturedArticleCard(content.tfa(), date, wiki)); + cards.add(new FeaturedArticleCard(content.tfa(), age, wiki)); } if (content.mostRead() != null) { cards.add(new MostReadListCard(content.mostRead(), wiki)); } if (content.potd() != null) { - cards.add(new FeaturedImageCard(content.potd(), date, wiki)); + cards.add(new FeaturedImageCard(content.potd(), age, wiki)); } cb.success(cards); } else { diff --git a/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java b/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java index ef1feca..31c5f70 100644 --- a/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java +++ b/app/src/main/java/org/wikipedia/feed/featured/FeaturedArticleCard.java @@ -21,10 +21,10 @@ @NonNull private WikiSite wiki; @NonNull private FeedPageSummary page; - public FeaturedArticleCard(@NonNull FeedPageSummary page, @NonNull UtcDate date, @NonNull WikiSite wiki) { + public FeaturedArticleCard(@NonNull FeedPageSummary page, int age, @NonNull WikiSite wiki) { this.page = page; this.wiki = wiki; - this.date = date; + this.date = new UtcDate(age); } @Override diff --git a/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java b/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java index 67e2a5d..be67938 100644 --- a/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java +++ b/app/src/main/java/org/wikipedia/feed/image/FeaturedImageCard.java @@ -14,13 +14,15 @@ public class FeaturedImageCard extends Card { @NonNull private UtcDate date; + private int age; @NonNull private WikiSite wiki; @NonNull private FeaturedImage featuredImage; - public FeaturedImageCard(@NonNull FeaturedImage featuredImage, @NonNull UtcDate date, @NonNull WikiSite wiki) { + public FeaturedImageCard(@NonNull FeaturedImage featuredImage, int age, @NonNull WikiSite wiki) { this.featuredImage = featuredImage; + this.age = age; this.wiki = wiki; - this.date = date; + this.date = new UtcDate(age); } @NonNull @@ -33,6 +35,10 @@ return date; } + public int age() { + return age; + } + @Override @NonNull public String title() { diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java b/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java index f303b48..bb80d43 100644 --- a/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java +++ b/app/src/main/java/org/wikipedia/feed/news/NewsListCard.java @@ -13,11 +13,11 @@ import java.util.concurrent.TimeUnit; public class NewsListCard extends ListCard<NewsItemCard> { - @NonNull private UtcDate age; + @NonNull private UtcDate date; - public NewsListCard(@NonNull List<NewsItem> news, @NonNull UtcDate age, @NonNull WikiSite wiki) { + public NewsListCard(@NonNull List<NewsItem> news, int age, @NonNull WikiSite wiki) { super(toItemCards(news, wiki)); - this.age = age; + this.date = new UtcDate(age); } @NonNull @Override public String title() { @@ -28,8 +28,8 @@ return CardType.NEWS_LIST; } - @NonNull public UtcDate age() { - return age; + @NonNull public UtcDate date() { + return date; } @NonNull @VisibleForTesting static List<NewsItemCard> toItemCards(@NonNull List<NewsItem> items, @NonNull WikiSite wiki) { @@ -41,6 +41,6 @@ } @Override protected int dismissHashCode() { - return (int) TimeUnit.MILLISECONDS.toDays(age.baseCalendar().getTime().getTime()); + return (int) TimeUnit.MILLISECONDS.toDays(date.baseCalendar().getTime().getTime()); } } diff --git a/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java b/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java index 37e1e5c..b113044 100644 --- a/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java +++ b/app/src/main/java/org/wikipedia/feed/news/NewsListCardView.java @@ -33,7 +33,7 @@ private void header(@NonNull NewsListCard card) { CardHeaderView header = new CardHeaderView(getContext()) .setTitle(R.string.view_card_news_title) - .setSubtitle(DateUtil.getFeedCardDateString(card.age().baseCalendar())) + .setSubtitle(DateUtil.getFeedCardDateString(card.date().baseCalendar())) .setImage(R.drawable.icon_in_the_news) .setImageCircleColor(R.color.gray_disabled) .setCard(card) diff --git a/app/src/main/java/org/wikipedia/main/MainFragment.java b/app/src/main/java/org/wikipedia/main/MainFragment.java index 3cee59d..a82cb48 100644 --- a/app/src/main/java/org/wikipedia/main/MainFragment.java +++ b/app/src/main/java/org/wikipedia/main/MainFragment.java @@ -249,7 +249,7 @@ ShareUtil.shareImage(getContext(), bitmap, new File(thumbUrl).getName(), - ShareUtil.getFeaturedImageShareSubject(getContext(), card), + ShareUtil.getFeaturedImageShareSubject(getContext(), card.date().baseCalendar()), fullSizeUrl); } else { FeedbackUtil.showMessage(MainFragment.this, getString(R.string.gallery_share_error, card.baseImage().title())); @@ -268,9 +268,9 @@ } @Override public void onFeaturedImageSelected(FeaturedImageCard card) { - startActivityForResult(GalleryActivity.newIntent(getActivity(), card.filename(), - card.wikiSite(), GalleryFunnel.SOURCE_FEED_FEATURED_IMAGE, card.baseImage()), - Constants.ACTIVITY_REQUEST_GALLERY); + startActivityForResult(GalleryActivity.newIntent(getActivity(), card.age(), + card.filename(), card.baseImage(), card.wikiSite(), + GalleryFunnel.SOURCE_FEED_FEATURED_IMAGE), Constants.ACTIVITY_REQUEST_GALLERY); } @NonNull diff --git a/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java b/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java new file mode 100644 index 0000000..0a267ac --- /dev/null +++ b/app/src/main/java/org/wikipedia/page/gallery/FeaturedImageGalleryItem.java @@ -0,0 +1,34 @@ +package org.wikipedia.page.gallery; + +import android.support.annotation.NonNull; + +import org.wikipedia.feed.image.FeaturedImage; +import org.wikipedia.page.ImageLicense; + +class FeaturedImageGalleryItem extends GalleryItem { + + private int age; + + FeaturedImageGalleryItem(@NonNull FeaturedImage featuredImage, int age) { + super(featuredImage.title()); + this.age = age; + setUrl(featuredImage.image().source().toString()); + setWidth(featuredImage.image().width()); + setHeight(featuredImage.image().height()); + setThumbUrl(featuredImage.thumbnail().source().toString()); + setWildcardMimeType(); + setPlaceHolderLicense(); + } + + public int getAge() { + return age; + } + + private void setWildcardMimeType() { + setMimeType("*/*"); + } + + private void setPlaceHolderLicense() { + setLicense(new ImageLicense()); + } +} diff --git a/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java b/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java index 83f21ba..7cdf0cf 100644 --- a/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java +++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryActivity.java @@ -67,8 +67,8 @@ public static final String EXTRA_FILENAME = "filename"; public static final String EXTRA_WIKI = "wiki"; public static final String EXTRA_SOURCE = "source"; - public static final String EXTRA_FEATURED_IMAGE = "card"; - public static final String EXTRA_IS_FEATURED_IMAGE = "is_featured"; + public static final String EXTRA_FEATURED_IMAGE = "featuredImage"; + public static final String EXTRA_FEATURED_IMAGE_AGE = "featuredImageAge"; @NonNull private WikipediaApp app = WikipediaApp.getInstance(); @Nullable private PageTitle pageTitle; @@ -138,11 +138,11 @@ }; @NonNull - public static Intent newIntent(@NonNull Context context, @NonNull String filename, - @NonNull WikiSite wiki, int source, - @NonNull FeaturedImage image) { - return newIntent(context, null, filename, wiki, - source).putExtra(EXTRA_FEATURED_IMAGE, GsonMarshaller.marshal(image)); + public static Intent newIntent(@NonNull Context context, int age, @NonNull String filename, + @NonNull FeaturedImage image, @NonNull WikiSite wiki, int source) { + return newIntent(context, null, filename, wiki, source) + .putExtra(EXTRA_FEATURED_IMAGE, GsonMarshaller.marshal(image)) + .putExtra(EXTRA_FEATURED_IMAGE_AGE, age); } @NonNull @@ -235,7 +235,8 @@ if (getIntent().hasExtra(EXTRA_FEATURED_IMAGE)) { FeaturedImage featuredImage = GsonUnmarshaller.unmarshal(FeaturedImage.class, getIntent().getStringExtra(EXTRA_FEATURED_IMAGE)); - loadGalleryItemFor(featuredImage); + int age = getIntent().getIntExtra(EXTRA_FEATURED_IMAGE_AGE, 0); + loadGalleryItemFor(featuredImage, age); } else { // find our Page in the page cache... app.getPageCache().get(pageTitle, 0, new PageCache.CacheGetListener() { @@ -269,9 +270,9 @@ super.onDestroy(); } - private void loadGalleryItemFor(@NonNull FeaturedImage image) { + private void loadGalleryItemFor(@NonNull FeaturedImage image, int age) { List<GalleryItem> list = new ArrayList<>(); - list.add(new GalleryItem(image)); + list.add(new FeaturedImageGalleryItem(image, age)); applyGalleryCollection(new GalleryCollection(list)); } diff --git a/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java b/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java index 5713bc6..c9dbaa2 100644 --- a/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java +++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryItem.java @@ -6,7 +6,6 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; -import org.wikipedia.feed.image.FeaturedImage; import org.wikipedia.page.ImageLicense; import org.wikipedia.page.ImageLicenseFetchTask; @@ -14,58 +13,83 @@ import java.util.Iterator; import java.util.Map; -public class GalleryItem { +class GalleryItem { - private final JSONObject json; + private JSONObject json; + private String name; + private String url; + private String mimeType; + private HashMap<String, String> metadata; + private String thumbUrl; + private int width; + private int height; + @NonNull private ImageLicense license; + public JSONObject toJSON() { return json; } - private final String name; public String getName() { return name; } - private String url; public String getUrl() { return url; } - private final String mimeType; + void setUrl(@NonNull String url) { + this.url = url; + } + public String getMimeType() { return mimeType; } - private final HashMap<String, String> metadata; + void setMimeType(@NonNull String mimeType) { + this.mimeType = mimeType; + } + public Map<String, String> getMetadata() { return metadata; } - private final String thumbUrl; public String getThumbUrl() { return thumbUrl; } - private final int width; + void setThumbUrl(@NonNull String thumbUrl) { + this.thumbUrl = thumbUrl; + } + public int getWidth() { return width; } - private final int height; + void setWidth(int width) { + this.width = width; + } + public int getHeight() { return height; } - @NonNull private final ImageLicense license; + void setHeight(int height) { + this.height = height; + } + @NonNull public ImageLicense getLicense() { return license; + } + + void setLicense(@NonNull ImageLicense license) { + this.license = license; } @NonNull public String getLicenseUrl() { return license.getLicenseUrl(); } - public GalleryItem(String name) { + GalleryItem(String name) { this.json = null; this.name = name; this.url = null; @@ -77,19 +101,7 @@ this.license = new ImageLicense(); } - public GalleryItem(FeaturedImage featuredImage) { - this.json = null; - this.name = featuredImage.title(); - this.url = featuredImage.image().source().toString(); - this.mimeType = "*/*"; - this.thumbUrl = featuredImage.thumbnail().source().toString(); - this.metadata = null; - this.width = featuredImage.image().width(); - this.height = featuredImage.image().height(); - this.license = new ImageLicense(); - } - - public GalleryItem(JSONObject json) throws JSONException { + GalleryItem(JSONObject json) throws JSONException { this.json = json; this.name = json.getString("title"); this.metadata = new HashMap<>(); diff --git a/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java b/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java index 6cd3fd4..d8a9509 100644 --- a/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java +++ b/app/src/main/java/org/wikipedia/page/gallery/GalleryItemFragment.java @@ -35,6 +35,7 @@ import org.wikipedia.R; import org.wikipedia.WikipediaApp; import org.wikipedia.dataclient.WikiSite; +import org.wikipedia.feed.model.UtcDate; import org.wikipedia.page.PageTitle; import org.wikipedia.util.FeedbackUtil; import org.wikipedia.util.FileUtil; @@ -52,6 +53,8 @@ public static final String ARG_PAGETITLE = "pageTitle"; public static final String ARG_MEDIATITLE = "imageTitle"; public static final String ARG_MIMETYPE = "mimeType"; + public static final String ARG_FEED_FEATURED_IMAGE = "feedFeaturedImage"; + public static final String ARG_AGE = "age"; private ProgressBar progressBar; private ZoomableDraweeView imageView; @@ -66,6 +69,7 @@ @Nullable private PageTitle pageTitle; @SuppressWarnings("NullableProblems") @NonNull private PageTitle imageTitle; @Nullable private String mimeType; + private int age; @Nullable private GalleryItem galleryItem; @Nullable public GalleryItem getGalleryItem() { @@ -79,6 +83,12 @@ args.putParcelable(ARG_PAGETITLE, pageTitle); args.putParcelable(ARG_MEDIATITLE, new PageTitle(galleryItemProto.getName(), wiki)); args.putString(ARG_MIMETYPE, galleryItemProto.getMimeType()); + + if (galleryItemProto instanceof FeaturedImageGalleryItem) { + args.putBoolean(ARG_FEED_FEATURED_IMAGE, true); + args.putInt(ARG_AGE, ((FeaturedImageGalleryItem) galleryItemProto).getAge()); + } + f.setArguments(args); return f; } @@ -90,6 +100,10 @@ //noinspection ConstantConditions imageTitle = getArguments().getParcelable(ARG_MEDIATITLE); mimeType = getArguments().getString(ARG_MIMETYPE); + + if (getArguments().getBoolean(ARG_FEED_FEATURED_IMAGE)) { + age = getArguments().getInt(ARG_AGE); + } } @Override @@ -418,9 +432,7 @@ ShareUtil.shareImage(parentActivity, bitmap, new File(galleryItem.getUrl()).getName(), - pageTitle != null - ? pageTitle.getDisplayText() - : ShareUtil.getFeaturedImageShareSubject(getContext(), null), + getShareSubject(), imageTitle.getCanonicalUri()); } else { ShareUtil.shareText(parentActivity, imageTitle); @@ -448,6 +460,16 @@ } } + @Nullable + private String getShareSubject() { + if (getArguments().getBoolean(ARG_FEED_FEATURED_IMAGE)) { + return ShareUtil.getFeaturedImageShareSubject(getContext(), new UtcDate(age).baseCalendar()); + } else if (pageTitle != null) { + return pageTitle.getDisplayText(); + } + return null; + } + private void saveImage() { if (galleryItem == null) { return; diff --git a/app/src/main/java/org/wikipedia/util/ShareUtil.java b/app/src/main/java/org/wikipedia/util/ShareUtil.java index 807ede1..b1547bd 100644 --- a/app/src/main/java/org/wikipedia/util/ShareUtil.java +++ b/app/src/main/java/org/wikipedia/util/ShareUtil.java @@ -16,7 +16,6 @@ import org.wikipedia.BuildConfig; import org.wikipedia.R; import org.wikipedia.concurrency.SaneAsyncTask; -import org.wikipedia.feed.image.FeaturedImageCard; import org.wikipedia.page.PageTitle; import org.wikipedia.util.log.L; @@ -24,6 +23,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import static org.wikipedia.util.StringUtil.emptyIfNull; @@ -91,12 +91,9 @@ } public static String getFeaturedImageShareSubject(@NonNull Context context, - @Nullable FeaturedImageCard card) { - String result = context.getString(R.string.feed_featured_image_share_subject); - if (card != null) { - result = result + " | " + DateUtil.getFeedCardDateString(card.date().baseCalendar()); - } - return result; + @NonNull Calendar date) { + return context.getString(R.string.feed_featured_image_share_subject) + + " | " + DateUtil.getFeedCardDateString(date); } public static Intent buildImageShareChooserIntent(Context context, String subject, String text, Uri uri) { -- To view, visit https://gerrit.wikimedia.org/r/327117 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I38cb6dcd274c1a9b9248d266f28aab3a0c053ca6 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Mholloway <mhollo...@wikimedia.org> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits