From a9d948322cd8d957c55d87e818e3d1f3b0af680e Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Sun, 20 Jan 2013 12:43:50 +0400 Subject: [PATCH] open book from bookmarks view --- .../android/fbreader/BookmarksActivity.java | 17 +--- .../fbreader/fbreader/FBReaderApp.java | 79 ++++++++++--------- 2 files changed, 44 insertions(+), 52 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/BookmarksActivity.java b/src/org/geometerplus/android/fbreader/BookmarksActivity.java index 153a5a0c8..f765182b9 100644 --- a/src/org/geometerplus/android/fbreader/BookmarksActivity.java +++ b/src/org/geometerplus/android/fbreader/BookmarksActivity.java @@ -34,7 +34,6 @@ import org.geometerplus.zlibrary.core.options.ZLStringOption; import org.geometerplus.zlibrary.ui.android.R; import org.geometerplus.fbreader.book.*; -import org.geometerplus.fbreader.fbreader.FBReaderApp; import org.geometerplus.fbreader.library.Library; import org.geometerplus.android.util.UIUtil; @@ -228,19 +227,11 @@ public class BookmarksActivity extends TabActivity implements MenuItem.OnMenuIte private void gotoBookmark(Bookmark bookmark) { bookmark.onOpen(); - final FBReaderApp fbreader = (FBReaderApp)FBReaderApp.Instance(); - final long bookId = bookmark.getBookId(); - if ((fbreader.Model == null) || (fbreader.Model.Book.getId() != bookId)) { - final Book book = Book.getById(bookId); - if (book != null) { - finish(); - fbreader.openBook(book, bookmark, null); - } else { - UIUtil.showErrorMessage(this, "cannotOpenBook"); - } + final Book book = Book.getById(bookmark.getBookId()); + if (book != null) { + FBReader.openBookActivity(this, book, bookmark); } else { - finish(); - fbreader.gotoBookmark(bookmark); + UIUtil.showErrorMessage(this, "cannotOpenBook"); } } diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java index 959eba1dc..7f3d60d42 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java +++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java @@ -158,7 +158,7 @@ public final class FBReaderApp extends ZLApplication { }, postAction); } } - + public void reloadBook() { if (Model != null && Model.Book != null) { Model.Book.reloadInfoFromDatabase(); @@ -235,48 +235,49 @@ public final class FBReaderApp extends ZLApplication { return; } } - if (!force && Model != null && bookmark == null - && book.File.getPath().equals(Model.Book.File.getPath())) { + if (!force && Model != null && book.equals(Model.Book)) { + if (bookmark != null) { + gotoBookmark(bookmark); + } return; } - if (book != null) { - onViewChanged(); + onViewChanged(); - storePosition(); - BookTextView.setModel(null); - FootnoteView.setModel(null); - clearTextCaches(); + storePosition(); + BookTextView.setModel(null); + FootnoteView.setModel(null); + clearTextCaches(); - Model = null; - System.gc(); - System.gc(); - try { - Model = BookModel.createModel(book); - ZLTextHyphenator.Instance().load(book.getLanguage()); - BookTextView.setModel(Model.getTextModel()); - BookTextView.gotoPosition(book.getStoredPosition()); - if (bookmark == null) { - setView(BookTextView); - } else { - gotoBookmark(bookmark); - } - Library.Instance().addBookToRecentList(book); - final StringBuilder title = new StringBuilder(book.getTitle()); - if (!book.authors().isEmpty()) { - boolean first = true; - for (Author a : book.authors()) { - title.append(first ? " (" : ", "); - title.append(a.DisplayName); - first = false; - } - title.append(")"); - } - setTitle(title.toString()); - } catch (BookReadingException e) { - processException(e); + Model = null; + System.gc(); + System.gc(); + try { + Model = BookModel.createModel(book); + ZLTextHyphenator.Instance().load(book.getLanguage()); + BookTextView.setModel(Model.getTextModel()); + BookTextView.gotoPosition(book.getStoredPosition()); + if (bookmark == null) { + setView(BookTextView); + } else { + gotoBookmark(bookmark); } + Library.Instance().addBookToRecentList(book); + final StringBuilder title = new StringBuilder(book.getTitle()); + if (!book.authors().isEmpty()) { + boolean first = true; + for (Author a : book.authors()) { + title.append(first ? " (" : ", "); + title.append(a.DisplayName); + first = false; + } + title.append(")"); + } + setTitle(title.toString()); + } catch (BookReadingException e) { + processException(e); } + getViewWidget().reset(); getViewWidget().repaint(); } @@ -313,7 +314,7 @@ public final class FBReaderApp extends ZLApplication { } } - public void gotoBookmark(Bookmark bookmark) { + private void gotoBookmark(Bookmark bookmark) { final String modelId = bookmark.ModelId; if (modelId == null) { addInvisibleBookmark(); @@ -364,7 +365,7 @@ public final class FBReaderApp extends ZLApplication { private static class BookmarkDescription extends CancelActionDescription { final Bookmark Bookmark; - + BookmarkDescription(Bookmark b) { super(CancelActionType.returnTo, b.getText()); Bookmark = b; @@ -492,7 +493,7 @@ public final class FBReaderApp extends ZLApplication { return null; } - int index = cursor.getParagraphIndex(); + int index = cursor.getParagraphIndex(); if (cursor.isEndOfParagraph()) { ++index; }