1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-06 03:50:19 +02:00

no Library.Instance() in FBReaderApp, IBookCollection is used instead

This commit is contained in:
Nikolay Pultsin 2013-01-12 20:30:41 +04:00
parent 522d32a585
commit be4bf6c174
8 changed files with 44 additions and 37 deletions

View file

@ -41,7 +41,7 @@ import org.geometerplus.zlibrary.ui.android.view.AndroidFontUtil;
import org.geometerplus.fbreader.fbreader.ActionCode;
import org.geometerplus.fbreader.fbreader.FBReaderApp;
import org.geometerplus.fbreader.bookmodel.BookModel;
import org.geometerplus.fbreader.library.Book;
import org.geometerplus.fbreader.library.*;
import org.geometerplus.fbreader.tips.TipsManager;
import org.geometerplus.android.fbreader.library.SQLiteBooksDatabase;
@ -329,10 +329,11 @@ public final class FBReader extends ZLAndroidActivity {
@Override
protected FBReaderApp createApplication() {
if (SQLiteBooksDatabase.Instance() == null) {
new SQLiteBooksDatabase(this, "READER");
BooksDatabase db = SQLiteBooksDatabase.Instance();
if (db == null) {
db = new SQLiteBooksDatabase(this, "READER");
}
return new FBReaderApp();
return new FBReaderApp(new BookCollection(db));
}
@Override

View file

@ -143,6 +143,19 @@ public class BookCollectionShadow implements IBookCollection, ServiceConnection
}
}
public synchronized List<Bookmark> invisibleBookmarks(Book book) {
if (myInterface == null) {
return Collections.emptyList();
}
try {
return SerializerUtil.deserializeBookmarkList(
myInterface.invisibleBookmarks(SerializerUtil.serialize(book))
);
} catch (RemoteException e) {
return Collections.emptyList();
}
}
public synchronized List<Bookmark> allBookmarks() {
if (myInterface == null) {
return Collections.emptyList();

View file

@ -18,6 +18,7 @@ interface LibraryInterface {
void addBookToRecentList(in String book);
void setBookFavorite(in String book, in boolean favorite);
List<String> invisibleBookmarks(in String book);
List<String> allBookmarks();
String saveBookmark(in String bookmark);
void deleteBookmark(in String bookmark);

View file

@ -157,6 +157,12 @@ public class LibraryService extends Service {
myCollection.setBookFavorite(SerializerUtil.deserializeBook(book), favorite);
}
public List<String> invisibleBookmarks(String book) {
return SerializerUtil.serializeBookmarkList(
myCollection.invisibleBookmarks(SerializerUtil.deserializeBook(book))
);
}
public List<String> allBookmarks() {
return SerializerUtil.serializeBookmarkList(myCollection.allBookmarks());
}

View file

@ -118,7 +118,11 @@ public final class FBReaderApp extends ZLApplication {
private ZLTextPosition myJumpEndPosition;
private Date myJumpTimeStamp;
public FBReaderApp() {
private final IBookCollection myCollection;
public FBReaderApp(IBookCollection collection) {
myCollection = collection;
addAction(ActionCode.INCREASE_FONT, new ChangeFontSizeAction(this, +2));
addAction(ActionCode.DECREASE_FONT, new ChangeFontSizeAction(this, -2));
@ -228,7 +232,7 @@ public final class FBReaderApp extends ZLApplication {
synchronized void openBookInternal(Book book, Bookmark bookmark, boolean force) {
if (book == null) {
book = Library.Instance().getRecentBook();
book = myCollection.getRecentBook(0);
if (book == null || !book.File.exists()) {
book = Book.getByFile(Library.getHelpFile());
}
@ -262,7 +266,7 @@ public final class FBReaderApp extends ZLApplication {
} else {
gotoBookmark(bookmark);
}
Library.Instance().addBookToRecentList(book);
myCollection.addBookToRecentList(book);
final StringBuilder title = new StringBuilder(book.getTitle());
if (!book.authors().isEmpty()) {
boolean first = true;
@ -300,12 +304,12 @@ public final class FBReaderApp extends ZLApplication {
return false;
}
final List<Bookmark> bookmarks = Library.Instance().invisibleBookmarks(Model.Book);
final List<Bookmark> bookmarks = myCollection.invisibleBookmarks(Model.Book);
if (bookmarks.isEmpty()) {
return false;
}
final Bookmark b = bookmarks.get(0);
b.delete();
myCollection.deleteBookmark(b);
gotoBookmark(b);
return true;
} finally {
@ -414,7 +418,7 @@ public final class FBReaderApp extends ZLApplication {
));
}
if (ShowPreviousBookInCancelMenuOption.getValue()) {
final Book previousBook = Library.Instance().getPreviousBook();
final Book previousBook = myCollection.getRecentBook(1);
if (previousBook != null) {
myCancelActionsList.add(new CancelActionDescription(
CancelActionType.previousBook, previousBook.getTitle()
@ -423,7 +427,7 @@ public final class FBReaderApp extends ZLApplication {
}
if (ShowPositionsInCancelMenuOption.getValue()) {
if (Model != null && Model.Book != null) {
for (Bookmark bookmark : Library.Instance().invisibleBookmarks(Model.Book)) {
for (Bookmark bookmark : myCollection.invisibleBookmarks(Model.Book)) {
myCancelActionsList.add(new BookmarkDescription(bookmark));
}
}
@ -448,12 +452,12 @@ public final class FBReaderApp extends ZLApplication {
runAction(ActionCode.SHOW_NETWORK_LIBRARY);
break;
case previousBook:
openBook(Library.Instance().getPreviousBook(), null, null);
openBook(myCollection.getRecentBook(1), null, null);
break;
case returnTo:
{
final Bookmark b = ((BookmarkDescription)description).Bookmark;
b.delete();
myCollection.deleteBookmark(b);
gotoBookmark(b);
break;
}
@ -465,15 +469,15 @@ public final class FBReaderApp extends ZLApplication {
private synchronized void updateInvisibleBookmarksList(Bookmark b) {
if (Model != null && Model.Book != null && b != null) {
for (Bookmark bm : Library.Instance().invisibleBookmarks(Model.Book)) {
for (Bookmark bm : myCollection.invisibleBookmarks(Model.Book)) {
if (b.equals(bm)) {
bm.delete();
myCollection.deleteBookmark(bm);
}
}
b.save();
final List<Bookmark> bookmarks = Library.Instance().invisibleBookmarks(Model.Book);
myCollection.saveBookmark(b);
final List<Bookmark> bookmarks = myCollection.invisibleBookmarks(Model.Book);
for (int i = 3; i < bookmarks.size(); ++i) {
bookmarks.get(i).delete();
myCollection.deleteBookmark(bookmarks.get(i));
}
}
}

View file

@ -234,11 +234,4 @@ mainLoop:
public void save() {
myId = BooksDatabase.Instance().saveBookmark(this);
}
// TODO: this method should be removed
public void delete() {
if (myId != -1) {
BooksDatabase.Instance().deleteBookmark(this);
}
}
}

View file

@ -34,6 +34,7 @@ public interface IBookCollection {
void setBookFavorite(Book book, boolean favorite);
List<Bookmark> allBookmarks();
List<Bookmark> invisibleBookmarks(Book book);
void saveBookmark(Bookmark bookmark);
void deleteBookmark(Bookmark bookmark);
}

View file

@ -281,14 +281,6 @@ public final class Library {
return myStatusMask == 0;
}
public Book getRecentBook() {
return myCollection.getRecentBook(0);
}
public Book getPreviousBook() {
return myCollection.getRecentBook(1);
}
public void startBookSearch(final String pattern) {
setStatus(myStatusMask | STATUS_SEARCHING);
final Thread searcher = new Thread("Library.searchBooks") {
@ -393,8 +385,4 @@ public final class Library {
getFirstLevelTree(ROOT_FAVORITES).removeBook(book, false);
myRootTree.removeBook(book, true);
}
public List<Bookmark> invisibleBookmarks(Book book) {
return myCollection.invisibleBookmarks(book);
}
}