private List<QuranRow> getSortedRows(List<Bookmark> bookmarks) { List<QuranRow> rows = new ArrayList<>(bookmarks.size()); List<Bookmark> ayahBookmarks = new ArrayList<>(); // add the page bookmarks directly, save ayah bookmarks for later for (int i = 0, bookmarksSize = bookmarks.size(); i < bookmarksSize; i++) { Bookmark bookmark = bookmarks.get(i); if (bookmark.isPageBookmark()) { rows.add(QuranRowFactory.fromBookmark(mAppContext, bookmark)); } else { ayahBookmarks.add(bookmark); } } // add page bookmarks header if needed if (rows.size() > 0) { rows.add(0, QuranRowFactory.fromPageBookmarksHeader(mAppContext)); } // add ayah bookmarks if any if (ayahBookmarks.size() > 0) { rows.add(QuranRowFactory.fromAyahBookmarksHeader(mAppContext)); for (int i = 0, ayahBookmarksSize = ayahBookmarks.size(); i < ayahBookmarksSize; i++) { rows.add(QuranRowFactory.fromBookmark(mAppContext, ayahBookmarks.get(i))); } } return rows; }
private List<QuranRow> getBookmarkRows(BookmarkData data, boolean groupByTags) { List<QuranRow> rows; List<Tag> tags = data.getTags(); List<Bookmark> bookmarks = data.getBookmarks(); if (groupByTags) { rows = getRowsSortedByTags(tags, bookmarks); } else { rows = getSortedRows(bookmarks); } int lastPage = mQuranSettings.getLastPage(); boolean showLastPage = lastPage != Constants.NO_PAGE_SAVED; if (showLastPage && (lastPage > Constants.PAGES_LAST || lastPage < Constants.PAGES_FIRST)) { showLastPage = false; Timber.w("Got invalid last saved page as %d", lastPage); } if (showLastPage) { rows.add(0, QuranRowFactory.fromCurrentPageHeader(mAppContext)); rows.add(1, QuranRowFactory.fromCurrentPage(mAppContext, lastPage)); } return rows; }
private List<QuranRow> getRowsSortedByTags(List<Tag> tags, List<Bookmark> bookmarks) { List<QuranRow> rows = new ArrayList<>(); // sort by tags, alphabetical Map<Long, List<Bookmark>> tagsMapping = generateTagsMapping(tags, bookmarks); for (int i = 0, tagsSize = tags.size(); i < tagsSize; i++) { Tag tag = tags.get(i); rows.add(QuranRowFactory.fromTag(tag)); List<Bookmark> tagBookmarks = tagsMapping.get(tag.id); for (int j = 0, tagBookmarksSize = tagBookmarks.size(); j < tagBookmarksSize; j++) { rows.add(QuranRowFactory.fromBookmark(mAppContext, tagBookmarks.get(j), tag.id)); } } // add untagged bookmarks List<Bookmark> untagged = tagsMapping.get(BOOKMARKS_WITHOUT_TAGS_ID); if (untagged.size() > 0) { rows.add(QuranRowFactory.fromNotTaggedHeader(mAppContext)); for (int i = 0, untaggedSize = untagged.size(); i < untaggedSize; i++) { rows.add(QuranRowFactory.fromBookmark(mAppContext, untagged.get(i))); } } return rows; }