Dbrant has uploaded a new change for review. (
https://gerrit.wikimedia.org/r/338371 )
Change subject: Improve implicit sorting of reading list items.
......................................................................
Improve implicit sorting of reading list items.
There were still some cases where reading list items weren't getting
sorted correctly, for example:
- Add a few items to a reading list
- View the reading list and sort it alphabetically
- Delete an item from the middle of the list
- Click "undo" to add the item back
- Observe that the list is no longer sorted properly
This patch ensures that the reading list is implicitly sorted every time
it's updated for any reason. (And also removes unnecessary private fields
from ReadingListsFragment that were maintaining the sort state.)
Change-Id: Id4fb34ac06501b4451f9337efc6d7fc4fa3ff1da
---
M app/src/main/java/org/wikipedia/readinglist/ReadingListDetailView.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
2 files changed, 23 insertions(+), 25 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia
refs/changes/71/338371/1
diff --git
a/app/src/main/java/org/wikipedia/readinglist/ReadingListDetailView.java
b/app/src/main/java/org/wikipedia/readinglist/ReadingListDetailView.java
index bd53d28..7ba27c5 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListDetailView.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListDetailView.java
@@ -29,6 +29,7 @@
import org.wikipedia.R;
import org.wikipedia.readinglist.page.ReadingListPage;
+import org.wikipedia.settings.Prefs;
import org.wikipedia.util.DimenUtil;
import org.wikipedia.util.FeedbackUtil;
import org.wikipedia.util.ResourceUtil;
@@ -131,10 +132,11 @@
descriptionView.setText(readingList.getDescription());
offlineView.setImageResource(readingList.getSaveOffline() ?
R.drawable.ic_cloud_download_black_24dp : R.drawable.ic_cloud_off_black_24dp);
setSearchQuery(currentSearchQuery);
+ updateSort();
}
- public void setSort(int sortMode) {
- sortPages(sortMode);
+ public void updateSort() {
+ sortPages(Prefs.getReadingListPageSortMode(SORT_BY_NAME_ASC));
adapter.notifyDataSetChanged();
}
@@ -225,6 +227,7 @@
default:
break;
}
+ adapter.notifyDataSetChanged();
}
private class EditButtonClickListener implements OnClickListener {
diff --git
a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
index 5fec00f..33e2104 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
@@ -67,9 +67,6 @@
private ReadingListsSearchCallback searchActionModeCallback = new
ReadingListsSearchCallback();
@Nullable private ActionMode actionMode;
- private int readingListSortMode;
- private int readingListPageSortMode;
-
@NonNull public static ReadingListsFragment newInstance() {
return new ReadingListsFragment();
}
@@ -78,8 +75,6 @@
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
- readingListSortMode =
Prefs.getReadingListSortMode(ReadingList.SORT_BY_NAME_ASC);
- readingListPageSortMode =
Prefs.getReadingListPageSortMode(ReadingList.SORT_BY_NAME_ASC);
}
@Override
@@ -150,13 +145,11 @@
super.onPrepareOptionsMenu(menu);
MenuItem sortByNameItem = menu.findItem(R.id.menu_sort_by_name);
MenuItem sortByRecentItem = menu.findItem(R.id.menu_sort_by_recent);
- if (pager.getCurrentItem() == PAGE_READING_LISTS) {
- sortByNameItem.setTitle(readingListSortMode ==
ReadingList.SORT_BY_NAME_ASC ? R.string.reading_list_sort_by_name_desc :
R.string.reading_list_sort_by_name);
- sortByRecentItem.setTitle(readingListSortMode ==
ReadingList.SORT_BY_RECENT_DESC ? R.string.reading_list_sort_by_recent_desc :
R.string.reading_list_sort_by_recent);
- } else {
- sortByNameItem.setTitle(readingListPageSortMode ==
ReadingList.SORT_BY_NAME_ASC ? R.string.reading_list_sort_by_name_desc :
R.string.reading_list_sort_by_name);
- sortByRecentItem.setTitle(readingListPageSortMode ==
ReadingList.SORT_BY_RECENT_DESC ? R.string.reading_list_sort_by_recent_desc :
R.string.reading_list_sort_by_recent);
- }
+ int sortMode = pager.getCurrentItem() == PAGE_READING_LISTS
+ ? Prefs.getReadingListSortMode(ReadingList.SORT_BY_NAME_ASC)
+ :
Prefs.getReadingListPageSortMode(ReadingList.SORT_BY_NAME_ASC);
+ sortByNameItem.setTitle(sortMode == ReadingList.SORT_BY_NAME_ASC ?
R.string.reading_list_sort_by_name_desc : R.string.reading_list_sort_by_name);
+ sortByRecentItem.setTitle(sortMode == ReadingList.SORT_BY_RECENT_DESC
? R.string.reading_list_sort_by_recent_desc :
R.string.reading_list_sort_by_recent);
}
@Override
@@ -289,7 +282,6 @@
actionMode.finish();
}
listDetailView.setReadingList(readingList);
- listDetailView.setSort(readingListPageSortMode);
pager.setCurrentItem(PAGE_LIST_DETAIL);
if (!readingList.getPages().isEmpty()
@@ -393,27 +385,30 @@
private void setSortMode(int sortModeAsc, int sortModeDesc) {
if (pager.getCurrentItem() == PAGE_READING_LISTS) {
- if (readingListSortMode != sortModeAsc) {
- readingListSortMode = sortModeAsc;
+ int sortMode =
Prefs.getReadingListSortMode(ReadingList.SORT_BY_NAME_ASC);
+ if (sortMode != sortModeAsc) {
+ sortMode = sortModeAsc;
} else {
- readingListSortMode = sortModeDesc;
+ sortMode = sortModeDesc;
}
sortLists();
- Prefs.setReadingListSortMode(readingListSortMode);
+ Prefs.setReadingListSortMode(sortMode);
} else if (pager.getCurrentItem() == PAGE_LIST_DETAIL) {
- if (readingListPageSortMode != sortModeAsc) {
- readingListPageSortMode = sortModeAsc;
+ int sortMode =
Prefs.getReadingListPageSortMode(ReadingList.SORT_BY_NAME_ASC);
+ if (sortMode != sortModeAsc) {
+ sortMode = sortModeAsc;
} else {
- readingListPageSortMode = sortModeDesc;
+ sortMode = sortModeDesc;
}
- listDetailView.setSort(readingListPageSortMode);
- Prefs.setReadingListPageSortMode(readingListPageSortMode);
+ Prefs.setReadingListPageSortMode(sortMode);
+ listDetailView.updateSort();
}
getActivity().supportInvalidateOptionsMenu();
}
private void sortLists() {
- ReadingList.sortReadingLists(readingLists, readingListSortMode);
+ ReadingList.sortReadingLists(readingLists,
+ Prefs.getReadingListSortMode(ReadingList.SORT_BY_NAME_ASC));
adapter.notifyDataSetChanged();
}
--
To view, visit https://gerrit.wikimedia.org/r/338371
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Id4fb34ac06501b4451f9337efc6d7fc4fa3ff1da
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits