package net.bible.android.view.activity.page;
import android.util.Log;
import android.view.KeyEvent;
import net.bible.android.control.ApplicationScope;
import net.bible.android.control.page.window.ActiveWindowPageManagerProvider;
import javax.inject.Inject;
/** KeyEvent.KEYCODE_DPAD_LEFT was being swallowed by the BibleView after scrolling down (it gained focus)
* so this class implements common key handling both for BibleView and MainBibleActivity
*
* @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 BibleKeyHandler {
// prevent too may scroll events causing multi-page changes
private long lastHandledDpadEventTime = 0;
private final ActiveWindowPageManagerProvider activeWindowPageManagerProvider;
private static final String TAG = "BibleKeyHandler";
@Inject
public BibleKeyHandler(ActiveWindowPageManagerProvider activeWindowPageManagerProvider) {
this.activeWindowPageManagerProvider = activeWindowPageManagerProvider;
}
/** handle DPAD keys
*/
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT || keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
Log.d(TAG, "D-Pad");
// prevent too may scroll events causing multi-page changes
if (event.getEventTime()-lastHandledDpadEventTime>1000) {
if (keyCode==KeyEvent.KEYCODE_DPAD_RIGHT) {
activeWindowPageManagerProvider.getActiveWindowPageManager().getCurrentPage().next();
} else {
activeWindowPageManagerProvider.getActiveWindowPageManager().getCurrentPage().previous();
}
lastHandledDpadEventTime = event.getEventTime();
return true;
}
}
return false;
}
}