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.ActionCode;
import org.geometerplus.fbreader.fbreader.FBReaderApp; import org.geometerplus.fbreader.fbreader.FBReaderApp;
import org.geometerplus.fbreader.bookmodel.BookModel; 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.fbreader.tips.TipsManager;
import org.geometerplus.android.fbreader.library.SQLiteBooksDatabase; import org.geometerplus.android.fbreader.library.SQLiteBooksDatabase;
@ -329,10 +329,11 @@ public final class FBReader extends ZLAndroidActivity {
@Override @Override
protected FBReaderApp createApplication() { protected FBReaderApp createApplication() {
if (SQLiteBooksDatabase.Instance() == null) { BooksDatabase db = SQLiteBooksDatabase.Instance();
new SQLiteBooksDatabase(this, "READER"); if (db == null) {
db = new SQLiteBooksDatabase(this, "READER");
} }
return new FBReaderApp(); return new FBReaderApp(new BookCollection(db));
} }
@Override @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() { public synchronized List<Bookmark> allBookmarks() {
if (myInterface == null) { if (myInterface == null) {
return Collections.emptyList(); return Collections.emptyList();

View file

@ -18,6 +18,7 @@ interface LibraryInterface {
void addBookToRecentList(in String book); void addBookToRecentList(in String book);
void setBookFavorite(in String book, in boolean favorite); void setBookFavorite(in String book, in boolean favorite);
List<String> invisibleBookmarks(in String book);
List<String> allBookmarks(); List<String> allBookmarks();
String saveBookmark(in String bookmark); String saveBookmark(in String bookmark);
void deleteBookmark(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); myCollection.setBookFavorite(SerializerUtil.deserializeBook(book), favorite);
} }
public List<String> invisibleBookmarks(String book) {
return SerializerUtil.serializeBookmarkList(
myCollection.invisibleBookmarks(SerializerUtil.deserializeBook(book))
);
}
public List<String> allBookmarks() { public List<String> allBookmarks() {
return SerializerUtil.serializeBookmarkList(myCollection.allBookmarks()); return SerializerUtil.serializeBookmarkList(myCollection.allBookmarks());
} }

View file

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

View file

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