From ab04896ce70a1dd877f4790f42574f606132aa5d Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Fri, 8 Feb 2013 18:58:22 +0000 Subject: [PATCH] FavoritesTree synchronized with library-service branch --- .../fbreader/library/FavoritesTree.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/org/geometerplus/fbreader/library/FavoritesTree.java b/src/org/geometerplus/fbreader/library/FavoritesTree.java index dc226f02f..35fb37af6 100644 --- a/src/org/geometerplus/fbreader/library/FavoritesTree.java +++ b/src/org/geometerplus/fbreader/library/FavoritesTree.java @@ -19,8 +19,7 @@ package org.geometerplus.fbreader.library; -import org.geometerplus.fbreader.book.Book; -import org.geometerplus.fbreader.book.IBookCollection; +import org.geometerplus.fbreader.book.*; public class FavoritesTree extends FirstLevelTree { FavoritesTree(RootTree root) { @@ -29,11 +28,10 @@ public class FavoritesTree extends FirstLevelTree { @Override public Status getOpeningStatus() { - final Status status = super.getOpeningStatus(); - if (status == Status.READY_TO_OPEN && !hasChildren()) { + if (!Collection.hasFavorites()) { return Status.CANNOT_OPEN; } - return status; + return Status.ALWAYS_RELOAD_BEFORE_OPENING; } @Override @@ -41,4 +39,23 @@ public class FavoritesTree extends FirstLevelTree { return getOpeningStatus() == Status.CANNOT_OPEN ? "noFavorites" : super.getOpeningStatusMessage(); } + + @Override + public void waitForOpening() { + clear(); + for (Book book : Collection.favorites()) { + new BookWithAuthorsTree(this, book); + } + } + + public boolean onBookEvent(BookEvent event, Book book) { + if (event == BookEvent.Added && Collection.isFavorite(book)) { + new BookWithAuthorsTree(this, book); + return true; + } if (event == BookEvent.Updated && !Collection.isFavorite(book)) { + return removeBook(book, false); + } else { + return super.onBookEvent(event, book); + } + } }