diff options
author | Jose Lima <joselima@google.com> | 2015-01-27 17:57:04 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-01-27 17:57:04 +0000 |
commit | ceba619e36e5770603a295e374ea01b9026c4c0f (patch) | |
tree | e79842108478f896ccc2794ac6b8396524a5a676 | |
parent | 9933b3136e3fa2e04e5ddd363933e237643ea962 (diff) | |
parent | 69fbcf1f100905f5a28909d561db4753189bd717 (diff) | |
download | frameworks_base-ceba619e36e5770603a295e374ea01b9026c4c0f.zip frameworks_base-ceba619e36e5770603a295e374ea01b9026c4c0f.tar.gz frameworks_base-ceba619e36e5770603a295e374ea01b9026c4c0f.tar.bz2 |
am 445768bd: am 3fd8a433: Merge "Allow disabling the Options Pannel feature for TVs" into lmp-mr1-dev
automerge: 69fbcf1
* commit '69fbcf1f100905f5a28909d561db4753189bd717':
Allow disabling the Options Pannel feature for TVs
-rw-r--r-- | core/java/android/app/Activity.java | 16 | ||||
-rw-r--r-- | core/java/android/app/Dialog.java | 14 | ||||
-rw-r--r-- | core/res/res/values-television/config.xml | 26 | ||||
-rw-r--r-- | policy/src/com/android/internal/policy/impl/PhoneWindow.java | 39 |
4 files changed, 71 insertions, 24 deletions
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 23b05c4..0a23bc5 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -2373,8 +2373,10 @@ public class Activity extends ContextThemeWrapper if (mDefaultKeyMode == DEFAULT_KEYS_DISABLE) { return false; } else if (mDefaultKeyMode == DEFAULT_KEYS_SHORTCUT) { - if (getWindow().performPanelShortcut(Window.FEATURE_OPTIONS_PANEL, - keyCode, event, Menu.FLAG_ALWAYS_PERFORM_CLOSE)) { + Window w = getWindow(); + if (w.hasFeature(Window.FEATURE_OPTIONS_PANEL) && + w.performPanelShortcut(Window.FEATURE_OPTIONS_PANEL, keyCode, event, + Menu.FLAG_ALWAYS_PERFORM_CLOSE)) { return true; } return false; @@ -2939,7 +2941,8 @@ public class Activity extends ContextThemeWrapper * time it needs to be displayed. */ public void invalidateOptionsMenu() { - if (mActionBar == null || !mActionBar.invalidateOptionsMenu()) { + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL) && + (mActionBar == null || !mActionBar.invalidateOptionsMenu())) { mWindow.invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); } } @@ -3151,7 +3154,8 @@ public class Activity extends ContextThemeWrapper * open, this method does nothing. */ public void openOptionsMenu() { - if (mActionBar == null || !mActionBar.openOptionsMenu()) { + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL) && + (mActionBar == null || !mActionBar.openOptionsMenu())) { mWindow.openPanel(Window.FEATURE_OPTIONS_PANEL, null); } } @@ -3161,7 +3165,9 @@ public class Activity extends ContextThemeWrapper * closed, this method does nothing. */ public void closeOptionsMenu() { - mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL); + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL)) { + mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL); + } } /** diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 12d4513..067073a 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -910,21 +910,27 @@ public class Dialog implements DialogInterface, Window.Callback, * @see Activity#openOptionsMenu() */ public void openOptionsMenu() { - mWindow.openPanel(Window.FEATURE_OPTIONS_PANEL, null); + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL)) { + mWindow.openPanel(Window.FEATURE_OPTIONS_PANEL, null); + } } - + /** * @see Activity#closeOptionsMenu() */ public void closeOptionsMenu() { - mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL); + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL)) { + mWindow.closePanel(Window.FEATURE_OPTIONS_PANEL); + } } /** * @see Activity#invalidateOptionsMenu() */ public void invalidateOptionsMenu() { - mWindow.invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); + if (mWindow.hasFeature(Window.FEATURE_OPTIONS_PANEL)) { + mWindow.invalidatePanelMenu(Window.FEATURE_OPTIONS_PANEL); + } } /** diff --git a/core/res/res/values-television/config.xml b/core/res/res/values-television/config.xml new file mode 100644 index 0000000..3435474 --- /dev/null +++ b/core/res/res/values-television/config.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- +/* +** Copyright 2015, 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. +*/ +--> + +<!-- These resources are around just to allow their values to be customized + for TV products. Do not translate. --> +<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> + + <!-- Flags enabling default window features. See Window.java --> + <bool name="config_defaultWindowFeatureOptionsPanel">false</bool> +</resources> diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index ed43d8e..153b67b 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -894,7 +894,10 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } void doInvalidatePanelMenu(int featureId) { - PanelFeatureState st = getPanelState(featureId, true); + PanelFeatureState st = getPanelState(featureId, false); + if (st == null) { + return; + } Bundle savedActionViewStates = null; if (st.menu != null) { savedActionViewStates = new Bundle(); @@ -933,8 +936,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { // The panel key was pushed, so set the chording key mPanelChordingKey = keyCode; - PanelFeatureState st = getPanelState(featureId, true); - if (!st.isOpen) { + PanelFeatureState st = getPanelState(featureId, false); + if (st != null && !st.isOpen) { return preparePanel(st, event); } } @@ -952,12 +955,14 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { if (mPanelChordingKey != 0) { mPanelChordingKey = 0; - if (event.isCanceled() || (mDecor != null && mDecor.mActionMode != null)) { + final PanelFeatureState st = getPanelState(featureId, false); + + if (event.isCanceled() || (mDecor != null && mDecor.mActionMode != null) || + (st == null)) { return; } boolean playSoundEffect = false; - final PanelFeatureState st = getPanelState(featureId, true); if (featureId == FEATURE_OPTIONS_PANEL && mDecorContentParent != null && mDecorContentParent.canShowOverflowMenu() && !ViewConfiguration.get(getContext()).hasPermanentMenuKey()) { @@ -1056,7 +1061,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { @Override public boolean performPanelShortcut(int featureId, int keyCode, KeyEvent event, int flags) { - return performPanelShortcut(getPanelState(featureId, true), keyCode, event, flags); + return performPanelShortcut(getPanelState(featureId, false), keyCode, event, flags); } private boolean performPanelShortcut(PanelFeatureState st, int keyCode, KeyEvent event, @@ -1149,11 +1154,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mInvalidatePanelMenuRunnable.run(); } - final PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, true); + final PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, false); // If we don't have a menu or we're waiting for a full content refresh, // forget it. This is a lingering event that no longer matters. - if (st.menu != null && !st.refreshMenuContent && + if (st != null && st.menu != null && !st.refreshMenuContent && cb.onPreparePanel(FEATURE_OPTIONS_PANEL, st.createdPanelView, st.menu)) { cb.onMenuOpened(FEATURE_ACTION_BAR, st.menu); mDecorContentParent.showOverflowMenu(); @@ -1161,15 +1166,19 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } } else { mDecorContentParent.hideOverflowMenu(); - if (cb != null && !isDestroyed()) { - final PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, true); + final PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, false); + if (st != null && cb != null && !isDestroyed()) { cb.onPanelClosed(FEATURE_ACTION_BAR, st.menu); } } return; } - PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, true); + PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, false); + + if (st == null) { + return; + } // Save the future expanded mode state since closePanel will reset it boolean newExpandedMode = toggleMenuMode ? !st.isInExpandedMode : st.isInExpandedMode; @@ -2302,8 +2311,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { // combination such as Control+C. Temporarily prepare the panel then mark it // unprepared again when finished to ensure that the panel will again be prepared // the next time it is shown for real. - if (mPreparedPanel == null) { - PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, true); + PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, false); + if (st != null && mPreparedPanel == null) { preparePanel(st, ev); handled = performPanelShortcut(st, ev.getKeyCode(), ev, Menu.FLAG_PERFORM_NO_CLOSE); @@ -3906,8 +3915,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { @Override public boolean isShortcutKey(int keyCode, KeyEvent event) { - PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, true); - return st.menu != null && st.menu.isShortcutKey(keyCode, event); + PanelFeatureState st = getPanelState(FEATURE_OPTIONS_PANEL, false); + return st != null && st.menu != null && st.menu.isShortcutKey(keyCode, event); } private void updateDrawable(int featureId, DrawableFeatureState st, boolean fromResume) { |