diff options
author | Chris Wren <cwren@android.com> | 2013-04-04 09:17:26 -0400 |
---|---|---|
committer | Chris Wren <cwren@android.com> | 2013-04-09 01:54:16 -0400 |
commit | 88d80f4471c900628e2cb6eef23029b99af48e09 (patch) | |
tree | 6829842f0dff21db530936037cd242853f43b416 /src/com/android/dreams/phototable/KeyboardInterpreter.java | |
parent | 1dc94b55d59f5c4dbf86788d0c32b7ac4449909a (diff) | |
download | PhotoTable-88d80f4471c900628e2cb6eef23029b99af48e09.tar.gz |
story mode for PhotoTable.
also some cleanup and refactoring
also fix stuck alphas
Bug: 8399588
Change-Id: Id236b29701ede3696c8f1f0ccc6522eb8256ff25
Diffstat (limited to 'src/com/android/dreams/phototable/KeyboardInterpreter.java')
-rw-r--r-- | src/com/android/dreams/phototable/KeyboardInterpreter.java | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/src/com/android/dreams/phototable/KeyboardInterpreter.java b/src/com/android/dreams/phototable/KeyboardInterpreter.java new file mode 100644 index 0000000..aa316cb --- /dev/null +++ b/src/com/android/dreams/phototable/KeyboardInterpreter.java @@ -0,0 +1,100 @@ +/* + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.dreams.phototable; + +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; + +/** + * Keyboard event dispatcher for Photo Table. + */ +public class KeyboardInterpreter { + private static final String TAG = "DPadInterpreter"; + private static final boolean DEBUG = false; + + private final PhotoTable mTable; + + public KeyboardInterpreter(PhotoTable table) { + mTable = table; + } + + public boolean onKeyDown(int keyCode, KeyEvent event) { + final View focus = mTable.getFocus(); + boolean consumed = true; + + if (mTable.hasSelection()) { + switch (keyCode) { + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_DPAD_CENTER: + case KeyEvent.KEYCODE_ESCAPE: + mTable.setFocus(mTable.getSelection()); + mTable.clearSelection(); + break; + default: + if (DEBUG) Log.d(TAG, "dropped unexpected: " + keyCode); + consumed = false; + break; + } + } else { + switch (keyCode) { + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_DPAD_CENTER: + if (mTable.hasFocus()) { + mTable.setSelection(mTable.getFocus()); + mTable.clearFocus(); + } else { + mTable.setDefaultFocus(); + } + break; + + case KeyEvent.KEYCODE_DEL: + case KeyEvent.KEYCODE_X: + if (mTable.hasFocus()) { + mTable.fling(mTable.getFocus()); + } + break; + + case KeyEvent.KEYCODE_DPAD_UP: + case KeyEvent.KEYCODE_K: + mTable.moveFocus(focus, 0f); + break; + + case KeyEvent.KEYCODE_DPAD_RIGHT: + case KeyEvent.KEYCODE_L: + mTable.moveFocus(focus, 90f); + break; + + case KeyEvent.KEYCODE_DPAD_DOWN: + case KeyEvent.KEYCODE_J: + mTable.moveFocus(focus, 180f); + break; + + case KeyEvent.KEYCODE_DPAD_LEFT: + case KeyEvent.KEYCODE_H: + mTable.moveFocus(focus, 270f); + break; + + default: + if (DEBUG) Log.d(TAG, "dropped unexpected: " + keyCode); + consumed = false; + break; + } + } + + return consumed; + } +} |