diff --git a/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java b/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java index 6be1287bf..2df8e4d2a 100644 --- a/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java +++ b/src/org/geometerplus/android/fbreader/ProcessHyperlinkAction.java @@ -61,7 +61,7 @@ class ProcessHyperlinkAction extends FBAndroidAction { openInBrowser(hyperlink.Id); break; case FBHyperlinkType.INTERNAL: - Reader.Collection.markHyperlinkAsVisited(Reader.Model.Book, hyperlink.Id); + Reader.Collection.markHyperlinkAsVisited(Reader.getCurrentBook(), hyperlink.Id); Reader.tryOpenFootnote(hyperlink.Id); break; } diff --git a/src/org/geometerplus/android/fbreader/SelectionShareAction.java b/src/org/geometerplus/android/fbreader/SelectionShareAction.java index 186c4f93d..599182190 100644 --- a/src/org/geometerplus/android/fbreader/SelectionShareAction.java +++ b/src/org/geometerplus/android/fbreader/SelectionShareAction.java @@ -33,7 +33,7 @@ public class SelectionShareAction extends FBAndroidAction { @Override protected void run(Object ... params) { final String text = Reader.getTextView().getSelectedText(); - final String title = Reader.Model.Book.getTitle(); + final String title = Reader.getCurrentBook().getTitle(); Reader.getTextView().clearSelection(); final Intent intent = new Intent(android.content.Intent.ACTION_SEND); diff --git a/src/org/geometerplus/android/fbreader/ShareBookAction.java b/src/org/geometerplus/android/fbreader/ShareBookAction.java index b776ee7a7..c78b3e65d 100644 --- a/src/org/geometerplus/android/fbreader/ShareBookAction.java +++ b/src/org/geometerplus/android/fbreader/ShareBookAction.java @@ -19,6 +19,7 @@ package org.geometerplus.android.fbreader; +import org.geometerplus.fbreader.book.Book; import org.geometerplus.fbreader.fbreader.FBReaderApp; public class ShareBookAction extends FBAndroidAction { @@ -28,11 +29,12 @@ public class ShareBookAction extends FBAndroidAction { @Override public boolean isVisible() { - return Reader.Model != null && Reader.Model.Book.File.getPhysicalFile() != null; + final Book book = Reader.getCurrentBook(); + return book != null && book.File.getPhysicalFile() != null; } @Override protected void run(Object ... params) { - FBUtil.shareBook(BaseActivity, Reader.Model.Book); + FBUtil.shareBook(BaseActivity, Reader.getCurrentBook()); } } diff --git a/src/org/geometerplus/android/fbreader/ShowBookInfoAction.java b/src/org/geometerplus/android/fbreader/ShowBookInfoAction.java index 32001d418..82f91f0fa 100644 --- a/src/org/geometerplus/android/fbreader/ShowBookInfoAction.java +++ b/src/org/geometerplus/android/fbreader/ShowBookInfoAction.java @@ -41,7 +41,7 @@ class ShowBookInfoAction extends FBAndroidAction { final Intent intent = new Intent(BaseActivity.getApplicationContext(), BookInfoActivity.class) .putExtra(BookInfoActivity.FROM_READING_MODE_KEY, true); - FBReaderIntents.putBookExtra(intent, Reader.Model.Book); + FBReaderIntents.putBookExtra(intent, Reader.getCurrentBook()); OrientationUtil.startActivity(BaseActivity, intent); } } diff --git a/src/org/geometerplus/android/fbreader/ShowBookmarksAction.java b/src/org/geometerplus/android/fbreader/ShowBookmarksAction.java index 79aa0ce93..1f3347230 100644 --- a/src/org/geometerplus/android/fbreader/ShowBookmarksAction.java +++ b/src/org/geometerplus/android/fbreader/ShowBookmarksAction.java @@ -55,7 +55,7 @@ class ShowBookmarksAction extends FBAndroidAction { } private void startBookmarksActivity(Intent intent) { - FBReaderIntents.putBookExtra(intent, Reader.Model.Book); + FBReaderIntents.putBookExtra(intent, Reader.getCurrentBook()); FBReaderIntents.putBookmarkExtra(intent, Reader.createBookmark(20, true)); OrientationUtil.startActivity(BaseActivity, intent); } diff --git a/src/org/geometerplus/android/fbreader/ShowLibraryAction.java b/src/org/geometerplus/android/fbreader/ShowLibraryAction.java index 1e4167f5c..0d0a5863a 100644 --- a/src/org/geometerplus/android/fbreader/ShowLibraryAction.java +++ b/src/org/geometerplus/android/fbreader/ShowLibraryAction.java @@ -52,7 +52,7 @@ class ShowLibraryAction extends FBAndroidAction { private void startLibraryActivity(Intent intent) { if (Reader.Model != null) { - FBReaderIntents.putBookExtra(intent, Reader.Model.Book); + FBReaderIntents.putBookExtra(intent, Reader.getCurrentBook()); } OrientationUtil.startActivity(BaseActivity, intent); } diff --git a/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java b/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java index a53922e1b..4fb5c4d31 100644 --- a/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java +++ b/src/org/geometerplus/android/fbreader/api/ApiServerImplementation.java @@ -328,11 +328,13 @@ public class ApiServerImplementation extends ApiInterface.Stub implements Api, A } public String getBookLanguage() { - return getReader().Model.Book.getLanguage(); + final Book book = getReader().getCurrentBook(); + return book != null ? book.getLanguage() : null; } public String getBookTitle() { - return getReader().Model.Book.getTitle(); + final Book book = getReader().getCurrentBook(); + return book != null ? book.getTitle() : null; } public List getBookTags() { @@ -341,11 +343,16 @@ public class ApiServerImplementation extends ApiInterface.Stub implements Api, A } public String getBookFilePath() { - return getReader().Model.Book.File.getPath(); + final Book book = getReader().getCurrentBook(); + return book != null ? book.File.getPath() : null; } public String getBookHash() { - final UID uid = BookUtil.createUid(getReader().Model.Book.File, "SHA-256"); + final Book book = getReader().getCurrentBook(); + if (book == null) { + return null; + } + final UID uid = BookUtil.createUid(book.File, "SHA-256"); return uid != null ? uid.Id : null; } diff --git a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java index 44e39c7ff..a34f4875f 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java +++ b/src/org/geometerplus/fbreader/fbreader/FBReaderApp.java @@ -117,6 +117,10 @@ public final class FBReaderApp extends ZLApplication { setView(BookTextView); } + public Book getCurrentBook() { + return Model != null ? Model.Book : ExternalBook; + } + public void openBook(final Book book, final Bookmark bookmark, final Runnable postAction) { if (book != null || Model == null) { final SynchronousExecutor executor = createExecutor("loadingBook"); @@ -133,11 +137,12 @@ public final class FBReaderApp extends ZLApplication { } public void reloadBook() { - if (Model != null && Model.Book != null) { + final Book book = getCurrentBook(); + if (book != null) { final SynchronousExecutor executor = createExecutor("loadingBook"); executor.execute(new Runnable() { public void run() { - openBookInternal(Model.Book, null, true); + openBookInternal(book, null, true); } }, null); } diff --git a/src/org/geometerplus/fbreader/fbreader/FBView.java b/src/org/geometerplus/fbreader/fbreader/FBView.java index 96452d5de..3545fc3e4 100644 --- a/src/org/geometerplus/fbreader/fbreader/FBView.java +++ b/src/org/geometerplus/fbreader/fbreader/FBView.java @@ -434,7 +434,7 @@ public final class FBView extends ZLTextView { case FBHyperlinkType.NONE: return profile.RegularTextOption.getValue(); case FBHyperlinkType.INTERNAL: - return myReader.Collection.isHyperlinkVisited(myReader.Model.Book, hyperlink.Id) + return myReader.Collection.isHyperlinkVisited(myReader.getCurrentBook(), hyperlink.Id) ? profile.VisitedHyperlinkTextOption.getValue() : profile.HyperlinkTextOption.getValue(); case FBHyperlinkType.EXTERNAL: