package net.bible.android.view.activity.navigation; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import net.bible.android.control.navigation.NavigationControl; import net.bible.android.control.page.window.ActiveWindowPageManagerProvider; import net.bible.android.view.activity.base.CustomTitlebarActivityBase; import net.bible.android.view.util.buttongrid.ButtonGrid; import net.bible.android.view.util.buttongrid.ButtonGrid.ButtonInfo; import net.bible.android.view.util.buttongrid.OnButtonGridActionListener; import org.crosswire.jsword.passage.Verse; import org.crosswire.jsword.versification.BibleBook; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; /** * Choose a chapter to view * * @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. */ public class GridChoosePassageVerse extends CustomTitlebarActivityBase implements OnButtonGridActionListener { private BibleBook mBibleBook=BibleBook.GEN; private int mBibleChapterNo=1; private NavigationControl navigationControl; private ActiveWindowPageManagerProvider activeWindowPageManagerProvider; private static final String TAG = "GridChoosePassageChaptr"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { // background goes white in some circumstances if theme changes so prevent theme change setAllowThemeChange(false); super.onCreate(savedInstanceState); buildActivityComponent().inject(this); int bibleBookNo = getIntent().getIntExtra(GridChoosePassageBook.BOOK_NO, navigationControl.getDefaultBibleBookNo()); //TODO av11n - this is done now mBibleBook = BibleBook.values()[bibleBookNo]; mBibleChapterNo = getIntent().getIntExtra(GridChoosePassageBook.CHAPTER_NO, navigationControl.getDefaultBibleChapterNo()); // show chosen book in page title to confirm user choice try { //TODO av11n - done setTitle(navigationControl.getVersification().getLongName(mBibleBook)+" "+mBibleChapterNo); } catch (Exception nsve) { Log.e(TAG, "Error in selected book no or chapter no", nsve); } ButtonGrid grid = new ButtonGrid(this); grid.setOnButtonGridActionListener(this); grid.addButtons(getBibleVersesButtonInfo(mBibleBook, mBibleChapterNo)); setContentView(grid); } private List<ButtonInfo> getBibleVersesButtonInfo(BibleBook book, int chapterNo) { int verses; try { verses = navigationControl.getVersification().getLastVerse(book, chapterNo); } catch (Exception nsve) { Log.e(TAG, "Error getting number of verses", nsve); verses = -1; } List<ButtonInfo> keys = new ArrayList<>(); for (int i=1; i<=verses; i++) { ButtonInfo buttonInfo = new ButtonInfo(); // this is used for preview buttonInfo.id = i; buttonInfo.name = Integer.toString(i); keys.add(buttonInfo); } return keys; } @Override public void buttonPressed(ButtonInfo buttonInfo) { int verse = buttonInfo.id; Log.d(TAG, "Verse selected:"+verse); try { activeWindowPageManagerProvider.getActiveWindowPageManager().getCurrentPage().setKey(new Verse(navigationControl.getVersification(), mBibleBook, mBibleChapterNo, verse)); onSave(null); } catch (Exception e) { Log.e(TAG, "error on select of bible book", e); } } public void onSave(View v) { Log.i(TAG, "CLICKED"); Intent resultIntent = new Intent(this, GridChoosePassageBook.class); setResult(Activity.RESULT_OK, resultIntent); finish(); } @Inject void setNavigationControl(NavigationControl navigationControl) { this.navigationControl = navigationControl; } @Inject void setActiveWindowPageManagerProvider(ActiveWindowPageManagerProvider activeWindowPageManagerProvider) { this.activeWindowPageManagerProvider = activeWindowPageManagerProvider; } }