package net.bible.android.control; import android.util.Log; import net.bible.android.control.page.CurrentPage; import net.bible.android.control.page.UpdateTextTask; import net.bible.android.control.page.window.Window; import net.bible.android.control.page.window.WindowControl; import net.bible.android.view.activity.MainBibleActivityScope; import net.bible.android.view.activity.base.DocumentView; import net.bible.android.view.activity.page.screen.DocumentViewManager; import org.crosswire.jsword.book.Book; import org.crosswire.jsword.passage.Key; import javax.inject.Inject; /** Control content of main view screen * * @author Martin Denham [mjdenham at gmail dot com] * @see gnu.lgpl.License for license details.<br> * The copyright to this program is held by it's author. */ @MainBibleActivityScope public class BibleContentManager { private final DocumentViewManager documentViewManager; private final WindowControl windowControl; // previous document and verse (currently displayed on the screen) private Book previousDocument; private Key previousVerse; private static final String TAG = "BibleContentManager"; @Inject public BibleContentManager(DocumentViewManager documentViewManager, WindowControl windowControl) { this.documentViewManager = documentViewManager; this.windowControl = windowControl; PassageChangeMediator.getInstance().setBibleContentManager(this); } /* package */ void updateText() { updateText(false); } /* package */ void updateText(boolean forceUpdate) { Window window = windowControl.getActiveWindow(); CurrentPage currentPage = window.getPageManager().getCurrentPage(); Book document = currentPage.getCurrentDocument(); Key key = currentPage.getKey(); // check for duplicate screen update requests if (!forceUpdate && document!=null && document.equals(previousDocument) && key!=null && key.equals(previousVerse)) { Log.w(TAG, "Duplicated screen update. Doc:"+document.getInitials()+" Key:"+key.getOsisID()); } else { previousDocument = document; previousVerse = key; } new UpdateMainTextTask().execute(window); } private class UpdateMainTextTask extends UpdateTextTask { @Override protected void onPreExecute() { super.onPreExecute(); PassageChangeMediator.getInstance().contentChangeStarted(); } protected void onPostExecute(String htmlFromDoInBackground) { super.onPostExecute(htmlFromDoInBackground); PassageChangeMediator.getInstance().contentChangeFinished(); } /** callback from base class when result is ready */ @Override protected void showText(String text, Window window, int verseNo, float yOffsetRatio) { if (documentViewManager!=null) { DocumentView view = documentViewManager.getDocumentView(window); view.show(text, verseNo, yOffsetRatio); } else { Log.w(TAG, "Document view not yet registered"); } } } }