package net.bible.android.control.footnoteandref; import net.bible.android.BibleApplication; import net.bible.android.activity.R; import net.bible.android.control.ApplicationScope; import net.bible.android.control.page.CurrentPageManager; import net.bible.android.control.page.window.ActiveWindowPageManagerProvider; import net.bible.android.control.versification.BibleTraverser; import net.bible.android.view.activity.base.Dialogs; import net.bible.service.format.Note; import org.apache.commons.lang3.StringUtils; import org.crosswire.jsword.passage.VerseRange; import org.crosswire.jsword.versification.BookName; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; /** Support the Compare Translations 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. */ @ApplicationScope public class FootnoteAndRefControl { private final BibleTraverser bibleTraverser; private final ActiveWindowPageManagerProvider activeWindowPageManagerProvider; @SuppressWarnings("unused") private static final String TAG = "FootnoteAndRefControl"; @Inject public FootnoteAndRefControl(BibleTraverser bibleTraverser, ActiveWindowPageManagerProvider activeWindowPageManagerProvider) { this.bibleTraverser = bibleTraverser; this.activeWindowPageManagerProvider = activeWindowPageManagerProvider; } public List<Note> getCurrentPageFootnotesAndReferences() { try { return getCurrentPageManager().getCurrentPage().getCurrentPageFootnotesAndReferences(); } catch (Exception e) { Dialogs.getInstance().showErrorMsg(R.string.error_occurred, e); return new ArrayList<>(); } } public String getTitle(VerseRange verseRange) { StringBuilder stringBuilder = new StringBuilder(); boolean wasFullBookname = BookName.isFullBookName(); BookName.setFullBookName(false); stringBuilder.append(BibleApplication.getApplication().getString(R.string.notes)) .append(": ") .append(verseRange.getName()); BookName.setFullBookName(wasFullBookname); return stringBuilder.toString(); } /** Shuffle verseRange forward but stay in same chapter because those are the only notes fetched */ public VerseRange next(VerseRange verseRange) { return bibleTraverser.getNextVerseRange(getCurrentPageManager().getCurrentPassageDocument(), verseRange, false); } /** Shuffle verseRange backward but stay in same chapter because those are the only notes fetched */ public VerseRange previous(VerseRange verseRange) { return bibleTraverser.getPreviousVerseRange(getCurrentPageManager().getCurrentPassageDocument(), verseRange, false); } public CurrentPageManager getCurrentPageManager() { return activeWindowPageManagerProvider.getActiveWindowPageManager(); } /** * Jump to the verse in the ref * If the osisRef is available then use that because sometimes the noteText itself misses out the book of the bible */ public void navigateTo(Note note) { String ref; if (StringUtils.isNotEmpty(note.getOsisRef())) { ref = note.getOsisRef(); } else { ref = note.getNoteText(); } CurrentPageManager currentPageControl = activeWindowPageManagerProvider.getActiveWindowPageManager(); currentPageControl.getCurrentBible().setKey(ref); currentPageControl.showBible(); } }