jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/405834 )
Change subject: Fix display of Default list title in numerous places. ...................................................................... Fix display of Default list title in numerous places. The replacement of the Default list's empty title with the "Saved" string should be done at the level of the ReadingList class itself. This will eliminate the need for any conditional logic anywhere else for determining whether to display the list title or the default "Saved" title. This also automatically fixes a number of places where we're incorrectly showing an empty string instead of the default list title. Change-Id: Ide69597f4041ded39331695d6dc6dcf5861f0e37 --- M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java M app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java M app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java M app/src/main/java/org/wikipedia/readinglist/ReadingListTitleDialog.java M app/src/main/java/org/wikipedia/readinglist/database/ReadingList.java M app/src/main/java/org/wikipedia/readinglist/database/ReadingListTable.java M app/src/main/java/org/wikipedia/util/StringUtil.java 7 files changed, 28 insertions(+), 17 deletions(-) Approvals: Sharvaniharan: Looks good to me, approved jenkins-bot: Verified diff --git a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java index bd141da..6f891d5 100644 --- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java +++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java @@ -215,7 +215,7 @@ private void addAndDismiss(final ReadingList readingList, final PageTitle title) { if (readingList.pages().size() >= Constants.MAX_READING_LIST_ARTICLE_LIMIT) { - String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.isDefault() ? getString(R.string.default_reading_list_name) : readingList.title()); + String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.title()); FeedbackUtil.makeSnackbar(getActivity(), message, FeedbackUtil.LENGTH_DEFAULT).show(); dismiss(); return; @@ -233,8 +233,7 @@ showViewListSnackBar(readingList, message); } else { - message = String.format(getString(R.string.reading_list_added_to_named), - readingList.isDefault() ? getString(R.string.default_reading_list_name) : readingList.title()); + message = String.format(getString(R.string.reading_list_added_to_named), readingList.title()); new ReadingListsFunnel(title.getWikiSite()).logAddToList(readingList, readingLists.size(), invokeSource); ReadingListDbHelper.instance().addPageToList(readingList, title, true); @@ -249,7 +248,7 @@ private void addAndDismiss(final ReadingList readingList, final List<PageTitle> titles) { if ((readingList.pages().size() + titles.size()) > Constants.MAX_READING_LIST_ARTICLE_LIMIT) { - String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.isDefault() ? getString(R.string.default_reading_list_name) : readingList.title()); + String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.title()); FeedbackUtil.makeSnackbar(getActivity(), message, FeedbackUtil.LENGTH_DEFAULT).show(); dismiss(); return; @@ -271,7 +270,7 @@ message = getString(R.string.reading_list_already_contains_selection); } else { message = String.format(getString(R.string.reading_list_added_articles_list_titled), numAdded, - readingList.isDefault() ? getString(R.string.default_reading_list_name) : readingList.title()); + readingList.title()); new ReadingListsFunnel().logAddToList(readingList, readingLists.size(), invokeSource); } showViewListSnackBar(readingList, message); diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java index 9dbf0b2..e7a5599 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListFragment.java @@ -234,7 +234,7 @@ ReadingList.sort(readingList, Prefs.getReadingListPageSortMode(ReadingList.SORT_BY_NAME_ASC)); setSearchQuery(currentSearchQuery); if (!articleLimitMessageShown && readingList.pages().size() >= Constants.MAX_READING_LIST_ARTICLE_LIMIT) { - String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.isDefault() ? getString(R.string.default_reading_list_name) : readingList.title()); + String message = String.format(getString(R.string.reading_list_article_limit_message), readingList.title()); FeedbackUtil.makeSnackbar(getActivity(), message, FeedbackUtil.LENGTH_DEFAULT).show(); articleLimitMessageShown = true; } diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java b/app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java index acdf7c7..15b153d 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListItemView.java @@ -156,9 +156,7 @@ } defaultListEmptyView.setVisibility((readingList.isDefault() && readingList.pages().size() == 0) ? VISIBLE : GONE); imageContainer.setVisibility(defaultListEmptyView.getVisibility() == VISIBLE ? GONE : VISIBLE); - titleView.setText(readingList.isDefault() - ? getString(R.string.default_reading_list_name) - : readingList.title()); + titleView.setText(readingList.title()); if (readingList.isDefault()) { descriptionView.setText(getContext().getString(R.string.default_reading_list_description)); descriptionView.setTypeface(descriptionView.getTypeface(), Typeface.NORMAL); diff --git a/app/src/main/java/org/wikipedia/readinglist/ReadingListTitleDialog.java b/app/src/main/java/org/wikipedia/readinglist/ReadingListTitleDialog.java index 23adeed..9f6b2d6 100644 --- a/app/src/main/java/org/wikipedia/readinglist/ReadingListTitleDialog.java +++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListTitleDialog.java @@ -35,7 +35,7 @@ if (StringUtils.isEmpty(title)) { dialog.setError(dialog.getContext().getString(R.string.reading_list_entry_empty)); dialog.setPositiveButtonEnabled(false); - } else if (title.equalsIgnoreCase(context.getString(R.string.default_reading_list_name)) || otherTitles.contains(title)) { + } else if (otherTitles.contains(title)) { dialog.setError(dialog.getContext().getString(R.string.reading_list_title_exists, title)); dialog.setPositiveButtonEnabled(false); } else { diff --git a/app/src/main/java/org/wikipedia/readinglist/database/ReadingList.java b/app/src/main/java/org/wikipedia/readinglist/database/ReadingList.java index b996c16..4a93581 100644 --- a/app/src/main/java/org/wikipedia/readinglist/database/ReadingList.java +++ b/app/src/main/java/org/wikipedia/readinglist/database/ReadingList.java @@ -4,6 +4,10 @@ import android.support.annotation.Nullable; import android.text.TextUtils; +import org.wikipedia.R; +import org.wikipedia.WikipediaApp; +import org.wikipedia.util.StringUtil; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -60,10 +64,13 @@ } @NonNull public String title() { - return title; + return isDefault() ? WikipediaApp.getInstance().getString(R.string.default_reading_list_name) : title; } public void title(@NonNull String title) { this.title = title; + } + public String dbTitle() { + return title; } @Nullable public String description() { @@ -119,10 +126,10 @@ public static void sort(ReadingList list, int sortMode) { switch (sortMode) { case SORT_BY_NAME_ASC: - Collections.sort(list.pages(), (lhs, rhs) -> lhs.title().compareTo(rhs.title())); + Collections.sort(list.pages(), (lhs, rhs) -> StringUtil.accentCaseInsensitiveCompare(lhs.title(), rhs.title())); break; case SORT_BY_NAME_DESC: - Collections.sort(list.pages(), (lhs, rhs) -> rhs.title().compareTo(lhs.title())); + Collections.sort(list.pages(), (lhs, rhs) -> StringUtil.accentCaseInsensitiveCompare(rhs.title(), lhs.title())); break; case SORT_BY_RECENT_ASC: Collections.sort(list.pages(), (lhs, rhs) -> ((Long) lhs.atime()).compareTo(rhs.atime())); @@ -138,10 +145,10 @@ public static void sort(List<ReadingList> lists, int sortMode) { switch (sortMode) { case SORT_BY_NAME_ASC: - Collections.sort(lists, (lhs, rhs) -> lhs.title().compareTo(rhs.title())); + Collections.sort(lists, (lhs, rhs) -> StringUtil.accentCaseInsensitiveCompare(lhs.title(), rhs.title())); break; case SORT_BY_NAME_DESC: - Collections.sort(lists, (lhs, rhs) -> rhs.title().compareTo(lhs.title())); + Collections.sort(lists, (lhs, rhs) -> StringUtil.accentCaseInsensitiveCompare(rhs.title(), lhs.title())); break; case SORT_BY_RECENT_ASC: Collections.sort(lists, (lhs, rhs) -> ((Long) lhs.atime()).compareTo(rhs.atime())); diff --git a/app/src/main/java/org/wikipedia/readinglist/database/ReadingListTable.java b/app/src/main/java/org/wikipedia/readinglist/database/ReadingListTable.java index 0500631..b7ae295 100644 --- a/app/src/main/java/org/wikipedia/readinglist/database/ReadingListTable.java +++ b/app/src/main/java/org/wikipedia/readinglist/database/ReadingListTable.java @@ -50,7 +50,7 @@ @Override protected ContentValues toContentValues(@NonNull ReadingList row) { ContentValues contentValues = new ContentValues(); - contentValues.put(ReadingListContract.Col.TITLE.getName(), row.title()); + contentValues.put(ReadingListContract.Col.TITLE.getName(), row.dbTitle()); contentValues.put(ReadingListContract.Col.MTIME.getName(), row.mtime()); contentValues.put(ReadingListContract.Col.ATIME.getName(), row.atime()); contentValues.put(ReadingListContract.Col.DESCRIPTION.getName(), row.description()); @@ -66,7 +66,7 @@ } @Override protected String[] getUnfilteredPrimaryKeySelectionArgs(@NonNull ReadingList row) { - return new String[] {row.title()}; + return new String[] {row.dbTitle()}; } @Override protected int getDBVersionIntroducedAt() { diff --git a/app/src/main/java/org/wikipedia/util/StringUtil.java b/app/src/main/java/org/wikipedia/util/StringUtil.java index 93d070d..d08b36c 100644 --- a/app/src/main/java/org/wikipedia/util/StringUtil.java +++ b/app/src/main/java/org/wikipedia/util/StringUtil.java @@ -12,6 +12,8 @@ import android.text.style.StyleSpan; import android.text.style.TypefaceSpan; +import org.apache.commons.lang3.StringUtils; + import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -130,6 +132,11 @@ .equals(Normalizer.normalize(str2, Normalizer.Form.NFC)); } + public static int accentCaseInsensitiveCompare(@NonNull String str1, @NonNull String str2) { + return StringUtils.stripAccents(str1).toLowerCase() + .compareTo(StringUtils.stripAccents(str2).toLowerCase()); + } + /** * @param source String that may contain HTML tags. * @return returned Spanned string that may contain spans parsed from the HTML source. -- To view, visit https://gerrit.wikimedia.org/r/405834 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ide69597f4041ded39331695d6dc6dcf5861f0e37 Gerrit-PatchSet: 1 Gerrit-Project: apps/android/wikipedia Gerrit-Branch: master Gerrit-Owner: Dbrant <dbr...@wikimedia.org> Gerrit-Reviewer: Brion VIBBER <br...@wikimedia.org> Gerrit-Reviewer: Cooltey <cf...@wikimedia.org> Gerrit-Reviewer: Sharvaniharan <sha...@wikimedia.org> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits