2014-05-25 17:48:39 -04:00
|
|
|
package org.bspeice.minimalbible.activities.downloader.manager;
|
|
|
|
|
2014-06-04 21:42:41 -04:00
|
|
|
import android.util.Log;
|
|
|
|
|
2014-05-25 17:48:39 -04:00
|
|
|
import org.crosswire.jsword.book.Book;
|
2014-06-04 21:42:41 -04:00
|
|
|
import org.crosswire.jsword.book.BookException;
|
2014-05-25 17:48:39 -04:00
|
|
|
import org.crosswire.jsword.book.Books;
|
|
|
|
import org.crosswire.jsword.book.BooksEvent;
|
|
|
|
import org.crosswire.jsword.book.BooksListener;
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
import javax.inject.Inject;
|
|
|
|
import javax.inject.Singleton;
|
|
|
|
|
|
|
|
/**
|
2014-05-25 18:11:09 -04:00
|
|
|
* Manager to keep track of which books have been installed
|
2014-05-25 17:48:39 -04:00
|
|
|
*/
|
|
|
|
@Singleton
|
|
|
|
public class InstalledManager implements BooksListener {
|
|
|
|
|
|
|
|
@Inject DownloadManager downloadManager;
|
|
|
|
|
2014-06-04 21:42:41 -04:00
|
|
|
private Books installedBooks;
|
|
|
|
private List<Book> installedBooksList;
|
2014-05-25 17:48:39 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Register our manager to receive events on Book install
|
|
|
|
* This is a relatively expensive operation,
|
|
|
|
* so we don't put it in the constructor.
|
|
|
|
*/
|
|
|
|
public void initialize() {
|
2014-06-04 21:42:41 -04:00
|
|
|
installedBooks = Books.installed();
|
|
|
|
installedBooksList = installedBooks.getBooks();
|
|
|
|
installedBooks.addBooksListener(this);
|
2014-05-25 17:48:39 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isInstalled(Book b) {
|
|
|
|
if (installedBooks == null) {
|
|
|
|
initialize();
|
|
|
|
}
|
2014-06-04 21:42:41 -04:00
|
|
|
return installedBooksList.contains(b);
|
2014-05-25 17:48:39 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void bookAdded(BooksEvent booksEvent) {
|
|
|
|
Book b = booksEvent.getBook();
|
2014-06-04 21:42:41 -04:00
|
|
|
if (!installedBooksList.contains(b)) {
|
|
|
|
installedBooksList.add(b);
|
2014-05-25 17:48:39 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void bookRemoved(BooksEvent booksEvent) {
|
|
|
|
Book b = booksEvent.getBook();
|
2014-06-04 21:42:41 -04:00
|
|
|
if (installedBooksList.contains(b)) {
|
|
|
|
installedBooksList.remove(b);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void removeBook(Book b) {
|
|
|
|
try {
|
|
|
|
installedBooks.removeBook(b);
|
|
|
|
} catch (BookException e) {
|
|
|
|
Log.e("InstalledManager", "Unable to remove book (already uninstalled?): " + e.getLocalizedMessage());
|
2014-05-25 17:48:39 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|