Sharvaniharan has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/394217 )
Change subject: On this day
......................................................................
On this day
- Design tweaks
- Changed UtcDate to Date to get default TimeZone.
BUG: T175995
Change-Id: Ib689ba7b1a037142503cb42b6630036560c06cf1
---
M
app/src/androidTest/java/org/wikipedia/feed/onthisday/OnThisDayCardViewTest.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayClient.java
M app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
M app/src/main/java/org/wikipedia/util/DateUtil.java
M app/src/main/java/org/wikipedia/util/StringUtil.java
M app/src/main/res/layout/item_on_this_day_pages.xml
M app/src/main/res/layout/view_on_this_day_event.xml
M app/src/test/java/org/wikipedia/feed/onthisday/OnThisDayClientTest.java
11 files changed, 66 insertions(+), 34 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/17/394217/1
diff --git
a/app/src/androidTest/java/org/wikipedia/feed/onthisday/OnThisDayCardViewTest.java
b/app/src/androidTest/java/org/wikipedia/feed/onthisday/OnThisDayCardViewTest.java
index b587d6a..6947ead 100644
---
a/app/src/androidTest/java/org/wikipedia/feed/onthisday/OnThisDayCardViewTest.java
+++
b/app/src/androidTest/java/org/wikipedia/feed/onthisday/OnThisDayCardViewTest.java
@@ -1,6 +1,7 @@
package org.wikipedia.feed.onthisday;
import android.support.annotation.NonNull;
+import android.text.SpannableStringBuilder;
import org.junit.Before;
import org.junit.experimental.theories.Theory;
@@ -62,7 +63,7 @@
OnThisDayCard card = mock(OnThisDayCard.class);
when(card.title()).thenReturn(str(title));
when(card.subtitle()).thenReturn(str(subtitle));
- when(card.text()).thenReturn(text);
+ when(card.text()).thenReturn(new SpannableStringBuilder(text));
when(card.year()).thenReturn(year);
return card;
}
diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
index 1c7ea30..c0bcdc3 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDay.java
@@ -2,9 +2,12 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
+import android.text.SpannableStringBuilder;
+import org.apache.commons.lang3.StringUtils;
import org.wikipedia.dataclient.restbase.page.RbPageSummary;
import org.wikipedia.json.annotations.Required;
+import org.wikipedia.util.StringUtil;
import java.util.ArrayList;
import java.util.Collections;
@@ -51,8 +54,13 @@
@SuppressWarnings("unused") private int year;
@SuppressWarnings("unused,NullableProblems") @Required @NonNull
private List<RbPageSummary> pages;
- @NonNull public String text() {
- return text;
+ @NonNull
+ public SpannableStringBuilder text() {
+ List<String> pageTitles = new ArrayList<>();
+ for (RbPageSummary page : pages) {
+
pageTitles.add((StringUtil.fromHtml(StringUtils.defaultString(page.getNormalizedTitle()))).toString());
+ }
+ return StringUtil.boldenSubstrings(text, pageTitles);
}
public int year() {
diff --git a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
index 363458f..5298b1c 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCard.java
@@ -1,6 +1,7 @@
package org.wikipedia.feed.onthisday;
import android.support.annotation.NonNull;
+import android.text.SpannableStringBuilder;
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
@@ -8,22 +9,22 @@
import org.wikipedia.dataclient.restbase.page.RbPageSummary;
import org.wikipedia.feed.model.Card;
import org.wikipedia.feed.model.CardType;
-import org.wikipedia.feed.model.UtcDate;
import org.wikipedia.feed.view.FeedAdapter;
import org.wikipedia.util.DateUtil;
+import java.util.Calendar;
import java.util.List;
public class OnThisDayCard extends Card {
private int nextYear;
- private UtcDate date;
+ private Calendar date;
private OnThisDay onThisDay;
private FeedAdapter.Callback callback;
private WikiSite wiki;
private OnThisDay.Event eventShownOnCard;
private int age;
- OnThisDayCard(@NonNull OnThisDay onThisDay, @NonNull OnThisDay.Event
event, int nextYear, @NonNull UtcDate date, @NonNull WikiSite wiki, int age) {
+ OnThisDayCard(@NonNull OnThisDay onThisDay, @NonNull OnThisDay.Event
event, int nextYear, @NonNull Calendar date, @NonNull WikiSite wiki, int age) {
super();
this.onThisDay = onThisDay;
eventShownOnCard = event;
@@ -58,14 +59,14 @@
}
@Override @NonNull public String subtitle() {
- return DateUtil.getFeedCardDateString(date().baseCalendar());
+ return DateUtil.getFeedCardDateString(date);
}
@NonNull String dayString() {
- return
DateUtil.getMonthOnlyDateString(date().baseCalendar().getTime());
+ return DateUtil.getMonthOnlyDateString(date.getTime());
}
- @NonNull public String text() {
+ @NonNull public SpannableStringBuilder text() {
return eventShownOnCard.text();
}
@@ -73,7 +74,7 @@
return eventShownOnCard.year();
}
- @NonNull public UtcDate date() {
+ @NonNull public Calendar date() {
return date;
}
diff --git
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
index 835a65e..134240c 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayCardView.java
@@ -18,7 +18,6 @@
import org.wikipedia.feed.view.CardHeaderView;
import org.wikipedia.feed.view.DefaultFeedCardView;
import org.wikipedia.feed.view.FeedAdapter;
-import org.wikipedia.richtext.RichTextUtil;
import org.wikipedia.util.DateUtil;
import org.wikipedia.util.ResourceUtil;
import org.wikipedia.views.DontInterceptTouchListener;
@@ -106,7 +105,6 @@
.setCard(card)
.setCallback(getCallback());
descTextView.setText(card.text());
- RichTextUtil.removeUnderlinesFromLinksAndMakeBold(descTextView);
yearTextView.setText(DateUtil.yearToStringWithEra(card.year()));
yearsInfoTextView.setText(DateUtil.getYearDifferenceString(card.year()));
dayTextView.setText(card.dayString());
diff --git
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayClient.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayClient.java
index 78e1d8b..0e43382 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayClient.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayClient.java
@@ -9,12 +9,12 @@
import org.wikipedia.dataclient.retrofit.RetrofitFactory;
import org.wikipedia.feed.dataclient.FeedClient;
import org.wikipedia.feed.model.Card;
-import org.wikipedia.feed.model.UtcDate;
import org.wikipedia.settings.Prefs;
import org.wikipedia.util.DateUtil;
import org.wikipedia.util.log.L;
import java.util.ArrayList;
+import java.util.Calendar;
import java.util.List;
import java.util.Locale;
import java.util.Random;
@@ -30,16 +30,16 @@
@Override
public void request(@NonNull Context context, @NonNull WikiSite wiki, int
age, @NonNull FeedClient.Callback cb) {
- UtcDate today = DateUtil.getUtcRequestDateFor(age);
+ Calendar today = DateUtil.getDefaultDateFor(age);
String endpoint = String.format(Locale.ROOT,
Prefs.getRestbaseUriFormat(), wiki.scheme(),
wiki.authority());
Retrofit retrofit = RetrofitFactory.newInstance(endpoint, wiki);
OnThisDayClient.Service service = retrofit.create(Service.class);
- call = service.getSelectedEvent(today.month(), today.date());
+ call = service.getSelectedEvent(today.get(Calendar.MONTH) + 1,
today.get(Calendar.DATE));
call.enqueue(new CallbackAdapter(cb, today, wiki, age));
}
- public Call<OnThisDay> request(@NonNull WikiSite wiki, String month,
String date) {
+ public Call<OnThisDay> request(@NonNull WikiSite wiki, int month, int
date) {
String endpoint = String.format(Locale.ROOT,
Prefs.getRestbaseUriFormat(), wiki.scheme(),
wiki.authority());
Retrofit retrofit = RetrofitFactory.newInstance(endpoint, wiki);
@@ -58,11 +58,11 @@
static class CallbackAdapter implements retrofit2.Callback<OnThisDay> {
@NonNull private final FeedClient.Callback cb;
- private UtcDate today;
+ private Calendar today;
private WikiSite wiki;
private int age;
- CallbackAdapter(@NonNull FeedClient.Callback cb, UtcDate today,
WikiSite wiki, int age) {
+ CallbackAdapter(@NonNull FeedClient.Callback cb, Calendar today,
WikiSite wiki, int age) {
this.cb = cb;
this.today = today;
this.wiki = wiki;
@@ -96,17 +96,18 @@
interface Service {
@NonNull
@GET("feed/onthisday/selected/{mm}/{dd}")
- Call<OnThisDay> getSelectedEvent(@Path("mm") String month,
- @Path("dd") String day);
+ Call<OnThisDay> getSelectedEvent(@Path("mm") int month,
+ @Path("dd") int day);
@NonNull
@GET("feed/onthisday/events/{mm}/{dd}")
- Call<OnThisDay> getAllOtdEvents(@Path("mm") String month,
- @Path("dd") String day);
+ Call<OnThisDay> getAllOtdEvents(@Path("mm") int month,
+ @Path("dd") int day);
}
@VisibleForTesting
- @NonNull Call<OnThisDay> request(@NonNull Service service) {
- return service.getSelectedEvent("10", "05");
+ @NonNull
+ Call<OnThisDay> request(@NonNull Service service, int mon, int day) {
+ return service.getSelectedEvent(mon, day);
}
}
diff --git
a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
index 683e245..ac84558 100644
--- a/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
+++ b/app/src/main/java/org/wikipedia/feed/onthisday/OnThisDayFragment.java
@@ -23,7 +23,6 @@
import org.wikipedia.R;
import org.wikipedia.WikipediaApp;
import org.wikipedia.dataclient.WikiSite;
-import org.wikipedia.feed.model.UtcDate;
import org.wikipedia.util.DateUtil;
import org.wikipedia.util.DimenUtil;
import org.wikipedia.util.log.L;
@@ -77,9 +76,9 @@
unbinder = ButterKnife.bind(this, view);
wiki = WikipediaApp.getInstance().getWikiSite();
int age = getActivity().getIntent().getIntExtra(AGE, 0);
- OnThisDayFragment.this.date =
DateUtil.getUtcRequestDateFor(age).baseCalendar();
- UtcDate today = DateUtil.getUtcRequestDateFor(age);
- requestEvents(today.month(), today.date());
+ OnThisDayFragment.this.date = DateUtil.getDefaultDateFor(age);
+ Calendar today = DateUtil.getDefaultDateFor(age);
+ requestEvents(today.get(Calendar.MONTH), today.get(Calendar.DATE));
setUpToolbar();
initEventsRecycler();
return view;
@@ -136,9 +135,9 @@
});*/
}
- private void requestEvents(String month, String date) {
+ private void requestEvents(int month, int date) {
- new OnThisDayClient().request(wiki, month, date).enqueue(new
Callback<OnThisDay>() {
+ new OnThisDayClient().request(wiki, month + 1, date).enqueue(new
Callback<OnThisDay>() {
@Override
public void onResponse(@NonNull Call<OnThisDay> call, @NonNull
Response<OnThisDay> response) {
if (!isAdded()) {
@@ -227,7 +226,7 @@
eventsRecycler.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
date.set(year, month, day, 0, 0);
- requestEvents("" + (month + 1), "" + day);
+ requestEvents(month, day);
}
diff --git a/app/src/main/java/org/wikipedia/util/DateUtil.java
b/app/src/main/java/org/wikipedia/util/DateUtil.java
index 0580ef7..29a9fac 100644
--- a/app/src/main/java/org/wikipedia/util/DateUtil.java
+++ b/app/src/main/java/org/wikipedia/util/DateUtil.java
@@ -60,6 +60,12 @@
return new UtcDate(age);
}
+ public static Calendar getDefaultDateFor(int age) {
+ Calendar calendar = Calendar.getInstance(TimeZone.getDefault());
+ calendar.add(Calendar.DATE, -age);
+ return calendar;
+ }
+
public static Date getHttpLastModifiedDate(@NonNull String dateStr) throws
ParseException {
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss
zzz", Locale.ROOT);
df.setTimeZone(TimeZone.getTimeZone("UTC"));
diff --git a/app/src/main/java/org/wikipedia/util/StringUtil.java
b/app/src/main/java/org/wikipedia/util/StringUtil.java
index 5e2126e..6345fa5 100644
--- a/app/src/main/java/org/wikipedia/util/StringUtil.java
+++ b/app/src/main/java/org/wikipedia/util/StringUtil.java
@@ -4,9 +4,12 @@
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.Html;
+import android.text.Spannable;
+import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.SpannedString;
import android.text.TextUtils;
+import android.text.style.StyleSpan;
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
@@ -134,5 +137,18 @@
}
}
+ public static SpannableStringBuilder boldenSubstrings(String text,
@NonNull List<String> subStrings) {
+ SpannableStringBuilder sb = new SpannableStringBuilder(text);
+ for (String subString : subStrings) {
+ if (text.contains(subString)) {
+ StyleSpan b = new StyleSpan(android.graphics.Typeface.BOLD);
+ sb.setSpan(b, text.indexOf(subString), text.indexOf(subString)
+ subString.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+ }
+ }
+ return sb;
+ }
+
+
+
private StringUtil() { }
}
diff --git a/app/src/main/res/layout/item_on_this_day_pages.xml
b/app/src/main/res/layout/item_on_this_day_pages.xml
index ce00dab..b2faeca 100644
--- a/app/src/main/res/layout/item_on_this_day_pages.xml
+++ b/app/src/main/res/layout/item_on_this_day_pages.xml
@@ -17,7 +17,7 @@
android:layout_height="match_parent"
android:layout_margin="3dp"
android:visibility="gone"
- app:actualImageScaleType="none" />
+ app:actualImageScaleType="centerCrop" />
<LinearLayout
android:layout_width="0dp"
diff --git a/app/src/main/res/layout/view_on_this_day_event.xml
b/app/src/main/res/layout/view_on_this_day_event.xml
index 7c4d58f..5dfeabc 100644
--- a/app/src/main/res/layout/view_on_this_day_event.xml
+++ b/app/src/main/res/layout/view_on_this_day_event.xml
@@ -64,7 +64,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
- android:fontFamily="sans-serif-medium"
+ android:fontFamily="sans-serif"
android:lineSpacingExtra="8sp"
android:textSize="16sp"
android:textStyle="normal"
diff --git
a/app/src/test/java/org/wikipedia/feed/onthisday/OnThisDayClientTest.java
b/app/src/test/java/org/wikipedia/feed/onthisday/OnThisDayClientTest.java
index fa20d5e..b12f614 100644
--- a/app/src/test/java/org/wikipedia/feed/onthisday/OnThisDayClientTest.java
+++ b/app/src/test/java/org/wikipedia/feed/onthisday/OnThisDayClientTest.java
@@ -22,6 +22,8 @@
public class OnThisDayClientTest extends MockWebServerTest {
private OnThisDay onThisDay;
+ private static final int MON = 10, DAY = 5;
+
@NonNull private OnThisDayClient client = new OnThisDayClient();
@Before
@@ -70,7 +72,7 @@
}
private void request(@NonNull FeedClient.Callback cb) {
- Call<OnThisDay> call =
client.request(service(OnThisDayClient.Service.class));
+ Call<OnThisDay> call =
client.request(service(OnThisDayClient.Service.class), MON, DAY);
call.enqueue(new OnThisDayClient.CallbackAdapter(cb, null, null, 0));
}
}
--
To view, visit https://gerrit.wikimedia.org/r/394217
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib689ba7b1a037142503cb42b6630036560c06cf1
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Sharvaniharan <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits